Referencia de eventos en vivo
Esta página documenta los datos canónicos de eventos que Social Stream Ninja emite para las principales plataformas. Úsala como referencia compartida al conectar nuevas fuentes, resolver problemas de integraciones o alinear etiquetas de interfaz. Para una tabla más breve orientada a consumidores, consulta Compatibilidad de eventos y alertas.
En esta página
Ve a las reglas de campos compartidos, la implementación de una plataforma o las notas de compatibilidad del final.
Importante: La disponibilidad de eventos depende de la fuente, los permisos y los ajustes de captura. Para ocultar filas marcadas como eventos en el Dock o superposiciones de destacados, añade &hideevents o &hideallevents. Para ocultar eventos seleccionados, usa &filterevents=subscription_gift,new_follower,gifted. Estos filtros también pueden ocultar filas de pago que tengan un event; los filtros de eventos no coinciden con filas normales de donación sin marcador de evento. Los demás filtros de mensajes siguen aplicándose.
Elige el método de captura: Para YouTube, Twitch y Kick, Modo WebSocket suele proporcionar una cobertura más amplia de eventos. La captura Standard del DOM lee las filas y tarjetas realmente renderizadas en la página. Los Super Chats, Super Stickers y regalos Jewel de YouTube tienen rutas de captura en ambos modos; otros eventos de regalos, propinas y membresías varían según la fuente. Consulta las tablas de plataformas para ver las rutas compatibles y los ajustes necesarios.
Estructura de datos: Las filas de chat con donaciones deben usar hasDonation y el opcional donoValue. No establezcas event: "donation" solo porque una fila normal de chat/propina tenga valor; usa nombres específicos de eventos solo para acciones reales de plataforma o tipos de artículos pagados, como superchat, supersticker, gift, o jeweldonation. Usa meta solo para datos estructurados adicionales que los consumidores necesiten y que los campos existentes no cubran.
Disponibilidad rápida de funciones
Usa esta tabla para ver qué tipos de alerta entrega actualmente cada método de captura. Las notas detalladas sobre los datos aparecen debajo.
El cuadro dedicado de alertas multistream agrupa los eventos en vivo en seis categorías principales: Follow, Subscription/Member, Donation, Bits/Cheers, Raid/Host, y Purchase, más dos categorías opcionales (Auction y Hype Train) habilitadas mediante parámetros de URL. Obtiene esas categorías a partir de los campos existentes event, membership, subtitle, hasDonation, y meta campos documentados aquí; no se requiere un formato de datos aparte.
| Fuente |
Nuevos suscriptores / miembros |
Nuevos seguidores |
Donaciones |
Recuentos y extras |
| YouTube (puente de Data API) |
Altas, renovaciones y regalos de membresías |
Alertas individuales de suscriptores* + totales |
Super Chats y Super Stickers |
Totales de espectadores, suscriptores y vistas (consulta periódica) |
| Twitch – Captura del DOM |
Líneas de paquetes de regalos y avisos de destinatario |
- |
Bits marcados mediante hasDonation |
Recuento de espectadores, tarjetas de recompensas y tarjetas de destacados comunitarios |
| Twitch – EventSub/WebSocket |
Suscripciones, renovaciones y regalos instantáneos |
Seguimientos instantáneos + total de seguidores |
Cheers, Power-ups y canjes de puntos del canal |
Totales de espectadores/suscriptores/seguidores, estado de transmisión y avisos de anuncios |
| TikTok Live |
- |
Tarjetas de seguimiento (cuando TikTok las muestra) |
Regalos convertidos a totales de monedas |
Recuento de espectadores, alertas de incorporación y lluvias de me gusta |
| YouNow |
- |
Actividad de fans y público |
- |
Recuento de espectadores del panel de público en vivo |
| Favorited Studio |
- |
- |
- |
Recuento de espectadores de la pestaña de espectadores en vivo |
| Whatnot |
- |
- |
- |
Recuento de espectadores, alertas de incorporación, metadatos de subasta en vivo, productos e instantáneas de sorteos |
| eBay Live |
- |
- |
- |
Recuento de espectadores, seguidores, instantáneas de tarjetas de eventos en vivo, metadatos del pie de subasta (cuando se exponen), corazones de reacción y metadatos de próximos eventos |
| Cuadro de alertas de Streamlabs |
Suscripciones, regalos, patrocinadores, seguimientos |
Cheers/Bits, donaciones (con moneda) |
Cheers/Bits, donaciones (hasDonation) |
Mientras esté abierto un cuadro de alertas; también disponible mediante sources/websocket/streamlabs.html token del socket |
| Flow Actions de OBS |
- |
- |
- |
Eventos de salida, escena, búfer de repetición y fin de medios de OBS para Event Flow cuando actions.html está conectado a OBS WebSocket |
| Kick – DOM |
- |
- |
- |
Recuento de espectadores y avisos básicos de recompensas/regalos; usa el puente de Kick para alertas más completas |
| Kick – WebSocket/Puente |
Nuevas suscripciones, renovaciones y regalos |
Alertas de seguimiento + total de seguidores |
Eventos de apoyo/propina (importe + moneda) |
Estado de transmisión, canjes de recompensas y metadatos de perfil |
| Facebook Live |
- |
- |
Estrellas cuando son visibles en el DOM |
Filas de chat, Estrellas y consultas de recuento de espectadores |
| Rumble – Captura del DOM |
- |
- |
Precios visibles de Rant |
Chat, raids entrantes y consultas de recuento de espectadores |
| Rumble – WebSocket/URL de API |
Nuevas suscripciones y suscripciones regaladas |
Alertas de seguimiento + total de seguidores |
Rants/propinas (importe + moneda) |
Totales de espectadores, suscriptores, estado en vivo y flujo de chat |
| Streamplace |
- |
- |
- |
Recuento de espectadores y nombres de chat, colores, insignias, respuestas y enlaces |
| WorldsWave |
- |
- |
Etiquetas de donación cuando están presentes |
Chat en vivo renderizado y actualizaciones opcionales de espectadores |
| CHZZK |
- |
- |
Filas visibles de donación de queso |
Filas de chat, imágenes de insignias, emotes y consultas de recuento de espectadores |
| BEAM |
- |
- |
- |
Filas de chat y consultas de recuento de espectadores cuando la página solo de chat expone un contador |
| Seal Team Sloth |
- |
- |
- |
Filas de chat emergente renderizadas más viewer_update consulta cuando los recuentos de espectadores están habilitados |
| Castyr |
- |
- |
- |
Filas de chat emergente renderizadas y actualizaciones opcionales de espectadores |
| RPLAY |
- |
- |
- |
Con sesión iniciada /live/chat/box/ ventana emergente: type: "rplay" chat, avatares, imágenes de insignias de nivel y emotes. Las propinas en monedas conservan su importe/unidad en hasDonation para la conversión compartida a USD, sin evento de donación. El opcional viewer_update las consultas usan un entero meta desde el punto público de transmisión de RPLAY. Se excluyen las filas reenviadas de Twitch. |
| FLEX TV |
- |
- |
- |
Filas renderizadas de chat con nombres, colores de autores, imágenes de insignias y metadatos de miembros |
*Las alertas de suscriptores de YouTube se consultan periódicamente y pueden llegar tarde o incompletas. La referencia de API no promete una ventana fija de entrega de cuatro horas. Consulta la límites oficiales de la API de suscripciones.
Resumen de campos
data aquí significa el objeto del mensaje, no una envoltura adicional que haya que añadir. Las filas de chat y los eventos solo de metadatos tienen estructuras distintas: los contadores e instantáneas de estado pueden omitir chatname/chatmessage. En las tablas de plataformas, mensaje describe una fila normal de chat, no un valor literal event: "message".
| Campo |
Estructura |
Uso |
data.type |
cadena |
Identificador de fuente usado por superposiciones, filtros y Event Flow. Instagram mantiene el chat en vivo como instagramlive y los comentarios fuera de directo como instagram. Consulta la Guía de tipos de fuentes para variantes, fuentes genéricas y enrutamiento saliente. |
data.chatname |
cadena |
Nombre visible proporcionado por la fuente y usado por el procesamiento de mensajes y las salidas ajenas a las superposiciones. Un alias de nombre visible configurado solo puede sustituir este valor en copias de datos de transporte del Dock y superposiciones. |
data.username |
cadena |
Nombre de usuario de origen cuando está disponible. Los datos de Dock o superposición con alias pueden añadir este campo para conservar el original chatname para acciones de usuario; el mensaje canónico no cambia. |
data.userid |
cadena |
Identificador de usuario específico de la plataforma. Las acciones de usuario prefieren este valor a username y chatname. |
data.platform | cadena (opcional) | Algunas integraciones lo incluyen junto con type. Muchos adaptadores de fuentes lo omiten; usa type para el enrutamiento de fuentes. |
data.id | cadena | número (opcional) | Identificador del mensaje o evento. Su significado depende de la fuente y el transporte; no supongas que siempre es un ID nativo de moderación de la plataforma. Usa meta.messageId cuando el adaptador lo expone para sincronizar eliminaciones. |
data.donoValue | número (opcional) | Equivalente numérico en USD proporcionado por la fuente, incluidas estimaciones. Un valor válido (incluido cero) tiene prioridad sobre la conversión de currency.js. Sin él, los consumidores estiman USD a partir de hasDonation y el contexto de la fuente. Los importes y unidades originales permanecen en hasDonation y en los metadatos existentes del proveedor. |
data.chatbadges | matriz | cadena (opcional) | URL de imágenes de insignias u objetos de insignia (type: "img" con src, type: "svg" con html, o type: "text" con text). El relé conserva la etiqueta literal de una insignia de texto en el campo opcional rawText y produce contenido escapado en text para superposiciones antiguas. En pasadas posteriores de reenvío, regenera text desde rawText; no escapes text de nuevo. Los renderizadores actuales muestran rawText literalmente cuando esté presente y conserva el manejo heredado de texto codificado en caso contrario. Es un campo de representación, no permiso para renderizar HTML. Las fuentes antiguas pueden enviar una sola cadena HTML en lugar de una matriz. Las superposiciones que renderizan insignias aceptan ambos formatos y sanean localmente el HTML y las URL de insignias, incluso si el emisor es una extensión antigua. Las insignias inválidas no deben impedir que aparezca el mensaje de chat o membresía. |
data.event |
cadena | booleano |
Identificador de actividad del sistema (por ejemplo viewer_update, subscription_gift, giftpurchase). El chat normal debe dejarlo vacío/false para que las superposiciones distingan los avisos del sistema del texto de conversación. |
data.chatmessage |
cadena |
Cuerpo del mensaje. Puede contener HTML saneado/renderizable solo cuando data.textonly es false. |
data.textonly |
booleano |
Solo se aplica a data.chatmessage. true significa renderizar chatmessage como texto sin formato, conservando etiquetas literales y texto que parezca entidades; no decodifiques, sanees como HTML ni añadas etiquetas de formato a ese cuerpo. Aplica el estilo del evento al elemento mostrado. false significa chatmessage puede contener HTML saneado/renderizable; los mensajes antiguos sin el indicador conservan ese comportamiento HTML. Los demás campos normales son texto sin formato, excepto campos multimedia como chatimg y contentimg. Muestra los campos de texto sin formato con textContent, o escápalos una vez al construir una plantilla HTML; no elimines ni decodifiques repetidamente su contenido. |
data.contentimg |
cadena (opcional) |
Imagen de contenido o URL multimedia compatible. En la extensión y la aplicación de escritorio, la opción allowExternalGifs el ajuste rellena un campo vacío con el primer enlace GIF HTTP(S) directo del texto del mensaje o de un enlace HTML. La ruta de la URL debe terminar en .gif (sin distinguir mayúsculas y minúsculas); se conservan los parámetros de consulta y fragmentos. No requiere clave API, conserva chatmessage y los adjuntos existentes, y respeta removeContentImage. El opcional hideExternalGifUrl el ajuste añade meta.hideExternalGifUrl: true; el Dock y la superposición de destacados ocultan después el enlace del GIF correspondiente solo cuando carga su imagen, conservando el texto circundante y los datos originales. Las imágenes fallidas o agotadas ocultan su contenedor de adjuntos y dejan visible el enlace. La superposición solo de GIF intenta mostrar directamente la imagen si falla la obtención de sus bytes y usa el tiempo de visualización configurado si no conoce la duración de la animación; las cargas fallidas o bloqueadas hacen avanzar la cola. No añade un event o cambia la fuente type. Las imágenes externas no pasan filtros de contenido y pueden no cargar si el alojamiento bloquea la inserción. |
data.membership |
cadena |
Estado legible de membresía, como MEMBERSHIP, new_sponsor, gift_recipient. Las interfaces lo usan para insignias, filtros y anuncios. |
data.subtitle |
cadena |
Descripción complementaria (antigüedad de membresía, mejoras de nivel, regalado por…). Mantenla breve y como texto sin formato para que las superposiciones puedan colocarla debajo del nombre visible. |
data.hasDonation |
cadena |
Importe monetario o de regalo virtual ($5.00, 500 bits, 300 coins). Rellénalo incluso cuando data.event está vacío para que las superposiciones de donaciones lo detecten. |
data.meta |
número | objeto | cadena (heredado) |
Usa enteros simples para contadores individuales (espectadores, seguidores, suscriptores) y objetos para contexto más completo. Algunos eventos antiguos, como el del DOM de Twitch community_highlight, contienen una cadena. Comprueba la estructura específica del evento antes de leer propiedades de objeto; los nuevos detalles estructurados pertenecen a un objeto. |
data.firsttime |
booleano |
Establecer en true cuando la detección de primera intervención y la base de datos local están habilitadas, y este es el primer mensaje guardado de ese usuario/fuente. El Dock lo usa para destacar primeras intervenciones y filtrar sus pitidos; el ajuste opcional de insignia de primera intervención antepone una hoja a chatbadges. |
data.lastactivity |
número |
Marca de tiempo Unix en segundos de la actividad de chat anterior guardada de ese usuario, cuando están habilitadas la detección de primera intervención y la base de datos local. Se omite para usuarios nuevos. |
Cobertura de plataformas
YouTube – Captura Standard del DOM
Implementación: sources/youtube.js
- Mantén abierta la pestaña de chat en vivo. La captura lee las tarjetas de membresía y regalo renderizadas en esa sesión; no requiere que el espectador sea el propietario o moderador del canal. El acceso de cuenta y la vista de chat seleccionada pueden afectar a las filas visibles.
- Al abrir la superposición de número de espectadores y actividad del chat con los espectadores visibles, se solicitan automáticamente los recuentos de espectadores. Las opciones Mostrar recuento de espectadores y Seguir a los participantes activos del chat también activan la recopilación de datos.
- Para alertas de seguidores y eventos adicionales, activa el modo WebSocket en los ajustes de la extensión.
| Evento |
Cuándo se activa |
Notas sobre los datos |
sponsorship |
Encabezado de bienvenida de membresía sin texto de chat explícito (nuevos miembros, llegada de paquetes regalados), incluidas tarjetas estructuradas o texto localizado «Bienvenido a…». |
membership se rellena con la traducción de «MEMBERSHIP»; subtitle contiene la racha/nivel cuando se detecta; nameColor usa el verde de membresía cuando está permitido. |
giftpurchase |
Banner de compra de paquete de regalos (ytd-sponsorships-live-chat-gift-purchase). |
membership se convierte en gift_giver; subtitle contiene el recuento de regalos si se conoce; sin hasDonation o donoValue. |
giftredemption |
Anuncio de canje de regalo para destinatarios. |
membership se convierte en «MEMBERSHIP»; subtitle incluye «Regalado por…». |
resub |
Banners de mejora que incluyen «ha subido a…». |
subtitle captura la etiqueta del nuevo nivel; membership sigue siendo «MEMBERSHIP». |
superchat, supersticker, jeweldonation |
Super Chats, Super Stickers, tarjetas de anuncios de donaciones y regalos de YouTube con Jewels (yt-gift-message-view-model). |
hasDonation contiene el valor; event identifica el tipo de artículo pagado de YouTube. Los regalos de YouTube usan N Jewels cuando existe, o 1 YouTube Gift cuando YouTube oculta el recuento. Las imágenes de regalos usan contentimg, las etiquetas de regalos usan subtitle, y los detalles mínimos del regalo se reflejan bajo meta.youtubeGift. |
jeweldonation efecto de regalo |
YouTube muestra un regalo Jewel animado sobre el chat en vivo (ytls-gift-overlay-item-view-model). |
Se envía directamente al destino específico de GIF/medios para reproducir la animación sin duplicar la fila normal del regalo. contentimg contiene el recurso animado y meta.youtubeGift.animationUrl/animationDescription conservan los detalles del efecto. |
reaction |
Aparece una reacción de espectador en la fuente de emojis en vivo de YouTube. |
Se envía directamente al destino específico de reacciones. El emoji anónimo y la URL de imagen se conservan en chatmessage/contentimg y bajo meta.reactionType/reactionImage. Las variantes conocidas en vivo incluyen ❤, 😄, 🎉, 😳 y 💯. |
thankyou |
Mensaje alternativo cuando hay un importe de donación, pero no se proporcionó texto de chat. |
Conserva hasDonation e inserta automáticamente «¡Gracias por tu donación!» para las superposiciones. |
redirect |
Aparece un banner de redirección de YouTube en el chat en vivo (lo más parecido a un aviso de raid). |
Captura solo del DOM desde yt-live-chat-banner-redirect-renderer. Establece event a redirect y usa membership como etiqueta para que las superposiciones lo rendericen como otros avisos del sistema. |
viewer_update |
Consulta cada 30 s al punto de acceso de espectadores de Social Stream (captura de página como alternativa si hay errores de cuota). |
meta es el entero de espectadores en vivo; contribuye al agregado viewer_updates en el script en segundo plano. |
Los bloques de membresía también establecen membership para chat de moderadores/miembros, mientras que subtitle contiene recuentos de meses o nombres de niveles. sourceName/sourceImg se rellenan una vez que getChannelInfo tiene éxito. El chat Standard del DOM ahora incluye meta.messageId cuando YouTube expone un ID nativo de mensaje de chat en vivo, que el Dock usa para sincronizar eliminaciones.
YouTube – Captura WebSocket/Data API
Implementación: sources/websocket/youtube.html, utilidades compartidas bajo shared/
- Usa por defecto los permisos OAuth
youtube.readonly y youtube.channel-memberships.creator. El acceso opcional de escritura añade youtube.force-ssl para enviar chat, moderar, bloquear y editar detalles de transmisiones; Google puede presentarlo como un permiso amplio de gestión de YouTube porque YouTube no ofrece un permiso de escritura solo de chat.
- Las estadísticas del canal respetan los interruptores de cada ajuste (
showsubscount, showviewercount).
- La API no puede entregar imágenes de insignias personalizadas; como alternativa se usan los iconos emoji indicados abajo.
- Cuando la API informa explícitamente de
authorDetails.isChatModerator: true, los datos de chat, Super Chat, Super Sticker, regalos de YouTube y membresías regaladas incluyen mod: true. El estado de moderador no se deduce ni se almacena entre eventos.
- Las alertas de nuevos suscriptores usan el
myRecentSubscribers API (consultada cada 5 minutos). Nota: los resultados pueden llegar tarde o incompletos; solo se pueden identificar suscripciones visibles públicamente.
- Data API no expone los banners de redirección de YouTube, por lo que
redirect sigue disponible solo mediante captura Standard del DOM.
| Evento |
Cuándo se activa |
Notas sobre los datos |
superchat |
Entradas de Super Chat del historial de Data API o de las consultas de la transmisión. |
hasDonation conserva el importe del sitio (moneda + valor); event es superchat. Las versiones antiguas de WebSocket usaban event: "donation" para esta fila, por lo que los consumidores pueden seguir aceptándolo como alias heredado. |
supersticker |
Super Stickers (solo texto alternativo del mensaje; la API no proporciona imagen). |
hasDonation contiene el importe; chatmessage contiene el texto decodificado de la descripción. |
jeweldonation |
YouTube giftEvent mensajes cuando los espectadores canjean Jewels por regalos. |
hasDonation contiene N Jewels, o 1 YouTube Gift cuando YouTube oculta el recuento; contentimg usa la URL del recurso del regalo cuando se expone; subtitle contiene la etiqueta del regalo; meta.youtubeGift contiene detalles adicionales del regalo. |
sponsorship |
Nuevo miembro mediante newSponsorEvent. |
membership se convierte en new_sponsor o new_member; meta incluye originalEventType, duraciones e información de nivel. |
resub |
Renovaciones de miembros o cambios a un nivel superior. |
membership se convierte en renewed_member (renovaciones) o upgraded_member (mejoras); subtitle muestra el nivel. |
giftpurchase |
Paquetes de regalos comprados mediante la API. |
membership establecido en gift_giver; subtitle indica recuento/nivel; sin hasDonation o donoValue. |
giftredemption |
Avisos de canje de regalos. |
membership gift_recipient; las insignias usan 🎁 por defecto; subtitle indica el nivel regalado. |
membermilestone |
Chats de hitos (memberMonth o displayMessage presente). |
membership member_milestone; subtitle resume meses + nivel; meta captura la correspondencia original del hito. |
viewer_update |
Estadísticas de transmisión (espectadores simultáneos) cuando está habilitado el informe de espectadores. |
meta es un recuento entero; refleja los scripts del DOM para que los consumidores puedan combinar ambos flujos. Un Dock que use &showviewercount solicita recopilar el recuento de espectadores durante 70 minutos y renueva esa solicitud cada hora sin cambiar permanentemente el ajuste global. |
likes_update |
Consulta de estadísticas oficiales de vídeo cuando Enviar totales de me gusta de la plataforma está habilitado. |
meta es el recuento entero actual de me gusta del vídeo. Se emite cuando cambia y periódicamente sin cambios para mantener actualizados los consumidores. La opción global captureliketotals el ajuste habilita esto; el heredado captureyoutubelikes sigue siendo un alias de compatibilidad. Activar la opción por Dock del menú &showlikecount la opción también habilita de forma persistente esos ajustes globales de captura, mientras que añadir manualmente el parámetro de URL solo controla el renderizado. Desactivar la opción de visualización no desactiva la recopilación global. |
subscriber_update |
Consulta de estadísticas del canal (suscriptores) cuando showsubscount no deshabilitado explícitamente. |
meta es el recuento total de suscriptores; la interfaz actualiza los contadores del panel. |
view_update |
Consulta de estadísticas del canal (vistas acumuladas) cuando showviewercount o el modo Hype está activo. |
meta es el entero del recuento de vistas. |
live_chat_ended |
El chat en vivo deja de estar disponible para la emisión vinculada. |
meta.streamTitle se rellena cuando los metadatos de la transmisión estaban en caché. |
user_banned |
userBannedEvent desde la API de chat en vivo o el flujo gRPC. |
Evento solo con metadatos para widgets de moderación. meta incluye nombre de usuario/visible, ID del canal, URL de avatar/perfil, moderador, duración del bloqueo/silenciamiento y permanencia. |
new_follower |
Nuevo suscriptor detectado mediante myRecentSubscribers API (consultada cada 5 minutos). |
chatname es el nombre del canal del suscriptor; chatmessage está vacío salvo que los mensajes de alertas de suscriptores estén habilitados en la página de origen de YouTube. meta incluye channelId, title, subscribedAt, y las ráfagas agrupadas añaden grouped, count, others, y subscribers. Nota: los resultados pueden llegar tarde o incompletos; solo se pueden identificar suscripciones visibles públicamente. |
Los reenvíos de chat desde la API usan meta.plainText para el mensaje de texto sin formato junto al enriquecido chatmessage contenido. Es texto, no HTML, y puede contener emojis Unicode. Las insignias de membresía usan emojis como alternativa (⭐, 💝, 🏅, etc.) para mantener coherencia con la captura del DOM. Los mensajes normales de chat también incluyen meta.messageId para que las acciones de eliminación del Dock vuelvan a la API de moderación de YouTube.
Alertas de suscriptores de YouTube (new_follower)
Social Stream ahora puede detectar nuevos suscriptores de YouTube usando el myRecentSubscribers punto de acceso de API. Funciona de forma similar a las alertas de suscriptores de Streamlabs.
Cómo funciona:
- Consulta la API de YouTube cada 5 minutos para obtener suscriptores recientes
- Registra los suscriptores vistos en localStorage para detectar los nuevos
- Emite
new_follower eventos con el nombre del suscriptor, avatar e ID del canal
- Mantiene desactivados por defecto los mensajes de alertas de suscriptores; al activarlos usa la cadena de traducción actual de
alert-just-subscribed
- Agrupa por defecto ráfagas de más de tres nuevos suscriptores para que las reconexiones no saturen las superposiciones o Event Flow
- Requiere activar el modo WebSocket en los ajustes de la extensión
Limitaciones (son restricciones de la API de YouTube, no de Social Stream):
- Sin demora de entrega garantizada – SSN consulta cada cinco minutos, pero la API puede devolver resultados retrasados o incompletos. No dependas de una ventana fija de cuatro horas.
- Solo suscripciones públicas – Los suscriptores que hayan configurado su lista de suscripciones como privada no activarán alertas. En YouTube las suscripciones son privadas por defecto.
- Solo el propietario del canal – Solo puedes recibir alertas de suscriptores de canales que te pertenezcan y en los que estés autenticado.
- Uso de cuota de API – Cada consulta cuesta 1 unidad de API. A intervalos de 5 minutos, se usan aproximadamente 288 unidades al día (de la cuota predeterminada de 10 000).
Disparador del editor de Event Flow: Usa data.event === "new_follower" y data.type === "youtube"
WebSocket de YouTube: referencia rápida de eventos y membresías
data.event |
data.membership |
Situación |
sponsorship | new_sponsor | Nuevo miembro mediante newSponsorEvent |
sponsorship | new_member | Nuevo miembro mediante processMembership |
resub | renewed_member | Renovación de membresía |
resub | upgraded_member | Mejora de nivel |
giftpurchase | gift_giver | Membresías regaladas al canal |
giftredemption | gift_recipient | Recibió una membresía regalada |
membermilestone | member_milestone | Chat de aniversario de membresía |
superchat | - | Super Chat |
supersticker | - | Super Sticker |
user_banned | - | Evento de bloqueo/silenciamiento solo con metadatos |
new_follower | - | Nuevo suscriptor (consulta periódica; puede retrasarse) |
Twitch – Captura Standard del DOM
Implementación: sources/twitch.js
- Mantén abierto el chat de Twitch. Los avisos de membresía y usuario se capturan cuando Twitch los renderiza; no están restringidos a cuentas de emisores o moderadores. Puede hacer falta autenticación para funciones específicas de la cuenta.
- Las solicitudes de recuento de espectadores acceden a
https://api.socialstream.ninja/twitch/viewers cada 30 segundos.
- Para alertas de seguidores, raids y compatibilidad completa de eventos, activa el modo WebSocket en los ajustes de la extensión.
- Los avisos de racha de visualización compartidos por espectadores están desactivados por defecto y requieren la opción Mostrar rachas de visualización de Twitch ajuste.
- La opción PluralMind el ajuste puede sustituir
chatname, nameColor, y la parte envuelta por el proxy de chatmessage, y puede añadir una insignia de texto con pronombres. username sigue siendo el nombre de usuario de Twitch; las eliminaciones relacionadas contienen delete.meta.pluralmind para que el Dock use ese nombre de usuario estable.
| Evento |
Cuándo se activa |
Notas sobre los datos |
reward |
Tarjetas de canje de puntos del canal (incluido el contenedor de recompensas de 7TV). |
chatmessage contiene el texto del canje; membership sin cambios. |
giftpurchase |
Líneas del sistema como «El usuario está regalando X suscripciones en el canal». |
chatmessage es la línea del sistema, que permite a las superposiciones destacar campañas de regalos. |
subscription_gift |
Avisos de suscripciones regaladas («El usuario regaló una suscripción a…»). |
Marca el evento para los filtros de destacados; membership sigue siendo la etiqueta de insignia del destinatario. |
viewer_update |
Consulta cada 30 s al proxy de espectadores de Social Stream (0 si hay error). |
meta recuento entero de espectadores. |
hype_train |
El destacado comunitario fijo de Twitch muestra un tren del Hype activo en el chat emergente. |
Alternativa del DOM solo con metadatos y meta.sourceMode establecido en dom. Usa el nivel visible, el temporizador y meta.progressPercent cuando Twitch no expone totales de puntos de EventSub. |
community_highlight |
Elementos dentro del widget «Community Highlight» de Twitch. |
meta es el texto extraído del destacado para enlaces de automatización. |
knock |
Invitaciones de colaboración de Stream Together mostradas encima del chat. |
chatmessage contiene el texto de la invitación; chatname se deriva del usuario de la alerta cuando está disponible. |
watch_streak |
Aviso opcional de racha de visualización compartido por el espectador y renderizado en el chat de Twitch. |
meta.streakCount contiene el recuento visible cuando se detecta; meta.milestoneId usa el identificador del aviso del DOM cuando está disponible. |
Los Bits/Cheers rellenan hasDonation (por ejemplo, «500 bits»), aunque data.event permanece vacío; usa ese campo al renderizar widgets de donaciones. La información de rachas de suscriptores aparece en subtitle cuando las insignias exponen meses.
Twitch – EventSub/WebSocket
Implementación: sources/websocket/twitch.js con el núcleo compartido providers/twitch/chatClient.js
- Permisos OAuth:
chat:read, chat:edit, user:write:chat, bits:read, moderator:read:followers, moderator:read:chatters, channel:read:subscriptions, channel:read:hype_train, channel:moderate, moderator:manage:banned_users, moderator:manage:chat_messages, channel:manage:broadcast, channel:read:redemptions, channel:read:ads, channel:manage:ads. Los tokens del emisor habilitan los recuentos de suscriptores/seguidores.
- Eventos entregados por EventSub, más consultas Helix de totales de espectadores/seguidores/suscriptores.
- El modo WebSocket proporciona en tiempo real alertas de seguidores, eventos de suscripción, raids, Cheers, Power-ups, canjes de puntos del canal y metadatos del tren del Hype.
- Las filas de Shared Chat usan el campo IRC de Twitch
source-room-id para rellenar sourceName/sourceImg con el canal de origen cuando difiere del canal conectado.
- Los avisos de racha de visualización compartidos por espectadores están desactivados por defecto y requieren la opción Mostrar rachas de visualización de Twitch ajuste.
- La opción PluralMind el ajuste puede sustituir
chatname, nameColor, y la parte envuelta por el proxy de chatmessage, y puede añadir una insignia de texto con pronombres. username y userid conservan la identidad de Twitch; las eliminaciones relacionadas contienen delete.meta.pluralmind para que el Dock use esos campos estables.
| Evento |
Cuándo se activa |
Notas sobre los datos |
cheer |
Avisos de Cheers de EventSub channel.bits.use. |
hasDonation «N bits»; meta.bits numérico; chatmessage conserva el mensaje original; los usuarios identificados que envían Cheers incluyen chatimg. |
powerup |
Avisos de Power-up integrados o personalizados de EventSub channel.bits.use. |
Datos solo de evento con un campo vacío chatmessage y sin hasDonation, por lo que no crea una fila normal de chat. meta.bits es numérico y meta.powerUp conserva el subtipo de Twitch, título/ID de recompensa, detalles del efecto y texto del mensaje proporcionado cuando está disponible. |
new_subscriber |
channel.subscribe o USERNOTICE con msg-id=sub. |
meta incluye { userId, tier, isGift }; el total de suscriptores en caché aumenta cuando está disponible; los totales de espectadores se consultan por separado. |
resub |
channel.subscription.message o USERNOTICE msg-id=resub. |
meta contiene la racha y los meses acumulados; chatmessage incluye el texto de la renovación. |
subscription_gift |
channel.subscription.gift o USERNOTICE msg-id=subgift. |
meta expone el total regalado y el nivel; chatmessage resume la acción. |
reward |
channel.channel_points_custom_reward_redemption.add. |
meta incluye ID de recompensa, título, coste, indicación, entrada del usuario, ID/estado del canje y alias heredado. Sin campo de nivel superior reward objeto emitido por este controlador de EventSub. Los consumidores antiguos aún pueden mostrar channel_points como alias obsoleto. |
raid |
EventSub channel.raid o USERNOTICE msg-id=raid. |
meta = { fromId, fromLogin, viewers }. |
watch_streak |
USERNOTICE opcional del IRC de Twitch con msg-id=viewermilestone y msg-param-category=watch-streak. |
Incluye al espectador en chatname, el texto del aviso de Twitch en chatmessage, y meta.streakCount/meta.milestoneId. Los demás tipos genéricos de USERNOTICE siguen ignorándose. |
new_follower |
channel.follow Avisos de EventSub. |
Incrementa automáticamente follower_update; meta registra { userId, followedAt }. |
viewer_update |
Helix streams consulta cada 30 segundos. |
meta recuento entero de espectadores; se suprime salvo que las estadísticas estén habilitadas en los ajustes. |
follower_update |
Total de seguidores de Helix, activado tras eventos de seguimiento o consultas periódicas. |
meta recuento entero de seguidores. |
subscriber_update |
Total de suscriptores de Helix (requiere token del emisor con permiso de suscripciones). |
meta recuento entero de suscriptores. |
stream_online / stream_offline |
EventSub stream.online/stream.offline. |
meta.startedAt presente para eventos en línea; los desconectados usan un objeto vacío. |
ad_break / ad_request / ad_schedule |
Respuestas de la API de gestión de anuncios (channel.ad_break.begin, manual POST channels/ads, GET channels/ads). |
meta detalla la duración, el solicitante y los datos de programación para los paneles. |
hype_train |
EventSub channel.hype_train.begin, channel.hype_train.progress, y channel.hype_train.end avisos v2. |
Evento solo con metadatos: sin chatname o chatmessage. meta.phase es begin, progress, o end; meta incluye ID del tren, nivel, progreso, objetivo, total, colaboradores, campos de tiempo, indicador de tren compartido y trainType. Los trenes del tesoro se muestran mediante meta.trainType cuando Twitch los identifica. |
user_banned |
EventSub channel.ban, o IRC CLEARCHAT como alternativa cuando no hay eventos de bloqueo de EventSub. |
Evento solo con metadatos para widgets de moderación. meta incluye nombre de usuario/visible, ID de usuario, URL de avatar/perfil, moderador, motivo, duración del bloqueo/silenciamiento y permanencia. |
Los datos de chat reutilizan el proveedor compartido, por lo que data.event se rellena para `/me` (action) y el heredado bits etiquetas incluso fuera de flujos de EventSub. Los mensajes GIF de Twitch colocan el recurso de Giphy en contentimg, deja chatmessage vacío, y conserva la etiqueta alternativa de Twitch en meta.gifLabel. La deduplicación y la eliminación usan ID de mensajes; los mensajes enviados mediante SSN usan el nativo message_id desde el eco IRC de Twitch en data.id.
Metadatos del tren del Hype de Twitch
hype_train contiene solo metadatos y no incluye chatname o chatmessage. Los paneles deben actualizar la visualización existente del tren mediante meta.id en lugar de añadir cada actualización de progreso como chat. La barra de metadatos (meta.html) representa estos eventos como una barra superior de progreso.
| Campo |
Escribe |
Notas |
type | cadena | Siempre twitch. |
event | cadena | Siempre hype_train. |
meta.phase | cadena | begin, progress, o end. |
meta.id | cadena | ID estable del tren. Úsalo para insertar o actualizar un único widget de tren visible. |
meta.broadcasterUserId | cadena | ID de usuario del emisor de Twitch. |
meta.broadcasterUserLogin | cadena | Nombre de usuario del emisor de Twitch. |
meta.broadcasterUserName | cadena | Nombre visible del emisor de Twitch. |
meta.total | número | null | Valor total de apoyo que Twitch informa para el tren. |
meta.progress | número | null | Progreso actual hacia el objetivo del nivel. |
meta.goal | número | null | Objetivo del nivel actual. |
meta.progressPercent | número | null | Porcentaje alternativo del DOM cuando Twitch solo expone la barra de progreso visible de la ventana emergente. |
meta.level | número | null | Nivel actual o final del tren. |
meta.topContributions | matriz | Principales colaboradores. Cada entrada incluye userId, userLogin, userName, type, y el campo numérico total. |
meta.lastContribution | objeto | null | Aportación más reciente, con la misma estructura de aportación que topContributions. |
meta.sharedTrainParticipants | matriz | Datos originales de participantes en trenes compartidos de Twitch cuando se proporcionan. |
meta.startedAt | cadena | Marca de tiempo ISO del inicio del tren. |
meta.expiresAt | cadena | Marca de tiempo ISO del vencimiento actual del tren. |
meta.endedAt | cadena | Marca de tiempo ISO del final del tren, o vacía antes de terminar. |
meta.cooldownEndsAt | cadena | Marca de tiempo ISO del fin del período de espera, o vacía antes de terminar. |
meta.isSharedTrain | booleano | True cuando Twitch marca el tren como compartido. |
meta.trainType | cadena | Normalmente regular; aquí se muestran los trenes del tesoro cuando Twitch los identifica. |
meta.allTimeHighLevel | número | null | Nivel máximo histórico del tren cuando Twitch lo proporciona. |
meta.allTimeHighTotal | número | null | Total máximo histórico del tren cuando Twitch lo proporciona. |
meta.sourceMode | cadena | Marcador de fuente opcional, como dom. |
meta.eventSubType | cadena | Tipo original de EventSub: channel.hype_train.begin, channel.hype_train.progress, channel.hype_train.end, o dom.community_highlight. |
EventSub de Twitch: referencia rápida de eventos
data.event |
Situación |
new_follower | Un usuario siguió el canal |
new_subscriber | Nueva suscripción |
resub | Renovación de suscripción con mensaje |
subscription_gift | Suscripciones regaladas al canal |
cheer | Bits enviados con Cheers |
powerup | Uso de Power-up integrado o personalizado |
reward | Canje de puntos del canal |
raid | Raid entrante |
viewer_update | Recuento de espectadores simultáneos |
follower_update | Recuento total de seguidores |
subscriber_update | Recuento total de suscriptores |
stream_online | Transmisión iniciada |
stream_offline | Transmisión finalizada |
ad_break | Inicio de bloque de anuncios |
hype_train | Metadatos de estado del tren del Hype/tren del tesoro |
user_banned | Un usuario fue bloqueado o silenciado temporalmente |
Flow Actions de OBS
Implementación: actions.html mediante eventos de OBS WebSocket v5, con dock.html Eventos de fuentes de navegador de OBS como alternativa
- Mantén abierta la superposición Flow Actions con la misma sesión de Social Stream que el editor/proceso en segundo plano de Event Flow, o mantén el Dock cargado dentro de OBS.
- Configura OBS WebSocket v5 en OBS 28 o posterior; la URL predeterminada es
ws://127.0.0.1:4455.
- Estos son eventos del sistema de Event Flow. No incluyen
chatname o chatmessage, y los detalles adicionales de OBS permanecen dentro de meta.
| Evento |
Cuándo se activa |
Notas sobre los datos |
stream_started |
OBS informa de que la salida de transmisión llegó al estado iniciado. |
type es obs; event es stream_started; meta.source es obs-websocket o obs-browser-source; meta.outputState puede contener el estado original de salida de OBS. |
stream_stopped |
OBS informa de que la salida de transmisión llegó al estado detenido. |
type es obs; event es stream_stopped; meta.outputActive puede ser false. |
recording_started |
OBS informa de que empezó la grabación. |
type es obs; meta.obsEvent identifica la fuente del evento de OBS. |
recording_stopped |
OBS informa de que terminó la grabación. |
type es obs; meta.outputState puede contener el estado original de WebSocket. |
scene_changed |
OBS cambia la escena activa del programa. |
type es obs; meta.sceneName contiene el nombre de la escena cuando OBS lo proporciona. |
media_ended |
Una entrada multimedia de OBS termina la reproducción. |
type es obs; meta.inputName y meta.inputUuid identifican la entrada multimedia. |
replay_buffer_saved |
OBS guarda el búfer de repetición. |
type es obs; meta.savedReplayPath puede contener la ruta de la repetición guardada. |
Cuadro de alertas de Streamlabs
Implementación: sources/streamlabs.js (DOM del cuadro de alertas); puente de socket opcional en sources/websocket/streamlabs.html
- Mantén abierto el cuadro de alertas de Streamlabs en una pestaña o fuente de navegador para que se rendericen; el script de contenido lee mensajes, imágenes y tokens del DOM de alertas.
- Las alertas de tipo donación establecen
hasDonation (por ejemplo, «$10 USD» o «100 bits») y, opcionalmente, donoValue en USD.
- Tipos de eventos inferidos:
follow, subscription, gift, cheer, donation, superchat, raid, redeem, merch, sponsor.
- Para el puente de socket, pega tu token de Socket API de Streamlabs y conecta; las alertas se reenvían sin la página del cuadro de alertas.
| Evento |
Cuándo se activa |
Notas sobre los datos |
donation |
Propinas, caridad, JustGiving o alertas genéricas de «donó». |
hasDonation conserva el texto de la moneda (por ejemplo, «$36» o «$10 CAD»); donoValue se proporciona solo cuando hay un valor en USD; otros importes etiquetados usan la conversión compartida de moneda. |
cheer |
Alertas de Bits/Cheers de Twitch. |
hasDonation se convierte en «100 bits» y donoValue captura el valor en USD. |
subscription |
Alertas de suscripciones. |
Campos estándar establecidos; chatmessage es la línea de alerta; meta.tokens contiene valores de tokens (name, amount, levelName, etc.). |
gift |
Membresías/suscripciones regaladas. |
meta.tokens.amount puede mostrar el recuento de regalos; meta.tokens.levelName puede contener el nivel. |
follow |
Alertas de seguidores. |
Sin campos de donación; chatname refleja el token de nombre de la alerta. |
raid |
Alertas de raids. |
meta.tokens.count contiene el recuento de participantes de la raid cuando existe. |
redeem |
Alertas de canje de Cloudbot. |
meta.tokens.product captura el artículo canjeado. |
merch |
Alertas de compra de merchandising. |
meta.tokens.product contiene el nombre del artículo comprado. |
superchat |
Alertas de tipo Super Chat de YouTube o integraciones de alertas compatibles. |
hasDonation contiene el importe; los consumidores pueden seguir aceptando el heredado donation como alias. |
sponsor |
Alertas de patrocinador/miembro mostradas por Streamlabs. |
Campos estándar; sin donación salvo que el texto incluya un importe. |
TikTok Live – Captura del DOM y feed de TikFinity
Implementación: sources/tiktok.js para páginas nativas de TikTok y sources/tikfinity.js para el widget/iframe de actividad de TikFinity. SSApp sigue teniendo una integración nativa con TikTok con la cobertura de eventos más amplia (consulta la documentación de SSApp).
- Funciona en la página del directo del emisor. Los banners de regalos/me gusta/seguimientos solo se rellenan con una sesión autenticada.
- TikTok proporciona muchos eventos mediante detección del DOM sin necesitar modo WebSocket – los regalos, seguimientos, me gusta e incorporaciones opcionales se capturan de filas renderizadas.
- Páginas de widgets de TikFinity en
tikfinity.zerody.one/widget/activity-feed* también funcionan. El iframe integrado del feed de actividad emite los mismos campos canónicos de TikTok para chat, seguimientos, compartidos, regalos, suscripciones, incorporaciones opcionales y cofres del tesoro.
- No requiere autenticación adicional de API.
- Modo nativo de SSApp sigue añadiendo eventos más allá de las rutas de captura de página/widget:
question_new, emote, viewer_update, y el agregado opcional likes_update.
| Evento |
Cuándo se activa |
Notas sobre los datos |
gift |
Filas de banner de regalo o DivGiftMessage entradas. |
hasDonation convierte a «N coins» (con consulta de regalos como alternativa); membership usa el texto de la insignia cuando está disponible. |
joined |
Avisos de incorporación cuando la opción global Capturar eventos de transmisión «joined» el ajuste está habilitado. |
Omite avisos de compartir; chatname puede estar vacío para algunas cadenas del sistema. |
followed |
Mensajes de seguimiento interpretados a partir de tarjetas sociales. |
Garantiza chatname existe antes de emitir. |
shared |
Filas de compartir de TikFinity. |
chatmessage es el texto renderizado de compartir. |
subscribe |
Filas de suscripción de TikFinity. |
membership se establece en SUBSCRIBER. |
envelope |
Filas de cofres del tesoro de TikFinity. |
meta.coins y meta.canOpen contienen los detalles del cofre. |
liked |
Resúmenes de lluvia de me gusta activados por tarjetas sociales de TikTok. |
chatname se incluye cuando TikTok lo expone; las tarjetas anónimas/del sistema de me gusta pueden seguir emitiéndose. TikTok lo envía por la ruta normal en segundo plano. El proceso en segundo plano dirige una copia a la superposición de Reacciones y luego continúa al procesamiento principal de chat/eventos solo cuando capturelikeevent está habilitado. |
likes_update |
SSApp recibe un total acumulado fiable de TikTok LIVE mientras captureliketotals está habilitado. |
meta es el total entero actual. SSApp envía el primer valor inmediatamente, agrupa ráfagas para enviar como máximo una actualización cada cinco segundos, repite el último valor aproximadamente cada 90 segundos y envía cero cuando termina la transmisión. Es independiente del evento específico de espectador liked eventos. |
true (booleano) |
Emisiones sociales/del sistema genéricas cuando TikTok no proporciona subtipo. |
Usa chatmessage contenido para decidir la presentación; el booleano true indica «evento del sistema: tipo desconocido». |
membership refleja las descripciones emergentes de insignias (niveles de suscriptor). La caché de avatares mantiene chatimg válido entre eventos; si el DOM suprime el color de moderadores, el script borra nameColor. Las filas de regalos de TikFinity también establecen contentimg al icono del regalo cuando esté disponible. Las actualizaciones de rachas de regalos del DOM nativo y TikFinity incluyen meta.tiktokGiftStreakId, meta.tiktokGiftCount, y meta.tiktokGiftQuietMs para que las superposiciones agrupen actualizaciones repetidas; los ID heredados de rachas son únicos de la instancia de página. Los metadatos de regalos también pueden incluir tiktokGiftMessageId (ID del mensaje original de TikTok), tiktokGiftSenderId, groupId, giftId, giftName, streakable, y repeatEnd. Los ID nativos identifican el mismo regalo entre ventanas de captura; un ID de grupo distinto de cero junto con los ID del remitente y regalo identifica actualizaciones acumulativas de rachas. La captura WebSocket de SSApp proporciona los mismos campos al estabilizarse una racha, con count se conserva por compatibilidad. Su interruptor de donaciones se comprueba al reenviar cada regalo: desactivar las donaciones de TikTok elimina hasDonation y donoValue conservando el evento y los metadatos del regalo. La síntesis de voz usa estas identidades para agrupar actualizaciones y suprimir duplicados completados hasta diez minutos (caché limitada), y lee los regalos de TikTok como remitente, cantidad y nombre del regalo. Los datos antiguos usan como alternativa sus ID de racha y texto existentes; no se deduce identidad solo del texto del regalo. La voz de regalos de TikTok usa el idioma seleccionado de síntesis de voz, independientemente del idioma de la interfaz. Los verbos de anuncios están localizados en inglés, español, portugués, francés, alemán, italiano y neerlandés; otros idiomas usan remitente, cantidad y nombre del regalo sin verbo en inglés. La síntesis simplificada conserva ese formato neutral. Los nombres de regalos se mantienen como los proporciona la plataforma; esto no traduce automáticamente catálogos de regalos ni mensajes de chat, ni deduce el idioma de una transmisión.
En estas actualizaciones de rachas, el recuento y la etiqueta de donación son acumulativos: 1, 2, 3 significa tres regalos, no seis. Los consumidores de totales deben sumar solo el aumento respecto al mayor importe ya visto para ese ID de racha. La captura Standard admite las clases heredadas de regalos y las filas actuales de imagen/recuento; ambas conservan event: "gift" y hasDonation. Los precios desconocidos conservan los recuentos/nombres de regalos para visualizarlos y usan una estimación en USD de una moneda por regalo. El valor proporcionado por la fuente donoValue tiene prioridad; los metadatos renderizados del regalo pueden proporcionar coinsPerGift o diamondsPerGift antes de necesitar la tabla de regalos o el valor predeterminado. Las estimaciones de monedas de Standard/TikFinity y las estimaciones nativas de diamantes de SSApp usan sus conversiones distintas existentes; ninguna representa un pago en efectivo garantizado.
Whatnot
Implementación: sources/whatnot.js
- Abre la página del directo de Whatnot con el chat visible; la captura WebSocket existente proporciona chat, avisos de subastas/ventas, fallos de pago, raids, donaciones y actualizaciones rápidas de espectadores. Las instantáneas de productos/sorteos siguen dependiendo de secciones del DOM renderizadas en la vista del programa.
- Capturar eventos del directo (Capture Stream Events) controla los eventos del sistema de Whatnot y las actualizaciones de metadatos de subastas/catálogos; las filas de incorporación también requieren Capturar eventos de transmisión «joined»; los recuentos de espectadores siguen respetando los interruptores de espectadores/Hype.
| Evento |
Cuándo se activa |
Notas sobre los datos |
viewer_update |
Cambios de recuento de espectadores desde actualizaciones WebSocket de transmisiones, con consultas del DOM como alternativa. |
meta es un recuento entero de espectadores. |
donation |
Propinas y eventos de aportación a impulso comunitario por WebSocket de Whatnot. |
hasDonation contiene el importe formateado; el contexto específico de WebSocket permanece bajo meta. |
raid |
Eventos WebSocket de raids de Whatnot, incluidas respuestas de actividad del historial. |
meta.numRaiders se incluye cuando Whatnot lo proporciona. |
joined |
Filas de chat cuyo cuerpo normalizado comienza por joined, cuando Capturar eventos de transmisión «joined» está habilitado. |
Usa etiquetas de evento de cadena para avisos de incorporación (no el booleano true). |
auction_update |
Cuando cambia el estado de la subasta en el pie del directo (texto de ganador/ganando, título, pujas, precio, temporizador, estado vendido), a menudo acelerado por paquetes WebSocket del ciclo de vida de subastas. |
Evento solo con metadatos. Sin chatname/chatmessage; los datos están en meta (por ejemplo meta.title, meta.bids, meta.price, meta.timer, meta.status). |
commerce_update |
Cuando cambian las secciones del catálogo (productos, conjuntos sorpresa, próximos sorteos), a menudo acelerado por paquetes WebSocket del ciclo de vida de sorteos/productos. |
Instantánea solo con metadatos con recuentos de secciones y matrices de elementos bajo meta.products, meta.surpriseSets, y meta.upcomingGiveaways. |
auction_started, new_bid, auction_ended, product_sold |
Llega el aviso WebSocket en vivo correspondiente. Son eventos individuales, separados de las instantáneas de visualización existentes. |
platform/type: "whatnot", texto sin formato chatname, userid cuando se proporciona, nombre del producto en subtitle, y un campo de texto sin formato chatmessage con textonly: true. Los identificadores y detalles de subasta disponibles están bajo meta: productId, auctionId, orderId, transactionId, livestreamId, bidId, bids, auctionEndTime, y status. Opcional price está en unidades monetarias principales, con priceText y currency cuando se proporciona. |
payment_failed |
Llega un aviso WebSocket en vivo de pago fallido. |
Los mismos campos disponibles de comprador, producto e identificadores, con meta.paymentStatus: "failed". Cuando solo product.purchaserUserId identifica al comprador, rellena userid en eventos de venta/pago y el nombre del comprador queda vacío. No se deduce un comprador de otra subasta o de una anterior. |
payment_succeeded |
Llega un aviso WebSocket en vivo de pago correcto. |
meta.paymentStatus: "succeeded", con el comprador, artículo, ID de pedido y otros campos permitidos proporcionados por ese aviso. Sigue siendo un evento de pago distinto; no emite otro purchase o donación. Los campos ausentes permanecen vacíos u omitidos, aunque una venta anterior los proporcionara. |
Las actualizaciones visuales de subastas/comercio siguen siendo instantáneas del DOM. Para coincidir con un evento WebSocket concreto en Event Flow, usa Tipo de evento (avanzado), selecciona Evento personalizado (Custom Event), e introduce su nombre exacto. Las etiquetas pueden usar **{username}**\n{subtitle} con grosor de texto seleccionado; las condiciones pueden comparar meta.paymentStatus con failed. Un ejemplo importable de etiquetas de Whatnot está disponible. Los ajustes existentes de captura de eventos de transmisión siguen aplicándose.
Otros campos opcionales son meta.catalogProductId (el campo del paquete product.productId), meta.parentProductId (product.parentId), meta.transactionType (tipo de venta de Whatnot, sin cambios), y meta.placeOrderErrorReason (código de error de pedido/pago proporcionado por Whatnot). Estas referencias de producto describen el catálogo o el anuncio principal; no sustituyen a un ID de pedido. La cantidad en stock no se trata como cantidad comprada.
Para automatizar pagos correctos, establece un Tipo de evento (avanzado) el disparador en Evento personalizado (Custom Event): payment_succeeded, y filtra la fuente a Whatnot. Las condiciones y plantillas existentes pueden usar los campos de ese evento userid, chatname, subtitle y meta.orderId directamente. No hace falta una compra guardada cuando el aviso contiene los detalles necesarios.
Que termine una subasta o un artículo se marque como vendido no confirma que se haya pagado: estos avisos no se emiten como eventos de pago purchase eventos y no establecen importes de donación. Solo se emite un evento de éxito al recibir un payment_succeeded aviso; la captura no consulta si se completó el pago ni lo deduce de una venta. Otros paymentStatus los valores se reenvían solo cuando se proporcionan explícitamente en un paquete capturado. Se omiten los identificadores ausentes; un ID de producto puede abarcar varias ventas, así que usa el ID de pedido/subasta proporcionado para relacionar avisos. La captura no recuerda compras ni empareja actualizaciones de pagos; ese flujo debe configurarse explícitamente en Event Flow. Se suprimen los paquetes duplicados próximos en el tiempo de los dos puentes de captura existentes. No se reenvían objetos originales de pedidos/pagos.
eBay Live
La conexión de vendedor de eBay de Monetización requiere un servicio de eBay de SSN configurado y consentimiento OAuth del vendedor; la captura de eBay Live de abajo es independiente. El modo de pruebas usa URL de anuncios de pruebas, etiqueta al comprador como «eBay Sandbox buyer» y antepone al mensaje «Sandbox test purchase:». Las compras de pruebas conservan el mismo contrato de compra y pueden activar alertas/acciones de chat habilitadas durante las pruebas. Su contrato de pago implementado emite event: "purchase", con type y platform establecido en ebay. Requiere un pedido pagado que coincida con un producto seleccionado. id es un identificador opaco estable de línea de pedido; chatname es «eBay buyer», chatmessage es texto sin formato (textonly: true), subtitle es el nombre del producto y el opcional contentimg es su imagen. meta.ebayPurchase contiene itemId, itemName, quantity, y el público url. Sin identidad del comprador, datos de envío, hasDonation o donoValue se incluye. Esto difiere de las actualizaciones de subastas o stock capturadas, que no demuestran el pago.
Implementación: sources/ebay.js
- Abre cualquiera de
/ebaylive/events/<id>/chat o /ebaylive/events/<id>/stream. Ambos reciben el mismo flujo de subastas en vivo.
- El flujo público de WebSocket proporciona subastas, pujas, ganadores, extensiones de tiempo y cambios de stock; una consulta GraphQL de solo lectura proporciona detalles de anuncios. La captura del DOM sigue como alternativa cuando no hay datos de red.
- Capturar eventos del directo (Capture Stream Events) controla las instantáneas de metadatos (
auction_update, commerce_update); los contadores de espectadores siguen respetando los interruptores de espectadores/Hype.
| Evento |
Cuándo se activa |
Notas sobre los datos |
viewer_update |
Cuando cambia el recuento de espectadores del evento activo (recuento del encabezado o indicador del evento en vivo como alternativa). |
meta es un recuento entero de espectadores. |
follower_update |
Cuando el punto de estadísticas del vendedor devuelve su recuento de seguidores. |
meta es un recuento entero de seguidores. La fuente consulta el punto del vendedor cada 60 segundos; este puede seguir devolviendo un valor en caché hasta 5 minutos. |
auction_update |
Cuando cambian los metadatos de la subasta activa. |
Evento solo con metadatos. La captura de red establece meta.sourceMode a network y proporciona título, precio, pujador, ganador, pujas, temporizador y endingAt. meta.ebay contiene eventId, listingId, el registro de anuncio GraphQL (listing), anuncio público actual del socket (eventListing), y última actualización de subasta (update). Estos conservan categoría, imágenes, monedas, cantidades, detalles de lotes, resultados de subastas y campos de tiempo sin perder los detalles de la plataforma al aplanarlos. El registro GraphQL es una instantánea obtenida; el anuncio del socket y la actualización contienen un estado en vivo más reciente. El historial inicial o de reconexión se incorpora a la instantánea actual, en lugar de emitirse como victorias antiguas. Quitar todos los anuncios presentados emite status: "idle" con cardCount: 0 para borrar la subasta. La alternativa del DOM conserva los campos de tarjeta del reproductor o vista previa del evento. |
commerce_update |
Cuando cambian las secciones de instantáneas de catálogo/eventos en vivo. |
Instantánea solo con metadatos bajo meta. El modo de red incluye eventId, navigation.viewerCount y playerCards para los anuncios presentados actualmente, cada uno con el mismo objeto detallado ebay objeto como instantánea de subasta. Una lista vacía de tarjetas borra los anuncios eliminados. La alternativa del DOM también puede incluir liveEvents, livePreview, currentEvent y upcomingEvents. |
reaction |
Cuando eBay Live renderiza una animación de corazón/reacción. |
Se envía directamente al destino específico de reacciones. meta.reactionType es heart; eBay no expone un nombre de usuario para estas animaciones del DOM. |
Los eventos de metadatos de eBay omiten deliberadamente chatname/chatmessage; las superposiciones receptoras deben renderizar a partir de data.event + data.meta solamente.
Kick – Captura Standard del DOM
Implementación: sources/kick.js
- Necesita una sesión autenticada para resolver imágenes de perfil e insignias de suscriptores.
- Detección limitada de eventos mediante coincidencias de texto de chat e insignias; los recuentos de espectadores siguen funcionando cuando está activado el interruptor.
| Evento |
Cuándo se activa |
Notas sobre los datos |
gift |
Regalos KICKs detectados mediante la imagen de sticker y el importe visible de la moneda de Kick. |
hasDonation contiene N KICKs (1 KICK para uno) cuando el importe visible esté disponible; contentimg contiene la imagen del regalo. Se conserva el texto existente del mensaje. |
reward |
Canjes de recompensas («ha canjeado…»). |
chatmessage contiene el texto del canje. |
true (booleano) |
Avisos genéricos del sistema que no coinciden con patrones de regalos o recompensas. |
Usa chatmessage contenido para decidir la presentación; el booleano true indica «evento del sistema: tipo desconocido». |
viewer_update |
Consulta la API de canales de Kick cada 30 segundos (solo si están activadas las estadísticas de espectadores). |
meta recuento entero de espectadores; para suscripciones, seguimientos o propinas usa el puente de Kick de abajo. |
Kick – WebSocket/Puente
Implementación: sources/websocket/kick.js con utilidades compartidas bajo providers/kick/core.js
- OAuth mediante el puente de Kick de Social Stream. Los permisos actuales son
user:read, channel:read, channel:write, channel:rewards:read, chat:write, events:subscribe, moderation:ban, moderation:chat_message:manage, y kicks:read. Los tokens se renuevan automáticamente.
- La configuración de webhooks de Kick puede tardar varios minutos; la interfaz enumera las suscripciones activas por canal.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Datos de chat del puente. |
meta.plainText contiene el mensaje en texto sin formato (que puede incluir emojis); las insignias combinan plataforma y caché de perfil. Las respuestas en hilos rellenan initial, reply, y meta.reply cuando hay detalles de respuesta o un mensaje principal en caché. |
reward |
channel.reward.redemption.updated, más datos de chat/sistema del puente que parecen canjes. |
meta incluye ID de recompensa/canje, título, coste, estado, entrada del usuario y quién canjea. |
new_subscriber |
channel.subscription.new. |
membership asignado al rol de suscriptor; meta incluye { subscriber, plan }. |
resub |
channel.subscription.renewal. |
meta.duration (meses) y meta.plan disponible; subtitle resume la racha. |
subscription_gift |
channel.subscription.gifts. |
meta.totalGifted, meta.gifter; las insignias usan el icono 💝 como alternativa. |
donation |
Eventos de apoyo/propina detectados mediante heurísticas de tipo de evento; los regalos KICKs usan gift abajo. |
hasDonation contiene el importe formateado; meta contiene { amount, currency, supporter, message, giftName }. |
gift |
kicks.gifted (regalos KICKs), igual que el capturador del DOM. |
hasDonation contiene N KICKs (1 KICK para uno); contentimg contiene la imagen del regalo cuando está disponible. Los detalles estructurados del regalo permanecen bajo meta. |
raid |
Compatibilidad con datos de socket heredados de tipo host, como App\Events\StreamHostEvent. |
El catálogo oficial actual de eventos de Kick no tiene suscripción de raid/host. Si llegan datos heredados compatibles, se asignan al evento canónico raid; no dependas de esto para un flujo de trabajo actual de Kick. |
new_follower |
channel.followed. |
Los iconos de seguidores proceden de la caché de perfiles; follower_update se activa cuando Kick proporciona totales acumulados. |
follower_update |
El puente proporciona recuentos de seguidores en los datos del webhook. |
meta total entero; los paneles lo usan para objetivos de seguidores. |
stream_online / stream_offline |
livestream.status.updated. |
meta contiene el cuerpo original de estado de Kick (is_live, title, etc.). |
viewer_update |
livestream.status.updated cuando Kick incluye totales de espectadores simultáneos. |
meta recuento entero de espectadores; emite 0 al pasar a desconectado para borrar contadores obsoletos. |
user_banned |
moderation.banned desde el puente/webhook o eventos de bloqueo del socket de chat de Kick. |
Evento solo con metadatos para widgets de moderación. meta incluye nombre de usuario/visible, ID de usuario, URL de avatar/perfil, moderador, motivo, duración del bloqueo/silenciamiento y permanencia. |
Las consultas de perfiles usan profileCache; mapBadges combina los recursos de insignias de Kick con SVG en caché cuando están disponibles. Cuando Kick informa de donaciones en KICKs, el puente las convierte en hasDonation más meta.amount con currency usa «KICKs» como alternativa. Los datos de chat incluyen meta.messageId cuando el puente expone un ID nativo de mensaje de Kick para que la sincronización de eliminaciones apunte al mensaje correcto. Los datos de respuestas incluyen meta.reply con el principal messageId, author, y text cuando se conoce. Los detalles de respuesta proporcionados siguen disponibles aunque el mensaje original no esté en caché; una respuesta solo con ID y sin contexto en caché puede carecer de cita visible.
WebSocket de Kick: referencia rápida de eventos
data.event |
Situación |
new_follower | Un usuario siguió el canal |
new_subscriber | Nueva suscripción |
resub | Renovación de suscripción |
subscription_gift | Suscripciones regaladas |
reward | Canje de recompensa del canal o mensaje de chat/sistema con formato de recompensa |
donation | Evento de propina/apoyo |
gift | Evento de regalo KICKs |
raid | Entrada heredada de host/raid solo por compatibilidad; no es una suscripción oficial actual de Kick |
follower_update | Recuento total de seguidores |
stream_online | Transmisión iniciada |
stream_offline | Transmisión finalizada |
user_banned | Un usuario fue bloqueado o silenciado temporalmente |
VPZone - WebSocket
Implementación: sources/websocket/vpzone.js
- Se conecta a
wss://chat.vpzone.tv/ws?channel=USERNAME; OAuth solicita profile:read, chat:read, chat:write, channel:read, channel:write, y chat:moderate. También puede proporcionarse manualmente un token Bearer.
- Tramas planas de VPZone como
type: "msg" se normalizan en datos estándar de chat.
- Del lado de la plataforma
delete_message / clear_chat las tramas quitan las filas correspondientes del Dock; los interruptores opcionales sincronizan eliminaciones y bloqueos del Dock con VPZone (solo propietario del canal).
- Los propietarios del canal disponen de un panel Información de la transmisión local a la página para actualizar el título y la categoría del directo (el mismo patrón que la página de origen de Twitch).
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
VPZone msg, message, new_message, o chat_message trama WebSocket. |
chatname procede de username; chatmessage procede de body; los indicadores de suscriptor/propietario/moderador/VIP se copian en chatbadges, indicadores de rol de nivel superior y meta. Los ID nativos rellenan data.id y meta.messageId. |
viewer_update |
VPZone presence trama con count o campo equivalente de espectadores. |
meta es el entero de espectadores en vivo; contribuye al agregado viewer_updates. |
new_subscriber |
VPZone subscribe / subscription trama. |
membership se establece en Subscriber cuando hay indicadores de suscripción. |
subscription_gift |
VPZone gift / gift_subscription trama. |
Usa el mismo nombre de evento de suscripción regalada que Twitch, Kick, Rumble y Velora. subtitle contiene el recuento de regalos (x5) o destinatario. |
message + hasDonation |
VPZone system trama con metadata.kind: "pixels_cheer" (propina en Pixels). |
Fila de chat con donación; hasDonation es la etiqueta del importe (por ejemplo 100 Pixels), meta.pixels el entero. event permanece vacío; detecta esta propina a partir de hasDonation. Los eventos de apoyo del puente de Kick usan en cambio event: "donation". |
message respuestas |
VPZone msg trama que contiene metadata.reply_to (ID del mensaje, autor, fragmento: desnormalizados en el servidor). |
Se renderiza como las respuestas de Kick: initial contiene la etiqueta «autor: fragmento», reply el texto original de la respuesta, meta.reply el destino estructurado. Respeta el excluir «respondiendo a» ajuste. |
raid |
VPZone raid trama con metadata.kind: "incoming". |
Se omiten las tramas de raids salientes; meta.viewers contiene el tamaño de la raid cuando se proporciona. |
shoutout |
VPZone shoutout trama (!so comando). |
meta.targetUser nombra el canal mencionado. |
reward |
VPZone system trama con metadata.kind: "channel_points_redeem". |
Canje de puntos del canal, con el mismo nombre de evento que las recompensas de Twitch. |
stream_online / stream_offline |
VPZone system tramas con metadata.kind: "stream_started" / "stream_ended". |
Se atribuye al nombre del canal (las tramas no incluyen usuario). |
new_follower |
VPZone follow trama. |
Se asigna a la estructura estándar de evento de seguidor. |
joined |
Eventos WebSocket de incorporación/presencia de VPZone, cuando Capturar eventos de transmisión «joined» está habilitado. |
Se asigna a un evento del sistema con formato de chat y metadatos del usuario de VPZone bajo meta. |
Joystick
Implementaciones: sources/joystick.js, sources/inject/joystick-ws.js, y sources/websocket/joystick.js
- La fuente normal del sitio Joystick 2.0 funciona en la página con sesión iniciada
/u/<channel>/chat página. Lee el campo de la página ChatChannel, WhisperChatChannel, EventLogChannel, y SystemEventChannel Tramas de Action Cable, con filas renderizadas como alternativa para Electron y reconexiones.
- Los mensajes del chat del sitio usan los mismos campos principales que YouTube, Twitch y Kick: el nativo
id, chatname, chatmessage, chatimg, chatbadges, nameColor, membership, mod, private, username/userid, y timestamp cuando Joystick los proporciona. Si el socket omite el color del nombre de usuario, la fila renderizada proporciona el mismo nameColor campo usado por los docks con colores habilitados.
- Las ediciones de mensajes en el sitio sustituyen la fila correspondiente del Dock; las eliminaciones, silenciamientos y bloqueos quitan filas coincidentes mediante ID nativo o nombre de usuario.
- La fuente WebSocket independiente usa credenciales de bot de Joystick (
client_id + client_secret); la fuente del sitio web usa la sesión iniciada de la página.
- Se autoriza en
https://joystick.tv/api/oauth/authorize, luego intercambia/renueva tokens en https://api.joystick.tv/api/oauth/token.
- Se conecta a
wss://api.joystick.tv/cable y se suscribe a GatewayChannel.
- Se usa intercambio opcional de tokens OAuth para puntos de acceso auxiliares, como
https://api.joystick.tv/api/users/stream-settings.
- La fuente independiente con credenciales de bot no emite
viewer_update. La fuente del sitio con sesión iniciada sí emite recuentos de espectadores cuando el socket de su página los proporciona, como se describe abajo.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Joystick ChatMessage, BotMessage, new_message, bot_message, event_bot_message, pvp_message, y susurros. |
El chat normal no tiene event. El ID nativo se coloca en el campo de nivel superior id y meta.messageId; los roles y el estado privado usan los campos establecidos de nivel superior/insignias. |
new_follower |
Joystick StreamEvent con tipo Followed. |
Usa la estructura estándar de seguidor y se deduplica frente a la fila de bot correspondiente de Joystick. El opcional meta.userId/meta.followedAt solo se incluyen cuando Joystick los proporciona. |
new_subscriber / subscription_gift |
Tipos de eventos de Joystick NewSubscription / GiftedSubscription. |
Usa las claves de metadatos de suscripción compatibles con Kick: eventType, subscriber, gifter, totalGifted, duration, y plan. |
donation |
Joystick StreamEvent tipos Tipped / TipMenu. |
hasDonation contiene el importe y la unidad de tokens para la conversión compartida a USD cuando están disponibles, y se deduplica la fila de bot correspondiente de Joystick. meta usa las claves establecidas de eventos de apoyo de Kick: eventType, supporter, amount, currency, message, giftName, giftType, y tier. |
stream_online / stream_offline |
Joystick StreamEvent tipos como Started, StreamResuming, Ended, StreamEnding. |
Se usa para automatizaciones de conexión/desconexión que tienen en cuenta el transporte. |
user_enter / user_leave |
Joystick UserPresence tipos enter_stream / leave_stream. |
Los avisos de presencia se emiten como mensajes de evento y pueden suprimirse con los ajustes de ocultar eventos. Ocultar eventos también suprime eventos de transmisión sin donación. |
viewer_update |
La fuente del sitio con sesión iniciada recibe ViewerCountUpdated mediante EventLogChannel. |
Usa un entero simple meta, igual que YouTube, Twitch y Kick. Solo se emite si la captura de espectadores o el modo Hype están habilitados. La fuente independiente con credenciales de bot sigue sin recibir recuentos de espectadores. |
follower_update / subscriber_update |
Eventos de actualización del recuento de seguidores/suscriptores de Joystick. |
Usa un entero simple meta, de acuerdo con el contrato del contador de Twitch. |
| Avisos internos ignorados |
ChatMessageReceived, estado del dispositivo y actualizaciones de widgets sin asignación, como objetivos de propinas/PvP/subatón. |
Son avisos de transporte o estado de página, no eventos de Social Stream. No se convierten en eventos inventados snake_case nombres de eventos; el real ChatChannel/new_message la fila sigue siendo el único mensaje de datos de chat. |
XP Sync
Implementación: sources/xpsync.js
- Las filas de chat usan los campos canónicos de datos con
type: "xpsync", incluidos autor, mensaje, avatar, insignias de imagen y SVG en línea, color del nombre, membresía, indicadores de moderador/miembro/bot y UUID nativo del mensaje como id cuando esté disponible.
- Las respuestas siguen la convención de las fuentes del DOM de YouTube, Twitch y Kick: salvo que los prefijos de respuesta estén desactivados,
initial contiene el usuario al que se responde, reply conserva el mensaje sin prefijo, y chatmessage recibe el prefijo visible de respuesta.
- Se capturan las filas destacadas con Sparks aunque XPSync las renderice sin la clase normal de fila de chat ni ID de mensaje; el importe visible se expone mediante
hasDonation como N Sparks.
- Con la captura de eventos habilitada, las filas que contienen «acaba de seguir» o «siguió el canal» emiten
event: "new_follower".
- Cuando los recuentos de espectadores están habilitados, el Dock de chat permanente emite
event: "viewer_update" desde el recuento del vídeo en vivo ya cargado por la página de XPSync y lo actualiza con las actualizaciones de esa página. No se requieren credenciales de SSN aparte.
Instagram – Captura REST en vivo y bandeja de noticias
Implementación: sources/instagram.js y sources/instagramlive.js (copias idénticas)
- En páginas de directos (
/<user>/live/?broadcast_id=...), el chat en vivo procede de la API web de Instagram, consultada desde el mismo origen con la cookie de sesión: GET /api/v1/live/{broadcast_id}/get_comment/?last_comment_ts={ts} cada ~2 s, y POST /api/v1/live/{broadcast_id}/heartbeat_and_get_viewer_count/ cada ~5 s si los recuentos de espectadores están habilitados. Tras 3 fallos consecutivos (o cuando no haya broadcast_id se puede descubrir), la fuente pasa a interpretar el DOM renderizado del chat.
- El feed de actividad de la propia cuenta se consulta mediante
POST /api/v1/news/inbox/ cada ~45 s en cualquier página de Instagram. La primera consulta solo inicializa el conjunto de deduplicación para no reproducir nunca el historial; las noticias se deduplican por tuuid.
- Cabeceras obligatorias de API (todas estáticas o derivables):
X-IG-App-ID: 936619743392459, X-CSRFToken (desde la cookie), X-ASBD-ID: 359341, X-Requested-With: XMLHttpRequest, Content-Type: application/x-www-form-urlencoded.
- Todos los eventos del feed de actividad usan
type: "instagram"; el chat en vivo sigue siendo type: "instagramlive". Los eventos de me gusta usan la ruta normal del proceso en segundo plano: este envía una copia a la superposición específica de Reacciones y luego los incluye en el flujo principal de chat/eventos solo cuando capturelikeevent está habilitado, igual que TikTok y MeetMe. hideevents y el filtro de eventos personalizados los bloquean en todas partes. Como los eventos de la bandeja pertenecen a la cuenta conectada, se suprimen al ver el directo de otra persona (ambos /<user>/live/ páginas y directos del visor de historias; la propiedad se resuelve por perfil y se reintenta tras fallos de consulta) y se emiten en tu propio directo y todas las páginas fuera de directo. Una sola pestaña activa de Instagram consulta la bandeja de la cuenta a la vez, y solo lo hace con sesión iniciada.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message (en vivo) |
Nuevas entradas en el get_comment respuesta (comments[]/system_comments[]), o nuevas filas de chat del DOM cuando REST no está disponible. |
Datos estándar de chat, type: "instagramlive". REST proporciona valores exactos de user.username, user.profile_pic_url, y un valor único pk usado para deduplicación. |
viewer_update |
heartbeat_and_get_viewer_count informa de un cambio en viewer_count, cuando la captura de espectadores o el modo Hype están habilitados. |
meta recuento entero de espectadores. Las consultas se detienen cuando broadcast_status ya no es "live". |
stream_online / stream_offline |
stream_online se activa una vez cuando comienza una sesión de emisión REST; stream_offline se activa cuando el latido informa de un estado fuera de directo broadcast_status (requiere captura de espectadores o modo Hype). |
Eventos solo con metadatos que coinciden con el vocabulario compartido de estado de transmisión de Twitch y Joystick. |
new_follower |
Una noticia de la bandeja con un tipo de seguimiento notif_name (o story_type 12) aparece. |
chatname es el nuevo seguidor, chatimg su imagen de perfil, chatmessage el texto de la bandeja (por ejemplo, «x empezó a seguirte»). |
follow_request |
Un private_user_follow_request aparece la noticia (las cuentas privadas reciben solicitudes en lugar de seguimientos directos). |
Misma estructura que new_follower, mantenidos por separado para que las automatizaciones puedan aprobar solicitudes o saludar de forma distinta. |
liked |
Una noticia de la bandeja con un tipo de me gusta notif_name (incluido comment_like) aparece. |
Vocabulario de me gusta compartido con TikTok/MeetMe. chatname es el usuario que actúa, chatmessage el texto de la bandeja (por ejemplo, «a x le gustó tu foto»). |
message (comentario en publicación propia) |
Una noticia de la bandeja con un tipo de comentario notif_name aparece. |
Fila normal de chat (event: false), type: "instagram"; chatmessage contiene el texto de la bandeja, incluido el fragmento del comentario. |
notification |
Cualquier otro tipo de noticia de la bandeja (menciones, etiquetas, compras, etc.). |
Tipo genérico para el resto; meta.notifName y meta.storyType conservan la clasificación original de la noticia. |
Facebook Live
Implementación: sources/facebook.js (captura del DOM) y puente opcional de Graph API en sources/websocket/facebook.html
- La captura del DOM lee los comentarios renderizados de Facebook; el puente Graph API para páginas administradas lee comentarios de vídeos. Ambos usan
type: "facebook", los campos estándar de chat y sin event para comentarios normales. El puente API también incluye el opcional platform: "facebook".
- El puente API usa
userid para el ID del autor cuando está disponible, timestamp para una hora de creación válida en milisegundos Unix, y contentimg para una imagen adjunta HTTP(S) proporcionada por la API. Los comentarios solo con imagen pueden tener vacío el campo chatmessage. textonly solo se aplica al cuerpo del mensaje: texto original cuando es true y HTML escapado cuando es false.
- El contexto de comentarios de API usa
meta.messageId (ID nativo del comentario), meta.permalink, meta.videoId, y meta.pageId. Las versiones anteriores de API usaban meta.commentId, campos duplicados de autor/hora bajo meta, y pasaba allí los adjuntos originales. Las versiones nuevas usan los campos estándar de autor/hora/medios; esto no añade sincronización de eliminaciones.
- Los recuentos de espectadores solo se actualizan si están habilitados. El puente API lee el valor simultáneo
live_views; no sustituye el recuento por vistas acumuladas del vídeo ni inventa un cero si no está disponible. La captura API no deduce Estrellas, membresías, destacados ni respuestas del texto de comentarios normales.
- Las Estrellas se capturan del DOM renderizado del chat en vivo cuando Facebook muestra el elemento visible
N sent marcador; rellenan hasDonation y donoValue a razón de 100 Estrellas = 1 USD sin establecer data.event.
- Para pruebas, añade
ssnreplay=1 a la URL de Facebook Live para procesar filas de chat ya visibles después de actualizar.
| Evento |
Cuándo se activa |
Notas sobre los datos |
viewer_update |
El DOM consulta la insignia de espectadores en vivo; el puente API consulta las vistas simultáneas en vivo cuando está habilitado. |
meta recuento entero de espectadores, igual que otras fuentes. Se omiten los recuentos ausentes o que no se pueden interpretar; un cero real es válido. |
hasDonation |
Estrellas de Facebook renderizadas en el DOM del chat en vivo. |
Datos estándar de chat; hasDonation contiene el importe visible de Estrellas, como 100 Stars, y donoValue contiene el valor en USD. Las Estrellas no establecen data.event. |
highlightColor |
Facebook renderiza un elemento visible HIGHLIGHTED etiqueta. |
Usa los campos normales de chat y highlightColor; sin data.event está establecido. Las Estrellas siguen usando hasDonation. |
Online Church
Implementación: sources/onlinechurch.js
- Depende de la captura del DOM del chat público y del encabezado multimedia.
- Los recuentos de espectadores solo se actualizan cuando Mostrar recuento de espectadores o el modo Hype está habilitado.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparecen nuevas entradas bajo #publicchat. |
Datos estándar de chat con nombre del remitente, avatar, insignias y etiqueta opcional de membresía cuando exista en el DOM. |
viewer_update |
Consulta la insignia de ocupación en vivo del encabezado multimedia cada 10 s. |
meta recuento entero de espectadores; envía 0 cuando la insignia falta o no se puede leer, para borrar contadores obsoletos. |
SharePlay.tv
Implementación: sources/shareplay.js
- Depende de la captura del DOM del panel desplegable de chat en vivo de las páginas de canales de SharePlay.
- Solo se emiten las filas y tarjetas de chat insertadas después de conectar el capturador; el historial existente se ignora deliberadamente.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparecen nuevas filas dentro del flujo principal de chat. |
Datos estándar de chat con autor, avatar, imágenes de insignias y emotes conservados en HTML. Las respuestas de hilos también rellenan initial, reply, y meta.reply cuando la fila principal sigue presente. |
raid |
SharePlay inserta una tarjeta Blitz en el flujo de chat en vivo. |
Se asigna al evento canónico de raid. meta.cardType es "blitz", con el opcional meta.fromLogin y meta.viewers cuando el texto de la tarjeta los expone. |
shoutout |
SharePlay inserta una tarjeta de mención/seguimiento en el flujo de chat. |
Se emite como data.event = "shoutout". La imagen del banner de la tarjeta se reenvía mediante contentimg, mientras que meta.cardType y meta.action conservan la etiqueta de la tarjeta/texto del botón. |
viewer_update |
Consulta la insignia visible de espectadores del encabezado cada 10 s. |
meta recuento entero de espectadores; solo se emite cuando Mostrar recuento de espectadores o el modo Hype está habilitado, y envía 0 si la insignia deja de ser legible, para borrar contadores obsoletos. |
Streamplace
Implementación: sources/streamplace.js
- Lee la página en vivo de Streamplace renderizada con React y omite el historial visible de chat al conectar.
- Mensajes de tipo reenvío, como
Name (Discord): message se normalizan al nombre del remitente reenviado.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparecen nuevas filas de chat de Streamplace después de conectar. |
Datos estándar de chat con nameColor, chatbadges, enlaces conservados en HTML y campos de respuesta initial, reply, y meta.reply cuando es visible. |
viewer_update |
Cambia la insignia de espectadores del encabezado mientras la captura de espectadores o el modo Hype están habilitados. |
meta recuento entero de espectadores. |
WorldsWave
Implementación: sources/worldswave.js
- Admite páginas en vivo y URL solo de chat de WorldsWave, como
https://worldswave.com/kn_livecmd.php?cmd=viewStream&streamId=STREAM_ID&chatonly=1.
- Usa el estable
data-ww-*/ww-chat-* marcado cuando está disponible, conservando los selectores heredados de kontackt para páginas solo de chat y diseños antiguos.
- Se omite el historial de chat existente al conectar la captura; prueba con un mensaje nuevo.
- Los recuentos de espectadores requieren Mostrar recuento de espectadores o modo Hype. No están implementados eventos específicos de regalos/propinas ni respuestas. Una fila renderizada aún puede proporcionar una etiqueta de donación mediante
data-ww-donation.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparece una nueva fila renderizada de chat de WorldsWave. |
Datos estándar de chat con type: "worldswave", nombre del remitente, avatar, ID de usuario opcional, color del nombre, insignias, estado de moderador, membresía, valor de donación, adjunto e identidad del canal. Los ID estables de mensajes de WorldsWave se exponen como meta.messageId y se deduplican entre los paneles simultáneos de vista previa/chat completo. Las imágenes de mensajes en línea se mantienen saneadas cuando el modo solo texto está desactivado. |
viewer_update |
Cambia el total visible de espectadores en vivo mientras la captura de espectadores o el modo Hype están habilitados. |
meta es el recuento entero de espectadores. El estable data-ww-viewer-count se prefiere el valor; los valores heredados compactos como 1.2K se normalizan como alternativa. |
FLEX TV
Implementación: sources/flextv.js
- Lee el panel de chat renderizado en
https://www.flextv.co.kr/channels/*/live páginas.
- El panel de chat debe estar visible. Se omite el historial existente al conectar la fuente, así que prueba con una fila nueva.
- Aún no se documenta recuento de espectadores, donaciones ni ruta de respuesta para esta fuente.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Nuevo elemento visible de FLEX TV .chat-item aparecen filas en el flujo de chat en vivo. |
Datos estándar de chat con type: "flextv", chatname, chatmessage, nameColor, imágenes de insignias en chatbadges, y detalles de miembros FLEX bajo meta cuando lo expone data-member. |
Seal Team Sloth
Implementación: sources/sealteamsloth.js
- Lee el chat emergente renderizado en
https://sealteamsloth.com/popout-chat/* páginas.
- Los recuentos de espectadores requieren Mostrar recuento de espectadores o modo Hype.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparece una nueva fila renderizada de chat de Seal Team Sloth. |
Datos estándar de chat con type: "sealteamsloth", nombre del remitente, avatar y contenido del mensaje. |
viewer_update |
Cambia el total visible de espectadores en vivo mientras la captura de espectadores o el modo Hype están habilitados. |
meta es el recuento entero de espectadores; valores compactos como 1.2K se normalizan. |
MeetMe - Captura del DOM y WebSocket
Implementación: sources/meetme.js
- Lee el DOM renderizado del chat en vivo de MeetMe en
app.meetme.com/live/view/... páginas y dentro del api.gateway.meetme-live.com/web-live/... iframe.
- Cuando el WebSocket del iframe está disponible,
wss://video-live.meetme.com/ las tramas se interpretan antes de la alternativa del DOM para capturar eventos en vivo más completos.
hideevents suprime los eventos sin donación; los regalos y donaciones de diamantes de MeetMe siguen rellenando campos de donación. capturejoinedevent habilita avisos de incorporación/reincorporación. Los específicos de usuario liked los eventos usan el enrutamiento compartido en segundo plano controlado por capturelikeevent; agregado reaction los efectos siguen dirigidos explícitamente a la superposición de Reacciones.
- Los recuentos prefieren el valor visible del encabezado de MeetMe y usan totales WebSocket solo si no está disponible en el DOM. Se emiten al cambiar y repiten el último valor aproximadamente cada 30 segundos mientras
showviewercount/hypemode está habilitado; los totales de seguidores solo se emiten al cambiar y están limitados a unos 60 segundos.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Nuevo SNSChatMessage llegan tramas WebSocket, o nuevas ChatMessage_* Las filas del DOM aparecen bajo ChatHistoryContainer_*. |
Datos estándar de chat con nombre del remitente, avatar, HTML/texto del mensaje e imágenes/texto de insignias. Los detalles de filas del DOM son campos planos meta claves, incluidas messageId, roomId, level, levelColor, badgeLabels, badgeSrcs, badgeClasses, isBouncer, isTopStreamer, isBestOfTheWeek, rank, y rowClassName. Los datos de WebSocket establecen meta.source = "websocket". |
joined / rejoined / left |
SNSChatParticipant llegan tramas WebSocket de creación, actualización o eliminación, o MeetMe renderiza un elemento del DOM join-cell fila. Los avisos de incorporación/reincorporación requieren Capturar eventos de transmisión «joined». |
Emite avisos del sistema con formato de chat y nombre/avatar del usuario cuando MeetMe los expone. meta.isNewViewer, meta.viewerLevelId, meta.isBouncer, y meta.isSubscriber conservan el estado de los participantes. |
new_follower |
MeetMe renderiza una fila del DOM de favorito/seguimiento, como Favorited. |
Usa el vocabulario compartido de eventos de seguidores. chatname es el usuario que actúa, chatimg es la foto de perfil detectada cuando está disponible, y los campos planos meta.favoriteText/meta.targetName conservan los detalles originales de la fila. |
gift |
SNSGiftMessage llegan tramas WebSocket, o MeetMe renderiza una imagen de regalo en una fila de chat. |
hasDonation contiene la etiqueta visible del regalo o el valor en diamantes, contentimg contiene la imagen del regalo cuando se expone, y claves planas como meta.giftName, meta.giftCount, meta.amount, y meta.currency conservan los detalles estructurados. El gift el evento se reserva para tramas/filas reales de regalos; el renderizado de donaciones debe seguir basándose en hasDonation. |
donation |
SNSDiamond las tramas WebSocket exponen actividad de diamantes. |
Las tramas específicas de diamantes se tratan como eventos de donación. hasDonation se formatea como diamantes para la conversión compartida a USD, y meta.amount/meta.currency permanecen planos para las automatizaciones. |
liked / reaction |
SNSLike llegan tramas WebSocket. |
Los me gusta atribuidos a un usuario usan el mismo liked vocabulario y enrutamiento centralizado en segundo plano que TikTok. Los totales agregados/anónimos de me gusta se envían solo al destino de reacciones como reaction, con campos planos meta.reactionType, meta.totalLikes, y meta.subscriberLikes. La diferencia está en el significado del evento, no en el anonimato: capturelikeevent controla solo los individuales liked/like eventos. |
follower_update |
SNSVideo los metadatos WebSocket exponen totales de seguidores. |
meta es el entero de seguidores, siguiendo la convención compartida de eventos de contadores. |
guest_update |
SNSVideoGuestBroadcast llegan tramas de creación/actualización. |
Evento solo con metadatos para el estado de invitados/copresentadores en vivo. Los campos planos meta las claves incluyen status, position, totalGuests, isMuted, guestBroadcastId, videoViewerId, y broadcastId. |
viewer_update |
Cambia la insignia visible de espectadores del encabezado, o SNSVideo los metadatos WebSocket exponen totales de espectadores cuando no está disponible la insignia; los totales sin cambios se repiten aproximadamente cada 30 segundos mientras esté habilitado. |
meta recuento entero de espectadores; solo se emite si la captura de espectadores o el modo Hype están habilitados. |
Velora
Implementación: sources/velora.js y sources/websocket/velora.js
- El modo Standard lee el DOM visible del chat; el modo WebSocket usa la API de eventos de Velora con OAuth.
- Las URL compatibles con el modo Standard incluyen
https://velora.tv/*, https://velora.tv/dashboard/stream/popout?panels=chat%2Cactivity&channel=CHANNEL&layout=vertical, y https://velora.tv/dashboard/stream/popout/CHANNEL/obs-chat.
- Las tarjetas de Volts y de puntos del canal se emiten como datos de eventos cuando el DOM o la API de eventos las exponen.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparecen nuevas filas de chat de Velora o llegan mensajes de chat de la API de eventos. |
Datos estándar de chat con insignias, color del autor, enlaces y emotes conservados cuando no se usa modo solo texto. |
volts |
Tarjetas de Volts de Velora o channel.volts Llegan datos de la API de eventos. |
hasDonation contiene el importe visible de Volts; las capturas del DOM incluyen meta.source = "dom". |
channel_points |
Tarjetas de puntos del canal/canjes de Velora o channel.channel_points_redemption Llegan datos de la API de eventos. |
chatmessage contiene el mensaje de canje o el título de la recompensa; meta.rewardTitle identifica la recompensa cuando está disponible. |
subscription |
Una fila visible de actividad de Velora indica que un usuario se hizo miembro/suscriptor del canal. |
membership contiene la etiqueta visible de membresía. |
viewer_update |
Cambia el recuento visible de espectadores mientras la captura de espectadores o el modo Hype están habilitados. |
meta recuento entero de espectadores. |
Parti - Captura de chat de perfil / emergente
Implementación: sources/parti.js
- Admite URL de perfiles, como
https://parti.com/USERNAME y URL emergentes, como https://parti.com/popout-chat?id=USER_ID.
- Los recuentos de espectadores usan el punto de latido de transmisiones de Parti cuando la captura de espectadores o el modo Hype están habilitados.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparecen filas visibles de chat de Parti en el perfil o chat emergente. |
Datos estándar de chat; nameColor conserva el color del autor renderizado por Parti y chatmessage conserva el contenido en línea salvo en modo solo texto. |
donation |
Las filas visibles de propinas de Parti indican que un usuario dio un importe. |
hasDonation contiene el importe mostrado, meta.amount/meta.currency se rellenan cuando se pueden interpretar, meta.amountText conserva el texto original del importe, y donoValue se establece para propinas en USD. |
viewer_update |
El latido de Parti devuelve un recuento de espectadores en vivo. |
meta es el recuento entero de espectadores; la página reutiliza un token de latido por ventana de origen para evitar inflar los recuentos. |
CHZZK - Captura de chat emergente
Implementación: sources/chzzk.js
- Admite
https://chzzk.naver.com/live/*/chat y https://chzzk.naver.com/iframe/live/*/chat.
- Los recuentos de espectadores usan el punto de consulta de estado en vivo de CHZZK cuando la captura de espectadores o el modo Hype están habilitados.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparecen filas visibles de chat de CHZZK en el flujo del chat emergente. |
Datos estándar de chat con type: "chzzk", nameColor, URL de imágenes de insignias en chatbadges, y emotes renderizados en chatmessage salvo que el modo solo texto esté habilitado. |
chat con hasDonation |
Aparecen filas visibles de donación de queso de CHZZK en el chat. |
hasDonation contiene el importe visible de queso. Estas filas no establecen data.event. |
viewer_update |
La consulta de estado en vivo devuelve un recuento de espectadores. |
meta es el recuento entero de espectadores. |
Rumble - Captura Standard del DOM
Implementación: sources/rumble.js
- Requiere cookies de sesión autenticada para que el
service.php responde la API de espectadores.
- Las filas renderizadas de Rant proporcionan
hasDonation; las tarjetas de raids entrantes proporcionan event: "raid". Esta fuente del DOM no emite el flujo de eventos de suscriptores/seguidores del puente API.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparecen filas visibles de chat de Rumble en la página o chat emergente. |
Datos estándar de chat; chatmessage conserva el HTML de imágenes de emotes de Rumble después de que la página lo renderice, salvo en modo solo texto. |
viewer_update |
Llama al recurso de Rumble video.watching-now servicio cada 30 s. |
meta recuento entero de espectadores; usa credentials: 'include' para reutilizar las cookies de sesión. |
chat con hasDonation | Una fila visible de Rant contiene un precio. | hasDonation conserva el precio renderizado; no se añade un marcador de evento de donación. |
raid | Aparece una tarjeta de raid entrante en el chat. | Usa el mensaje visible de raid y la imagen opcional de tarjeta en contentimg. |
Rumble - WebSocket/URL de API
Implementación: sources/websocket/rumble.js
- Requiere la URL de Live Stream API del creador obtenida en
https://rumble.com/account/livestream-api. Rumble documenta que esta URL incluye la clave de la transmisión en vivo, no requiere autenticación aparte y solo debe compartirse con terceros de confianza.
- Transporte de solo lectura. La documentación pública de la API de Rumble Live Stream no describe un punto de acceso oficial para enviar chat, por lo que esta fuente reenvía mensajes/eventos a Social Stream, pero no envía chat de vuelta a Rumble.
livestreams[].chat solo se rellena mientras la transmisión seleccionada esté en vivo. Usa ?streamId=... para fijar una transmisión específica cuando la API expone más de una; los ID inválidos ahora fallan en lugar de usar silenciosamente otra transmisión.
- La página también resuelve
https://rumble.com/chat/popup/<livestreams[].id> para que puedas abrir directamente el chat emergente normal insertado sin cargar antes la página del emisor /live página.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Llegan nuevas entradas del flujo de chat SSE de Rumble después de que la API oficial resuelva livestreams[].id; usa como alternativa livestreams[].chat.recent_messages. |
Datos estándar de chat. meta.source es rumble_sse cuando el flujo de chat SSE está disponible e incluye URL de avatares de users[].image.1; en caso contrario, usa como alternativa live_stream_api sin avatares. Cuando el catálogo de emotes de la ventana emergente está disponible, chatmessage renderiza los emotes de códigos cortos de Rumble como imágenes HTML y meta.plainText conserva el texto original del código corto. |
donation |
Aparecen nuevas entradas de Rant en livestreams[].chat.recent_rants. |
hasDonation contiene el importe formateado en USD; meta incluye amount_cents, amount_dollars, y expiresOn. |
new_follower |
Aparecen nuevas entradas en followers.recent_followers. |
Evento del sistema con chatname establecido en el nombre del seguidor y la marca de tiempo bajo meta.followedOn. |
new_subscriber |
Aparecen nuevas entradas en subscribers.recent_subscribers. |
membership se establece en SUBSCRIBER; subtitle refleja el importe en USD documentado cuando Rumble lo proporciona. |
subscription_gift |
Aparecen nuevas entradas en gifted_subs.recent_gifted_subs. |
chatname es quien regala, hasDonation se convierte en N Gifted, y meta incluye totalGifted, remainingGifts, giftType, y videoId. |
follower_update |
Siempre que cambie el contador de seguidores seleccionado. |
meta recuento entero de seguidores. Usa por defecto followers.num_followers; con ?followerMode=total, usa followers.num_followers_total cuando Rumble lo proporciona. |
subscriber_update |
Siempre que subscribers.num_subscribers cambia. |
meta recuento entero de suscriptores. |
stream_online / stream_offline |
Cuando la transmisión seleccionada cambia entre en vivo y desconectada. |
meta incluye un subconjunto saneado de campos de transmisión (id, title, createdOn, etiquetas de categoría, me gusta/no me gusta y totales de espectadores). Los valores sensibles, como stream_key no se reenvían deliberadamente. |
viewer_update |
Siempre que livestreams[].watching_now cambia para la transmisión seleccionada. |
meta recuento entero de espectadores simultáneos; emite 0 cuando la transmisión seleccionada se desconecta, para borrar contadores obsoletos. |
Este transporte está pensado para canales que posees o administras. Como la URL de API contiene una clave de transmisión en vivo, no la expongas en superposiciones, registros, capturas ni perfiles de navegador compartidos. Los avatares proceden del flujo de chat SSE de Rumble una vez que la API oficial resuelve el ID de transmisión; este transporte no captura páginas de Rumble para obtener avatares.
YouNow - Captura del DOM
Implementación: sources/younow.js
- Lee el DOM renderizado de chat en vivo y emite datos estándar de chat con
type: "younow".
- Líneas de actividad del público como
is watching, I became a fan!, y invited N fans to this broadcast. se marcan con event: true para que los filtros de eventos puedan enrutarlos.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparecen nuevas filas en el chat en vivo del público. |
Datos estándar de chat; las filas de actividad de fans/público establecen event: true. |
viewer_update |
Cambia el recuento visible del panel del público mientras showviewercount/hypemode está habilitado. |
meta recuento entero de espectadores; emite 0 cuando desaparece el contador. |
Favorited Studio - Captura del DOM
Implementación: sources/favorited.js
- Lee el DOM renderizado de chat en vivo y emite datos estándar de chat con
type: "favorited".
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparecen nuevas filas de chat. |
Datos estándar de chat. |
viewer_update |
Cambia el recuento de la pestaña de espectadores en vivo mientras showviewercount/hypemode está habilitado. |
meta recuento entero de espectadores leído del content-live-viewers pestaña. |
BEAM - Captura del DOM
Implementación: sources/beamstream.js
- Lee el DOM renderizado de chat en vivo y emite datos estándar de chat con
type: "beamstream".
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Aparecen nuevas filas de chat. |
Datos estándar de chat con el campo de texto sin formato chatname, URL del avatar en chatimg, y URL de imágenes u objetos de insignia SVG en chatbadges. Los campos ocultos en la página de captura de Beam permanecen vacíos. Los enlaces nativos de perfiles de Beam no se tratan como fuentes de reenvío externas. contentimg puede contener adjuntos de vídeo/webm en línea cuando se exponen. |
viewer_update |
Cambia un elemento de contador de espectadores mientras showviewercount/hypemode está habilitado. |
meta recuento entero de espectadores; solo se emite si la página de chat expone un contador. |
Castyr - Captura del DOM
Implementación: sources/castyr.js
- Lee nuevas filas de chat renderizadas desde
https://castyr.live/homebeta/popout-chat/* y emite datos estándar de chat con type: "castyr".
- Se omite el historial de chat existente al conectar la fuente.
| Evento |
Cuándo se activa |
Notas sobre los datos |
message |
Un nuevo .chat-message aparece una fila. |
Datos estándar de chat con nombre del remitente, contenido renderizado del mensaje y color del nombre cuando se exponga. |
viewer_update |
Cambia el recuento visible de chat activo mientras showviewercount/hypemode está habilitado. |
meta es el recuento entero leído del elemento de chat activo con título de Castyr. |
SOOP - Captura del DOM del reproductor
Implementación: sources/sooplive.js. Admite el formato unificado play.sooplive.com reproductor y el heredado play.sooplive.co.kr URL. El diseño anterior de chat global sigue siendo reconocido cuando se sirve.
El chat público emite type/platform: "sooplive", texto sin formato chatname/userid, nameColor, y contenido saneado en chatmessage. Se excluyen las filas existentes, los ID de mensajes duplicados, las copias de traducción y los susurros privados. Los emotes se convierten en imágenes seguras o texto alternativo en modo solo texto.
Con showviewercount o hypemode habilitado, viewer_update contiene un entero meta desde el campo del reproductor #nAllViewer. Las ventanas emergentes solo de chat pueden no exponer este recuento. SSApp usa el reproductor completo al abrir una ventana separada, porque las ventanas emergentes actuales de SOOP dependen de la ventana que las abre.
Gosh - Captura de chat del canal
Implementación: sources/gosh.js. Abre https://gosh.com/USERNAME con el chat visible, o pega esa URL en Añadir otra fuente de SSApp. No hace falta una ventana emergente de chat.
Las nuevas filas de chat emiten type/platform: "gosh", texto sin formato chatname, nameColor, y contenido saneado en chatmessage. Las imágenes y GIF en línea conservan URL HTTP(S) seguras. Con textonlymode, las imágenes se convierten en texto alternativo o [image] cuando no hay texto alternativo. Los avatares, insignias, donaciones y membresías quedan vacíos cuando no están en la fila capturada.
Mantén el chat virtualizado desplazado hasta los mensajes más recientes. Se excluyen el historial existente, las filas renderizadas de nuevo y los avisos del sistema sin autor. Los índices de renderizado son internos y no se emiten como ID nativos de mensajes. No se deducen eventos de seguimiento, donación, recuento de espectadores ni moderación.
Livacha - Captura de sala de chat
Implementación: sources/livacha.js. Abre https://livacha.com/chat/ROOM con el chat visible, o pega la URL de la sala en Añadir otra fuente de SSApp.
Las nuevas filas de chat emiten type/platform: "livacha", texto sin formato chatname, chatimg, nameColor, y contenido saneado en chatmessage. Las URL relativas de avatar e imágenes en línea se convierten en URL HTTP(S) absolutas. Párrafos, saltos de línea y listas se aplanan en un mensaje de chat. Con textonlymode, las imágenes se convierten en texto alternativo o [image].
Los ID de mensajes se usan internamente para evitar recapturar ediciones y filas montadas de nuevo. Se omiten el historial inicial y los mensajes antiguos añadidos al principio; las marcas de tiempo y menús de reacciones quedan fuera del cuerpo capturado. No se deducen eventos de donación, membresía, moderación ni recuento de espectadores.
Stream.space - Captura experimental del DOM
Implementación: sources/streamspace.js. Solo coincide con https://beta.stream.space/chat-popup.php?channel=USERNAME y el equivalente https://stream.space ventana emergente.
Las nuevas filas renderizadas de chat emiten type: "streamspace", platform: "streamspace", texto sin formato chatname/userid, chatmessage, avatar chatimg, nivel basado en imagen chatbadges, y nameColor. Los emotes en línea se reconstruyen como imágenes seguras, o como su texto alternativo cuando textonlymode está habilitado. Se excluyen el historial existente, los avisos de bienvenida, las vistas previas de respuestas y los duplicados fijados.
viewer_update contiene un entero meta leído de #popupViewersNum cuando showviewercount o hypemode está habilitado. No se deducen eventos de donación, membresía ni moderación.
Experimental: el menú de beta permaneció en Cargando durante la inspección. SSApp cargó el menú y capturó actualizaciones de espectadores, pero siguen sin verificarse la entrega de chat en vivo y el menú de producción. SSN no puede capturar mensajes que el sitio no renderiza.
w.tv y Prime - Captura del DOM
Implementaciones: sources/wtv.js en https://w.tv/USERNAME/chat y sources/prime.js en https://prime.gs/USERNAME?chat_popout=1.
Las nuevas filas de chat usan type/platform de wtv o prime, texto sin formato chatname, nameColor, y contenido saneado en chatmessage. Los emotes en línea se convierten en imágenes seguras o texto alternativo en modo solo texto. Prime también incluye el campo de la fila userid y admite tanto enlaces de perfiles con sesión iniciada como etiquetas de nombre de usuario sin sesión. Los avatares e insignias quedan vacíos cuando no están disponibles en la estructura de fila verificada.
Se excluyen el historial inicial, las tarjetas fijadas y las vistas previas de respuestas. w.tv virtualiza el chat: mantenlo desplazado hasta los mensajes más recientes para capturarlo. Sus ID de prueba del DOM son índices de renderizado, no ID nativos de mensajes. Prime omite el historial antiguo cargado encima de los mensajes iniciales y los marcadores de usuarios ignorados.
Ninguna ventana emergente expone un recuento verificado de espectadores de la transmisión, por lo que estos adaptadores no emiten actualizaciones de espectadores ni deducen eventos de donación, suscripción o moderación.
Límites de cobertura y compatibilidad
Esta referencia describe datos implementados, no garantiza que cada plataforma entregue todos los eventos. Los campos vacíos hasDonation asignados en una fuente no demuestran compatibilidad con donaciones. La visibilidad del DOM, los permisos de cuenta, los interruptores de captura y la disponibilidad de API siguen determinando qué se recibe. El reenvío de eliminaciones depende de la fuente; no supongas sincronización universal de moderación.
Diferencias y carencias registradas
| Par/Área |
Diferencia / carencia observada |
Impacto |
| Twitch: Standard frente a WebSocket |
Compartido: reward, subscription_gift, viewer_update, hype_train, y el campo opcional watch_streak. Solo Standard: giftpurchase, knock, community_highlight. Solo WebSocket: new_subscriber, resub, cheer, powerup, raid, new_follower, follower_update, subscriber_update. |
channel_points ahora es un alias heredado obsoleto de los canjes de recompensas de Twitch; las nuevas integraciones deben basarse en reward. |
| Kick: Standard frente a WebSocket |
Standard emite marcadores ligeros (gift, reward, booleano true, viewer_update). WebSocket añade eventos oficiales de seguimiento, suscripción, regalos, canje de recompensas, KICKs, moderación y estado en vivo. Conserva compatibilidad con un evento heredado raid datos, pero Kick no ofrece actualmente una suscripción oficial de raid/host. |
El modo WebSocket es más completo; al cambiar hay que revisar las automatizaciones basadas en nombres de eventos exclusivos de Standard. No exijas un evento de raid de Kick. |
| YouTube: Standard frente a WebSocket |
Compartido: superchat, supersticker, jeweldonation, sponsorship, resub, giftpurchase, giftredemption, viewer_update. Solo Standard: thankyou, redirect. Solo WebSocket: membermilestone, new_follower, subscriber_update, view_update, likes_update (opcional). |
Los nombres principales de miembros/eventos están alineados entre ambos; Super Chat, Super Sticker y Jewels usan hasDonation, mientras las compras/canjes de membresías regaladas no. |
| Todas las interfaces |
Muchas fuentes rellenan hasDonation sin establecer data.event. |
Esto es correcto; el renderizado de donaciones debe basarse en hasDonation, con data.event reservado para la semántica de sistema/evento. |
Alias específicos de fuentes y nombres heredados
Estas correspondencias son específicas de la fuente/contexto indicado, no sustituciones globales. La compatibilidad con alias varía según la página. Las fuentes actuales del DOM de TikTok y TikFinity siguen emitiendo followed; Velora usa subscription y channel_points, y Streamlabs usa subscription. Acepta el contrato actual de la fuente y sus alias heredados pertinentes en lugar de renombrar cada evento coincidente.
| Alias / Nombre heredado |
Sustitución canónica |
Contexto |
subscription | new_subscriber | Nueva suscripción de Twitch/Kick |
subgift | subscription_gift | Suscripción regalada de Twitch |
membership | sponsorship | Nuevo miembro de YouTube (genérico) |
new_member | sponsorship | Nuevo miembro de YouTube |
new_membership | sponsorship | Nuevo miembro de YouTube |
newmember | sponsorship | Nuevo miembro de YouTube |
new-membership | sponsorship | Capturador del DOM de YouTube (variante con guion) |
upgraded_membership | resub | Mejora de nivel de YouTube |
upgraded-membership | resub | Capturador del DOM de YouTube (variante con guion) |
membership_upgrade | resub | Mejora de nivel de YouTube |
membership_milestone | membermilestone | Chat de hito de YouTube |
member_milestone | membermilestone | Chat de hito de YouTube (variante con guion bajo) |
gift_membership | giftpurchase | Paquete de regalos de YouTube |
membership_gift | giftpurchase | Paquete de regalos de YouTube |
giftmemberships | giftpurchase | Paquete de regalos de YouTube (variante plural) |
gifted_membership | giftredemption | Regalo de YouTube recibido |
gifted_memberships | giftpurchase | Paquete de regalos de YouTube (variante plural) |
community_gift | giftpurchase | Paquete de regalos a la comunidad |
channel_points | reward | Canje de recompensa por WebSocket de Twitch (alias heredado) |
followed | new_follower | Salida actual del DOM de TikTok/TikFinity; acepta ambos nombres al combinar modos de captura de TikTok. |
Uso de esta referencia
- Al añadir un evento nuevo, reutiliza el vocabulario existente (
subscription_gift, viewer_update, etc.) siempre que sea posible. Si es inevitable una desviación, documéntala aquí junto con el motivo.
- Mantén
data.meta predecible: prefiere claves planas, nunca sobrecargues cadenas con datos mezclados e incluye siempre unidades (currency, bits, duration).
- Actualiza esta página junto con los cambios de datos; actualiza las instrucciones de agentes solo cuando cambien las reglas de desarrollo compartidas.
- Valida los cambios de datos tanto con la fuente emisora como con la superposición o disparador de Event Flow que los consume.
- La captura depende de la compatibilidad y los ajustes de la fuente. Para ocultar filas marcadas como eventos en el Dock o las superposiciones de destacados, añade
&hideevents o &hideallevents. Para ocultar eventos seleccionados, usa &filterevents=subscription_gift,new_follower,gifted.
- Para YouTube, Twitch y Kick, activa Modo WebSocket para la compatibilidad más amplia con eventos específicos de plataforma. La captura de regalos/donaciones de YouTube (incluidos regalos y Super Chats) está disponible en modos Standard y WebSocket; WebSocket añade tipos de eventos. La compatibilidad exacta sigue variando según plataforma, rol de cuenta y permisos concedidos.
Volver arriba
Superposiciones de monetización
Las propinas de NinjaBacker usan platform: "ninjabacker", type: "ninjabacker", chatname, texto sin formato chatmessage, textonly: true, un campo con prefijo de fuente id, formateado hasDonation, y el campo numérico donoValue. Son filas normales con donación sin un event valor de anulación. meta.ninjabacker contiene el valor ISO currency y en unidades monetarias principales amount. Las propinas anónimas usan el nombre visible Anonymous. La fuente usa SSE en vivo (sin repetición) o el receptor opcional de webhooks firmados de la API de SSN (hasta siete días de entrega en cola). Las entregas fiables usan un identificador estable ninjabacker:delivery:DELIVERY_ID ID. Ningún modo recibe reversiones por reembolsos/disputas. Las credenciales del receptor y secretos de firma nunca entran en los datos de eventos. Los valores callbackId controlados por quien llama no identifican pagos ni se reenvían. Las propinas de prueba del panel se excluyen de las filas de donación. Emiten event: "monetization_test" con meta.ninjabackerTest que contiene id y at (milisegundos Unix), solo para la alerta específica de vista previa.
event: "monetization_update" es una instantánea solo de metadatos de type/platform: "socialstream". meta.monetization.wishlist contiene enabled, qr, position, rank, total, url pública y el artículo actual (name, amount, currency, image, url pública) o null. meta.monetization.ninja contiene enabled, qr, position, username y la url pública de propinas. Nunca se incluyen los Tip ID privados. meta.monetization.ebay contiene enabled, qr, position, display (cycle/cheapest/first), seconds, ajustes opcionales de anuncios y artículos públicos. Cada artículo tiene id, name, amount, currency, image, url, auction, startingBid, endsAt, available, bought y updatedAt. Los tiempos son milisegundos Unix. No se incluyen credenciales del vendedor ni identidad del comprador.
Una compra de lista de deseos confirmada por el anfitrión también incluye meta.wishlistPurchase con id, name, supporter opcional y at (milisegundos Unix). Es una confirmación del anfitrión, no un aviso de pago de Amazon, y no cuenta como donación monetaria. Las superposiciones deben deduplicar su id e ignorar avisos antiguos de compra.
Pedidos pagados de Shopify
El receptor firmado opcional de Shopify emite platform/type: "shopify" y event: "purchase" solo para orders/paid con financial_status: "paid", un total positivo, test: false, sin cancelación y con una marca de tiempo de actualización vigente en el cuerpo firmado. Las notificaciones de prueba, impagadas, obsoletas, canceladas o de reembolso no emiten acciones de compra. No se infiere intención de regalo.
chatname es Anonymous; se excluyen campos del cliente, notas privadas y URL de pedidos. chatmessage es texto sin formato con textonly: true; subtitle contiene hasta tres títulos públicos de productos. meta.commerce contiene orderTotal y currency en la moneda de la tienda, más quantity cuando se conoce un recuento completo válido. No se establecen el destinatario ni la finalidad física/digital. Sin hasDonation o donoValue está establecido. id es un hash opaco estable asociado a tienda/pedido con prefijo de Shopify; no es un identificador de pedido original.
Las compras usan las rutas existentes de actividad, la categoría Compra de multi-alerts y Event Flow. La promoción de productos usa el existente meta.monetization.commerce catálogo. Importar un producto o establecer su etiqueta promocional en Regalo no genera un evento de compra o regalo. Configuración y límites de entrega de Shopify.
Regalos y comercio
Usa event: "gift" para un regalo, giftcontribution para apoyo pagado destinado a un regalo, giftfunded para completar la financiación, y purchase para una venta de producto. Estos nombres son independientes del proveedor y de si el artículo es físico o digital. Reserva el heredado giftpurchase evento para membresías regaladas; Throne usaba antes ese nombre incorrectamente y ahora emite gift. Los productores de membresías existentes no cambian. Los filtros personalizados de nombres de eventos de Throne deben cambiar a gift; los filtros de donaciones no necesitan cambios.
hasDonation sigue siendo la señal de compatibilidad para apoyo pagado, con donoValue que contiene su valor en USD proporcionado o estimado. Los regalos y aportaciones conservan esos campos. La financiación completada omite ambos para evitar contar aportaciones dos veces. Las ventas normales de productos los omiten por defecto, conservando el contrato de eBay. No deduzcas intención de regalo de una tienda, URL de lista de deseos o artículo físico: una compra para el comprador u otro destinatario sigue siendo una venta salvo que la fuente identifique explícitamente un regalo para el creador.
Campo compartido opcional meta.commerce los campos son recipient (creador, comprador, otro), itemType (físico, digital, servicio), quantity (recuento positivo de artículos), currency (moneda ISO), goalAmount (objetivo de financiación en unidades monetarias principales, nunca ingresos nuevos), y orderTotal (total conocido del pedido pagado en unidades monetarias principales; comercio, no ingresos por donaciones). Omite los detalles desconocidos. Mantén los nombres de artículos en subtitle, imágenes en contentimg, y texto del colaborador en chatmessage. Los metadatos existentes del proveedor siguen disponibles. Throne proporciona destinatario y moneda, además de goalAmount al completarse; eBay proporciona cantidad. Ninguno deduce el tipo de artículo ni expone datos privados del destinatario.
El feed de actividad muestra estos eventos incluso sin texto del colaborador. Multi-alerts usa la presentación de donaciones para regalos y aportaciones, incluido un aviso distinto de Regalo totalmente financiado sin valor monetario. Las compras tienen una categoría Compra independiente, habilitada por defecto, con purchasestyle, purchasesound, purchaseaccent, y disablepurchases controles de URL. Las alertas de compra no cambian los totales de donaciones.
Event Flow ofrece estos nombres en los disparadores Tipo de evento y Otro evento. Los disparadores de Donación siguen inspeccionando hasDonation; los disparadores de Gift Sub conservan la semántica de membresía. Compare Property acepta rutas anidadas como meta.commerce.recipient. Las plantillas de acciones aceptan {meta.commerce.quantity} y {meta.commerce.currency}, junto con los existentes {donation}, {subtitle}, y {meta}. Las rutas anidadas distinguen mayúsculas y minúsculas, los valores ausentes se muestran vacíos y está prohibido recorrer prototipos.
Webhooks de comercio para creadores y superposiciones promocionales
Los pagos públicos Donation de Ko-fi conservan hasDonation y obtienen el valor en USD donoValue. Los pagos de suscripción usan new_subscriber o resub, con el nivel en membership. Shop Order y Commission usan purchase sin valores de donación. Los eventos privados de Ko-fi siguen excluidos. El JSON codificado como formulario se decodifica una vez; los nombres y mensajes son texto sin formato.
Buy Me a Coffee donation.created conserva el apoyo monetario; extra_purchase.created y commission_order.created se convierten en purchase. wishlist_payment.created se convierte en giftcontribution usando solo ese importe de pago; meta.commerce.completed registra el indicador de finalización del proveedor sin emitir otra fila monetaria. membership.started se convierte en new_subscriber con el nivel en membership, sin seguir usando incorrectamente hasDonation para un nombre de nivel. Un importe de inicio de suscripción no se trata por sí solo como un cobro pagado. Los eventos de prueba, reembolso, fallo y actualización/ciclo de vida no compatibles no generan alertas de pago. Se omiten las notas ocultas del colaborador.
Fourthwall admite ORDER_PLACED (purchase), GIFT_PURCHASE (gift, destinatario otro), DONATION (fila normal de donación) y SUBSCRIPTION_PURCHASED (new_subscriber). Los totales de pedidos existentes conservan hasDonation por compatibilidad con versiones anteriores, marcado meta.commerce.legacyDonationValue: true; esta es una excepción explícita a los valores predeterminados de nuevas ventas de productos. Los pedidos con tarjetas de regalo aplicadas emiten una alerta de compra sin valor de donación: no puede deducirse con fiabilidad el nuevo cobro a partir del total del pedido y la compra del regalo ya se contó. Los nombres de facturación y correos electrónicos no se usan como identidad pública. Los eventos de prueba del panel y las actualizaciones de pedidos no generan alertas de pago.
Estos adaptadores conservan el reenvío, las acciones de bot, Event Flow y el enrutamiento de destinos existentes, con meta.webhookId deduplicación. Exponen nombres públicos, mensajes de texto sin formato, nombres conocidos de artículos en subtitle, y la moneda ISO meta.commerce.currency junto con los valores numéricos de donación cuando corresponda. No añaden contabilidad de reembolsos ni autenticación nueva del receptor; usa la ruta de webhook configurada del proveedor.
meta.monetization.commerce en monetization_update contiene enabled, qr, position, display (first/cycle), seconds y una matriz pública items. Cada artículo tiene name, url, image, amount opcional (null si se desconoce), currency y purpose (shop/gift/support/membership). Son detalles promocionales introducidos por el anfitrión, no pruebas de pago. Añadir o editar artículos no emite eventos de donación o compra. La superposición genérica usa mode=commerce; view=both|showcase|card|alerts separa la promoción de la actividad. Los parámetros opcionales de URL style, scale, cardevery, cardfor y onlytype controlan la presentación. Los modos existentes de proveedores también aceptan controles de vista y programación. Consulta la guía de configuración.
Eventos de regalos de Throne
La integración opcional de Monetización reenvía eventos firmados de Throne con platform y type establecido en throne. Los tres usan un identificador estable de entrega id, texto sin formato chatname, chatmessage con textonly: true, nombre del artículo en subtitle, y una miniatura HTTPS opcional en contentimg.
| evento | Significado | Importe de donación / rango |
|---|
gift | Un regalo comprado | hasDonation y el valor en USD donoValue; +1 al rango de regalos |
giftcontribution | Una aportación para un regalo | Solo el importe de aportación; sin aumento de rango |
giftfunded | Un regalo financiado colectivamente completado | No hasDonation o donoValue, evitando contar dos veces las aportaciones anteriores; +1 al rango de regalos |
meta.throne contiene itemName, creator (nombre de usuario público), completed, currency y en unidades monetarias principales amount. Para giftfunded, el importe describe el objetivo, no ingresos nuevos. Los remitentes anónimos siguen siendo Anonymous; los regalos comunitarios completados usan Community. Nunca se reenvían campos privados de pago y envío.
monetization_update las instantáneas también contienen meta.monetization.throne: enabled, username, url, qr, position, rank, y gifts. Estas instantáneas no contienen URL de webhook ni credenciales de escucha.
Comandos de voz del anfitrión (vista previa de escritorio)
El nodo de Event Flow Cuando digo... el disparador recibe comandos de confianza del micrófono local de SSApp. Su contexto interno de acción usa chatname: "Host", type: "hostvoice", la frase reconocida en chatmessage, y textonly: true. No es un evento de plataforma entrante ni un nuevo transporte de chat. Enviar estos campos por el chat no puede activar un disparador de voz.
Requiere una versión de escritorio actualizada, iniciar explícitamente el micrófono y habilitar las acciones después del modo Prueba. Consulta la configuración de vista previa y estado de validación.
Controles de visualización de productos
Existente monetization_update las instantáneas pueden incluir meta.monetization.commerce.live: null para la programación guardada, o {mode: "show" | "hide", url?: "https://...", until: 0 | epochMilliseconds}. Mostrar busca la URL exacta del producto guardado; si falta el producto, no muestra tarjeta. Un until positivo caduca y vuelve a la programación guardada; cero dura hasta que se cambia o se reinicia SSN. Ocultar suprime las promociones, no las alertas de actividad pagada.
commerce.viewerURL es la URL publicada de la tienda de solo lectura, o una cadena vacía. Cuando existe, los códigos QR promocionales enlazan allí. Nunca contiene la sesión de SSN ni la clave de publicación. Los productos permanecen en commerce.items. Los controles de visualización, las importaciones y la publicación no emiten eventos de donación/compra. Consulta Controles de productos para Event Flow y uso de API remota.
El nodo de Event Flow commerceControl la acción espera la respuesta directa/de Chrome (hasta ocho segundos). En datos normales de eventos conserva el evento y añade meta.commerceControlResult: {success: true, commerce: controlState} o {success: false, error: "..."}. Para un valor existente numérico, matriz u otro tipo no objeto de meta, los metadatos no cambian y el diagnóstico se devuelve como commerceControlResult en el resultado de la acción. Los controles fallidos detienen las acciones posteriores de esa cadena sin suprimir el evento de pago original. Un tiempo de espera agotado no demuestra que el control no se aplicó; revisa el estado antes de reintentar un comando relativo como Siguiente. El éxito confirma el estado local seleccionado/oculto/programado, nunca la visibilidad en OBS ni la sincronización de la página pública.
Flujos con nombre de Stream Deck / API
El disparador de flujo con nombre crea un mensaje interno de Event Flow con type: "api", event: "workflow_trigger", chatname: "Stream Deck / API", vacío chatmessage, y textonly: true. Su meta.workflow el objeto contiene el nombre del disparador y un JSON proporcionado por quien llama data objeto. Lee valores mediante plantillas como {meta.workflow.data.minutes}. Solo se evalúan los flujos guardados y habilitados que coincidan explícitamente con ese disparador. No es un evento entrante de espectador/chat y no se emite como chat; copiar estos campos al chat no activa el disparador con nombre.
Piloto de público de NinjaChatter
El conector experimental de extensión emparejada envía filas solo para visualización con type: socialstreamchat, platform: ninjachatter, y textonly: true. meta.ninjachatter contiene origin: audience, el descriptivo provider, y el público room ID. Estas filas omiten respuestas de plataforma, bots, disparadores de Event Flow y puntos. Que se muestre un proveedor no implica autorización. Las capturas heredadas de NinjaChatter incluyen meta.ninjachatter.room para suprimir duplicados de cada sala.
Cheer usa una ruta independiente autenticada de solicitud y resultado, nunca un comando especial de chat. La configuración fija emite el comando existente de la superposición Actions show_text mensaje durante tres segundos. Recibirlo significa aceptación del transporte, no visualización verificada en OBS. Ningún dato del público puede seleccionar acciones arbitrarias. El piloto está deshabilitado por defecto en NinjaChatter; Electron conserva su relé existente hasta que se valide el nuevo límite de emparejamiento privado.
Tableros de plazas comerciales y ventas recientes
El existente monetization_update evento (type/platform: socialstream) también incluye meta.monetization.boards. Su board contiene title, style (plazas/equipos), columns (1–20), visible, y hasta 120 spots. Cada plaza tiene una cadena id, texto sin formato label, status (disponible/reservada/revelada) y result (texto sin formato, vacío hasta revelarse). Las reservas y revelaciones son estados de visualización introducidos por el anfitrión, no pruebas de compra ni asignaciones aleatorias.
boards.sales contiene hasta 100 registros recientes: id, title, opcional amount (null si se desconoce), currency, quantity, source, y at (milisegundos Unix al registrarse). automatic activa la recopilación, salesVisible controla la visualización y revision aumenta con los cambios. La recopilación automática solo acepta purchase eventos de Shopify, vendedor de eBay, Fourthwall, Ko-fi y Buy Me a Coffee; se excluyen eventos privados/de prueba. No trata los metadatos de subastas, propinas, regalos ni reservas de plazas como compras. Los registros automáticos no sustituyen el precio de un artículo por totales de pedidos, precios de anuncios ni importes de donación. Los registros manuales usan source: "Host confirmed".
El estado persiste en el almacenamiento privado de monetización de esta instalación; las instantáneas públicas excluyen ID de deduplicación de entregas, identidad del comprador y secretos. Las ventas mostradas explícitamente conservan sus ID de evento para eliminarlas. Los reembolsos requieren que el anfitrión las elimine. Los ID de compras duplicadas se recuerdan aparte (hasta 2000), incluso tras borrar el historial visible. El existente getCommerceState la respuesta incluye commerce.boards; commerceControl acepta los comandos de tablero/ventas documentados en la guía del tablero. Las ediciones manuales emiten el estado actualizado, pero nunca crean eventos de compra, totales de donaciones ni recompensas de pago. Las superposiciones se ocultan si no reciben la instantánea del anfitrión durante 35 segundos.
Añadidos al flujo de trabajo de vendedores: commerce.boards.board.id identifica una generación del tablero. Un valor manual saleAdd puede proporcionar boardId y spotId para registrar la venta y reservar esa plaza de forma atómica; se rechazan las ventas vinculadas duplicadas que sigan en el historial reciente. saleRemove con reopenSpot: true libera esa plaza solo si la generación del tablero sigue coincidiendo. Las entradas públicas de ventas omiten estos campos de vinculación del operador. Un campo opcional platform en una venta manual conserva su fuente para el filtrado, mientras que source: "Host confirmed" identifica el método de confirmación. amount es el total de la entrada, incluido su quantity. El campo del adaptador de pedidos pagados de eBay meta.ebayPurchase.quantity se conserva.
salesSettings.auctionSource activa la ayuda de artículos de Whatnot o eBay Live. El campo de la respuesta de control commerce.auction contiene solo source, title, priceText, status y at del último evento capturado auction_update, o null. Caduca a los cinco minutos y se borra al cambiar de fuente, recibir una instantánea inactiva o reiniciar. La ayuda es solo para operadores: no se guarda ni se incluye en emisiones al público; se descarta la identidad del pujador/ganador. Los scripts de fuentes y los datos de eventos de subasta no cambian. Copiar un borrador no confirma el pago ni crea una venta.