宇宙スケールの知の保存を目的としたプロトコル「KUUGA」のCLIツールです。論文をMarkdownとJSONで管理し、IPFSへの公開と永続化を支援します。
- MarkdownとJSONによるシンプルな論文管理
- Gitでのバージョン管理を前提
- IPFSネットワークに論文と引用先の自動ピン留め
npm install -g kuuga-cliまたは、プロジェクト内で:
npm install kuuga-cli新しいKUUGAプロジェクトを初期化します:
kuuga init生成されるファイル:
/
├── Dockerfile # IPFSノード用
├── .gitignore
├── .github/workflows/build-papers.yml
├── .kuuga/config.json # 論文のメタ情報初期値
├── .kuuga/private_key.pem # 所有権証明用
└── .kuuga/public_key.pem # 所有権証明用
drafts配下に新しい原稿ディレクトリを作成します:
kuuga add my-paper生成されるファイル:
drafts/my-paper/
├── main.md # 本文(Markdown)
└── meta.json # 論文のメタ情報
drafts配下のすべての原稿の構成ファイルを一括検証します:
kuuga validatedrafts配下のすべての原稿からpapersディレクトリに論文を生成します:
kuuga build論文はpapers/{論文名}/{3ケタパディング付きバージョン}_{IPFSのCID}/の形式でディレクトリ構造が作成されます。
IPFSネットワークで使用するPeer IDを生成し、JSONファイルに保存します:
kuuga gen-keyオプショナルで出力先のパスを指定できます:
kuuga gen-key my-peer-id.json生成されるJSONファイルの形式:
{
"id": "12D3...",
"privKey": "CAESQBc...(Base64エンコードされた秘密鍵)",
"pubKey": "MCowBQ...(Base64エンコードされた公開鍵)"
}生成されたPeer IDを使用するには、JSONファイルの内容をKUUGA_KEY環境変数に設定します:
export KUUGA_KEY='{"id":"12D3...","privKey":"CAESQ...","pubKey":"MCowB..."}'
kuuga pinpapersディレクトリの論文と引用先をIPFSにピン留めします:
kuuga pinKUUGA_KEY環境変数が設定されている場合、指定されたPeer IDでIPFSネットワークに接続します。設定されていない場合は、実行の度に新しいPeer IDが生成されます。
papersディレクトリの論文をPinataサービスにアップロードします:
kuuga pinataこのコマンドを使用するには、PINATA_JWT環境変数の設定が必要です:
export PINATA_JWT='your-pinata-jwt-token'
kuuga pinataオプションでPINATA_GATEWAY環境変数を設定することもできます:
export PINATA_GATEWAY='your-custom-gateway.mypinata.cloud'アップロードされたファイルは、{バージョン番号}_{論文名}の形式で保存されます(例:001_my-paper)。
指定されたCIDの論文とその引用元をIPFSからダウンロードします:
kuuga fetch <cid> <directoryName><cid>: ダウンロードする論文のCID(ipfs://プレフィックスはオプション)<directoryName>: papers配下に作成するディレクトリ名
例:
kuuga fetch bafybeie37nnusfxejtmkfi2l2xb6c7qqn74ihgcbqxzvvbytnjstgnznkq my-downloaded-paperこのコマンドは、指定されたCIDの論文をダウンロードし、その論文のpreviousPaperフィールドを辿って引用元の論文も再帰的にダウンロードします。KUUGAプロトコルの起源論文に到達するまでダウンロードを続けます。
ダウンロードされた論文はpapers/{directoryName}/{バージョン番号}_{CID}/の形式で保存されます。
mainブランチにPushすると、GHAが差分を検知して論文ディレクトリを自動生成・コミットします。- 任意のサーバーで4001番ポートを開放し、Dockerfileでコンテナを起動するとIPFSへのピン留めが実行されます。
この仕組みにより、引用関係が壊れないようネットワーク全体での保存努力が促進されます。