Tipos de fontes

Use o nome exato de origem do payload nos filtros de entrada e entenda a família de destino antes de enviar mensagens de volta.

O que é um type?

type é o identificador canônico da fonte em um payload recebido do Social Stream. Sobreposições, filtros de URL, APIs e Event Flow o usam para distinguir plataformas e variantes de fontes.

{
  "type": "youtubeshorts",
  "chatname": "Ava",
  "chatmessage": "Hello from Shorts"
}
Nome Significado Não confunda com
type A fonte do payload recebido, como youtube ou instagramlive. Um rótulo de exibição, modo de conexão ou nome de evento.
event O que aconteceu, como superchat, gift, ou viewer_update. A plataforma que o produziu.
sourceName Um nome opcional de exibição de canal, sala ou fonte. O valor estável usado por um gatilho Da origem.
tid O ID da aba ou janela de fonte do desktop de origem, usado para responder e excluir a origem. Um tipo de plataforma.
Aplicativo de desktop target A categoria salva usada para escolher URL, modo e script de captura. Uma garantia de que todo payload emitido tenha a mesma string.

Importante: O gatilho Da origem (From Source) compara seu valor configurado diretamente com message.type. Use o valor exato em letras minúsculas do payload.

Tipos comuns e confusos

Nome de captura ou da interface Tipo do payload Por que pode surpreender
Chat ao vivo do YouTube youtube DOM, consulta periódica de API e WebSocket/streaming descrevem o transporte, não tipos separados.
Chat ao vivo do YouTube Shorts youtubeshorts Ele é distinto nos filtros de entrada e destinos de repasse do Event Flow, enquanto os controles compartilhados do YouTube ainda tratam ambas as variantes como uma família quando necessário.
Instagram Live / InstaFeed ao vivo instagramlive Comentários de publicações e feeds do Instagram usam instagram.
TikFinity tiktok TikFinity é o conector; a plataforma normalizada continua sendo TikTok.
X x, ou o antigo twitter com a opção de identidade visual do Twitter Filtros existentes podem preservar intencionalmente o nome antigo.
Opções regionais do Bilibili bilibili Destinos e scripts do desktop podem usar bilibilicom ou bilibilitv, enquanto os payloads são normalizados.
Eventos de sistema do OBS obs Não são fontes de chat, mas podem entrar no Event Flow com eventos como scene_changed.

Use: Referência de eventos para o contrato dos campos e Sites compatíveis para nomes públicos de configuração das plataformas.

YouTube Shorts e Event Flow

A correspondência de entrada é exata: use youtubeshorts em um gatilho Da origem para mensagens de Shorts, e youtube para o chat ao vivo normal do YouTube.

A correspondência de saída também é exata: Repassar chat os trata como destinos separados.

  • Destino youtube envia somente às janelas normais de chat ao vivo do YouTube.
  • Destino youtubeshorts envia somente às janelas de chat ao vivo do YouTube Shorts.
  • Para atingir ambos, adicione uma ação para cada destino ou repasse a todas as plataformas excluindo a origem.

Outros controles gerais do YouTube podem tratar intencionalmente os dois tipos como uma família de plataforma. Isso não muda a correspondência exata do Event Flow acima.

Solução de problemas em versões antigas

Versões antigas agrupavam os dois destinos de repasse, então duas ações podiam enviar duas vezes a cada janela do YouTube. Atualize o Social Stream Ninja se isso acontecer. Um Filtro de ecos evita ciclos de repasse, mas não corrige a sobreposição da correspondência de destinos nessas versões antigas.

Editor do Event Flow do Social Stream Ninja com nós conectados de gatilho, filtro e ação
Da origem lê o tipo do payload recebido; Repassar chat seleciona janelas de fontes de saída.

Continue com o Guia do Event Flow ou Guia de configuração do YouTube.

Instagram Live versus comentários do Instagram

Use instagramlive para chat de salas ao vivo capturado pela fonte Instagram Live ou InstaFeed ao vivo. Use instagram para comentários de feed, publicações ou comentários estáticos fora de lives.

  • Fluxo de chat ao vivo: Da origem = instagramlive.
  • Fluxo de publicação/comentário: Da origem = instagram.
  • Ambos: use dois gatilhos que alimentam uma ação compartilhada, ou um gatilho Qualquer origem seguido de um filtro que considere o tipo.

A marca visível Instagram não basta para escolher o tipo; o contexto do conteúdo separa os dois.

