OpenClawSkills
GitHub
チャンネル • 5分で読める

Nostr

NIP-04 の暗号化 DM で Nostr に接続します。

ステータス: オプションプラグイン(デフォルトで無効)。

Nostrは分散型ソーシャル/メッセージングプロトコルです。このチャンネルはOpenClawがNIP-04経由で暗号化されたダイレクトメッセージ(DM)を受信・返信できるようにします。

Tutorial.step

インストール(オプション)

#

Tutorial.step

Onboarding (Recommended)

- オンボーディングウィザード(<code>openclaw onboard</code>)と<code>openclaw channels add</code>が利用可能なチャンネルプラグインを一覧表示します。

- Nostrを選択すると、必要に応じてプラグインをインストールするよう求められます。

インストールのデフォルトポリシー:

- <strong>開発チャンネル + gitチェックアウトが存在:</strong> ローカルプラグインパスを使用

- <strong>Stable/Beta:</strong> npmからダウンロード

プロンプトでデフォルトの選択を上書きできます。

#

Tutorial.step

手動インストール

Bash
openclaw plugins install @openclaw/nostr

ローカルインストール(開発ワークフロー):

Bash
openclaw plugins install --link '<path-to-openclaw>'/extensions/nostr

プラグインのインストールまたは有効化後、Gatewayを再起動してください。

Tutorial.step

クイックセットアップ

1. Nostrキーペアを生成(必要な場合):

Bash
nak key generate

2. 設定を記述:

Json
{
  "channels": {
    "nostr": {
      "privateKey": "\${NOSTR_PRIVATE_KEY}"
    }
  }
}

3. 環境変数を設定:

Bash
export NOSTR_PRIVATE_KEY="nsec1..."

4. Gatewayを再起動。

Tutorial.step

設定リファレンス

| Key | Type | Default | Description |

| | -- | - | |

| privateKey | string | required | 秘密鍵(nsecまたは16進形式) |

| relays | string[] | ['wss://relay.damus.io', 'wss://nos.lol'] | relay URLs(WebSocket) |

| dmPolicy | string | pairing | DMアクセスポリシー |

| allowFrom | string[] | [] | 許可された送信者pubkeys(許可リスト) |

| enabled | boolean | true | チャンネルの有効化/無効化 |

| name | string | - | Display name |

| profile | object | - | NIP-01 profile metadata |

Tutorial.step

Profile metadata

プロファイルデータはNIP-01の<code>kind:0</code>イベントとして公開されます。Control UI(Channels → Nostr → Profile)で管理するか、設定に直接記述できます。

Example:

Json
{
  "channels": {
    "nostr": {
      "privateKey": "\${NOSTR_PRIVATE_KEY}",
      "profile": {
        "name": "openclaw",
        "displayName": "OpenClaw",
        "about": "Personal assistant DM bot",
        "picture": "https://example.com/avatar.png",
        "banner": "https://example.com/banner.png",
        "website": "https://example.com",
        "nip05": "[email protected]",
        "lud16": "[email protected]"
      }
    }
  }
}

Notes:

- プロファイルURLは<code>https://</code>を使用する必要があります。

- relaysからインポートする際、フィールドはマージされ、ローカルの上書き値が保持されます。

Tutorial.step

アクセス制御

#

Tutorial.step

DMポリシー

- <strong>pairing</strong>(デフォルト):不明な送信者はペアリングコードを受け取ります。

- <strong>allowlist</strong>:<code>allowFrom</code>内のpubkeysのみDM可能。

- <strong>open</strong>:公開インバウンドDM(<code>allowFrom: [&quot;*&quot;]</code>が必要)。

- <strong>disabled</strong>:インバウンドDMを無視。

#

Tutorial.step

許可リストの例

Json
{
  "channels": {
    "nostr": {
      "privateKey": "\${NOSTR_PRIVATE_KEY}",
      "dmPolicy": "allowlist",
      "allowFrom": ["npub1abc...", "npub1xyz..."]
    }
  }
}
Tutorial.step

キー形式

サポートされる形式:

- <strong>秘密鍵:</strong> <code>nsec...</code>または64文字の16進

- <strong>公開鍵(<code>allowFrom</code>):</strong> <code>npub...</code>または16進

Tutorial.step

Relays

デフォルト:<code>relay.damus.io</code>と<code>nos.lol</code>。

Json
{
  "channels": {
    "nostr": {
      "privateKey": "\${NOSTR_PRIVATE_KEY}",
      "relays": ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"]
    }
  }
}

Recommendations:

- 冗長性のために2–3個のrelayを使用。

- 多すぎるrelayを避ける(遅延、重複メッセージ)。

- 有料relayは通常より安定。

- ローカルrelayはテストに適している(<code>ws://localhost:7777</code>)。

Tutorial.step

プロトコルサポート

| NIP | ステータス | 説明 |

| | - |

| NIP-01 | 対応済み | 基本的なイベント形式 + プロファイルメタデータ |

| NIP-04 | 対応済み | 暗号化DM(kind:4) |

| NIP-17 | 予定済み | Gift-wrapped DMs |

| NIP-44 | 予定済み | バージョン化暗号化 |

Tutorial.step

テスト

#

Tutorial.step

ローカルrelay

Bash
docker run -p 7777:7777 ghcr.io/hoytech/strfry
Json
{
  "channels": {
    "nostr": {
      "privateKey": "\${NOSTR_PRIVATE_KEY}",
      "relays": ["ws://localhost:7777"]
    }
  }
}

#

Tutorial.step

手動テスト

1. ログからbotのpubkey(npub)を記録。

2. Nostrクライアント(Damus、Amethystなど)を開く。

3. botのpubkeyにDMを送信。

4. botが返信することを確認。

Tutorial.step

トラブルシューティング

#

Tutorial.step

メッセージが受信できない

- 秘密鍵が有効であることを確認。

- relay URLsに到達可能で<code>wss://</code>(またはローカル<code>ws://</code>)を使用していることを確認。

- <code>enabled</code>が<code>false</code>でないことを確認。

- relay接続エラーについてgatewayログを確認。

#

Tutorial.step

返信が送信できない

- relayが書き込みを許可していることを確認。

- アウトバウンドネットワーク接続を確認。

- relayのレート制限に注意。

#

Tutorial.step

重複する返信

- 複数のrelayを使用する際の予期される動作。