Nostr
NIP-04 の暗号化 DM で Nostr に接続します。
ステータス: オプションプラグイン(デフォルトで無効)。
Nostrは分散型ソーシャル/メッセージングプロトコルです。このチャンネルはOpenClawがNIP-04経由で暗号化されたダイレクトメッセージ(DM)を受信・返信できるようにします。
インストール(オプション)
#
Onboarding (Recommended)
- オンボーディングウィザード(<code>openclaw onboard</code>)と<code>openclaw channels add</code>が利用可能なチャンネルプラグインを一覧表示します。
- Nostrを選択すると、必要に応じてプラグインをインストールするよう求められます。
インストールのデフォルトポリシー:
- <strong>開発チャンネル + gitチェックアウトが存在:</strong> ローカルプラグインパスを使用
- <strong>Stable/Beta:</strong> npmからダウンロード
プロンプトでデフォルトの選択を上書きできます。
#
手動インストール
openclaw plugins install @openclaw/nostr
ローカルインストール(開発ワークフロー):
openclaw plugins install --link '<path-to-openclaw>'/extensions/nostr
プラグインのインストールまたは有効化後、Gatewayを再起動してください。
クイックセットアップ
1. Nostrキーペアを生成(必要な場合):
nak key generate
2. 設定を記述:
{
"channels": {
"nostr": {
"privateKey": "\${NOSTR_PRIVATE_KEY}"
}
}
}3. 環境変数を設定:
export NOSTR_PRIVATE_KEY="nsec1..."
4. Gatewayを再起動。
設定リファレンス
| 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 |
Profile metadata
プロファイルデータはNIP-01の<code>kind:0</code>イベントとして公開されます。Control UI(Channels → Nostr → Profile)で管理するか、設定に直接記述できます。
Example:
{
"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からインポートする際、フィールドはマージされ、ローカルの上書き値が保持されます。
アクセス制御
#
DMポリシー
- <strong>pairing</strong>(デフォルト):不明な送信者はペアリングコードを受け取ります。
- <strong>allowlist</strong>:<code>allowFrom</code>内のpubkeysのみDM可能。
- <strong>open</strong>:公開インバウンドDM(<code>allowFrom: ["*"]</code>が必要)。
- <strong>disabled</strong>:インバウンドDMを無視。
#
許可リストの例
{
"channels": {
"nostr": {
"privateKey": "\${NOSTR_PRIVATE_KEY}",
"dmPolicy": "allowlist",
"allowFrom": ["npub1abc...", "npub1xyz..."]
}
}
}キー形式
サポートされる形式:
- <strong>秘密鍵:</strong> <code>nsec...</code>または64文字の16進
- <strong>公開鍵(<code>allowFrom</code>):</strong> <code>npub...</code>または16進
Relays
デフォルト:<code>relay.damus.io</code>と<code>nos.lol</code>。
{
"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>)。
プロトコルサポート
| NIP | ステータス | 説明 |
| | - |
| NIP-01 | 対応済み | 基本的なイベント形式 + プロファイルメタデータ |
| NIP-04 | 対応済み | 暗号化DM(kind:4) |
| NIP-17 | 予定済み | Gift-wrapped DMs |
| NIP-44 | 予定済み | バージョン化暗号化 |
テスト
#
ローカルrelay
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
"channels": {
"nostr": {
"privateKey": "\${NOSTR_PRIVATE_KEY}",
"relays": ["ws://localhost:7777"]
}
}
}#
手動テスト
1. ログからbotのpubkey(npub)を記録。
2. Nostrクライアント(Damus、Amethystなど)を開く。
3. botのpubkeyにDMを送信。
4. botが返信することを確認。
トラブルシューティング
#
メッセージが受信できない
- 秘密鍵が有効であることを確認。
- relay URLsに到達可能で<code>wss://</code>(またはローカル<code>ws://</code>)を使用していることを確認。
- <code>enabled</code>が<code>false</code>でないことを確認。
- relay接続エラーについてgatewayログを確認。
#
返信が送信できない
- relayが書き込みを許可していることを確認。
- アウトバウンドネットワーク接続を確認。
- relayのレート制限に注意。
#
重複する返信
- 複数のrelayを使用する際の予期される動作。