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 y sendMessage
Sección titulada «actions y sendMessage»actions: la lista de nombres de acciones de Streamer.bot que ejecuta el widget conWidget.streamerbot.doAction. «Configurar» las muestra al espectador.sendMessage:truesi el widget escribe en el chat conWidget.streamerbot.sendMessage. Contrue, la contraseña de Streamer.bot pasa a ser obligatoria en la sección «Conexión».
strings
Sección titulada «strings»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" } ] } ] }}parames el nombre con el que el código lo lee conWidget.parameters. Lleva letras, números y_, empieza por una letra y no se repite.address,port,password,diseno,diseñoydesignParamestán reservados.label,titleynoteson textos por idioma, como{ "es": "…", "en": "…" }.defaulttiene que encajar con el tipo del campo.- Los tipos son:
switch,color,range,select,font,number,password,text,image,video,audioyplatforms.rangeynumberadmitenmin,maxystep;number,suffix;selectyfont,options;image,videoyaudio, un archivo deassetscomodefault.
Secciones que añade el Estudio
Sección titulada «Secciones que añade el Estudio»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
stringstrae más de un idioma. - Diseño, si
designstrae 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.
designs
Sección titulada «designs»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.
size y scene
Sección titulada «size y scene»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.