Command Palette

Search for a command to run...

Metadatos

Documenta cada campo obligatorio y opcional del archivo metadata.json de una presencia de Nowly.

Campos obligatorios

Cada presencia necesita:

CampoTipoDescripciónPredeterminado
name*stringNombre visible del servicio o plataforma.-
author*objectAutor principal mostrado primero en la biblioteca e imágenes OG.-
description*objectDescripciones cortas localizadas por idioma.-
url*string[]Dominios o patrones de URL compatibles para la coincidencia de páginas.-
color*stringColor de marca en formato hex, usado por la interfaz y los embeds.-
category*stringUno de streaming, music, video, social, gaming, tools, ai, learning, creator u other.-

Ejemplo

{
  "name": "YouTube",
  "author": {
    "name": "Desarrollador de Nowly",
    "github": "ejemplo"
  },
  "url": ["youtube.com", "www.youtube.com"],
  "color": "#FF0033",
  "category": "streaming",
  "description": {
    "en-US": "Watch and share videos on YouTube."
  }
}

Autor y colaboradores

  • author - Mantenedor principal, mostrado primero en la biblioteca e imágenes OG.
  • contributors - Personas adicionales que ayudaron con la presencia.

Los nombres de usuario de GitHub (la clave github) se usan para resolver avatares.

Descripciones y características

  • description - Texto corto para la biblioteca, organizado por idioma.
  • longDescription - Descripción ampliada para páginas de detalle.
  • features - Lista localizada de comportamientos compatibles (p. ej. botones, teclas multimedia).

Compatibilidad nativa de Discord

Algunas plataformas ya aparecen en Discord si el usuario vincula su cuenta (Spotify es el ejemplo habitual). Esta bandera opcional permite explicar que Nowly sigue siendo útil sin esa vinculación.

CampoTipoDescripciónPredeterminado
discordNativebooleanTrue cuando Discord ya muestra esta plataforma si el usuario vincula su cuenta. Opcional. False por defecto.-
{
  "name": "Spotify",
  "discordNative": true
}

Solo muestra una nota informativa en la página de la biblioteca y en la extensión (tienda y detalle de una presencia instalada). No bloquea la instalación.

Coincidencia de URL

  • url - Dominios o patrones de URL compatibles para la coincidencia de páginas.
  • regExp - Coincidencia basada en expresiones regulares para patrones de URL complejos.

Usa regExp solo cuando la coincidencia simple de url no sea suficiente. Prefiere listas de dominios explícitas.

Contexto de ejecución

Dos campos opcionales controlan cómo y cuándo se ejecuta el script de tu presencia en el navegador.

CampoTipoDescripciónPredeterminado
world"main" | "isolated"Mundo de ejecución. Por defecto: isolated.-
runAt"document_start" | "document_end" | "document_idle"Cuándo se inyecta el script. Por defecto: document_idle.-

Por defecto, una presencia se ejecuta en el mundo isolated: comparte el DOM de la página pero no su contexto de JavaScript. Es el valor por defecto seguro y funciona para casi todas las presencias.

Establece "world": "main" cuando tu presencia necesite el contexto de la página, en concreto:

  • leer variables globales de la página (p. ej. un objeto reproductor que el sitio expone en window);
  • realizar un fetch autenticado del mismo origen que deba enviar las cookies de sesión del usuario (p. ej. la API interna de metadatos de un sitio).
{
  "name": "Netflix",
  "url": ["netflix.com", "www.netflix.com"],
  "world": "main",
  "color": "#E50914",
  "category": "streaming",
  "description": {
    "en-US": "Watch movies and series on Netflix."
  }
}

Un fetch desde el mundo aislado no se trata como una solicitud de origen propio: las llamadas autenticadas fallan en silencio. Si tu presencia depende de la API con sesión iniciada del sitio, debes establecer "world": "main".

La declaración reside por completo en metadata.json - la extensión la lee en el momento del registro. No hace falta cambiar la extensión para añadir una nueva presencia en contexto de página.

Categoría

Las categorías permitidas son streaming, music, video, social, gaming, tools, ai, learning, creator y other.