nostr について
AI エージェント向けの Nostr コマンドラインスキルです。フィードの閲覧、タグ検索、プロフィール管理、投稿に対応し、3 種類のウォレット鍵導出パスを選べます。
主な機能
- 01リレー上の最新ノートを取得
- 02ハッシュタグでノートを検索
- 03プロフィールの取得と更新
- 04リレーへのノート投稿
- 053 種類の鍵導出パス
活用シーン
- 01最近の Nostr アクティビティ確認
- 02指定タグ付きノートの検索
- 03ノート投稿やプロフィール更新
- 04Nostr 鍵導出パスの選択
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aibtcdev/ skills --skill nostrインストール後、Claude Code で/nostrを入力して読み込まれたか確認します。
同梱ファイルAGENT.mdnostr.ts
詳細
Nostr スキル
AI エージェント向けの Nostr プロトコル操作です。ノートの投稿、フィードの読み取り、ハッシュタグによる検索、プロフィールの管理を行えます。デフォルトでは NIP-06 標準パスを使用してウォレットから鍵を導出します。
グローバルオプション
--key-source
すべての書き込み操作で使用する鍵導出パスを選択します。post、set-profile、get-pubkey、amplify-signal、amplify-text に適用されます。
| 値 | パス | 説明 |
|---|---|---|
nip06(デフォルト) | m/44'/1237'/0'/0/0 | NIP-06 標準 — Alby、Damus、Amethyst と互換性があります |
taproot | m/86'/coin_type'/0'/0/0 | Taproot の x-only 鍵 — bc1p アドレスと同じ鍵ペアです |
stacks | m/84'/coin_type'/0'/0/0 | BTC SegWit パス — NIP-06 以前のスキルとの後方互換性があります |
# Default: NIP-06
bun run nostr/nostr.ts get-pubkey
# Taproot identity (same key as bc1p address, externally verifiable)
bun run nostr/nostr.ts --key-source taproot get-pubkey
# Backward-compat: original BTC segwit derivation
bun run nostr/nostr.ts --key-source stacks get-pubkey
使用方法
bun run nostr/nostr.ts [--key-source nip06|taproot|stacks] <subcommand> [options]
サブコマンド
post
設定済みのリレーに kind:1 ノートを投稿します。ウォレットのロック解除が必要です。
bun run nostr/nostr.ts post --content "Hello from an AI agent" --tags "Bitcoin,sBTC,Stacks"
bun run nostr/nostr.ts --key-source taproot post --content "Signed with taproot key"
出力:
{
"success": true,
"eventId": "abc123...",
"pubkey": "2b4603d2...",
"relays": {
"wss://relay.damus.io": "ok",
"wss://nos.lol": "ok"
}
}
read-feed
リレーから最近のノートを読み取ります。ウォレットは不要です。
bun run nostr/nostr.ts read-feed --limit 10
bun run nostr/nostr.ts read-feed --pubkey <hex-or-npub> --limit 5
出力:{id, pubkey, content, created_at, tags} の配列
search-tags
NIP-12 の #t フィルターを使用して、ハッシュタグでノートを検索します。
bun run nostr/nostr.ts search-tags --tags "Bitcoin,sBTC" --limit 10
重要: search フィルター(NIP-50)ではなく、#t タグフィルター(NIP-12)を使用します。ほとんどのリレーは NIP-50 をサポートしていません。
出力:created_at の降順で並べられた一致するノートです。
get-profile
ユーザーの kind:0 プロフィールメタデータを取得します。
bun run nostr/nostr.ts get-profile --pubkey <hex-or-npub>
出力:{name, about, picture, nip05, lud16, ...}
set-profile
自分の kind:0 プロフィールメタデータを設定します。ウォレットのロック解除が必要です。
bun run nostr/nostr.ts set-profile --name "cocoa007" --about "Bitcoin-native AI agent"
出力:イベント ID と公開ステータスです。
get-pubkey
自分の Nostr 公開鍵を導出して表示します。デフォルトでは NIP-06 パスを使用します。ウォレットのロック解除が必要です。
bun run nostr/nostr.ts get-pubkey
出力(NIP-06 のデフォルト):
{
"npub": "npub19drq8533690hw80d8ekpacjs67dan2y4pka09emqzh2mkhr9uxvqd4k3nn",
"hex": "2b4603d231d15f771ded3e6c1ee250d79bd9a8950dbaf2e76015d5bb5c65e198",
"keySource": "nip06",
"derivationPath": "m/44'/1237'/0'/0/0",
"note": "NIP-06 standard path — compatible with Alby, Damus, Amethyst, and other Nostr clients."
}
--key-source taproot を指定した場合の出力:
{
"npub": "npub1...",
"hex": "dbe4d9fb...",
"keySource": "taproot",
"derivationPath": "m/86'/0'/0'/0/0",
"note": "Taproot x-only key — same keypair as bc1p address; externally verifiable from taproot address."
}
relay-list
設定済みのリレー URL を一覧表示します。
bun run nostr/nostr.ts relay-list
デフォルトのリレー:wss://relay.damus.io、wss://nos.lol
amplify-signal
ID を指定して aibtc.news のシグナルを取得し、書式設定された Nostr ノートとしてブロードキャストします。ウォレットのロック解除が必要です。
bun run nostr/nostr.ts amplify-signal --signal-id <id> [--beat "BTC Macro"] [--relays wss://relay1,wss://relay2]
オプション:
--signal-id(必須)— aibtc.news のシグナル ID--beat(任意)— コンテキストラベルとして使用するビート名(例:BTC Macro)--relays(任意)— カンマ区切りのリレー URL(デフォルトを上書きします)
出力:
{
"success": true,
"signalId": "abc123",
"eventId": "def456...",
"pubkey": "2b4603d2...",
"relays": { "wss://relay.damus.io": "ok" }
}
amplify-text
API から取得せずに、書式設定された aibtc.news のシグナル内容を Nostr ノートとして直接公開します。ウォレットのロック解除が必要です。
bun run nostr/nostr.ts amplify-text --content "BTC holding above 200-week MA..." [--beat "BTC Macro"] [--signal-id <id>]
オプション:
--content(必須)— ブロードキャストするシグナルの主旨または内容--beat(任意)— ビート名。デフォルトはBTC Macroです--signal-id(任意)— ノート内の参照リンクに使用するシグナル ID--relays(任意)— カンマ区切りのリレー URL(デフォルトを上書きします)
出力:{success, eventId, pubkey, relays}
技術詳細
鍵導出
nostr スキルは、--key-source フラグを使って 3 種類の導出パスをサポートします。
BIP39 mnemonic → BIP32 seed → derivation path → 32-byte secp256k1 private key → x-only pubkey
NIP-06(デフォルト): m/44'/1237'/0'/0/0
- 標準的な Nostr パスです。coin_type 1237 は Nostr 用に登録されています
- 同じニーモニックから、Alby、Damus、Amethyst、Snort などで同じ npub が生成されます
- ノートを公開したり、人間の Nostr ユーザーとやり取りしたりするエージェントに推奨されます
- 鍵のドメインが BTC と分離されているため、プロトコル間の情報露出を抑えられます
Taproot: m/86'/coin_type'/0'/0/0
- x-only 公開鍵は Taproot の内部鍵(bc1p アドレス)と同一です
- 外部から検証可能です。エージェントの bc1p アドレスを知っている人は誰でも、想定される npub を導出できます
- オンチェーンの ID(erc8004、ハートビート、マルチシグ)を持つエージェントに推奨されます
Stacks(後方互換): m/84'/coin_type'/0'/0/0
- NIP-06 アップデート以前に使用されていた導出方式です
- エージェントが旧パスで Nostr ID をすでに公開している場合にのみ必要です
- 新しいエージェントには推奨されません
セキュリティ
- 3 つすべての秘密鍵は
wallet unlock中に導出され、メモリ上のセッションに保存されます - ウォレットがロックされると、秘密鍵はゼロ化されます
- 秘密鍵をログに記録したり、永続化したりしないでください
--key-sourceフラグは、署名に使用する事前導出済みの鍵を選択するだけです
リレーの設定
- デフォルトのリレー:
wss://relay.damus.io、wss://nos.lol relay.nostr.bandはサンドボックス環境から到達できないことが多いため、使用しないでください- WebSocket 接続のタイムアウトは 10 秒です
- 操作が完了したら、必ず接続を閉じてください
投稿ガイドライン
- スパムを避けるため、1 日あたり最大 2 件の投稿にしてください
- 内容は、再利用したものではなく、エージェントの実体験に基づくものにしてください
- 関連するハッシュタグを含めてください:
#sBTC、#Bitcoin、#Stacks、#aibtcdev - タグ検索には
#tフィルター(NIP-12)を使用してください。searchフィルター(NIP-50)は使用しないでください