OpenClaw Nostr チャンネル
オプションプラグインを通じて、OpenClaw を Nostr 分散型ネットワークに接続します。この統合により、AI アシスタントが任意の Nostr relay を介して NIP-04 暗号化ダイレクトメッセージを受信し、応答できるようになります。中央集権型サーバーもアカウント登録も不要で、暗号鍵ペアと relay 接続だけで利用できます。検閲耐性と自己主権を重視するプライバシー志向のデプロイに最適です。
Nostr 対応機能
テキストメッセージ
対応
メディア・ファイル
非対応
リアクション
対応
スレッド
非対応
音声メッセージ
非対応
グループチャット
非対応
Nostr 前提条件
- OpenClaw Gateway がインストールされ、実行されていること
- Nostr 鍵ペア(nsec または hex 形式の秘密鍵)— 'nak key generate' で生成できます
- WebSocket 経由でアクセス可能な Nostr relay が少なくとも1つあること(例: wss://relay.damus.io)
- サーバーに Node.js 18 以上がインストールされていること
Nostr クイックセットアップ
Nostr プラグインのインストール
'openclaw plugins install @openclaw/nostr' を実行して Nostr チャネルを追加します。または、'openclaw onboard' や 'openclaw channels add' を使用し、プラグイン一覧から Nostr を選択することもできます。インストール後に Gateway を再起動してください。
鍵ペアの生成と設定
'nak key generate' を使用して Nostr 鍵ペアを生成します。秘密鍵を環境変数として設定し(export NOSTR_PRIVATE_KEY="nsec1...")、openclaw.json の設定で ${NOSTR_PRIVATE_KEY} として参照します。
起動とテスト DM の送信
'openclaw start' で Gateway を再起動します。起動ログでボットの公開鍵(npub)を確認してください。任意の Nostr クライアント(例: Damus、Amethyst、Primal)を開き、ボットの npub に暗号化 DM を送信します。デフォルトのペアリングポリシーを使用している場合は、CLI で送信者を承認してください。
Nostr 設定例
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": [
"wss://relay.damus.io",
"wss://nos.lol"
],
"dmPolicy": "pairing"
}
}
}Nostr 詳細ドキュメント
アーキテクチャの概要
プラグインのインストール
鍵の生成と管理
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}relay の設定
{
"channels": {
"nostr": {
"relays": [
"wss://relay.damus.io",
"wss://nos.lol",
"wss://relay.nostr.band"
]
}
}
}DM ポリシー
{
"channels": {
"nostr": {
"dmPolicy": "allowlist",
"allowFrom": [
"npub1abc...xyz",
"npub1def...uvw"
]
}
}
}プロフィールメタデータ(NIP-01)
{
"channels": {
"nostr": {
"profile": {
"name": "openclaw-bot",
"display_name": "OpenClaw AI Assistant",
"about": "AI-powered assistant on Nostr. DM me!",
"picture": "https://example.com/bot-avatar.png",
"nip05": "bot@yourdomain.com"
}
}
}
}暗号化とプロトコルサポート
ローカル relay でのテスト
{
"channels": {
"nostr": {
"relays": ["ws://localhost:7777"],
"dmPolicy": "open",
"allowFrom": ["*"]
}
}
}Nostr 設定リファレンス
| Key | Type | Default | Description |
|---|---|---|---|
| privateKey | string | (required) | nsec(Bech32)または 64 文字の hex 形式の Nostr 秘密鍵。環境変数の参照を使用してください。 |
| relays | string[] | ["wss://relay.damus.io", "wss://nos.lol"] | 接続する Nostr relay の WebSocket URL リスト |
| dmPolicy | string | "pairing" | DM アクセス制御ポリシー: 'pairing'、'allowlist'、'open'、または 'disabled' |
| allowFrom | string[] | [] | ボットへのメッセージ送信を許可する公開鍵(npub または hex)(dmPolicy が 'allowlist' の場合) |
| enabled | boolean | true | Nostr チャネルの有効/無効を切り替えます |
| name | string | "" | このチャネルインスタンスの表示名 |
| profile.name | string | "" | NIP-01 メタデータとして公開されるボットのユーザー名 |
| profile.display_name | string | "" | NIP-01 メタデータとして公開される表示名 |
| profile.about | string | "" | NIP-01 メタデータとして公開されるボットの自己紹介 / 説明文 |
| profile.picture | string | "" | NIP-01 メタデータとして公開されるアバター画像 URL(HTTPS 必須) |
| profile.banner | string | "" | NIP-01 メタデータとして公開されるバナー画像 URL(HTTPS 必須) |
| profile.website | string | "" | NIP-01 メタデータとして公開される Web サイト URL |
| profile.nip05 | string | "" | NIP-05 検証識別子(例: 'bot@yourdomain.com') |
| profile.lud16 | string | "" | zap 受信用の Lightning アドレス |
nsec(Bech32)または 64 文字の hex 形式の Nostr 秘密鍵。環境変数の参照を使用してください。
接続する Nostr relay の WebSocket URL リスト
DM アクセス制御ポリシー: 'pairing'、'allowlist'、'open'、または 'disabled'
ボットへのメッセージ送信を許可する公開鍵(npub または hex)(dmPolicy が 'allowlist' の場合)
Nostr チャネルの有効/無効を切り替えます
このチャネルインスタンスの表示名
NIP-01 メタデータとして公開されるボットのユーザー名
NIP-01 メタデータとして公開される表示名
NIP-01 メタデータとして公開されるボットの自己紹介 / 説明文
NIP-01 メタデータとして公開されるアバター画像 URL(HTTPS 必須)
NIP-01 メタデータとして公開されるバナー画像 URL(HTTPS 必須)
NIP-01 メタデータとして公開される Web サイト URL
NIP-05 検証識別子(例: 'bot@yourdomain.com')
zap 受信用の Lightning アドレス
Nostr よくある質問
Nostr トラブルシューティング
relay への接続が失敗したか、送信者がボットの購読先とは異なる relay に公開している可能性があります。
秘密鍵が有効な nsec(Bech32)または 64 文字の hex 形式ではないか、環境変数が設定されていません。
ボットの設定済み relay と受信者のクライアント relay が重複していないため、イベントが伝播できません。
プラグインのインストール後に Gateway が再起動されていないか、インストールがサイレントに失敗しています。