Fontes genéricas, personalizadas e sem nome

sources/generic.js é uma alternativa genérica de captura DOM. Procura linhas comuns de chat, nomes, mensagens, avatares e campos de entrada. Começa com generic, depois normalmente deriva um tipo em letras minúsculas a partir de uma plataforma conhecida ou do nome de host da página.

  • Use para comprovar que um chat DOM comum pode ser capturado antes de escrever uma fonte dedicada.
  • Não espere suporte confiável a eventos, moderação, exclusão, listas virtualizadas ou shadow DOM fechado.
  • Um tipo derivado do nome de host é conveniente, mas não é um contrato público permanente. Confirme o payload emitido antes de criar filtros com base nele.
  • Se uma fonte não tiver um nome de plataforma estabelecido, escolha um type. Use sourceName para o rótulo de sala ou canal exibido às pessoas.
  • Se ainda não existir uma identidade estável, generic estável em letras minúsculas, o que é mais seguro do que alterar o tipo a cada mensagem. Integrações externas costumam usar um valor intencional, como external.

Assim que usuários, sobreposições ou fluxos dependerem de um novo tipo, documente-o na Referência de eventos em vez de renomeá-lo silenciosamente.

Injeção de scripts no aplicativo para desktop

O aplicativo para desktop salva um target, escolhe um ou mais sourceFile/sourceFiles, abre uma janela de fonte e injeta scripts de captura compartilhados deste projeto. Uma ponte de compatibilidade com o runtime do Chrome transporta mensagens capturadas e comandos de resposta entre a página e o aplicativo.

  • O destino e o nome do arquivo do script não precisam corresponder ao tipo do payload. A resposta youtubeshorts carrega sources/youtube.js, que emite youtube ou youtubeshorts do contexto da página.
  • Destinos do Bilibili também são mapeados para scripts compartilhados/regionais, emitindo bilibili.
  • sources/inject/*.js são auxiliares no contexto da página para sockets ou variáveis da página. O wrapper da fonte continua responsável pelo payload canônico.
  • Quando vários scripts forem injetados, evite que todos os auxiliares declarem o mesmo destino de saída. A identidade de captura e a capacidade de resposta são questões separadas.
  • As alterações de captura de fontes devem ser feitas nos arquivos sources/ deste repositório. O aplicativo para desktop os utiliza; a cópia alternativa empacotada não é a referência.
Entradas de fontes do aplicativo Social Stream Ninja para desktop mostrando os modos de conexão
Cada fonte do desktop mantém seu próprio destino, URL, modo de conexão e script de captura.

Os mantenedores podem rastrear a configuração na criação de index.html janelas de fontes do aplicativo para desktop, depois main.js e preload.js para injeção e ponte.

Responder e repassar para fontes

A identidade de entrada e a capacidade de saída estão relacionadas, mas não são o mesmo contrato.

Ação Como a escolha é feita Falha comum
Responder à origem Usa tid para endereçar a aba/janela exata de origem. Não tid, ou esse modo de captura não pode enviar mensagens de chat.
Repassar para uma plataforma Pergunta às fontes abertas se elas oferecem suporte a esse destino de saída. A variante selecionada não tem uma janela de fonte aberta correspondente ou a fonte não pode enviar chat.
Repassar para todos, exceto a origem Transmite para fontes que podem receber o encaminhamento e exclui a origem tid. Uma fonte não aceita entrada automatizada ou um eco é capturado novamente.
  • A resposta getSource é um sinal de capacidade de encaminhamento de saída. Controles compartilhados do YouTube podem agrupar as duas variantes, enquanto Repassar chat adiciona o contexto exato da URL do Shorts à correspondência de destinos.
  • A captura genérica pode encontrar e focar campos de entrada prováveis, mas isso não garante que o site aceite um envio automatizado.
  • Os modos API/WebSocket podem enviar pelas APIs das plataformas em vez de digitar na página visível.
  • No aplicativo para desktop, Bot somente para respostas (sem captura) mantém uma fonte disponível para respostas/status, suprimindo suas mensagens capturadas normais.
  • Teste o suporte a respostas com uma janela de fonte antes de criar um repasse multiplataforma.

Onde encontrar detalhes exatos

Ao investigar problemas, inspecione um payload bruto e registre seu type, event, sourceName, e tid. Isso geralmente separa correspondência de entrada, encaminhamento de saída e duplicação de captura.