NOSTR-Account-Publisher
NOSTR-Account-Publisher
Dies ist ein kleines Projekt, um eine Gruppe, Organisation oder Institution über Textdateien zu beschreiben.
Diese Beschreibung kann in NOSTR-Ereignisse umgewandelt und über Relays veröffentlicht werden. Sie kann zum Einrichten eines NOSTR-Kontos verwendet werden.
Details zur Struktur und zu den verschiedenen Arten von Informationen, die Sie über NOSTR bereitstellen können, finden Sie im Ordner „doc”.
Ein Befehlszeilentool zum Einrichten eines NOSTR-Kontos, beispielsweise wenn Sie Ihre Daten von einer proprietären Plattform auf NOSTR übertragen möchten, beispielsweise als Spiegel.
Definieren Sie das Profil
Ein Profil wird durch eine YAML-Datei beschrieben und definiert den Inhalt Ihrer Gruppe/Ihres Profils.
Wenn Sie das Langformat verwenden möchten, müssen Sie den Text in Markdown in einem Verzeichnis speichern und dem Programm den Parameter --articlePath übergeben.
Beispiele finden Sie im Verzeichnis profileExamples/, das auch in der Beispiel-Dokumentation beschrieben ist.
Unterstützte Inhalte
- Profil-Metadaten
- Follow-Liste kind:3
- Relay-Liste kind:10002
- Interessen kind:10015
- Pin-Liste kind:10001
- Kurze Notiz kind:1
- Lange Notiz kind:30023
- Kalender kind:31924
- Kalenderereignisse kind:31923
- Lesezeichensatz kind:30003
- Kurationssatz kind:30004
- Interessenssatz kind:30015
- Follow-satz kind:30000
- Stummschaltungssatz kind:30007
- Starterpaket kind:39089
classDiagram
direction TB
class NostrSet {
-String dTag
-String title
-String imageUrl
-String summary
-List kind1
-List kind30023
-List tags
-List urls
-List profiles
-Long createdAt
}
class Media {
-String title
-String imageUrl
-String summary
-Long createdAt
-Long duration
-String contentWarning
-List imeta
}
class NostrResource {
-String url
-String mimeType
-String hash
-String orgHash
-Long size
-String dim
-String magnetLink
-String torrent
-String blurhash
-String thumb
-String image
-String summary
-String alt
-List fallback
-String service
}
class Profile {
-String pk
-Map metadata
-List nip39
-List kind3
-List kind10002
-List kind10015
-List kind1
-List kind30023
-List kind10001
-List kind30003
-List kind30004
-List kind30015
-List kind30000
-List kind30007
-List kind39089
-List kind31924
-List kind31923
-List kind20
}
class ForainId {
- String user;
- String proof;
}
class NostrId {
- String publicKey;
- String relay;
- String petname;
}
class Relay {
- String name;
- String url;
- boolean write;
}
class Note {
- String content;
- List tags;
- Long createdAt;
}
class Article {
- String dTag;
- String file;
- String title;
- String imageUrl;
- String summary;
- List tags;
- Long createdAt;
}
class Calendar {
- String dTag;
- String summary;
- String title;
- String imageUrl;
- List includedCaledarEvents;
- Long createdAt;
}
class CalendarEvent {
- String dTag;
- String title;
- String summary;
- String imageUrl;
- String startTzid;
- String endTzid;
- String location;
- String geoHash;
- Long start;
- Long end;
- Long createdAt;
}
note for Note "The short Note."
note for Article "The long Note."
note for NostrSet "A named List for different content."
note for Profile "The configuration of the account."
Profile "1" o-- "*" NostrSet : kind30003/04/05/...
Profile "1" o-- "*" Media : kind20
Profile "1" o-- "*" NostrId : kind3
Profile "1" o-- "*" Note : kind1
Profile "1" o-- "*" Article : kind30023
Profile "1" o-- "*" Calendar : kind31924
Profile "1" o-- "*" CalendarEvent : kind31923
Profile "1" o-- "*" ForainId : nip39
Profile "1" o-- "*" Relay : kind10002
Media "1" o-- "*" NostrResource : imeta
NostrSet "1" o-- "*" Note : kind1
NostrSet "1" o-- "*" Article : kind30023
NostrSet "1" o-- "*" NostrId : profiles
Calendar "1" o-- "*" CalendarEvent : includedCaledarEvents
Unterstützte Signaturdienste
- NoSigner
- NOSTR Signaturgerät
https://nsd.lnbits.com/ - nsec
Inhalt vorbereiten
Sie definieren den YAML-Inhalt.
Weitere Details finden Sie unter „profileExamples”. Das „group-example” ist diese Anwendung selbst und klarmachen, ein alter Blog von mir.
Profildaten
Inhalt
- Textnotizen
- Artikel
- Kalender
- Following
Mediendaten – Sie müssen alle Medien auf einem Hoster speichern, da NOSTR nur JSON bereitstellt.
- Eigener Hoster
- Cloud-Dienst
- Anonymes Hosting über Lightning
Artikel sollten in Markdown-Dateien in einem Verzeichnis gespeichert werden, das durch ihre YAML-Werte definiert ist.
Sie können die Inhalte weiter in Listen (Bookmarksets) organisieren, in denen Sie auf Notizen, Artikel usw. verweisen.
Identität vorbereiten
NOSTR verwendet die Verwaltung privater und öffentlicher Schlüssel. Sie können ein Konto aus mathematischen Daten erstellen.
Wenn Sie eine institutionelle Gruppe erstellen möchten, sollten Sie ein Hardwaregerät zur Verwaltung des Kontos verwenden, da gemeinsam genutzte Geheimnisse nicht wirklich geheim sind. Das Signaturgerät ermöglicht es, den Schlüssel zu teilen, ohne ihn zu gefährden. In einer Institution wechseln die Mitarbeiter, institutionelle Konten sollten dies jedoch nicht.
Die Übertragung des Geräts kann Teil des institutionellen Übergangsprozesses sein und sollte in der Satzung formalisiert werden, falls die Organisation über eine solche verfügt.
Derzeit wird Folgendes unterstützt:
Verwendung
Erste Erstellung:
./gradlew build
Nachdem Sie die ZIP-Datei in /nostr-account-publisher/application/build/distributions gefunden haben.
Diese enthält ein einfaches Bash-Skript zum Starten der Anwendung.
Verwendung: profileCreator [-hs] [-a=<articlePath>] [-m=<signMethod>] [-o=<outPath>]
-p=<profileDescriptor> [--portHint=<portHint>]
[--privateKey=<privateKeyHex>]
Erstellt ein NOSTR-Profil aus einer YAML-Konfiguration.
-a, --articlePath=<articlePath>
Der vollständige Pfad zum Artikelverzeichnis.
-h, --help Zeigt diese Hilfe an.
-m, --method=<signMethod> Die Methode zum Signieren der Ereignisse. Gültige Werte: NO,
PK, HDW
Standard: NO
-o, --outPath=<outPath> Pfad zum Speichern der Ereignis-JSON-Datei
-p, --profileYaml=<profileDescriptor>
Der vollständige Pfad zu einer YAML-Datei, die das
Profil beschreibt
--portHint=<portHint> Ein Hinweis zum Auffinden des COM-Ports
Standard: ACM
--privateKey=<privateKeyHex>
Der private Schlüssel als Hexadezimalwert, nur gültig mit der Option
--method PK.
-s, --sendEvents Veröffentlicht die Ereignisse an Relais
Standard: false
Sie können die generierte Ereignis-JSON-Datei mit dem Parameter -o in einer Datei speichern. Verwenden Sie dies für Probeläufe, bei denen Sie die Daten und die Struktur überprüfen können.
Einzelne Objekte erhalten einen einfachen Namen, während Objekte in Listen, wie Notizen und Artikel, nach ihrer Ereignisart und dem Index in der Liste benannt werden, z. B. 1_1.json.
Sie können sie auch aufbewahren, um sie erneut an andere Relays zu senden oder als Backup zu verwenden. Da die Ereignisse signiert sind, müssen sie lediglich erneut übertragen werden.