Metadane
Poznaj każde wymagane i opcjonalne pole w pliku metadata.json obecności Nowly.
Wymagane Pola
Każda obecność potrzebuje:
| Pole | Typ | Opis | Domyślny |
|---|---|---|---|
name* | string | Nazwa wyświetlana usługi lub platformy. | - |
author* | object | Główny autor, wyświetlany jako pierwszy w bibliotece i obrazach OG. | - |
description* | object | Krótkie zlokalizowane opisy, indeksowane według locale. | - |
url* | string[] | Obsługiwane domeny lub wzorce URL do dopasowywania stron. | - |
color* | string | Kolor marki w formacie hex, używany przez UI i osadzenia. | - |
category* | string | Jedna z: streaming, music, video, social, gaming, tools, ai, learning, creator lub other. | - |
Przykład
{
"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 i Współtwórcy
author- Główny opiekun, wyświetlany jako pierwszy w bibliotece i obrazach OG.contributors- Dodatkowe osoby, które pomogły przy obecności.
Nazwy użytkowników GitHub (klucz github) są używane do rozpoznawania awatarów.
Opisy i Funkcje
description- Krótki tekst marketplace, indeksowany według locale.longDescription- Rozszerzony opis dla stron szczegółów.features- Zlokalizowana lista obsługiwanych zachowań (np. obsługa przycisków, klawisze multimedialne).
Natywne wsparcie Discorda
Niektóre platformy już pojawiają się na Discordzie, gdy użytkownik połączy swoje konto (Spotify to typowy przykład). Ustaw tę opcjonalną flagę, aby biblioteka mogła wyjaśnić, że Nowly nadal jest przydatne bez tego połączenia.
| Pole | Typ | Opis | Domyślny |
|---|---|---|---|
discordNative | boolean | True, gdy Discord już pokazuje tę platformę, jeśli użytkownik połączy swoje konto. Opcjonalne. Domyślnie false. | - |
{
"name": "Spotify",
"discordNative": true
}To wyświetla jedynie informacyjną notatkę na stronie biblioteki i w rozszerzeniu (sklep i szczegóły zainstalowanej obecności). Nie blokuje instalacji.
Dopasowywanie URL
url- Obsługiwane domeny lub wzorce URL do dopasowywania stron.regExp- Dopasowywanie oparte na wyrażeniach regularnych dla złożonych wzorców URL.
Używaj regExp tylko wtedy, gdy proste dopasowywanie url nie wystarcza. Preferuj jawne listy domen.
Kontekst Wykonania
Dwa opcjonalne pola kontrolują, jak i kiedy skrypt Twojej obecności działa w przeglądarce.
| Pole | Typ | Opis | Domyślny |
|---|---|---|---|
world | "main" | "isolated" | Świat wykonania. Domyślnie isolated. | - |
runAt | "document_start" | "document_end" | "document_idle" | Kiedy skrypt jest wstrzykiwany. Domyślnie document_idle. | - |
Domyślnie obecność działa w świecie isolated: współdzieli DOM strony, ale nie kontekst JavaScript strony. To bezpieczne ustawienie domyślne, które działa dla niemal każdej obecności.
Ustaw "world": "main", gdy Twoja obecność potrzebuje kontekstu strony, konkretnie do:
- odczytywania globalnych zmiennych strony (np. obiektu odtwarzacza, który strona udostępnia w
window); - wykonania uwierzytelnionego zapytania
fetchtego samego pochodzenia, które musi przenosić pliki cookie sesji użytkownika (np. wewnętrzne API metadanych strony).
{
"name": "Netflix",
"url": ["netflix.com", "www.netflix.com"],
"world": "main",
"color": "#E50914",
"category": "streaming",
"description": {
"en-US": "Watch movies and series on Netflix."
}
}fetch wykonany ze świata isolated nie jest traktowany jako żądanie pierwszej strony, więc uwierzytelnione wywołania kończą się niepowodzeniem po cichu. Jeśli Twoja obecność polega na zalogowanym API strony, musisz ustawić "world": "main".
Deklaracja znajduje się w całości w metadata.json - rozszerzenie odczytuje ją podczas rejestracji. Nie są potrzebne żadne zmiany w rozszerzeniu, aby dodać nową obecność w kontekście strony.
Kategoria
Dozwolone kategorie to streaming, music, video, social, gaming, tools, ai, learning, creator i other.