En esta página
Qué es un type?
type es el identificador canónico de la fuente en los datos entrantes de Social Stream. Los overlays, filtros de URL, API y Event Flow lo usan para distinguir plataformas y variantes de fuentes.
{
"type": "youtubeshorts",
"chatname": "Ava",
"chatmessage": "Hello from Shorts"
}
| Nombre | Significado | No lo confundas con |
|---|---|---|
type |
La fuente de los datos entrantes, como youtube o instagramlive. |
Una etiqueta visible, un modo de conexión o un nombre de evento. |
event |
Lo que ocurrió, como superchat, gift, o viewer_update. |
La plataforma que lo produjo. |
sourceName |
Un nombre visible opcional de canal, sala o fuente. | El valor estable que usa un disparador From Source. |
tid |
El ID de la pestaña o ventana de fuente de escritorio de origen, usado para responder y excluir la fuente. | Un tipo de plataforma. |
Aplicación de escritorio target |
La categoría guardada que se usa para elegir una URL, un modo y un script de captura. | Una garantía de que todos los datos emitidos tengan la misma cadena. |
Importante: El disparador Desde fuente (From Source) de Event Flow compara su valor configurado directamente con message.type. Usa el valor exacto en minúsculas de los datos recibidos.
Tipos habituales y confusos
| Nombre de captura o de interfaz | Tipo en los datos | Por qué puede resultar confuso |
|---|---|---|
| Chat en directo de YouTube | youtube |
DOM, sondeo de API y WebSocket/streaming describen el transporte, no tipos separados. |
| Chat en directo de YouTube Shorts | youtubeshorts |
Es distinto para los filtros de entrada y los destinos de reenvío de Event Flow, aunque los controles compartidos de YouTube siguen tratando ambas variantes como una familia cuando hace falta. |
| Instagram Live / InstaFeed live | instagramlive |
Los comentarios de publicaciones y del feed de Instagram usan instagram. |
| TikFinity | tiktok |
TikFinity es el conector; la plataforma normalizada sigue siendo TikTok. |
| X | x, o el antiguo twitter con la opción de marca de Twitter |
Los filtros existentes pueden conservar intencionadamente el nombre anterior. |
| Opciones regionales de Bilibili | bilibili |
Los destinos y scripts de escritorio pueden decir bilibilicom o bilibilitv, mientras que los datos se normalizan. |
| Eventos del sistema de OBS | obs |
No son fuentes de chat, pero pueden entrar en Event Flow con eventos como scene_changed. |
Usa: Referencia de eventos para el contrato de campos y Sitios compatibles para los nombres públicos de configuración de plataformas.
YouTube Shorts y Event Flow
La coincidencia de entrada es exacta: utiliza youtubeshorts en un disparador From Source para mensajes de Shorts, y youtube para el chat en directo normal de YouTube.
La coincidencia de salida también es exacta: Relay Chat los trata como destinos separados.
- Destino
youtubeenvía solo a ventanas normales de chat en directo de YouTube. - Destino
youtubeshortsenvía solo a ventanas de chat en directo de YouTube Shorts. - Para llegar a ambos, añade una acción por cada destino o reenvía a todas las plataformas excepto a la fuente.
Otros controles generales de YouTube pueden tratar intencionadamente ambos tipos como una familia de plataformas. Esto no cambia la coincidencia exacta de Event Flow descrita arriba.
Resolver problemas de versiones anteriores
Las versiones anteriores agrupaban ambos destinos de reenvío, por lo que dos acciones podían enviar dos veces a cada ventana de YouTube. Actualiza Social Stream Ninja si ocurre. Un filtro de reflejos evita los bucles de reenvío, pero no corrige las coincidencias superpuestas de destinos en esas versiones anteriores.
Continúa con la Guía de Event Flow o Guía de configuración de YouTube.
Instagram Live frente a comentarios de Instagram
Usa instagramlive para el chat de una sala en directo capturado por la fuente Instagram Live o InstaFeed live. Usa instagram para comentarios del feed, publicaciones o comentarios estáticos que no sean en directo.
- Flujo del chat en directo: Desde la fuente (From Source) =
instagramlive. - Flujo de publicaciones/comentarios: Desde la fuente (From Source) =
instagram. - Ambos: usa dos disparadores que alimenten una acción compartida, o un disparador Any Source seguido de un filtro que tenga en cuenta el tipo.
La marca visible de Instagram no basta para elegir el tipo; el contexto del contenido distingue los dos.
Fuentes genéricas, personalizadas y sin nombre
sources/generic.js es una alternativa general de captura DOM. Busca filas de chat, nombres, mensajes, avatares y entradas habituales. Empieza con generic, y después suele derivar un tipo en minúsculas de una plataforma conocida o del nombre de host de la página.
- Úsalo para demostrar que se puede capturar un chat DOM normal antes de escribir una fuente específica.
- No esperes compatibilidad fiable con eventos, moderación, eliminaciones, listas virtualizadas ni shadow DOM cerrado.
- Un tipo derivado del nombre de host es práctico, pero no es un contrato público permanente. Confirma los datos emitidos antes de crear filtros basados en él.
- Si una fuente no tiene un nombre de plataforma establecido, elige un valor estable en minúsculas para
type. UsasourceNamepara la etiqueta de sala o canal visible para las personas. - Si aún no existe una identidad estable,
generices más seguro que cambiar el tipo en cada mensaje. Las integraciones externas suelen usar un valor elegido expresamente, comoexternal.
Cuando los usuarios, overlays o flujos dependan de un tipo nuevo, documéntalo en la Referencia de eventos en lugar de cambiarle el nombre sin avisar.
Inyección de scripts en la aplicación de escritorio
La aplicación de escritorio guarda un target, elige uno o varios sourceFile/sourceFiles, abre una ventana de fuente e inyecta scripts de captura compartidos de este proyecto. Un puente de compatibilidad con Chrome runtime transporta los mensajes capturados y los comandos de respuesta entre la página y la aplicación.
- Un destino y un nombre de archivo de script no tienen por qué coincidir con el tipo de los datos. El destino
youtubeshortscargasources/youtube.js, que emiteyoutubeoyoutubeshortsdesde el contexto de la página. - Los destinos de Bilibili también se corresponden con scripts compartidos o regionales mientras emiten
bilibili. sources/inject/*.jsson utilidades que se ejecutan en el contexto de la página para sockets o variables de la página. El script contenedor de la fuente sigue siendo responsable de los datos canónicos.- Cuando se inyecten varios scripts, evita que cada utilidad declare el mismo destino de salida. La identidad de captura y la capacidad de respuesta son cuestiones separadas.
- Los cambios de captura de fuentes corresponden a los archivos
sources/de este repositorio. La aplicación de escritorio los utiliza; su copia alternativa empaquetada no es la fuente de referencia.
Los mantenedores pueden seguir la configuración en index.html de creación de ventanas de fuentes de la aplicación de escritorio y después en main.js y preload.js para la inyección y el puente.
Responder y reenviar a fuentes
La identidad de entrada y la capacidad de salida están relacionadas, pero no son el mismo contrato.
| Acción | Cómo elige | Fallo habitual |
|---|---|---|
| Responder a la fuente | Usa tid para dirigirse a la pestaña o ventana exacta de origen. |
No tid, o ese modo de captura no puede enviar mensajes al chat. |
| Reenviar a una plataforma | Pregunta a las fuentes abiertas si admiten ese destino de salida. | La variante seleccionada no tiene una ventana de fuente abierta coincidente, o la fuente no puede enviar mensajes al chat. |
| Reenviar a todas excepto la fuente | Envía a las fuentes que admiten enrutamiento y excluye el tid. |
Una fuente no acepta entradas automáticas, o se vuelve a capturar un mensaje reflejado. |
- El valor
getSourceindica si se puede enrutar la salida. Los controles compartidos de YouTube pueden agrupar ambas variantes, mientras Relay Chat añade el contexto exacto de la URL de Shorts para determinar el destino. - La captura genérica puede encontrar y enfocar campos de entrada probables, pero eso no garantiza que el sitio acepte un envío automático.
- Los modos API/WebSocket pueden enviar mediante las API de la plataforma en lugar de escribir en la página visible.
- En la aplicación de escritorio, Bot solo para respuestas, sin captura (Bot reply-only (no capture)) mantiene una fuente disponible para respuestas y estado mientras suprime sus mensajes capturados normales.
- Prueba la compatibilidad con respuestas usando una ventana de fuente antes de crear un reenvío multiplataforma.
Dónde encontrar los detalles exactos
- Referencia de eventos: campos canónicos y nombres de eventos de las plataformas.
- Guía de Event Flow: disparadores, acciones, plantillas, gestión de reflejos y pruebas.
- Modos de la aplicación independiente: comportamiento de las ventanas de fuentes y los modos de conexión.
- Sitios compatibles: nombres de plataformas y requisitos de configuración.
- Fuentes genéricas y personalizadas: captura alternativa y externa.
- Ventanas de fuentes de la aplicación de escritorio: detalles internos de destino, script, puente y modo solo respuestas.
- Añadir una fuente: contratos de fuentes, utilidades de inyección, manifiestos y documentación.
Al depurar, inspecciona un conjunto de datos sin procesar y anota su type, event, sourceName, y tid. Así normalmente se distinguen las coincidencias de entrada, el enrutamiento de salida y la duplicación de captura.