OpenClaw Nostr Kanal
Verbinden Sie OpenClaw mit dem dezentralen Nostr-Netzwerk über ein optionales Plugin. Diese Integration ermöglicht es Ihrem KI-Assistenten, NIP-04-verschlüsselte Direktnachrichten über jeden Nostr-Relay zu empfangen und zu beantworten — keine zentralisierten Server, keine Konten zum Registrieren, nur ein kryptografisches Schlüsselpaar und eine Relay-Verbindung. Ideal für datenschutzorientierte Deployments, bei denen Zensurresistenz und Selbstbestimmung wichtig sind.
Nostr Unterstützte Funktionen
Textnachrichten
Unterstützt
Medien & Dateien
Nicht unterstützt
Reaktionen
Unterstützt
Threads
Nicht unterstützt
Sprachnachrichten
Nicht unterstützt
Gruppenchat
Nicht unterstützt
Nostr Voraussetzungen
- OpenClaw Gateway installiert und gestartet
- Ein Nostr-Schlüsselpaar (privater Schlüssel im nsec- oder Hex-Format) — generieren Sie es mit 'nak key generate'
- Mindestens ein Nostr-Relay erreichbar über WebSocket (z.B. wss://relay.damus.io)
- Node.js 18+ auf Ihrem Server installiert
Nostr Schnelleinrichtung
Nostr-Plugin installieren
Führen Sie 'openclaw plugins install @openclaw/nostr' aus, um den Nostr-Kanal hinzuzufügen. Alternativ können Sie 'openclaw onboard' oder 'openclaw channels add' verwenden und Nostr aus der Plugin-Liste auswählen. Starten Sie das Gateway nach der Installation neu.
Schlüsselpaar generieren und konfigurieren
Generieren Sie ein Nostr-Schlüsselpaar mit 'nak key generate'. Setzen Sie den privaten Schlüssel als Umgebungsvariable (export NOSTR_PRIVATE_KEY="nsec1...") und referenzieren Sie ihn in Ihrer openclaw.json-Konfiguration mit ${NOSTR_PRIVATE_KEY}.
Starten und eine Test-DM senden
Starten Sie das Gateway neu mit 'openclaw start'. Den öffentlichen Schlüssel (npub) Ihres Bots finden Sie in den Startprotokollen. Öffnen Sie einen beliebigen Nostr-Client (z.B. Damus, Amethyst, Primal) und senden Sie eine verschlüsselte DM an den npub des Bots. Bei Verwendung der Standard-Pairing-Richtlinie genehmigen Sie den Absender über die CLI.
Nostr Konfigurationsbeispiel
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": [
"wss://relay.damus.io",
"wss://nos.lol"
],
"dmPolicy": "pairing"
}
}
}Nostr Detaillierte Dokumentation
Architekturübersicht
Plugin-Installation
Schlüsselgenerierung & -verwaltung
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}Relay-Konfiguration
{
"channels": {
"nostr": {
"relays": [
"wss://relay.damus.io",
"wss://nos.lol",
"wss://relay.nostr.band"
]
}
}
}DM-Richtlinien
{
"channels": {
"nostr": {
"dmPolicy": "allowlist",
"allowFrom": [
"npub1abc...xyz",
"npub1def...uvw"
]
}
}
}Profil-Metadaten (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"
}
}
}
}Verschlüsselung & Protokollunterstützung
Testen mit einem lokalen Relay
{
"channels": {
"nostr": {
"relays": ["ws://localhost:7777"],
"dmPolicy": "open",
"allowFrom": ["*"]
}
}
}Nostr Konfigurationsreferenz
| Key | Type | Default | Description |
|---|---|---|---|
| privateKey | string | (required) | Privater Nostr-Schlüssel im nsec-Format (Bech32) oder 64-Zeichen-Hex-Format. Verwenden Sie eine Umgebungsvariablen-Referenz. |
| relays | string[] | ["wss://relay.damus.io", "wss://nos.lol"] | Liste der Nostr-Relay-WebSocket-URLs, mit denen eine Verbindung hergestellt werden soll |
| dmPolicy | string | "pairing" | DM-Zugriffskontrollrichtlinie: 'pairing', 'allowlist', 'open' oder 'disabled' |
| allowFrom | string[] | [] | Öffentliche Schlüssel (npub oder Hex), die dem Bot Nachrichten senden dürfen (wenn dmPolicy 'allowlist' ist) |
| enabled | boolean | true | Nostr-Kanal aktivieren oder deaktivieren |
| name | string | "" | Anzeigename für diese Kanalinstanz |
| profile.name | string | "" | Bot-Benutzername, veröffentlicht als NIP-01-Metadaten |
| profile.display_name | string | "" | Vollständiger Anzeigename, veröffentlicht als NIP-01-Metadaten |
| profile.about | string | "" | Bot-Biografie / Beschreibung, veröffentlicht als NIP-01-Metadaten |
| profile.picture | string | "" | Avatar-Bild-URL (HTTPS erforderlich), veröffentlicht als NIP-01-Metadaten |
| profile.banner | string | "" | Banner-Bild-URL (HTTPS erforderlich), veröffentlicht als NIP-01-Metadaten |
| profile.website | string | "" | Website-URL, veröffentlicht als NIP-01-Metadaten |
| profile.nip05 | string | "" | NIP-05-Verifizierungskennung (z.B. 'bot@yourdomain.com') |
| profile.lud16 | string | "" | Lightning-Adresse für den Empfang von Zaps |
Privater Nostr-Schlüssel im nsec-Format (Bech32) oder 64-Zeichen-Hex-Format. Verwenden Sie eine Umgebungsvariablen-Referenz.
Liste der Nostr-Relay-WebSocket-URLs, mit denen eine Verbindung hergestellt werden soll
DM-Zugriffskontrollrichtlinie: 'pairing', 'allowlist', 'open' oder 'disabled'
Öffentliche Schlüssel (npub oder Hex), die dem Bot Nachrichten senden dürfen (wenn dmPolicy 'allowlist' ist)
Nostr-Kanal aktivieren oder deaktivieren
Anzeigename für diese Kanalinstanz
Bot-Benutzername, veröffentlicht als NIP-01-Metadaten
Vollständiger Anzeigename, veröffentlicht als NIP-01-Metadaten
Bot-Biografie / Beschreibung, veröffentlicht als NIP-01-Metadaten
Avatar-Bild-URL (HTTPS erforderlich), veröffentlicht als NIP-01-Metadaten
Banner-Bild-URL (HTTPS erforderlich), veröffentlicht als NIP-01-Metadaten
Website-URL, veröffentlicht als NIP-01-Metadaten
NIP-05-Verifizierungskennung (z.B. 'bot@yourdomain.com')
Lightning-Adresse für den Empfang von Zaps
Nostr Häufig gestellte Fragen
Nostr Fehlerbehebung
Die Relay-Verbindung ist möglicherweise fehlgeschlagen, oder der Absender veröffentlicht auf anderen Relays als denen, die der Bot abonniert hat.
Der private Schlüssel liegt nicht in einem gültigen nsec-Format (Bech32) oder 64-Zeichen-Hex-Format vor, oder die Umgebungsvariable ist nicht gesetzt.
Die konfigurierten Relays des Bots und die Client-Relays des Empfängers überschneiden sich nicht, sodass Ereignisse sich nicht verbreiten können.
Das Gateway wurde nach der Plugin-Installation nicht neu gestartet, oder die Installation ist stillschweigend fehlgeschlagen.