Tipos de fuentes

Usa el nombre exacto de la fuente de los datos para los filtros de entrada y comprende la familia de destinos antes de enviar el chat de vuelta.

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 youtube envía solo a ventanas normales de chat en directo de YouTube.
  • Destino youtubeshorts enví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.

Editor Event Flow de Social Stream Ninja con nodos de disparadores, filtros y acciones conectados
From Source lee el tipo de los datos entrantes; Relay Chat selecciona las ventanas de fuentes de salida.

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. Usa sourceName para la etiqueta de sala o canal visible para las personas.
  • Si aún no existe una identidad estable, generic es más seguro que cambiar el tipo en cada mensaje. Las integraciones externas suelen usar un valor elegido expresamente, como external.

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 youtubeshorts carga sources/youtube.js, que emite youtube o youtubeshorts desde el contexto de la página.
  • Los destinos de Bilibili también se corresponden con scripts compartidos o regionales mientras emiten bilibili.
  • sources/inject/*.js son 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.
Entradas de fuentes de la aplicación de escritorio de Social Stream Ninja con modos de conexión
Cada fuente de escritorio conserva su propio destino, URL, modo de conexión y script de captura.

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 getSource indica 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

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.