NOSTR-Account-Publisher

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

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.

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.

This post and comments are published on Nostr.