Metadaten
Dokumentiert jedes erforderliche und optionale Feld in der metadata.json-Datei einer Nowly-Presence.
Erforderliche Felder
Jede Presence benötigt:
| Feld | Typ | Beschreibung | Standard |
|---|---|---|---|
name* | string | Anzeigename des Dienstes oder der Plattform. | - |
author* | object | Hauptautor, der zuerst in der Bibliothek und in OG-Bildern angezeigt wird. | - |
description* | object | Kurze lokalisierte Beschreibungen, nach Locale sortiert. | - |
url* | string[] | Unterstützte Domains oder URL-Muster zum Abgleich von Seiten. | - |
color* | string | Markenfarbe im Hex-Format, verwendet von der UI und Embeds. | - |
category* | string | Eine von streaming, music, video, social, gaming, tools, ai, learning, creator oder other. | - |
Beispiel
{
"name": "YouTube",
"author": {
"name": "Nowly Developer",
"github": "example"
},
"url": ["youtube.com", "www.youtube.com"],
"color": "#FF0033",
"category": "streaming",
"description": {
"en-US": "Watch and share videos on YouTube."
}
}Autor und Mitwirkende
author- Hauptbetreuer, zuerst in der Bibliothek und in OG-Bildern angezeigt.contributors- Weitere Personen, die an der Presence mitgewirkt haben.
GitHub-Benutzernamen (der Schlüssel github) werden zur Auflösung von Avataren verwendet.
Beschreibungen und Funktionen
description- Kurzer Marktplatztext, nach Locale sortiert.longDescription- Erweiterte Beschreibung für Detailseiten.features- Lokalisierte Liste unterstützter Funktionen (z. B. Button-Unterstützung, Media-Keys).
Native Discord-Unterstützung
Manche Plattformen erscheinen bereits auf Discord, wenn der Nutzer sein Konto verknüpft (Spotify ist das übliche Beispiel). Setze dieses optionale Flag, damit die Bibliothek erklären kann, dass Nowly auch ohne diese Verknüpfung nützlich ist.
| Feld | Typ | Beschreibung | Standard |
|---|---|---|---|
discordNative | boolean | True, wenn Discord diese Plattform bereits anzeigt, sobald der Nutzer sein Konto verknüpft. Optional. Standardmäßig false. | - |
{
"name": "Spotify",
"discordNative": true
}Dies zeigt nur einen Hinweis auf der Bibliotheksseite und in der Erweiterung (Store und Details installierter Presences). Es blockiert die Installation nicht.
URL-Abgleich
url- Unterstützte Domains oder URL-Muster zum Abgleich von Seiten.regExp- Regex-basierter Abgleich für komplexe URL-Muster.
Verwende regExp nur, wenn ein einfacher url-Abgleich nicht ausreicht. Bevorzuge explizite Domain-Listen.
Ausführungskontext
Zwei optionale Felder steuern, wie und wann dein Presence-Skript im Browser ausgeführt wird.
| Feld | Typ | Beschreibung | Standard |
|---|---|---|---|
world | "main" | "isolated" | Ausführungswelt. Standardmäßig isolated. | - |
runAt | "document_start" | "document_end" | "document_idle" | Wann das Skript injiziert wird. Standardmäßig document_idle. | - |
Standardmäßig läuft eine Presence in der isolated-Welt: Sie teilt sich das Seiten-DOM, aber nicht den JavaScript-Kontext der Seite. Das ist die sichere Standardeinstellung und funktioniert für fast jede Presence.
Setze "world": "main", wenn deine Presence den Seitenkontext benötigt, insbesondere für:
- das Lesen von Seiten-Globals (z. B. ein Player-Objekt, das die Seite auf
windowbereitstellt); - einen same-origin authentifizierten
fetch, der die Session-Cookies des Nutzers mitführen muss (z. B. eine interne Metadaten-API einer Seite).
{
"name": "Netflix",
"url": ["netflix.com", "www.netflix.com"],
"world": "main",
"color": "#E50914",
"category": "streaming",
"description": {
"en-US": "Watch movies and series on Netflix."
}
}Ein fetch aus der isolierten Welt wird nicht als First-Party-Anfrage behandelt, sodass authentifizierte Aufrufe stillschweigend fehlschlagen. Wenn deine Presence auf die angemeldete API der Seite angewiesen ist, musst du "world": "main" setzen.
Die Deklaration befindet sich vollständig in metadata.json - die Erweiterung liest sie bei der Registrierung aus. Es sind keine Änderungen an der Erweiterung nötig, um eine neue Page-Context-Presence hinzuzufügen.
Kategorie
Erlaubte Kategorien sind streaming, music, video, social, gaming, tools, ai, learning, creator und other.