Ir al contenido

manifest.json

manifest.json es el único archivo del widget que no es código: declara qué usa y cómo se configura. Todo lo que Widget lee sale de aquí. Es JSON normal (sin comentarios ni comas al final) y tiene que ser un objeto. El Estudio lo vigila: cada fallo sale en el validador con su código.

{
"size": { "width": 800, "height": 600 },
"scene": { "width": 1920, "height": 1080 },
"events": ["Twitch.Follow", "Kick.Follow"],
"actions": [],
"sendMessage": false,
"assets": ["campana.mp3"],
"strings": {
"es": { "follow": "¡Nuevo follow de {name}!" },
"en": { "follow": "New follower: {name}!" }
},
"queue": { "durationSeconds": 5, "gapSeconds": 0 },
"menu": { "sections": [] }
}

La lista de eventos que escucha el widget, con el nombre de la referencia de eventos. El SDK solo entrega los eventos declarados, y «Configurar» los usa para avisar al espectador de qué necesita. Errores habituales: event_not_declared, manifest_unknown_event y event_unused.

  • actions: la lista de nombres de acciones de Streamer.bot que ejecuta el widget con Widget.streamerbot.doAction. «Configurar» las muestra al espectador.
  • sendMessage: true si el widget escribe en el chat con Widget.streamerbot.sendMessage. Con true, la contraseña de Streamer.bot pasa a ser obligatoria en la sección «Conexión».

Los textos por idioma que se leen con Widget.t. Un objeto por idioma, y es es obligatorio: es la base, y lo que falte en otro idioma se muestra en español. Los valores son texto, con {nombre} para variables.

La lista de tus archivos de la biblioteca que usa el widget (hasta 30), por su nombre con extensión, como "campana.mp3". Se usan con Widget.assets. Los nombres van en minúsculas, con números y guiones.

El menú de parámetros que el espectador ve en «Configurar». Tiene sections, y cada sección sus fields:

{
"menu": {
"sections": [
{
"id": "texto",
"title": { "es": "Texto", "en": "Text" },
"fields": [
{
"type": "number",
"id": "fontSize",
"param": "fontSize",
"label": { "es": "Tamaño de letra", "en": "Font size" },
"default": 24,
"min": 12,
"max": 72,
"step": 1,
"suffix": "px"
}
]
}
]
}
}
  • param es el nombre con el que el código lo lee con Widget.parameters. Lleva letras, números y _, empieza por una letra y no se repite. address, port, password, diseno, diseño y designParam están reservados.
  • label, title y note son textos por idioma, como { "es": "…", "en": "…" }.
  • default tiene que encajar con el tipo del campo.
  • Los tipos son: switch, color, range, select, font, number, password, text, image, video, audio y platforms. range y number admiten min, max y step; number, suffix; select y font, options; image, video y audio, un archivo de assets como default.

No hace falta declararlas; se añaden solas al final del menú:

  • Plataformas, si el widget escucha eventos de más de una plataforma.
  • Textos (idioma), si strings trae más de un idioma.
  • Diseño, si designs trae más de uno.
  • Conexión, siempre: host, puerto, contraseña y tipo de conexión de Streamer.bot, y el puerto de TikFinity si escucha TikTok.

Una lista de diseños con los que el espectador puede cambiar el aspecto: textos, o { "value": "claro", "label": { … } }. El elegido queda en Widget.design y en <html data-design>, para estilarlo desde el CSS.

Ajusta Widget.queue. Todos son números de 0 o más.

  • durationSeconds: lo que dura una tarea si no se indica otra cosa (5 por defecto).
  • gapSeconds: pausa entre una tarea y la siguiente (0 por defecto).
  • taskLimitSeconds: lo máximo que puede durar una tarea (90 por defecto).
  • maxPending: tareas que caben a la espera (50 por defecto); con la cola llena se descarta lo de menos prioridad.

status.graceSeconds son los segundos que tarda Widget.status en pasar a "disconnected" tras perder la conexión (15 por defecto), para que un corte breve no parpadee en pantalla.

El tamaño de la fuente de navegador de OBS (size) y el de la escena donde va (scene), cada uno como { "width", "height" } en píxeles enteros, de 16 a 7680 de ancho y de 16 a 4320 de alto. Un widget nuevo trae 800 × 600 en 1920 × 1080, y uno que no los trae se hizo para 1920 × 1080. Se cambian desde «Tamaño en OBS» en el editor.

El diseño de las alertas sin código. Lo escribe el editor visual: no se edita a mano. Tiene su propio margen de tamaño (hasta 128 KB de diseño) y sus límites: 24 alertas, 20 variantes por alerta, 12 capas, 12 grupos y 60 archivos. Si necesitas más control, hazlo desde tu parte de script.js con WidgetAlerts y AlertRuntime.