
【最新版】NostrでOpenClawを使う方法(暗号化DM:NIP-04)
2026年3月18日
Nostr
ステータス:任意のプラグイン(デフォルトでは無効)。
Nostr は分散型のソーシャルネットワーキング向けプロトコルです。このチャネルにより、OpenClaw は NIP-04 を使って暗号化されたダイレクトメッセージ(DM)を受信し、返信できるようになります。
インストール(必要になったときに)
オンボーディング(推奨)
- オンボーディング(
openclaw onboard)とopenclaw channels addでは、任意チャネルのプラグインも一覧に表示されます。 - Nostr を選択すると、必要に応じてプラグインのインストールを促されます。
インストールのデフォルト挙動:
- Dev チャネル + git checkout が利用可能:ローカルのプラグインパスを使用します。
- Stable/Beta:npm からダウンロードします。
プロンプトで選択を上書きすることもできます。
手動インストール
openclaw plugins install @openclaw/nostr
ローカルチェックアウト(開発ワークフロー):
openclaw plugins install --link <path-to-openclaw>/extensions/nostr
プラグインをインストールまたは有効化したら、Gateway を再起動してください。
非対話(non-interactive)セットアップ
openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY" openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY" --relay-urls "wss://relay.damus.io,wss://relay.primal.net"
--use-env を使うと、NOSTR_PRIVATE_KEY を config に保存せず、環境変数に保持できます。
クイックセットアップ
- Nostr の鍵ペアを生成します(必要な場合):
# nak を使用 nak key generate
- config に追加します:
{ "channels": { "nostr": { "privateKey": "${NOSTR_PRIVATE_KEY}" } } } - キーをエクスポートします:
export NOSTR_PRIVATE_KEY="nsec1..."
- Gateway を再起動します。
設定リファレンス
主な設定キー:
privateKey(string、必須):nsecまたは hex 形式の秘密鍵relays(string[]、デフォルト:["wss://relay.damus.io", "wss://nos.lol"]):Relay の URL(WebSocket)dmPolicy(string、デフォルト:pairing):DM のアクセス制御ポリシーallowFrom(string[]、デフォルト:[]):許可する送信者の pubkeyenabled(boolean、デフォルト:true):チャネルの有効/無効name(string):表示名profile(object):NIP-01 のプロフィールメタデータ
プロフィールメタデータ
プロフィールデータは NIP-01 の kind:0 イベントとして公開されます。 Control UI(Channels → Nostr → Profile)から管理するか、config に直接設定できます。
例:
{
"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": "openclaw@example.com",
"lud16": "openclaw@example.com"
}
}
}
}注意:
- プロフィールの URL は
https://を使用する必要があります。 - Relay からのインポートはフィールドをマージし、ローカルの上書きは保持されます。
アクセス制御
DM ポリシー
- pairing(デフォルト):未知の送信者にはペアリングコードを返します。
- allowlist:
allowFromに含まれる pubkey のみ DM 可能。 - open:公開 DM を受け付けます(
allowFrom: ["*"]が必要)。 - disabled:受信 DM を無視します。
Allowlist 例
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"dmPolicy": "allowlist",
"allowFrom": ["npub1abc...", "npub1xyz..."]
}
}
}鍵フォーマット
受け付ける形式:
- 秘密鍵:
nsec...または 64 文字の hex - Pubkey(allowFrom):
npub...または hex
Relay(リレー)
デフォルト:relay.damus.io と nos.lol。
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"]
}
}
}ヒント:
- 冗長性のため、2〜3 個の relay を推奨します。
- relay を増やしすぎると、レイテンシや重複が増えます。
- 有料 relay を使うと信頼性が上がることがあります。
- ローカル relay もテスト用途には有用です(
ws://localhost:7777)。
プロトコル対応
- NIP-01:対応(基本イベント形式 + プロフィールメタデータ)
- NIP-04:対応(暗号化 DM:
kind:4) - NIP-17:予定(ギフトラップ DM)
- NIP-44:予定(バージョン付き暗号化)
テスト
ローカル relay
# strfry を起動 docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["ws://localhost:7777"]
}
}
}手動テスト
- ログからボットの pubkey(npub)を控えます。
- Nostr クライアント(Damus、Amethyst など)を開きます。
- ボットの pubkey 宛に DM を送ります。
- 返信が来ることを確認します。
トラブルシューティング
メッセージを受信できない
- 秘密鍵が有効であることを確認します。
- relay URL に到達でき、
wss://(ローカルのみws://)であることを確認します。 enabledがfalseになっていないことを確認します。- relay 接続エラーがないか Gateway ログを確認します。
返信を送信できない
- relay が書き込みを受け付けているかを確認します。
- アウトバウンドのネットワーク到達性を確認します。
- relay のレート制限に注意します。
返信が重複する
- 複数 relay を使っている場合に起き得ます。
- メッセージは event ID で重複排除され、最初の配信だけが返信をトリガーします。
セキュリティ
- 秘密鍵をコミットしないでください。
- 鍵は環境変数で管理してください。
- 本番のボットでは
allowlistを検討してください。
制限(MVP)
- DM のみ(グループチャットは非対応)。
- メディア添付は非対応。
- NIP-04 のみ(NIP-17 のギフトラップは予定)。
参考
関連記事

AIエージェントのメモリスタックとは?2026年に重要度が上がる理由をやさしく解説
2026年4月8日
OpenClaw vs Hermes vs Claude、創業者はどれを選ぶべき?2026年版の実務比較
2026年4月8日