コンテンツにスキップ

OpenClawでNostr連携:DM送受信を3ステップで設定

新しい通信プロトコルを自分のプロジェクトに組み込もうとすると、設定の複雑さや仕様の理解に時間がかかってしまうことがありますよね。特に分散型プロトコルの場合、どこから手をつければいいのか迷ってしまうこともあるはずです。

OpenClaw の Nostr プラグインを使えば、そんな悩みも解消されます。分散型ソーシャルネットワークである Nostr を活用して、暗号化されたダイレクトメッセージ(DM)を介したやり取りを、驚くほどスムーズに Gateway へ統合できます。

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

Nostr は、分散型のソーシャルネットワーク用プロトコルです。このチャネルを有効にすると、OpenClaw は NIP-04 を通じて暗号化されたダイレクトメッセージ(DM)を受信し、応答できるようになります。

インストール(オンデマンド)

Section titled “インストール(オンデマンド)”
  • オンボーディング(openclaw onboard)および openclaw channels add を実行すると、オプションのチャネルプラグインが表示されます。
  • Nostr を選択すると、必要に応じてプラグインをインストールするよう促されます。

インストールのデフォルト設定:

  • Dev チャネル + git チェックアウトが利用可能: ローカルのプラグインパスを使用します。
  • Stable/Beta: npm からダウンロードします。

プロンプトが表示された際、いつでも選択を上書きできます。

Terminal window
openclaw plugins install @openclaw/nostr

ローカルのチェックアウトを使用する場合(開発ワークフロー用):

Terminal window
openclaw plugins install --link <path-to-local-nostr-plugin>

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

Terminal window
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 を設定ファイルに保存せず、環境変数として保持できます。

  1. Nostr のキーペアを生成します(必要な場合):
Terminal window
# Using nak
nak key generate
  1. 設定に追加します:
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
},
},
}
  1. キーをエクスポートします:
Terminal window
export NOSTR_PRIVATE_KEY="nsec1..."
  1. Gateway を再起動します。
キー型デフォルト説明
privateKeystring必須nsec または hex 形式の秘密鍵
relaysstring[]['wss://relay.damus.io', 'wss://nos.lol']リレーの URL (WebSocket)
dmPolicystringpairingDM のアクセス制御ポリシー
allowFromstring[][]許可する送信者の公開鍵(pubkey)
enabledbooleantrueチャネルの有効化/無効化
namestring-表示名
profileobject-NIP-01 プロフィールメタデータ

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

例:

{
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:// を使用してください。
  • リレーからインポートする場合、フィールドがマージされ、ローカルの設定が優先して保持されます。
  • pairing (デフォルト): 未知の送信者に対してペアリングコードを送信します。
  • allowlist: allowFrom に含まれる公開鍵のみが DM を送信できます。
  • open: パブリックな受信 DM を許可します(allowFrom: ["*"] が必要)。
  • disabled: 受信 DM を無視します。

適用に関する注意:

  • 送信者ポリシーのチェックは、署名の検証や NIP-04 の復号の前に行われます。
  • ペアリングの返信は、元の DM 本文を処理せずに送信されます。
  • 受信 DM にはレート制限が適用され、サイズが大きすぎるペイロードは復号前に破棄されます。
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
dmPolicy: "allowlist",
allowFrom: ["npub1abc...", "npub1xyz..."],
},
},
}

以下の形式が使用可能です:

  • 秘密鍵: nsec... または 64文字の hex
  • 公開鍵 (allowFrom): npub... または hex

デフォルト設定: 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 個のリレーを使用することをおすすめします。
  • リレーが多すぎると、遅延や重複の原因になるため避けてください。
  • 有料リレーを使用すると、信頼性が向上することがあります。
  • テスト目的であれば、ローカルリレー(ws://localhost:7777)でも問題ありません。
NIPステータス説明
NIP-01サポート済基本的なイベント形式 + プロフィールメタデータ
NIP-04サポート済暗号化 DM (kind:4)
NIP-17計画中Gift-wrapped DM
NIP-44計画中バージョン管理された暗号化
Terminal window
# Start strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
channels: {
nostr: {
privateKey: "${NOSTR_PRIVATE_KEY}",
relays: ["ws://localhost:7777"],
},
},
}
  1. ログからボットの公開鍵(npub)を確認します。
  2. Nostr クライアント(Damus, Amethyst など)を開きます。
  3. ボットの公開鍵宛に DM を送信します。
  4. 応答が返ってくるか確認します。
  • 秘密鍵が有効であることを確認してください。
  • リレーの URL に到達可能か、wss://(ローカルの場合は ws://)が正しく使われているか確認してください。
  • enabled が false になっていないか確認してください。
  • Gateway のログを確認し、リレー接続エラーが出ていないかチェックしてください。
  • リレーが書き込みを許可しているか確認してください。
  • アウトバウンドの接続性を確認してください。
  • リレーのレート制限にかかっていないか注意してください。
  • 複数のリレーを使用している場合、これは予想される動作です。
  • メッセージはイベント ID によって重複排除されるため、最初のリ答のみがトリガーされます。
  • 秘密鍵をコミットしないでください。
  • キーの管理には環境変数を使用してください。
  • 本番環境のボットでは allowlist の使用を検討してください。
  • ペアリングおよび許可リストのポリシーは復号前に適用されるため、未知の送信者が暗号処理に負荷をかけることはできません。
  • ダイレクトメッセージのみ対応しています(グループチャットは未対応)。
  • メディアの添付はできません。
  • NIP-04 のみに対応しています(NIP-17 gift-wrap は計画中です)。
  • Channels Overview — サポートされているすべてのチャネル
  • Pairing — DM 認証とペアリングのフロー
  • Groups — グループチャットの動作とメンション制御
  • Channel Routing — メッセージのセッションルーティング
  • Security — アクセスモデルとセキュリティ強化

設定で困ったことがあれば、AI Setup Assistant に相談してみてください。最適な構成を一緒に見つけましょう。

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。