Referência de eventos ao vivo
Esta página documenta os payloads canônicos de eventos emitidos pelo Social Stream Ninja para as principais plataformas. Use como referência compartilhada ao conectar novas fontes, resolver problemas de integrações ou alinhar rótulos da interface. Para uma matriz menor voltada a consumidores, veja Compatibilidade de eventos e alertas.
Nesta página
Vá para as regras de campos compartilhados, a implementação de uma plataforma ou as notas de compatibilidade perto do final.
Importante: A disponibilidade de eventos depende da fonte, das permissões e das configurações de captura. Para ocultar linhas marcadas como evento no dock ou nas sobreposições de destaque, adicione &hideevents ou &hideallevents. Para ocultar eventos selecionados, use &filterevents=subscription_gift,new_follower,gifted. Esses filtros também podem ocultar linhas pagas que contêm um event; linhas comuns de doação sem marcador de evento não correspondem a filtros de eventos. Outros filtros de mensagem continuam valendo.
Escolha o método de captura: Para YouTube, Twitch e Kick, Modo WebSocket geralmente oferece cobertura de eventos mais ampla. A captura DOM Standard lê as linhas e os cartões realmente renderizados na página. Super Chats, Super Stickers e presentes de Joias do YouTube têm caminhos de captura nos dois modos; outros eventos de presentes, gorjetas e membros variam conforme a fonte. Veja as tabelas de plataformas para os caminhos suportados e configurações necessárias.
Formato do payload: Linhas de chat no estilo doação devem usar hasDonation e opcional donoValue. Não defina event: "donation" apenas porque uma linha normal de chat/gorjeta tem valor; use nomes específicos de evento somente para ações reais da plataforma ou tipos de itens pagos, como superchat, supersticker, gift, ou jeweldonation. Use meta somente para dados estruturados adicionais que os consumidores realmente precisam e que os campos existentes ainda não cobrem.
Disponibilidade rápida de recursos
Use esta tabela para ver quais tipos de alerta cada método de captura fornece atualmente. Notas detalhadas de payload aparecem abaixo.
A Caixa de alertas Multi-Stream dedicada agrupa eventos ao vivo em seis categorias principais: Follow, Subscription/Member, Donation, Bits/Cheers, Raid/Host, e Purchase, além de duas categorias opcionais (Auction e Hype Train) ativadas por parâmetros de URL. Deriva essas categorias dos campos existentes event, membership, subtitle, hasDonation, e meta documentados aqui; não é necessário um formato separado de payload.
| Fonte |
Novos inscritos / membros |
Novos seguidores |
Doações |
Contagens e extras |
| YouTube (ponte Data API) |
Entradas de membros, renovações, presentes |
Alertas individuais de inscritos* + totais |
Super Chats e Super Stickers |
Totais de espectadores, inscritos e visualizações (consulta periódica) |
| Twitch – Captura DOM |
Linhas de pacotes de presentes e avisos de destinatários |
- |
Bits identificados por hasDonation |
Contagem de espectadores, cartões de recompensas e cartões de destaques da comunidade |
| Twitch – EventSub/WebSocket |
Inscrições, renovações e presentes instantâneos |
Novos seguidores instantâneos + total de seguidores |
Cheers, Power-ups e resgates de Pontos do Canal |
Totais de espectadores/inscritos/seguidores, status da transmissão, avisos de anúncios |
| TikTok Live |
- |
Cartões de seguidores (quando o TikTok os mostra) |
Presentes convertidos em totais de moedas |
Contagem de espectadores, alertas de entrada e tempestades de curtidas |
| YouNow |
- |
Atividades de fãs e do público |
- |
Contagem de espectadores do painel de público ao vivo |
| Favorited Studio |
- |
- |
- |
Contagem de espectadores da aba de espectadores ao vivo |
| Whatnot |
- |
- |
- |
Contagem de espectadores, alertas de entrada, metadados de leilão ao vivo, produtos e retratos de sorteios |
| eBay Live |
- |
- |
- |
Contagem de espectadores, contagem de seguidores, retratos de cartões de eventos ao vivo, metadados do rodapé do leilão (quando disponibilizados), corações de reação e metadados de eventos futuros |
| Caixa de alertas do Streamlabs |
Inscrições, presentes, patrocinadores, seguidores |
Cheer/bits, doações (com moeda) |
Cheer/bits, doações (hasDonation) |
Enquanto uma caixa de alertas está aberta; também disponível por sources/websocket/streamlabs.html token de socket |
| OBS Flow Actions |
- |
- |
- |
Eventos de saída, cena, buffer de replay e fim de mídia do OBS para o Event Flow quando actions.html está conectado ao OBS WebSocket |
| Kick – DOM |
- |
- |
- |
Contagem de espectadores e avisos básicos de sistema de recompensas/presentes; use a ponte Kick para alertas mais completos |
| Kick – WebSocket/Ponte |
Novas inscrições, renovações e presentes |
Alertas de seguidores + total de seguidores |
Eventos de apoio/gorjeta (valor + moeda) |
Status da transmissão, resgates de recompensas e metadados de perfil |
| Facebook Live |
- |
- |
Estrelas quando visíveis no DOM |
Linhas de chat, Estrelas e consultas de contagem de espectadores |
| Rumble – Captura DOM |
- |
- |
Preços visíveis de Rant |
Chat, raids recebidas e consultas de contagem de espectadores |
| Rumble – WebSocket/URL da API |
Novas inscrições e inscrições presenteadas |
Alertas de seguidores + total de seguidores |
Rants/gorjetas (valor + moeda) |
Totais de espectadores, totais de inscritos, status ao vivo e feed de chat |
| Streamplace |
- |
- |
- |
Contagem de espectadores e nomes, cores, distintivos, respostas e links do chat |
| WorldsWave |
- |
- |
Rótulos de doação quando presentes |
Chat ao vivo renderizado e atualizações opcionais da contagem de espectadores |
| CHZZK |
- |
- |
Linhas visíveis de doação de queijo |
Linhas de chat, imagens de distintivos, emotes e consultas de contagem de espectadores |
| BEAM |
- |
- |
- |
Linhas de chat e consultas de contagem de espectadores quando a página somente de chat disponibiliza um contador |
| Seal Team Sloth |
- |
- |
- |
Linhas renderizadas de chat em janela separada e viewer_update consulta quando contagens de espectadores estão ativadas |
| Castyr |
- |
- |
- |
Linhas renderizadas de chat em janela separada e atualizações opcionais da contagem de espectadores |
| RPLAY |
- |
- |
- |
Com login /live/chat/box/ janela separada: type: "rplay" chat, avatares, imagens de distintivos de nível e emotes. Gorjetas em moedas mantêm seu valor/unidade em hasDonation para conversão compartilhada em USD, sem evento de doação. O recurso opcional viewer_update consultas usam inteiro meta do endpoint público de transmissão do RPLAY. Linhas repassadas do Twitch são excluídas. |
| FLEX TV |
- |
- |
- |
Linhas renderizadas de chat com nomes, cores dos autores, imagens de distintivos e metadados de membros |
*Alertas de inscritos do YouTube são consultados periodicamente e podem atrasar ou estar incompletos. A referência da API não promete uma janela fixa de entrega de quatro horas. Veja a limites oficiais da API de inscrições.
Visão geral dos campos
data aqui significa o objeto de mensagem, não um wrapper extra para adicionar. Linhas de chat e eventos apenas de metadados têm formatos diferentes: contadores e retratos de status podem omitir chatname/chatmessage. Nas tabelas de plataformas, mensagem descreve uma linha comum de chat, não um literal event: "message".
| Campo |
Formato |
Uso |
data.type |
string |
Identificador de fonte usado por sobreposições, filtros e Event Flow. O Instagram mantém o chat ao vivo como instagramlive e comentários fora de lives como instagram. Veja o Guia de tipos de fontes para variantes, fontes genéricas e encaminhamento de saída. |
data.chatname |
string |
Nome de exibição fornecido pela fonte, usado no processamento de mensagens e nas saídas que não são sobreposições. Um alias configurado de nome de usuário só pode substituir este valor em cópias de payloads de transporte do dock e sobreposições. |
data.username |
string |
Nome de usuário da fonte, quando disponível. Um payload do dock ou sobreposição com alias pode adicionar este campo para preservar o original chatname para ações de usuário; a mensagem canônica permanece inalterada. |
data.userid |
string |
Identificador de usuário específico da plataforma. Ações de usuário preferem este valor a username e chatname. |
data.platform | string (opcional) | Algumas integrações incluem isso junto com type. Muitos adaptadores de fontes o omitem; use type para encaminhamento por fonte. |
data.id | string | número (opcional) | Identificador de mensagem ou evento. O significado depende da fonte e do transporte; não presuma que seja sempre um ID nativo da plataforma para moderação. Use meta.messageId quando o adaptador o disponibiliza para sincronização de exclusão. |
data.donoValue | número (opcional) | Equivalente numérico em USD fornecido pela fonte, incluindo estimativas. Um valor válido (incluindo zero) substitui a conversão de currency.js. Sem ele, consumidores estimam USD a partir de hasDonation e do contexto da fonte. Valores e unidades originais permanecem em hasDonation e nos metadados existentes do provedor. |
data.chatbadges | array | string (opcional) | URLs de imagens ou objetos de distintivos (type: "img" com src, type: "svg" com html, ou type: "text" com text). O relay retém o rótulo literal de um distintivo de texto no campo opcional rawText e produz valores escapados em text para sobreposições antigas. Em repasses posteriores, regenere text de rawText; não escape text novamente. Os renderizadores atuais exibem rawText literalmente quando presente e mantenha o tratamento legado de texto codificado caso contrário. Este é um campo de representação, não permissão para renderizar HTML. Fontes antigas podem enviar uma única string HTML em vez de um array. Sobreposições que renderizam distintivos aceitam ambos os formatos e higienizam localmente o HTML e as URLs dos distintivos, inclusive quando o remetente é uma extensão antiga. Distintivos inválidos não devem impedir a exibição da mensagem de chat ou de membro. |
data.event |
string | booleano |
Identificador de atividade do sistema (por exemplo viewer_update, subscription_gift, giftpurchase). Chats normais devem deixar isso vazio/false para que as sobreposições distingam avisos de sistema de texto de conversa. |
data.chatmessage |
string |
Corpo da mensagem. Pode conter HTML higienizado/renderizável somente quando data.textonly é false. |
data.textonly |
booleano |
Aplica-se somente a data.chatmessage. true significa renderizar chatmessage como texto simples, preservando tags literais e textos que parecem entidades; não decodifique, higienize como HTML nem adicione tags de formatação a esse corpo. Aplique o estilo de evento ao elemento exibido. false significa chatmessage pode conter HTML higienizado/renderizável; mensagens antigas sem o indicador mantêm esse comportamento de HTML. Outros campos normais são texto simples, exceto campos de mídia, como chatimg e contentimg. Exiba campos simples com textContent, ou escape-os uma única vez ao montar um modelo HTML; não remova nem decodifique seu conteúdo repetidamente. |
data.contentimg |
string (opcional) |
Imagem de conteúdo ou URL de mídia compatível. Na extensão e no aplicativo para desktop, a opção allowExternalGifs preenche um campo vazio com o primeiro link HTTP(S) direto de GIF no texto da mensagem ou em um link HTML. O caminho da URL precisa terminar em .gif (sem diferenciar maiúsculas/minúsculas); parâmetros de consulta e fragmentos são preservados. Não exige chave de API, preserva chatmessage e anexos existentes, e respeita removeContentImage. O campo opcional hideExternalGifUrl adiciona meta.hideExternalGifUrl: true; o dock e a sobreposição de destaque ocultam o link correspondente do GIF apenas depois que sua imagem carrega, preservando o texto ao redor e o payload original. Imagens que falham ou excedem o tempo recolhem seu contêiner de anexo e deixam o link visível. A sobreposição somente de GIF tenta exibir a imagem diretamente se a obtenção dos bytes falhar, usando o tempo de exibição configurado quando o tempo da animação não estiver disponível; carregamentos com falha ou travados avançam a fila. Isso não adiciona um event ou altere a fonte type. Imagens externas não passam por filtragem de conteúdo e podem não carregar se o servidor bloquear a incorporação. |
data.membership |
string |
Estado legível de membro, como MEMBERSHIP, new_sponsor, gift_recipient. As interfaces o usam para distintivos, filtros e anúncios. |
data.subtitle |
string |
Descrição complementar (tempo como membro, upgrades de nível, presenteado por…). Mantenha curta e somente texto para que as sobreposições possam colocá-la abaixo do nome de exibição. |
data.hasDonation |
string |
Valor monetário ou de presente virtual ($5.00, 500 bits, 300 coins). Preencha mesmo quando data.event fica vazio para que sobreposições de doação possam detectá-lo. |
data.meta |
número | objeto | string (legado) |
Use inteiros simples para contadores únicos (espectadores, seguidores, inscritos) e objetos para contexto mais rico. Alguns eventos antigos, como o Twitch DOM community_highlight, contêm uma string. Confira o formato específico do evento antes de ler propriedades de objetos; novos detalhes estruturados devem ficar em um objeto. |
data.firsttime |
booleano |
Defina como true quando a detecção de primeira mensagem e o banco de dados local estão ativados e esta é a primeira mensagem de chat armazenada para esse usuário/fonte. O dock usa isso para destaque de primeira mensagem e filtros de bipe de primeira mensagem; a configuração opcional de distintivo de primeira mensagem adiciona um distintivo de folha no início de chatbadges. |
data.lastactivity |
número |
Horário Unix em segundos da atividade anterior armazenada desse usuário no chat, quando a detecção de primeira mensagem e o banco de dados local estão ativados. Omitido para usuários totalmente novos. |
Cobertura de plataformas
YouTube – Captura DOM Standard
Implementação: sources/youtube.js
- Mantenha a aba do chat ao vivo aberta. A captura lê os cartões de membros e presentes renderizados nessa sessão; não exige que o espectador seja dono do canal ou moderador. O acesso da conta e a visualização de chat selecionada podem afetar quais linhas ficam visíveis.
- Abrir a sobreposição de contagem de espectadores e atividade do chat com os espectadores exibidos solicita automaticamente as contagens de espectadores. As opções Mostrar contagem de espectadores e Acompanhar participantes ativos do chat também ativam a coleta de dados.
- Para alertas de seguidores e eventos adicionais, ative o modo WebSocket nas configurações da extensão.
| Evento |
Quando é disparado |
Notas do payload |
sponsorship |
Cabeçalho de boas-vindas a membro sem texto explícito de chat (novos membros, chegada de pacotes presenteados), incluindo cartões estruturados de boas-vindas ou texto localizado “Bem-vindo a…”. |
membership preenchido com “MEMBERSHIP” traduzido; subtitle contém sequência/nível quando detectado; nameColor usa verde de membro quando permitido. |
giftpurchase |
Banner de compra de pacote de presentes (ytd-sponsorships-live-chat-gift-purchase). |
membership torna-se gift_giver; subtitle contém a quantidade de presentes quando conhecida; sem hasDonation ou donoValue. |
giftredemption |
Anúncio de resgate de presente para destinatários. |
membership torna-se “MEMBERSHIP”; subtitle inclui “Presenteado por …”. |
resub |
Banners de upgrade que incluem “mudou para …”. |
subtitle captura o novo rótulo de nível; membership continua como “MEMBERSHIP”. |
superchat, supersticker, jeweldonation |
Super Chats, Super Stickers, cartões de anúncio de doações e Presentes do YouTube com Joias (yt-gift-message-view-model). |
hasDonation contém o valor; event identifica o tipo de item pago do YouTube. Presentes do YouTube usam N Jewels quando presente, ou 1 YouTube Gift quando o YouTube oculta a contagem. Imagens de presentes usam contentimg, rótulos de presentes usam subtitle, e detalhes mínimos do presente são espelhados em meta.youtubeGift. |
jeweldonation efeito de presente |
O YouTube exibe um presente animado de Joia sobre o chat ao vivo (ytls-gift-overlay-item-view-model). |
Enviado diretamente ao destino dedicado de GIF/mídia para que a animação seja reproduzida sem duplicar a linha normal do presente. contentimg contém o recurso animado e meta.youtubeGift.animationUrl/animationDescription preservam os detalhes do efeito. |
reaction |
Uma reação de espectador aparece na fonte de emojis ao vivo do YouTube. |
Enviado diretamente ao destino dedicado de reações. O emoji anônimo e a URL da imagem são preservados em chatmessage/contentimg e em meta.reactionType/reactionImage. Variantes ao vivo conhecidas incluem ❤, 😄, 🎉, 😳 e 💯. |
thankyou |
Mensagem alternativa quando existe um valor de doação, mas nenhum texto de chat foi fornecido. |
Mantém hasDonation e insere automaticamente “Obrigado pela sua doação!” para as sobreposições. |
redirect |
Um banner de redirecionamento do YouTube aparece no chat ao vivo (o equivalente mais próximo a um aviso de raid). |
Captura somente DOM de yt-live-chat-banner-redirect-renderer. Define event como redirect e usa membership como rótulo para que as sobreposições o renderizem como outros avisos de sistema. |
viewer_update |
Consulta a cada 30s ao endpoint de espectadores do Social Stream (recorre à captura da página em erros de cota). |
meta é a contagem inteira de espectadores ao vivo; contribui para o agregado viewer_updates no script de segundo plano. |
Blocos de membros também definem membership para chat de moderadores/membros, enquanto subtitle contém contagens de meses ou nomes de níveis. sourceName/sourceImg são preenchidos quando getChannelInfo é bem-sucedido. O chat DOM Standard agora inclui meta.messageId quando o YouTube disponibiliza um ID nativo de mensagem de chat ao vivo, usado pelo dock para sincronização de exclusão.
YouTube – Captura WebSocket/Data API
Implementação: sources/websocket/youtube.html, auxiliares compartilhados em shared/
- Usa por padrão os escopos OAuth
youtube.readonly e youtube.channel-memberships.creator. Acesso opcional de escrita adiciona youtube.force-ssl para envio de chat, moderação, banimentos e edição de detalhes da transmissão; o Google pode apresentar isso como permissão ampla de gerenciamento do YouTube porque o YouTube não fornece um escopo de escrita exclusivo de chat.
- Estatísticas do canal respeitam as opções de cada configuração (
showsubscount, showviewercount).
- A API não consegue fornecer imagens de distintivos personalizados; as alternativas usam os ícones de emoji indicados abaixo.
- Quando a API informa explicitamente
authorDetails.isChatModerator: true, payloads de chat, Super Chat, Super Sticker, Presente do YouTube e presente de membros incluem mod: true. O status de moderador não é inferido nem armazenado em cache entre eventos.
- Alertas de novos inscritos usam o
myRecentSubscribers API (consultada a cada 5 minutos). Nota: os resultados podem atrasar ou estar incompletos; apenas inscrições publicamente visíveis podem ser identificadas.
- Banners de redirecionamento do YouTube não são disponibilizados pela Data API, portanto
redirect continua disponível apenas pela captura DOM Standard.
| Evento |
Quando é disparado |
Notas do payload |
superchat |
Entradas de Super Chat do histórico da Data API ou de consultas periódicas da transmissão. |
hasDonation preserva o valor do site (moeda + valor); event é superchat. Versões antigas de WebSocket usavam event: "donation" para esta linha, então consumidores podem continuar aceitando isso como alias legado. |
supersticker |
Super Stickers (apenas texto alternativo da mensagem, sem imagem da API). |
hasDonation contém o valor; chatmessage contém o texto decodificado da descrição. |
jeweldonation |
YouTube giftEvent quando espectadores resgatam Joias por Presentes. |
hasDonation contém N Jewels, ou 1 YouTube Gift quando o YouTube oculta a contagem; contentimg usa a URL do recurso do presente quando disponibilizada; subtitle contém o rótulo do presente; meta.youtubeGift contém detalhes extras do presente. |
sponsorship |
Novo membro entra por newSponsorEvent. |
membership torna-se new_sponsor ou new_member; meta inclui originalEventType, durações e informações de nível. |
resub |
Renovações de membros ou upgrades de nível. |
membership torna-se renewed_member (renovações) ou upgraded_member (upgrades); subtitle mostra o nível. |
giftpurchase |
Pacotes de presentes comprados pela API. |
membership definido como gift_giver; subtitle lista contagem/nível; sem hasDonation ou donoValue. |
giftredemption |
Notificações de resgate de presentes. |
membership gift_recipient; os distintivos usam 🎁 por padrão; subtitle indica o nível presenteado. |
membermilestone |
Mensagens de marcos (memberMonth ou displayMessage presente). |
membership member_milestone; subtitle resume meses + nível; meta captura o mapeamento bruto do marco. |
viewer_update |
Estatísticas da transmissão (espectadores simultâneos) quando a comunicação de espectadores está ativada. |
meta é uma contagem inteira; espelha os scripts DOM para que consumidores possam combinar os dois fluxos. Um dock usando &showviewercount solicita coleta de contagem de espectadores por 70 minutos e renova a solicitação a cada hora sem alterar permanentemente a configuração global. |
likes_update |
Consulta oficial de estatísticas de vídeo quando Enviar totais de curtidas da plataforma está ativado. |
meta é a contagem inteira atual de curtidas do vídeo. É emitida quando a contagem muda e periodicamente enquanto permanece igual para manter os consumidores atualizados. A opção global captureliketotals ativa isso; o legado captureyoutubelikes continua como alias de compatibilidade. Ativar a opção por dock do popup &showlikecount também ativa persistentemente essas configurações globais de captura, enquanto adicionar o parâmetro manualmente à URL controla apenas a renderização. Desativar a opção de exibição não desativa a coleta global. |
subscriber_update |
Consulta de estatísticas do canal (inscritos) quando showsubscount não explicitamente desativado. |
meta é a contagem total de inscritos; a interface atualiza os contadores do painel. |
view_update |
Consulta de estatísticas do canal (visualizações totais) quando showviewercount ou modo Hype está ativo. |
meta é a contagem inteira de visualizações. |
live_chat_ended |
O chat ao vivo fica indisponível para a transmissão vinculada. |
meta.streamTitle preenchido quando os metadados da transmissão estavam em cache. |
user_banned |
userBannedEvent da API de chat ao vivo ou do fluxo gRPC. |
Evento apenas de metadados para widgets de moderação. meta inclui nome de usuário/exibição, ID do canal, URL de avatar/perfil, moderador, duração do banimento/suspensão temporária e permanência. |
new_follower |
Novo inscrito detectado por myRecentSubscribers API (consultada a cada 5 minutos). |
chatname é o nome do canal do inscrito; chatmessage fica vazio, a menos que mensagens de alerta de inscritos estejam ativadas na página da fonte do YouTube. meta inclui channelId, title, subscribedAt, e rajadas agrupadas adicionam grouped, count, others, e subscribers. Nota: os resultados podem atrasar ou estar incompletos; apenas inscrições publicamente visíveis podem ser identificadas. |
Repasses de chat pela API usam meta.plainText para a mensagem em texto simples junto com o conteúdo rico de chatmessage conteúdo. É texto, não HTML, e ainda pode conter emoji Unicode. Distintivos de membros usam emoji como alternativa (⭐, 💝, 🏅, etc.) para manter consistência com a captura DOM. Payloads normais de chat também incluem meta.messageId para que ações de exclusão no dock possam voltar à API de moderação do YouTube.
Alertas de inscritos do YouTube (new_follower)
O Social Stream agora pode detectar novos inscritos do YouTube usando o myRecentSubscribers da API. Funciona de forma semelhante aos alertas de inscritos do Streamlabs.
Como funciona:
- Consulta a API do YouTube a cada 5 minutos para inscritos recentes
- Registra inscritos já vistos no localStorage para detectar novos
- Emite
new_follower com nome, avatar e ID de canal do inscrito
- Mantém mensagens de alerta de inscritos desativadas por padrão; ativá-las usa a string de tradução atual para
alert-just-subscribed
- Agrupa por padrão rajadas de mais de três novos inscritos para que reconexões não sobrecarreguem sobreposições nem o Event Flow
- Exige que o modo WebSocket esteja ativado nas configurações da extensão
Limitações (são restrições da API do YouTube, não do Social Stream):
- Sem prazo garantido de entrega – O SSN consulta a cada cinco minutos, mas a API pode retornar resultados atrasados ou incompletos. Não dependa de uma janela fixa de quatro horas.
- Somente inscrições públicas – Inscritos que definiram sua lista de inscrições como privada não disparam alertas. As inscrições são privadas por padrão no YouTube.
- Somente o dono do canal – Você só pode receber alertas de inscritos de canais que possui e nos quais está autenticado.
- Uso de cota da API – Cada consulta custa 1 unidade de API. Em intervalos de 5 minutos, isso usa aproximadamente 288 unidades por dia (da cota diária padrão de 10.000).
Gatilho do editor Event Flow: Use data.event === "new_follower" e data.type === "youtube"
YouTube WebSocket: referência rápida de eventos e membros
data.event |
data.membership |
Cenário |
sponsorship | new_sponsor | Novo membro por newSponsorEvent |
sponsorship | new_member | Novo membro por processMembership |
resub | renewed_member | Renovação de membro |
resub | upgraded_member | Upgrade de nível |
giftpurchase | gift_giver | Membros presenteados ao canal |
giftredemption | gift_recipient | Recebeu uma assinatura de membro presenteada |
membermilestone | member_milestone | Mensagem de aniversário de membro |
superchat | - | Super Chat |
supersticker | - | Super Sticker |
user_banned | - | Evento apenas de metadados de banimento/suspensão temporária |
new_follower | - | Novo inscrito (consulta periódica; pode atrasar) |
Twitch – Captura DOM Standard
Implementação: sources/twitch.js
- Mantenha o chat do Twitch aberto. Avisos de membros e usuários são capturados quando o Twitch os renderiza; não são restritos a contas de donos do canal ou moderadores. A autenticação pode ser necessária para recursos específicos da conta.
- Requisições de contagem de espectadores acessam
https://api.socialstream.ninja/twitch/viewers a cada 30 segundos.
- Para alertas de seguidores, raids e suporte completo a eventos, ative o modo WebSocket nas configurações da extensão.
- Avisos de sequência de visualização compartilhados pelo espectador ficam desativados por padrão e exigem a opção Mostrar sequências de visualização do Twitch configuração.
- A opção PluralMind pode substituir
chatname, nameColor, e a parte encapsulada pelo proxy de chatmessage, e pode adicionar um distintivo de texto de pronome. username continua sendo o login do Twitch; exclusões relacionadas contêm delete.meta.pluralmind para que o dock use esse login estável.
| Evento |
Quando é disparado |
Notas do payload |
reward |
Cartões de resgate de Pontos do Canal (incluindo o contêiner de recompensas do 7TV). |
chatmessage contém o texto de resgate; membership inalterado. |
giftpurchase |
Linhas de sistema, como “Usuário presenteando X inscrições no canal”. |
chatmessage é a linha de sistema, permitindo que sobreposições destaquem campanhas de presentes. |
subscription_gift |
Avisos de inscrição presenteada (“Usuário presenteou uma inscrição para…”). |
Marca o evento para filtros de destaque; membership continua sendo o rótulo do distintivo do destinatário. |
viewer_update |
Consulta a cada 30s ao proxy de espectadores do Social Stream (retorna 0 em caso de erro). |
meta contagem inteira de espectadores. |
hype_train |
O destaque comunitário fixo do Twitch mostra um Trem do Hype ativo no chat em janela separada. |
Alternativa DOM apenas com metadados e meta.sourceMode definido como dom. Usa nível visível, cronômetro e meta.progressPercent quando o Twitch não disponibiliza totais de pontos do EventSub. |
community_highlight |
Elementos dentro do widget “Destaque da comunidade” do Twitch. |
meta é o texto de destaque extraído para pontos de integração de automação. |
knock |
Convites de colaboração do Stream Together exibidos acima do chat. |
chatmessage contém o texto do convite; chatname é derivado do usuário do alerta quando disponível. |
watch_streak |
Aviso opcional de sequência de visualização compartilhado pelo espectador, renderizado no chat do Twitch. |
meta.streakCount contém a contagem visível quando detectada; meta.milestoneId usa o identificador do aviso DOM quando disponível. |
Bits/Cheers preenchem hasDonation (por exemplo, “500 bits”), embora data.event continua vazio; use esse campo ao renderizar widgets de doação. Informações de sequência de inscrição aparecem em subtitle quando distintivos disponibilizam meses.
Twitch – EventSub/WebSocket
Implementação: sources/websocket/twitch.js com o núcleo compartilhado providers/twitch/chatClient.js
- Escopos 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. Tokens do dono do canal liberam contagens de inscritos/seguidores.
- Eventos entregues pelo EventSub, além de consultas Helix de totais de espectadores/seguidores/inscritos.
- O modo WebSocket fornece em tempo real alertas de seguidores, eventos de inscrições, raids, cheers, Power-ups, resgates de Pontos do Canal e metadados de Trem do Hype.
- Linhas de Chat compartilhado usam o IRC do Twitch
source-room-id para preencher sourceName/sourceImg com o canal de origem quando diferente do canal conectado.
- Avisos de sequência de visualização compartilhados pelo espectador ficam desativados por padrão e exigem a opção Mostrar sequências de visualização do Twitch configuração.
- A opção PluralMind pode substituir
chatname, nameColor, e a parte encapsulada pelo proxy de chatmessage, e pode adicionar um distintivo de texto de pronome. username e userid preservam a identidade do Twitch; exclusões relacionadas contêm delete.meta.pluralmind para que o dock use esses campos estáveis.
| Evento |
Quando é disparado |
Notas do payload |
cheer |
Notificações de cheer do EventSub channel.bits.use. |
hasDonation “N bits”; meta.bits numérico; chatmessage preserva a mensagem bruta; participantes identificados de cheers incluem chatimg. |
powerup |
Notificações de Power-up integradas ou personalizadas do EventSub channel.bits.use. |
Payload somente de evento com um campo vazio chatmessage e nenhum hasDonation, portanto não cria uma linha normal de chat. meta.bits é numérico e meta.powerUp preserva o subtipo do Twitch, título/ID da recompensa, detalhes do efeito e texto fornecido da mensagem quando disponível. |
new_subscriber |
channel.subscribe ou USERNOTICE com msg-id=sub. |
meta inclui { userId, tier, isGift }; o total de inscritos em cache aumenta quando disponível; totais de espectadores são consultados separadamente. |
resub |
channel.subscription.message ou USERNOTICE msg-id=resub. |
meta contém sequência e meses acumulados; chatmessage inclui o texto da renovação de inscrição. |
subscription_gift |
channel.subscription.gift ou USERNOTICE msg-id=subgift. |
meta disponibiliza o total presenteado e o nível; chatmessage resume a ação. |
reward |
channel.channel_points_custom_reward_redemption.add. |
meta inclui ID, título, custo, prompt, entrada do usuário, ID/status do resgate e alias legado da recompensa. Sem campo de nível superior reward é emitido por este manipulador do EventSub. Consumidores antigos ainda podem mostrar channel_points como um alias obsoleto. |
raid |
EventSub channel.raid ou USERNOTICE msg-id=raid. |
meta = { fromId, fromLogin, viewers }. |
watch_streak |
USERNOTICE opcional de IRC do Twitch com msg-id=viewermilestone e msg-param-category=watch-streak. |
Inclui o espectador em chatname, o texto do aviso do Twitch em chatmessage, e meta.streakCount/meta.milestoneId. Outros tipos genéricos de USERNOTICE continuam sendo ignorados. |
new_follower |
channel.follow Notificações do EventSub. |
Incrementa automaticamente follower_update; meta registra { userId, followedAt }. |
viewer_update |
Helix streams consulta a cada 30 segundos. |
meta contagem inteira de espectadores; suprimida, a menos que as estatísticas de espectadores estejam ativadas nas configurações. |
follower_update |
Total de seguidores do Helix, acionado após eventos de seguidores ou consulta periódica. |
meta contagem inteira de seguidores. |
subscriber_update |
Total de inscritos do Helix (exige token do dono do canal com escopo de inscrições). |
meta contagem inteira de inscritos. |
stream_online / stream_offline |
EventSub stream.online/stream.offline. |
meta.startedAt presente para eventos online; offline usa objeto vazio. |
ad_break / ad_request / ad_schedule |
Respostas da API do gerenciador de anúncios (channel.ad_break.begin, manual POST channels/ads, GET channels/ads). |
meta detalha duração, solicitante e payload de programação para painéis. |
hype_train |
EventSub channel.hype_train.begin, channel.hype_train.progress, e channel.hype_train.end notificações v2. |
Evento apenas de metadados: sem chatname ou chatmessage. meta.phase é begin, progress, ou end; meta inclui ID do trem, nível, progresso, meta, total, contribuidores, campos de tempo, indicador de trem compartilhado e trainType. Trens de tesouros são disponibilizados por meta.trainType quando o Twitch os identifica. |
user_banned |
EventSub channel.ban, ou IRC CLEARCHAT como alternativa quando eventos de banimento do EventSub estão indisponíveis. |
Evento apenas de metadados para widgets de moderação. meta inclui nome de usuário/exibição, ID do usuário, URL de avatar/perfil, moderador, motivo, duração do banimento/suspensão temporária e permanência. |
Payloads de chat reutilizam o provedor compartilhado, portanto data.event é preenchido para `/me` (action) e o legado bits mesmo fora dos fluxos EventSub. Mensagens GIF do Twitch colocam o recurso Giphy em contentimg, deixe chatmessage vazio, e preserve o rótulo alternativo do Twitch em meta.gifLabel. A lógica de deduplicação e exclusão usa IDs de mensagem; mensagens enviadas pelo SSN usam o identificador nativo message_id do eco IRC do Twitch em data.id.
Metadados do Trem do Hype do Twitch
hype_train é apenas de metadados e não inclui chatname ou chatmessage. Painéis devem atualizar uma exibição existente de trem por meta.id em vez de adicionar cada atualização de progresso como chat. A Barra de metadados (meta.html) renderiza esses eventos como uma barra de progresso superior.
| Campo |
Digite |
Notas |
type | string | Sempre twitch. |
event | string | Sempre hype_train. |
meta.phase | string | begin, progress, ou end. |
meta.id | string | ID estável do trem. Use para inserir/atualizar um único widget visível de trem. |
meta.broadcasterUserId | string | ID de usuário do dono do canal do Twitch. |
meta.broadcasterUserLogin | string | Login do dono do canal do Twitch. |
meta.broadcasterUserName | string | Nome de exibição do dono do canal do Twitch. |
meta.total | número | null | Valor total de apoio informado pelo Twitch para o trem. |
meta.progress | número | null | Progresso atual em direção à meta do nível. |
meta.goal | número | null | Meta do nível atual. |
meta.progressPercent | número | null | Porcentagem alternativa do DOM quando o Twitch disponibiliza apenas a barra de progresso visível da janela separada. |
meta.level | número | null | Nível atual ou final do trem. |
meta.topContributions | array | Principais contribuidores. Cada entrada inclui userId, userLogin, userName, type, e numérico total. |
meta.lastContribution | objeto | null | Contribuição mais recente, usando o mesmo formato de contribuição de topContributions. |
meta.sharedTrainParticipants | array | Dados brutos de participantes de trem compartilhado do Twitch, quando fornecidos. |
meta.startedAt | string | Horário ISO do início do trem. |
meta.expiresAt | string | Horário ISO da expiração atual do trem. |
meta.endedAt | string | Horário ISO do fim do trem, ou vazio antes do fim. |
meta.cooldownEndsAt | string | Horário ISO do fim do tempo de espera, ou vazio antes do fim. |
meta.isSharedTrain | booleano | Verdadeiro quando o Twitch marca o trem como compartilhado. |
meta.trainType | string | Geralmente regular; trens de tesouros são disponibilizados aqui quando o Twitch os identifica. |
meta.allTimeHighLevel | número | null | Nível máximo histórico do trem quando fornecido pelo Twitch. |
meta.allTimeHighTotal | número | null | Total máximo histórico do trem quando fornecido pelo Twitch. |
meta.sourceMode | string | Marcador opcional de fonte, como dom. |
meta.eventSubType | string | Tipo original do EventSub: channel.hype_train.begin, channel.hype_train.progress, channel.hype_train.end, ou dom.community_highlight. |
Twitch EventSub: referência rápida de eventos
data.event |
Cenário |
new_follower | Usuário seguiu o canal |
new_subscriber | Nova inscrição |
resub | Renovação de inscrição com mensagem |
subscription_gift | Inscrições presenteadas ao canal |
cheer | Bits enviados em cheer |
powerup | Power-up integrado ou personalizado usado |
reward | Resgate de Pontos do Canal |
raid | Raid recebida |
viewer_update | Contagem de espectadores simultâneos |
follower_update | Contagem total de seguidores |
subscriber_update | Contagem total de inscritos |
stream_online | Transmissão entrou ao vivo |
stream_offline | Transmissão encerrada |
ad_break | Intervalo de anúncios iniciado |
hype_train | Metadados de status do Trem do Hype/Trem de tesouros |
user_banned | Usuário foi banido ou suspenso temporariamente |
OBS Flow Actions
Implementação: actions.html por eventos do OBS WebSocket v5, com dock.html Eventos de Fonte de navegador do OBS como alternativa
- Mantenha a sobreposição Flow Actions aberta com a mesma sessão do Social Stream do editor/serviço de segundo plano do Event Flow, ou mantenha o dock carregado dentro do OBS.
- Configure OBS WebSocket v5 no OBS 28+; a URL padrão é
ws://127.0.0.1:4455.
- Estes são eventos de sistema do Event Flow. Eles não incluem
chatname ou chatmessage, e detalhes extras do OBS ficam dentro de meta.
| Evento |
Quando é disparado |
Notas do payload |
stream_started |
O OBS informa que a saída de transmissão atingiu o estado iniciado. |
type é obs; event é stream_started; meta.source é obs-websocket ou obs-browser-source; meta.outputState pode conter o estado bruto de saída do OBS. |
stream_stopped |
O OBS informa que a saída de transmissão atingiu o estado parado. |
type é obs; event é stream_stopped; meta.outputActive pode ser false. |
recording_started |
O OBS informa que a gravação começou. |
type é obs; meta.obsEvent identifica a fonte de eventos do OBS. |
recording_stopped |
O OBS informa que a gravação parou. |
type é obs; meta.outputState pode conter o estado bruto do WebSocket. |
scene_changed |
O OBS altera a cena ativa de programa. |
type é obs; meta.sceneName contém o nome da cena quando fornecido pelo OBS. |
media_ended |
Uma entrada de mídia do OBS termina a reprodução. |
type é obs; meta.inputName e meta.inputUuid identificam a entrada de mídia. |
replay_buffer_saved |
O OBS salva o buffer de replay. |
type é obs; meta.savedReplayPath pode conter o caminho do replay salvo. |
Caixa de alertas do Streamlabs
Implementação: sources/streamlabs.js (DOM da caixa de alertas); ponte opcional de socket em sources/websocket/streamlabs.html
- Mantenha a caixa de alertas do Streamlabs aberta em uma aba ou Fonte de navegador para que os alertas sejam renderizados; o script de conteúdo lê o DOM dos alertas para mensagem/imagem/tokens.
- Alertas no estilo doação definem
hasDonation (ex.: “$10 USD” ou “100 bits”) e opcionalmente donoValue em USD.
- Tipos de evento inferidos:
follow, subscription, gift, cheer, donation, superchat, raid, redeem, merch, sponsor.
- Para a ponte de socket, cole seu token Streamlabs Socket API e conecte; os alertas são repassados sem a página da caixa de alertas.
| Evento |
Quando é disparado |
Notas do payload |
donation |
Gorjetas, caridade, JustGiving ou alertas genéricos de “doou”. |
hasDonation preserva o texto da moeda (ex.: “$36” ou “$10 CAD”); donoValue é fornecido somente quando há um valor em USD; outros valores rotulados usam a conversão compartilhada de moedas. |
cheer |
Alertas de bits/cheer do Twitch. |
hasDonation torna-se “100 bits” e donoValue captura o valor em USD. |
subscription |
Alertas de inscrições. |
Campos padrão definidos; chatmessage é a linha do alerta; meta.tokens contém valores em tokens (name, amount, levelName etc.). |
gift |
Membros/inscrições presenteados. |
meta.tokens.amount pode mostrar a quantidade de presentes; meta.tokens.levelName pode conter o nível. |
follow |
Alertas de seguidores. |
Sem campos de doação; chatname reflete o token de nome do alerta. |
raid |
Alertas de raids. |
meta.tokens.count contém a quantidade de participantes da raid quando presente. |
redeem |
Alertas de resgate do Cloudbot. |
meta.tokens.product captura o item resgatado. |
merch |
Alertas de compra de produtos. |
meta.tokens.product contém o nome do item comprado. |
superchat |
Alertas no estilo Super Chat do YouTube ou de integrações de alertas compatíveis. |
hasDonation contém o valor; consumidores podem continuar aceitando o legado donation aliases. |
sponsor |
Alertas no estilo patrocinador/membro disponibilizados pelo Streamlabs. |
Campos padrão; sem doação, a menos que o texto inclua um valor. |
TikTok Live – Captura DOM e feed do TikFinity
Implementação: sources/tiktok.js para páginas nativas do TikTok e sources/tikfinity.js para o widget/iframe do feed de atividades do TikFinity. O SSApp ainda tem uma integração nativa com o TikTok com a maior cobertura de eventos (veja a documentação do SSApp).
- Funciona na página ao vivo do criador. Banners de presentes/curtidas/seguidores só são preenchidos quando a sessão está autenticada.
- O TikTok fornece muitos eventos por detecção DOM sem exigir modo WebSocket – presentes, seguidores, curtidas e entradas opcionais são capturados de linhas renderizadas.
- Páginas de widgets do TikFinity em
tikfinity.zerody.one/widget/activity-feed* também funcionam. O iframe incorporado do feed de atividades emite os mesmos campos canônicos de payload do TikTok para chat, seguidores, compartilhamentos, presentes, inscrições, entradas opcionais e baús do tesouro.
- Nenhuma autenticação adicional de API é necessária.
- Modo nativo do SSApp ainda adiciona eventos além dos caminhos de captura de página/widget:
question_new, emote, viewer_update, e o agregado opcional likes_update.
| Evento |
Quando é disparado |
Notas do payload |
gift |
Linhas de banner de presente ou DivGiftMessage entradas. |
hasDonation converte para “N moedas” (com consulta de presente como alternativa); membership usa o texto do distintivo quando disponível. |
joined |
Notificações de entrada quando a opção global Capturar eventos "joined" da transmissão está ativada. |
Ignora notificações de compartilhamento; chatname pode ficar vazio para algumas strings de sistema. |
followed |
Mensagens de seguidores interpretadas a partir de cartões sociais. |
Garante chatname existe antes de emitir. |
shared |
Linhas de compartilhamento do TikFinity. |
chatmessage é o texto renderizado do compartilhamento. |
subscribe |
Linhas de inscrições do TikFinity. |
membership é definido como SUBSCRIBER. |
envelope |
Linhas de baús do tesouro do TikFinity. |
meta.coins e meta.canOpen contêm os detalhes do baú. |
liked |
Resumos de tempestades de curtidas acionados por cartões sociais do TikTok. |
chatname é incluído quando o TikTok o disponibiliza; cartões anônimos/de sistema de curtidas ainda podem ser emitidos. O TikTok envia isso pelo caminho normal de segundo plano. O serviço encaminha uma cópia à Sobreposição de reações e só continua no fluxo principal de chat/eventos quando capturelikeevent está ativado. |
likes_update |
O SSApp recebe um total acumulado oficial do TikTok LIVE enquanto captureliketotals está ativado. |
meta é o total inteiro atual. O SSApp envia o primeiro valor imediatamente, agrupa rajadas em no máximo uma atualização a cada cinco segundos, repete o valor mais recente aproximadamente a cada 90 segundos e envia zero quando a transmissão termina. Isso é separado dos eventos específicos de espectadores liked eventos. |
true (booleano) |
Transmissões sociais/de sistema genéricas quando o TikTok não fornece subtipo. |
Use chatmessage para decidir a apresentação; o booleano true indica “evento de sistema – tipo desconhecido”. |
membership espelha as dicas dos distintivos (níveis de inscritos). O cache de avatares mantém chatimg válido entre eventos; se o DOM suprimir a cor para moderadores, o script limpa nameColor. Linhas de presentes do TikFinity também definem contentimg como ícone do presente quando disponível. Atualizações de sequência de presentes do DOM nativo e TikFinity incluem meta.tiktokGiftStreakId, meta.tiktokGiftCount, e meta.tiktokGiftQuietMs para que sobreposições possam consolidar atualizações repetidas; IDs legados de sequência são exclusivos da instância da página. Metadados de presentes também podem incluir tiktokGiftMessageId (ID original da mensagem do TikTok), tiktokGiftSenderId, groupId, giftId, giftName, streakable, e repeatEnd. IDs nativos identificam o mesmo presente entre janelas de captura; um ID de grupo diferente de zero, com IDs do remetente e presente, identifica atualizações cumulativas de sequência. A captura WebSocket do SSApp fornece os mesmos campos após consolidar uma sequência, com count preservado para compatibilidade. A opção de doações é verificada ao encaminhar cada presente: desativar doações do TikTok remove hasDonation e donoValue preservando o evento de presente e os metadados. A síntese de voz usa essas identidades para consolidar atualizações e suprimir duplicatas concluídas por até dez minutos (cache limitado) e lê presentes do TikTok como remetente, quantidade e nome do presente. Payloads antigos recorrem aos IDs de sequência e texto de mensagem existentes; nenhuma identidade é inferida apenas pelo texto do presente. A fala de presentes do TikTok usa o idioma selecionado de síntese de voz/voz, independentemente do idioma da interface. Os verbos de anúncio são localizados para inglês, espanhol, português, francês, alemão, italiano e holandês; outros idiomas usam remetente, quantidade e nome do presente sem verbo em inglês. A síntese de voz simplificada mantém esse formato neutro. Nomes de presentes permanecem como fornecidos pela plataforma; isso não traduz automaticamente catálogos de presentes ou mensagens de chat nem deduz o idioma de uma transmissão.
Nessas atualizações de sequência, a contagem e o rótulo de doação são cumulativos: 1, 2, 3 significa três presentes, não seis. Consumidores de totais devem somar apenas o aumento em relação ao maior valor já visto para esse ID de sequência. A captura Standard suporta classes antigas de presentes e linhas atuais de imagem/contagem; ambas preservam event: "gift" e hasDonation. Preços desconhecidos preservam contagens/nomes de presentes para exibição e usam uma estimativa em USD de uma moeda por presente. O valor fornecido pela fonte donoValue tem prioridade; metadados de presentes renderizados podem fornecer coinsPerGift ou diamondsPerGift antes que a tabela de presentes ou o padrão seja necessário. Estimativas de moedas do Standard/TikFinity e de diamantes do SSApp nativo usam suas conversões distintas existentes; nenhuma representa um pagamento em dinheiro garantido.
Whatnot
Implementação: sources/whatnot.js
- Abra a página do programa ao vivo do Whatnot com o chat visível; a captura WebSocket existente fornece chat, notificações de leilão/venda, falhas de pagamento, raids, doações e atualizações rápidas de espectadores. Retratos de produtos/sorteios ainda dependem de seções DOM renderizadas na visualização do programa.
- Capturar eventos da transmissão controla eventos de sistema do Whatnot e atualizações de metadados de leilão/catálogo; linhas de entrada também exigem Capturar eventos "joined" da transmissão; contagens de espectadores continuam seguindo as opções de espectadores/Hype.
| Evento |
Quando é disparado |
Notas do payload |
viewer_update |
Mudanças na contagem de espectadores pelas atualizações WebSocket da transmissão, com consulta DOM como alternativa. |
meta é uma contagem inteira de espectadores. |
donation |
Eventos de gorjetas e contribuições de impulso comunitário do WebSocket do Whatnot. |
hasDonation contém o valor formatado; o contexto específico de WebSocket fica em meta. |
raid |
Eventos de raid do WebSocket do Whatnot, incluindo respostas de atividades do histórico. |
meta.numRaiders é incluído quando fornecido pelo Whatnot. |
joined |
Linhas de chat cujo corpo normalizado começa com joined, quando Capturar eventos "joined" da transmissão está ativado. |
Usa rótulos de evento em string para avisos de entrada (não o booleano true). |
auction_update |
Quando o estado do leilão no rodapé ao vivo muda (texto de vencedor/vencendo, título, lances, preço, cronômetro, estado vendido), muitas vezes acelerado por pacotes WebSocket do ciclo de vida do leilão. |
Evento apenas de metadados. Sem chatname/chatmessage; os dados ficam em meta (por exemplo meta.title, meta.bids, meta.price, meta.timer, meta.status). |
commerce_update |
Quando seções do catálogo mudam (produtos, surprise sets, sorteios futuros), muitas vezes acelerado por pacotes WebSocket do ciclo de vida de sorteios/produtos. |
Retrato de estado apenas com metadados com contagens de seções e arrays de itens em meta.products, meta.surpriseSets, e meta.upcomingGiveaways. |
auction_started, new_bid, auction_ended, product_sold |
Chega a notificação WebSocket ao vivo correspondente. São eventos individuais, separados dos retratos de exibição existentes. |
platform/type: "whatnot", texto simples chatname, userid quando fornecido, nome do produto em subtitle, e um campo de texto simples chatmessage com textonly: true. Identificadores disponíveis e detalhes do leilão ficam em meta: productId, auctionId, orderId, transactionId, livestreamId, bidId, bids, auctionEndTime, e status. Opcional price está em unidades principais da moeda, com priceText e currency quando fornecido. |
payment_failed |
Chega uma notificação WebSocket ao vivo de falha de pagamento. |
Os mesmos campos disponíveis de comprador, produto e identificador, com meta.paymentStatus: "failed". Quando apenas product.purchaserUserId identifica o comprador, preenche userid em eventos de venda/pagamento e o nome do comprador fica vazio. Nenhum comprador é deduzido de outro leilão ou de um leilão anterior. |
payment_succeeded |
Chega uma notificação WebSocket ao vivo de pagamento bem-sucedido. |
meta.paymentStatus: "succeeded", com comprador, item, ID do pedido e outros campos permitidos fornecidos por essa notificação. Isso continua sendo um evento de pagamento distinto; não emite outro purchase ou doação. Campos ausentes ficam vazios ou omitidos, mesmo que uma venda anterior os tenha fornecido. |
Atualizações de exibição de leilão/comércio continuam sendo retratos baseados no DOM. Para corresponder a um evento WebSocket individual no Event Flow, use Tipo de evento (avançado), selecione Evento personalizado, e insira seu nome exato. Rótulos podem usar **{username}**\n{subtitle} com peso do texto selecionado; condições podem comparar meta.paymentStatus com failed. Um exemplo importável de etiqueta do Whatnot está disponível. As configurações existentes de captura de eventos da transmissão continuam valendo.
Campos opcionais adicionais são meta.catalogProductId (o campo do pacote product.productId), meta.parentProductId (product.parentId), meta.transactionType (tipo de venda do Whatnot, sem alterações), e meta.placeOrderErrorReason (código de erro de pedido/pagamento fornecido pelo Whatnot). Essas referências de produto descrevem o catálogo ou anúncio principal; não substituem um ID de pedido. A quantidade em estoque não é tratada como quantidade comprada.
Para automação de pagamento bem-sucedido, defina um Tipo de evento (avançado) como Evento personalizado: payment_succeeded, e filtre a fonte para Whatnot. Condições e modelos existentes podem usar os campos desse evento userid, chatname, subtitle e meta.orderId diretamente. Nenhuma compra memorizada é necessária quando a notificação contém os detalhes exigidos.
O fim de um leilão ou um item marcado como vendido não confirma pagamento bem-sucedido: essas notificações não são emitidas como eventos pagos de purchase e não definem valores de doação. Um evento de sucesso só é emitido para um recebido payment_succeeded notificação; a captura não consulta a conclusão do pagamento nem a deduz de uma venda. Outros paymentStatus são encaminhados apenas quando explicitamente fornecidos em um pacote capturado. Identificadores ausentes são omitidos; um ID de produto sozinho pode abranger várias vendas, portanto use um ID de pedido/leilão fornecido para correlacionar notificações. A captura não memoriza compras nem associa atualizações de pagamento; qualquer fluxo assim precisa ser configurado explicitamente no Event Flow. Pacotes duplicados em curto intervalo das duas pontes de captura existentes são suprimidos. Objetos brutos de pedido/pagamento não são encaminhados.
eBay Live
A conexão de vendedor do eBay em Monetização exige um serviço eBay configurado no SSN e consentimento OAuth do vendedor; a captura eBay Live abaixo é independente. O modo sandbox usa URLs de anúncios sandbox, identifica o comprador como "eBay Sandbox buyer" e prefixa a mensagem com "Sandbox test purchase:". Compras sandbox mantêm o mesmo contrato de compra e podem disparar alertas/ações de chat ativados durante testes. O contrato de pagamento implementado emite event: "purchase", com type e platform definido como ebay. Exige um pedido pago correspondente a um produto selecionado. id é um identificador opaco estável da linha de pedido; chatname é "eBay buyer", chatmessage é texto simples (textonly: true), subtitle é o nome do produto e, opcionalmente, contentimg é sua imagem. meta.ebayPurchase contém itemId, itemName, quantity, e público url. Nenhuma identidade de comprador, dado de entrega, hasDonation ou donoValue é incluído. Isso difere de atualizações extraídas de leilão ou estoque, que não comprovam pagamento.
Implementação: sources/ebay.js
- Abra
/ebaylive/events/<id>/chat ou /ebaylive/events/<id>/stream. Ambos recebem o mesmo feed de leilão ao vivo.
- O feed WebSocket público fornece leilões, lances, vencedores, extensões de tempo e mudanças de estoque; uma consulta GraphQL somente leitura fornece detalhes dos anúncios. A captura DOM permanece como alternativa quando os dados de rede estão indisponíveis.
- Capturar eventos da transmissão controla retratos de metadados (
auction_update, commerce_update); os contadores de espectadores ainda respeitam as opções de espectadores/Hype.
| Evento |
Quando é disparado |
Notas do payload |
viewer_update |
Quando a contagem de espectadores do evento ativo muda (contagem do cabeçalho ou indicador de evento ao vivo como alternativa). |
meta é uma contagem inteira de espectadores. |
follower_update |
Quando a contagem de seguidores do vendedor é retornada pelo endpoint de estatísticas do vendedor. |
meta é uma contagem inteira de seguidores. A fonte consulta o endpoint do vendedor a cada 60 segundos; o endpoint ainda pode retornar um valor em cache por até 5 minutos. |
auction_update |
Quando os metadados do leilão ativo mudam. |
Evento apenas de metadados. A captura de rede define meta.sourceMode como network e fornece título, preço, licitante, vencedor, lances, cronômetro e endingAt. meta.ebay contém eventId, listingId, o registro GraphQL do anúncio (listing), o anúncio atual do socket público (eventListing), e a atualização mais recente do leilão (update). Esses campos preservam categoria, imagens, moedas, quantidades, detalhes de breaks de caixas, resultados de leilão e campos de tempo sem eliminar detalhes da plataforma. O registro GraphQL é um retrato obtido por consulta; o anúncio e a atualização do socket contêm estado ao vivo mais recente. O histórico inicial/de reconexão é incorporado ao retrato atual, em vez de emitido como vitórias antigas. Remover todos os anúncios apresentados emite status: "idle" com cardCount: 0 para limpar o leilão. A alternativa DOM mantém campos de cartão do player ou prévia de evento. |
commerce_update |
Quando seções de retratos de catálogo/eventos ao vivo mudam. |
Retrato de estado apenas com metadados em meta. O modo de rede inclui eventId, navigation.viewerCount e playerCards para os anúncios apresentados atualmente, cada um com os mesmos detalhes de ebay objeto como retrato do leilão. Uma lista vazia de cartões limpa anúncios removidos. A alternativa DOM também pode incluir liveEvents, livePreview, currentEvent e upcomingEvents. |
reaction |
Quando o eBay Live renderiza uma animação de coração/reação. |
Enviado diretamente ao destino dedicado de reações. meta.reactionType é heart; o eBay não disponibiliza um nome por usuário para essas animações DOM. |
Eventos de metadados do eBay omitem intencionalmente chatname/chatmessage; sobreposições consumidoras devem renderizar a partir de data.event + data.meta somente.
Kick – Captura DOM Standard
Implementação: sources/kick.js
- Precisa de uma sessão autenticada para obter imagens de perfil e distintivos de inscritos.
- Detecção limitada de eventos por correspondência de texto do chat e distintivos; contagens de espectadores continuam funcionando quando a opção está ativada.
| Evento |
Quando é disparado |
Notas do payload |
gift |
Presentes de KICKs detectados pela imagem de figurinha e pelo valor visível em moeda do Kick. |
hasDonation contém N KICKs (1 KICK para um) quando o valor visível está disponível; contentimg contém a imagem do presente. O texto existente da mensagem é preservado. |
reward |
Resgates de recompensas ("resgatou …"). |
chatmessage contém o texto de resgate. |
true (booleano) |
Avisos genéricos de sistema que não correspondem a padrões de presente ou recompensa. |
Use chatmessage para decidir a apresentação; o booleano true indica "evento de sistema – tipo desconhecido". |
viewer_update |
Consulta a API de canais do Kick a cada 30 segundos (somente quando as estatísticas de espectadores estão ativadas). |
meta contagem inteira de espectadores; para inscrições, seguidores ou gorjetas, use a ponte Kick abaixo. |
Kick – WebSocket/Ponte
Implementação: sources/websocket/kick.js com auxiliares compartilhados em providers/kick/core.js
- OAuth pela ponte Kick do Social Stream. Os escopos atuais são
user:read, channel:read, channel:write, channel:rewards:read, chat:write, events:subscribe, moderation:ban, moderation:chat_message:manage, e kicks:read. Os tokens são atualizados automaticamente.
- A configuração de webhooks do Kick pode levar vários minutos; a interface lista as assinaturas ativas por canal.
| Evento |
Quando é disparado |
Notas do payload |
message |
Payload de chat da ponte. |
meta.plainText contém a mensagem em texto simples (que ainda pode incluir emoji); distintivos combinam plataforma + cache de perfil. Respostas de conversa preenchem initial, reply, e meta.reply quando detalhes da resposta ou uma mensagem anterior em cache estão disponíveis. |
reward |
channel.reward.redemption.updated, além de payloads de chat/sistema da ponte que se parecem com resgates. |
meta inclui ID de recompensa/resgate, título, custo, status, entrada do usuário e quem resgatou. |
new_subscriber |
channel.subscription.new. |
membership atribuído à função de inscrito; meta inclui { subscriber, plan }. |
resub |
channel.subscription.renewal. |
meta.duration (meses) e meta.plan disponível; subtitle resume a sequência. |
subscription_gift |
channel.subscription.gifts. |
meta.totalGifted, meta.gifter; os distintivos usam o ícone 💝 como alternativa. |
donation |
Eventos de apoio/gorjeta detectados por heurísticas de tipo de evento; presentes de KICKs usam gift abaixo. |
hasDonation contém o valor formatado; meta contém { amount, currency, supporter, message, giftName }. |
gift |
kicks.gifted (presentes de KICKs), em correspondência com o extrator DOM. |
hasDonation contém N KICKs (1 KICK para um); contentimg contém a imagem do presente quando disponível. Detalhes estruturados do presente permanecem em meta. |
raid |
Tratamento de compatibilidade para payloads antigos de socket no formato host, como App\Events\StreamHostEvent. |
O catálogo oficial atual de eventos do Kick não tem assinatura de raid/host. Se chegar um payload legado compatível, ele é mapeado para o nome canônico raid; não dependa disso em um fluxo atual do Kick. |
new_follower |
channel.followed. |
Ícones de seguidores vêm do cache de perfis; follower_update é disparado quando o Kick fornece totais acumulados. |
follower_update |
A ponte fornece contagens de seguidores nos payloads de webhook. |
meta total inteiro; usado por painéis para metas de seguidores. |
stream_online / stream_offline |
livestream.status.updated. |
meta contém o corpo bruto do status do Kick (is_live, title etc.). |
viewer_update |
livestream.status.updated quando o Kick inclui totais de espectadores simultâneos. |
meta contagem inteira de espectadores; emite 0 no status offline para limpar contadores desatualizados. |
user_banned |
moderation.banned da ponte/webhook ou eventos de banimento do socket de chat do Kick. |
Evento apenas de metadados para widgets de moderação. meta inclui nome de usuário/exibição, ID do usuário, URL de avatar/perfil, moderador, motivo, duração do banimento/suspensão temporária e permanência. |
Consultas de perfil usam profileCache; mapBadges combina os recursos de distintivos do Kick com SVG em cache quando disponível. Quando o Kick informa doações em KICKs, a ponte as converte em hasDonation além de meta.amount com currency usa "KICKs" como alternativa. Payloads de chat incluem meta.messageId quando a ponte disponibiliza um ID nativo de mensagem do Kick para que a sincronização de exclusão atinja a mensagem correta. Payloads de resposta incluem meta.reply com o elemento pai messageId, author, e text quando conhecido. Detalhes fornecidos de resposta continuam disponíveis mesmo quando a mensagem original não está em cache; uma resposta somente com ID sem contexto em cache ainda pode não ter citação visível.
Kick WebSocket: referência rápida de eventos
data.event |
Cenário |
new_follower | Usuário seguiu o canal |
new_subscriber | Nova inscrição |
resub | Renovação de inscrição |
subscription_gift | Inscrições presenteadas |
reward | Resgate de recompensa do canal ou mensagem de chat/sistema no estilo recompensa |
donation | Evento de gorjeta/apoio |
gift | Evento de presente de KICKs |
raid | Entrada legada de host/raid somente para compatibilidade; não é uma assinatura oficial atual do Kick |
follower_update | Contagem total de seguidores |
stream_online | Transmissão entrou ao vivo |
stream_offline | Transmissão encerrada |
user_banned | Usuário foi banido ou suspenso temporariamente |
VPZone - WebSocket
Implementação: sources/websocket/vpzone.js
- Conecta a
wss://chat.vpzone.tv/ws?channel=USERNAME; OAuth solicita profile:read, chat:read, chat:write, channel:read, channel:write, e chat:moderate. Um token bearer também pode ser fornecido manualmente.
- Quadros planos do VPZone, como
type: "msg" são normalizados em payloads padrão de chat.
- No lado da plataforma
delete_message / clear_chat removem as linhas correspondentes do dock; opções adicionais sincronizam exclusões e bloqueios do dock de volta ao VPZone (somente o dono do canal).
- Donos de canais recebem um painel local Informações da transmissão para atualizar título e categoria da live (mesmo padrão da página de fonte do Twitch).
| Evento |
Quando é disparado |
Notas do payload |
message |
VPZone msg, message, new_message, ou chat_message quadro WebSocket. |
chatname vem de username; chatmessage vem de body; indicadores de inscrito/dono/mod/VIP são copiados para chatbadges, indicadores de função no nível superior e meta. IDs nativos preenchem data.id e meta.messageId. |
viewer_update |
VPZone presence quadro com count ou campo equivalente de espectadores. |
meta é a contagem inteira de espectadores ao vivo; contribui para o agregado viewer_updates. |
new_subscriber |
VPZone subscribe / subscription quadro. |
membership é definido como Subscriber quando há indicadores de inscrição. |
subscription_gift |
VPZone gift / gift_subscription quadro. |
Usa o mesmo nome de evento de inscrição presenteada de Twitch, Kick, Rumble e Velora. subtitle contém a quantidade de presentes (x5) ou destinatário. |
message + hasDonation |
VPZone system quadro com metadata.kind: "pixels_cheer" (gorjeta Pixels). |
Linha de chat com doação; hasDonation é o rótulo do valor (por exemplo 100 Pixels), meta.pixels o inteiro. event fica vazio; detecte esta gorjeta por hasDonation. Eventos de apoio da ponte do Kick usam, em vez disso, event: "donation". |
message respostas |
VPZone msg quadro contendo metadata.reply_to (ID da mensagem, autor, trecho — desnormalizados no servidor). |
Renderizado como respostas do Kick: initial contém o rótulo "autor: trecho", reply o texto bruto da resposta, meta.reply o destino estruturado. Respeita a configuração excluem “respondendo a” configuração. |
raid |
VPZone raid quadro com metadata.kind: "incoming". |
Quadros de raids de saída são ignorados; meta.viewers contém o tamanho da raid quando fornecido. |
shoutout |
VPZone shoutout quadro (!so comando). |
meta.targetUser nomeia o canal divulgado. |
reward |
VPZone system quadro com metadata.kind: "channel_points_redeem". |
Resgate de Pontos do Canal, usando o mesmo nome de evento das recompensas do Twitch. |
stream_online / stream_offline |
VPZone system quadros com metadata.kind: "stream_started" / "stream_ended". |
Atribuído ao nome do canal (os quadros não contêm autor). |
new_follower |
VPZone follow quadro. |
Mapeado para o formato padrão de evento de seguidor. |
joined |
Eventos WebSocket de entrada/presença do VPZone, quando Capturar eventos "joined" da transmissão está ativado. |
Mapeado para um evento de sistema no estilo chat com metadados de autor do VPZone em meta. |
Joystick
Implementações: sources/joystick.js, sources/inject/joystick-ws.js, e sources/websocket/joystick.js
- A fonte normal do site Joystick 2.0 é executada na página conectada
/u/<channel>/chat página. Lê o campo da página ChatChannel, WhisperChatChannel, EventLogChannel, e SystemEventChannel Quadros Action Cable, com alternativa de linha renderizada para Electron e casos de reconexão.
- Mensagens de chat do site usam os mesmos campos principais de YouTube, Twitch e Kick: o nativo
id, chatname, chatmessage, chatimg, chatbadges, nameColor, membership, mod, private, username/userid, e timestamp quando o Joystick os fornece. Quando o socket omite uma cor de nome de usuário, a linha renderizada fornece o mesmo nameColor usado por docks com cores ativadas.
- Edições de mensagens no site substituem a linha correspondente no dock; exclusões, silenciamentos e bloqueios removem linhas correspondentes usando o ID nativo ou nome de usuário.
- A fonte WebSocket separada usa credenciais de bot do Joystick (
client_id + client_secret); a fonte do site usa a sessão da página conectada.
- Autoriza em
https://joystick.tv/api/oauth/authorize, depois troca/atualiza tokens em https://api.joystick.tv/api/oauth/token.
- Conecta a
wss://api.joystick.tv/cable e assina GatewayChannel.
- Uma troca opcional de token OAuth é usada para endpoints auxiliares, como
https://api.joystick.tv/api/users/stream-settings.
- A fonte separada com credenciais de bot não emite
viewer_update. A fonte do site conectado emite contagens de espectadores quando o socket da página as fornece, como descrito abaixo.
| Evento |
Quando é disparado |
Notas do payload |
message |
Joystick ChatMessage, BotMessage, new_message, bot_message, event_bot_message, pvp_message, e sussurros. |
Chat normal não tem event. O ID nativo é colocado no campo de nível superior id e meta.messageId; funções e estado privado usam os campos estabelecidos de nível superior/distintivos. |
new_follower |
Joystick StreamEvent com tipo Followed. |
Usa o formato padrão de seguidor e elimina duplicatas em relação à linha correspondente do bot do Joystick. Opcionalmente meta.userId/meta.followedAt são incluídos somente quando o Joystick os fornece. |
new_subscriber / subscription_gift |
Tipos de eventos do Joystick NewSubscription / GiftedSubscription. |
Usa as chaves de metadados de inscrição compatíveis com Kick: eventType, subscriber, gifter, totalGifted, duration, e plan. |
donation |
Joystick StreamEvent tipos Tipped / TipMenu. |
hasDonation contém o valor e a unidade de tokens para conversão compartilhada em USD quando disponível, e a linha correspondente do bot do Joystick é deduplicada. meta usa as chaves estabelecidas de eventos de apoio do Kick: eventType, supporter, amount, currency, message, giftName, giftType, e tier. |
stream_online / stream_offline |
Joystick StreamEvent tipos como Started, StreamResuming, Ended, StreamEnding. |
Usado para automações online/offline que consideram o transporte. |
user_enter / user_leave |
Joystick UserPresence tipos enter_stream / leave_stream. |
Notificações de presença são emitidas como mensagens de evento e podem ser suprimidas pelas configurações de ocultar eventos. Ocultar eventos também suprime eventos de transmissão que não sejam doações. |
viewer_update |
A fonte do site com login recebe ViewerCountUpdated por EventLogChannel. |
Usa um inteiro simples meta, em correspondência com YouTube, Twitch e Kick. Emitido somente quando a contagem de espectadores ou modo Hype está ativado. A fonte separada com credenciais de bot ainda não recebe contagens de espectadores. |
follower_update / subscriber_update |
Eventos de atualização de contagem de seguidores/inscritos do Joystick. |
Usa um inteiro simples meta, em correspondência com o contrato de contagem do Twitch. |
| Notificações internas ignoradas |
ChatMessageReceived, estado do dispositivo e atualizações de widgets não mapeadas, como estado de meta de gorjetas/PvP/subathon. |
São notificações de transporte ou estado de página, não eventos do Social Stream. Não são convertidas em eventos inventados de snake_case nomes de eventos; o evento real ChatChannel/new_message continua sendo o único payload de chat. |
XP Sync
Implementação: sources/xpsync.js
- Linhas de chat usam os campos canônicos do payload com
type: "xpsync", incluindo autor, mensagem, avatar, distintivos de imagem e SVG embutido, cor do nome, associação, indicadores de moderador/membro/bot e o UUID nativo da mensagem como id quando disponível.
- Respostas seguem a convenção das fontes DOM de YouTube, Twitch e Kick: a menos que prefixos de resposta estejam desativados,
initial contém o usuário a quem a resposta se dirige, reply preserva a mensagem sem prefixo, e chatmessage recebe o prefixo visível da resposta.
- Linhas destacadas com Sparks são capturadas mesmo que o XPSync as renderize sem a classe normal de linha de chat ou ID de mensagem; o valor visível é disponibilizado por
hasDonation como N Sparks.
- Quando a captura de eventos está ativada, linhas contendo “acabou de seguir” ou “seguiu o canal” emitem
event: "new_follower".
- Quando contagens de espectadores estão ativadas, o dock permanente de chat emite
event: "viewer_update" da contagem de vídeo ao vivo já carregada pela página do XPSync e a atualiza pelas atualizações da página ao vivo do XPSync. Nenhuma credencial separada do SSN é necessária.
Instagram – Captura REST ao vivo e caixa de notícias
Implementação: sources/instagram.js e sources/instagramlive.js (cópias idênticas)
- Em páginas de live (
/<user>/live/?broadcast_id=...), o chat ao vivo vem da própria API web do Instagram, consultada periodicamente na mesma origem com o cookie de sessão: GET /api/v1/live/{broadcast_id}/get_comment/?last_comment_ts={ts} aproximadamente a cada 2s, e POST /api/v1/live/{broadcast_id}/heartbeat_and_get_viewer_count/ aproximadamente a cada 5s quando contagens de espectadores estão ativadas. Após 3 falhas consecutivas (ou quando não há broadcast_id pode ser descoberto), a fonte recorre à interpretação do DOM renderizado do chat.
- O feed de atividades da própria conta é consultado por
POST /api/v1/news/inbox/ aproximadamente a cada 45s em qualquer página do Instagram. A primeira consulta apenas inicializa o conjunto de deduplicação para que o histórico nunca seja reproduzido; notícias são deduplicadas por tuuid.
- Cabeçalhos necessários da API (todos estáticos/deriváveis):
X-IG-App-ID: 936619743392459, X-CSRFToken (do cookie), X-ASBD-ID: 359341, X-Requested-With: XMLHttpRequest, Content-Type: application/x-www-form-urlencoded.
- Todos os eventos do feed de atividades usam
type: "instagram"; o chat ao vivo permanece type: "instagramlive". Eventos de curtida usam o caminho normal de segundo plano: o serviço envia uma cópia à sobreposição dedicada de Reações e os inclui no feed principal de chat/eventos somente quando capturelikeevent está ativado, em correspondência com TikTok e MeetMe. hideevents e o filtro de eventos personalizados os bloqueiam em todos os lugares. Como os eventos da caixa de entrada pertencem à conta conectada, são suprimidos ao assistir à live de outra pessoa (tanto /<user>/live/ páginas e lives no visualizador de stories; a propriedade é resolvida por perfil e tentada novamente após falhas de consulta) e emitidos na sua própria live e em todas as páginas fora de lives. Uma aba ativa do Instagram consulta a caixa de entrada da conta por vez, e a consulta só ocorre com login feito.
| Evento |
Quando é disparado |
Notas do payload |
message (ao vivo) |
Novas entradas em get_comment resposta (comments[]/system_comments[]), ou novas linhas de chat do DOM quando REST estiver indisponível. |
Payload padrão de chat, type: "instagramlive". REST fornece os valores exatos de user.username, user.profile_pic_url, e um identificador único pk usado para deduplicação. |
viewer_update |
heartbeat_and_get_viewer_count informa uma alteração de viewer_count, quando a captura da contagem de espectadores ou o modo Hype estiver ativado. |
meta contagem inteira de espectadores. A consulta para quando broadcast_status não é mais "live". |
stream_online / stream_offline |
stream_online é disparado uma vez quando uma sessão de transmissão REST começa; stream_offline é disparado quando o heartbeat informa um estado fora do ar de broadcast_status (exige captura da contagem de espectadores ou modo Hype). |
Eventos apenas de metadados que correspondem ao vocabulário compartilhado de status de transmissão usado por Twitch e Joystick. |
new_follower |
Uma notícia da caixa de entrada com um tipo de seguidor notif_name (ou story_type 12) aparece. |
chatname é o novo seguidor, chatimg a imagem de perfil, chatmessage o texto da caixa de entrada (por exemplo, "x começou a seguir você."). |
follow_request |
Um private_user_follow_request aparece uma notícia (contas privadas recebem solicitações em vez de seguidores diretos). |
Mesmo formato de new_follower, mantidos distintos para que automações possam aprovar solicitações ou cumprimentar de forma diferente. |
liked |
Uma notícia da caixa de entrada com um tipo de curtida notif_name (incluindo comment_like) aparece. |
Vocabulário compartilhado de curtidas com TikTok/MeetMe. chatname é o autor, chatmessage o texto da caixa de entrada (por exemplo, "x curtiu sua foto."). |
message (comentário na própria publicação) |
Uma notícia da caixa de entrada com um tipo de comentário notif_name aparece. |
Linha simples de chat (event: false), type: "instagram"; chatmessage contém o texto da caixa de entrada, incluindo o trecho do comentário. |
notification |
Qualquer outro tipo de notícia da caixa de entrada (menções, marcações, compras e assim por diante). |
Categoria genérica abrangente; meta.notifName e meta.storyType preservam a classificação bruta da notícia. |
Facebook Live
Implementação: sources/facebook.js (extração do DOM) e ponte opcional da Graph API em sources/websocket/facebook.html
- A captura DOM lê comentários renderizados do Facebook; a ponte Graph API de Página gerenciada lê comentários de vídeos. Ambas usam
type: "facebook", os campos padrão de chat e nenhum event para comentários comuns. A ponte de API também inclui o campo opcional platform: "facebook".
- A ponte de API usa
userid para o ID do autor quando disponível, timestamp para um horário válido de criação em milissegundos Unix, e contentimg para uma imagem de anexo HTTP(S) fornecida pela API. Comentários somente com imagem podem ter um campo vazio chatmessage. textonly aplica-se apenas ao corpo da mensagem: texto bruto quando true, HTML escapado quando false.
- O contexto de comentários da API usa
meta.messageId (ID nativo do comentário), meta.permalink, meta.videoId, e meta.pageId. Versões anteriores da API usavam meta.commentId, campos duplicados de autor/tempo em meta, e transmitia anexos brutos ali. Novas versões usam os campos padrão de autor/tempo/mídia; isso não adiciona suporte à sincronização de exclusão.
- Contagens de espectadores só são atualizadas quando ativadas. A ponte de API lê visualizações simultâneas de
live_views; não substitui por visualizações cumulativas do vídeo nem inventa zero para uma contagem indisponível. A captura por API não deduz Estrelas, membros, destaques nem respostas de texto comum de comentários.
- Estrelas são capturadas do DOM renderizado do chat ao vivo quando o Facebook mostra o elemento visível
N sent marcador; preenchem hasDonation e donoValue a 100 Estrelas = US$ 1 sem definir data.event.
- Para testar, adicione
ssnreplay=1 à URL do Facebook Live para processar linhas de chat já visíveis após atualizar.
| Evento |
Quando é disparado |
Notas do payload |
viewer_update |
O DOM consulta o indicador de espectadores ao vivo; a ponte de API consulta visualizações simultâneas ao vivo quando ativada. |
meta contagem inteira de espectadores, em correspondência com outras fontes. Contagens ausentes ou não interpretáveis são ignoradas; zero real é válido. |
hasDonation |
Estrelas do Facebook renderizadas no DOM do chat ao vivo. |
Payload padrão de chat; hasDonation contém a quantidade visível de Estrelas, como 100 Stars, e donoValue contém o valor em USD. Estrelas não definem data.event. |
highlightColor |
O Facebook renderiza um elemento visível HIGHLIGHTED rótulo. |
Usa os campos normais de chat e highlightColor; nenhum data.event é definido. Estrelas ainda usam hasDonation. |
Online Church
Implementação: sources/onlinechurch.js
- Depende de extração DOM do chat público e do cabeçalho de mídia.
- Contagens de espectadores só são atualizadas quando Mostrar contagem de espectadores ou modo Hype está ativado.
| Evento |
Quando é disparado |
Notas do payload |
message |
Novas entradas aparecem sob #publicchat. |
Payload padrão de chat com nome do remetente, avatar, distintivos e rótulo opcional de membro quando presente no DOM. |
viewer_update |
Consulta o indicador de público ao vivo no cabeçalho de mídia a cada 10s. |
meta contagem inteira de espectadores; envia 0 quando o indicador está ausente ou ilegível, para limpar contadores desatualizados. |
SharePlay.tv
Implementação: sources/shareplay.js
- Depende de extração DOM da gaveta de chat ao vivo nas páginas de canais do SharePlay.
- Somente linhas e cartões de chat recém-inseridos são emitidos depois que o extrator se conecta; o histórico existente é ignorado intencionalmente.
| Evento |
Quando é disparado |
Notas do payload |
message |
Novas linhas de chat aparecem no feed principal. |
Payload padrão de chat com autor, avatar, imagens de distintivos e emotes preservados em HTML. Respostas em conversas também preenchem initial, reply, e meta.reply quando a linha anterior ainda está presente. |
raid |
O SharePlay insere um cartão Blitz no feed de chat ao vivo. |
Mapeado para o evento canônico de raid. meta.cardType é "blitz", com opcional meta.fromLogin e meta.viewers quando o texto do cartão os disponibiliza. |
shoutout |
O SharePlay insere um cartão de divulgação/seguidor no feed de chat. |
Emitido como data.event = "shoutout". A imagem do banner do cartão é encaminhada por contentimg, enquanto meta.cardType e meta.action preservam o rótulo do cartão/texto do botão. |
viewer_update |
Consulta o indicador visível de espectadores no cabeçalho a cada 10s. |
meta contagem inteira de espectadores; emitida somente quando Mostrar contagem de espectadores ou modo Hype está ativado, e envia 0 se o indicador ficar ilegível, para limpar contadores desatualizados. |
Streamplace
Implementação: sources/streamplace.js
- Lê a página ao vivo do Streamplace renderizada pelo React e ignora o histórico visível do chat ao conectar.
- Mensagens no estilo relay, como
Name (Discord): message são normalizados para o nome do remetente repassado.
| Evento |
Quando é disparado |
Notas do payload |
message |
Novas linhas de chat do Streamplace aparecem após a conexão. |
Payload padrão de chat com nameColor, chatbadges, links preservados em HTML e campos de resposta initial, reply, e meta.reply quando visível. |
viewer_update |
O indicador de espectadores do cabeçalho muda enquanto a captura de contagem de espectadores ou modo Hype está ativado. |
meta contagem inteira de espectadores. |
WorldsWave
Implementação: sources/worldswave.js
- Oferece suporte a páginas ao vivo do WorldsWave e URLs somente de chat, como
https://worldswave.com/kn_livecmd.php?cmd=viewStream&streamId=STREAM_ID&chatonly=1.
- Usa o identificador estável
data-ww-*/ww-chat-* marcação quando disponível, mantendo os seletores kontackt legados para páginas somente de chat e layouts antigos.
- O histórico existente do chat é ignorado quando a captura se conecta; teste com uma nova mensagem.
- Contagens de espectadores exigem Mostrar contagem de espectadores ou modo Hype. Eventos dedicados de presente/gorjeta e envio de respostas não são implementados. Uma linha renderizada ainda pode fornecer um rótulo de doação por
data-ww-donation.
| Evento |
Quando é disparado |
Notas do payload |
message |
Aparece uma nova linha de chat renderizada do WorldsWave. |
Payload padrão de chat com type: "worldswave", nome do remetente, avatar, ID opcional de usuário, cor do nome, distintivos, estado de moderador, associação, valor de doação, anexo e identidade do canal. IDs estáveis de mensagens do WorldsWave são disponibilizados como meta.messageId e deduplicados entre painéis simultâneos de prévia/chat completo. Imagens embutidas nas mensagens continuam higienizadas quando o modo somente texto está desativado. |
viewer_update |
O total visível de espectadores ao vivo muda enquanto a captura de contagem de espectadores ou modo Hype está ativado. |
meta é a contagem inteira de espectadores. O identificador estável data-ww-viewer-count é preferido; valores legados compactos, como 1.2K são normalizados como alternativa. |
FLEX TV
Implementação: sources/flextv.js
- Lê o painel renderizado de chat em
https://www.flextv.co.kr/channels/*/live páginas.
- O painel de chat precisa estar visível. O histórico existente é ignorado quando a fonte se conecta; teste com uma nova linha de chat.
- Ainda não há caminho documentado de contagem de espectadores, doações ou envio de respostas para esta fonte.
| Evento |
Quando é disparado |
Notas do payload |
message |
Novo elemento visível do FLEX TV .chat-item aparecem no feed de chat ao vivo. |
Payload padrão de chat com type: "flextv", chatname, chatmessage, nameColor, imagens de distintivos em chatbadges, e detalhes de membros FLEX em meta quando disponibilizado por data-member. |
Seal Team Sloth
Implementação: sources/sealteamsloth.js
- Lê o chat renderizado em janela separada em
https://sealteamsloth.com/popout-chat/* páginas.
- Contagens de espectadores exigem Mostrar contagem de espectadores ou modo Hype.
| Evento |
Quando é disparado |
Notas do payload |
message |
Aparece uma nova linha de chat renderizada do Seal Team Sloth. |
Payload padrão de chat com type: "sealteamsloth", nome do remetente, avatar e conteúdo da mensagem. |
viewer_update |
O total visível de espectadores ao vivo muda enquanto a captura de contagem de espectadores ou modo Hype está ativado. |
meta é a contagem inteira de espectadores; valores compactos, como 1.2K são normalizados. |
MeetMe - Captura DOM e WebSocket
Implementação: sources/meetme.js
- Lê o DOM renderizado do chat ao vivo do MeetMe em
app.meetme.com/live/view/... páginas e dentro de api.gateway.meetme-live.com/web-live/... iframe.
- Quando o WebSocket do iframe está disponível,
wss://video-live.meetme.com/ são interpretados antes da alternativa DOM para capturar eventos ao vivo mais completos.
hideevents suprime eventos que não sejam doações; presentes e doações de diamantes do MeetMe ainda preenchem campos de doação. capturejoinedevent ativa avisos de entrada/reentrada. Eventos com autor identificado de liked usam o encaminhamento compartilhado em segundo plano controlado por capturelikeevent; agregado reaction continuam direcionados explicitamente à Sobreposição de reações.
- Contagens de espectadores preferem a contagem visível no cabeçalho do MeetMe, recorrendo a totais WebSocket apenas quando a contagem DOM está indisponível. São emitidas quando mudam e repetem a contagem mais recente aproximadamente a cada 30 segundos enquanto
showviewercount/hypemode está ativado; totais de seguidores só são enviados quando mudam e são limitados a aproximadamente 60 segundos.
| Evento |
Quando é disparado |
Notas do payload |
message |
Novo SNSChatMessage chegam quadros WebSocket, ou novos ChatMessage_* Linhas DOM aparecem em ChatHistoryContainer_*. |
Payload padrão de chat com nome do remetente, avatar, HTML/texto da mensagem e imagens/texto de distintivos. Detalhes das linhas DOM são campos planos em meta chaves, incluindo messageId, roomId, level, levelColor, badgeLabels, badgeSrcs, badgeClasses, isBouncer, isTopStreamer, isBestOfTheWeek, rank, e rowClassName. Payloads WebSocket definem meta.source = "websocket". |
joined / rejoined / left |
SNSChatParticipant chegam quadros WebSocket de criação, atualização ou exclusão, ou o MeetMe renderiza um elemento DOM join-cell linha. Avisos de entrada/reentrada exigem Capturar eventos "joined" da transmissão. |
Emite avisos de sistema no estilo chat com nome/avatar do autor quando o MeetMe os disponibiliza. meta.isNewViewer, meta.viewerLevelId, meta.isBouncer, e meta.isSubscriber preservam o estado dos participantes. |
new_follower |
O MeetMe renderiza uma linha DOM de favorito/seguidor, como Favorited. |
Usa o vocabulário compartilhado de eventos de seguidores. chatname é o autor, chatimg é a foto de perfil detectada quando disponível, e campos planos meta.favoriteText/meta.targetName preservam os detalhes originais da linha. |
gift |
SNSGiftMessage chegam quadros WebSocket, ou o MeetMe renderiza uma imagem de presente em uma linha de chat. |
hasDonation contém o rótulo visível do presente ou o valor em diamantes, contentimg contém a imagem do presente quando disponibilizada, e chaves planas como meta.giftName, meta.giftCount, meta.amount, e meta.currency preservam detalhes estruturados. O gift é reservado a quadros/linhas reais de presentes; a renderização de doações ainda deve usar hasDonation. |
donation |
SNSDiamond quadros WebSocket disponibilizam atividade de diamantes. |
Quadros dedicados de diamantes são tratados como eventos de doação. hasDonation é formatado como diamantes para conversão compartilhada em USD, e meta.amount/meta.currency permanecem planos para automações. |
liked / reaction |
SNSLike chegam quadros WebSocket. |
Curtidas com autor identificado usam o mesmo liked vocabulário e encaminhamento centralizado em segundo plano do TikTok. Totais agregados/anônimos de curtidas são enviados apenas ao destino de reações como reaction, com campos planos meta.reactionType, meta.totalLikes, e meta.subscriberLikes. A distinção é o significado do evento, não o anonimato: capturelikeevent controla apenas eventos individuais de liked/like eventos. |
follower_update |
SNSVideo metadados WebSocket disponibilizam totais de seguidores. |
meta é a contagem inteira de seguidores, conforme a convenção compartilhada de eventos de contagem. |
guest_update |
SNSVideoGuestBroadcast chegam quadros de criação/atualização. |
Evento apenas de metadados para estado de convidado/coapresentador ao vivo. Campos planos meta as chaves incluem status, position, totalGuests, isMuted, guestBroadcastId, videoViewerId, e broadcastId. |
viewer_update |
O indicador visível de espectadores no cabeçalho muda, ou SNSVideo metadados WebSocket disponibilizam totais de espectadores quando o indicador está indisponível; totais inalterados são repetidos aproximadamente a cada 30 segundos enquanto ativados. |
meta contagem inteira de espectadores; emitida somente quando a captura de contagem de espectadores ou o modo Hype está ativado. |
Velora
Implementação: sources/velora.js e sources/websocket/velora.js
- O modo Standard lê o DOM visível do chat; o modo WebSocket usa a API de eventos do Velora com OAuth.
- URLs compatíveis do modo Standard incluem
https://velora.tv/*, https://velora.tv/dashboard/stream/popout?panels=chat%2Cactivity&channel=CHANNEL&layout=vertical, e https://velora.tv/dashboard/stream/popout/CHANNEL/obs-chat.
- Cartões no estilo Volts e Pontos do Canal são emitidos como payloads de evento quando disponibilizados pelo DOM ou API de eventos.
| Evento |
Quando é disparado |
Notas do payload |
message |
Novas linhas de chat do Velora aparecem ou mensagens de chat da API de eventos chegam. |
Payload padrão de chat com distintivos, cor do autor, links e emotes preservados quando não estiver no modo somente texto. |
volts |
Cartões Volts do Velora ou channel.volts Chegam payloads da API de eventos. |
hasDonation contém o valor exibido em Volts; capturas DOM incluem meta.source = "dom". |
channel_points |
Cartões de Pontos do Canal/resgate do Velora ou channel.channel_points_redemption Chegam payloads da API de eventos. |
chatmessage contém a mensagem de resgate ou o título da recompensa; meta.rewardTitle identifica a recompensa quando disponível. |
subscription |
Uma linha visível de atividade do Velora informa que um usuário se tornou membro/inscrito do canal. |
membership contém o rótulo visível de membro. |
viewer_update |
A contagem visível de espectadores muda enquanto a captura de contagem de espectadores ou o modo Hype está ativado. |
meta contagem inteira de espectadores. |
Parti - Captura de chat de perfil / janela separada
Implementação: sources/parti.js
- Oferece suporte a URLs de perfil, como
https://parti.com/USERNAME e URLs de janela separada, como https://parti.com/popout-chat?id=USER_ID.
- Contagens de espectadores usam o endpoint heartbeat da transmissão do Parti quando a captura de espectadores ou o modo Hype está ativado.
| Evento |
Quando é disparado |
Notas do payload |
message |
Linhas visíveis de chat do Parti aparecem no fluxo de chat do perfil ou da janela separada. |
Payload padrão de chat; nameColor preserva a cor renderizada do autor do Parti e chatmessage preserva o conteúdo embutido, a menos que o modo somente texto esteja ativado. |
donation |
Linhas visíveis de gorjetas do Parti informam que um usuário deu determinado valor. |
hasDonation contém o valor exibido, meta.amount/meta.currency são preenchidos quando interpretáveis, meta.amountText preserva o texto bruto do valor, e donoValue é definido para gorjetas em USD. |
viewer_update |
O heartbeat do Parti retorna uma contagem de espectadores ao vivo. |
meta é a contagem inteira de espectadores; a página reutiliza um token de heartbeat por janela de fonte para evitar inflar as contagens. |
CHZZK - Captura de chat em janela separada
Implementação: sources/chzzk.js
- Oferece suporte a
https://chzzk.naver.com/live/*/chat e https://chzzk.naver.com/iframe/live/*/chat.
- Contagens de espectadores usam o endpoint de consulta de status ao vivo do CHZZK quando a captura de espectadores ou o modo Hype está ativado.
| Evento |
Quando é disparado |
Notas do payload |
message |
Linhas visíveis de chat do CHZZK aparecem no fluxo de chat em janela separada. |
Payload padrão de chat com type: "chzzk", nameColor, URLs de imagens de distintivos em chatbadges, e emotes renderizados em chatmessage a menos que o modo somente texto esteja ativado. |
chat com hasDonation |
Linhas visíveis de doações de queijo do CHZZK aparecem no chat. |
hasDonation contém o valor exibido em queijo. Essas linhas não definem data.event. |
viewer_update |
A consulta de status ao vivo retorna uma contagem de espectadores. |
meta é a contagem inteira de espectadores. |
Rumble - Captura DOM Standard
Implementação: sources/rumble.js
- Exige cookies de sessão autenticada para que o
service.php a API de espectadores responde.
- Linhas renderizadas de Rant fornecem
hasDonation; cartões de raids recebidas fornecem event: "raid". Esta fonte DOM não emite o feed de eventos de inscritos/seguidores da ponte de API.
| Evento |
Quando é disparado |
Notas do payload |
message |
Linhas visíveis de chat do Rumble aparecem na página ou no popup de chat. |
Payload padrão de chat; chatmessage preserva o HTML de imagens de emotes do Rumble depois que a página renderiza, a menos que o modo somente texto esteja ativado. |
viewer_update |
Chama o endpoint do Rumble video.watching-now serviço a cada 30s. |
meta contagem inteira de espectadores; usa credentials: 'include' para reutilizar cookies de sessão. |
chat com hasDonation | Uma linha visível de Rant contém um preço. | hasDonation preserva o preço renderizado; nenhum marcador de evento de doação é adicionado. |
raid | Um cartão de raid recebida aparece no chat. | Usa a mensagem visível de raid e a imagem opcional do cartão em contentimg. |
Rumble - WebSocket/URL da API
Implementação: sources/websocket/rumble.js
- Exige a URL da Live Stream API controlada pelo criador, obtida em
https://rumble.com/account/livestream-api. O Rumble documenta que esta URL inclui a chave de transmissão ao vivo, não exige autenticação separada e só deve ser compartilhada com terceiros confiáveis.
- Transporte somente leitura. A documentação pública da Rumble Live Stream API não descreve um endpoint oficial de envio de chat, portanto esta fonte repassa mensagens/eventos ao Social Stream, mas não envia chat de volta ao Rumble.
livestreams[].chat só é preenchido enquanto a transmissão selecionada está ao vivo. Use ?streamId=... para fixar uma transmissão específica quando a API disponibiliza mais de uma; IDs inválidos agora falham em vez de recorrer silenciosamente a outra transmissão.
- A página também resolve
https://rumble.com/chat/popup/<livestreams[].id> para que você possa abrir diretamente o popup normal injetado de chat sem primeiro carregar a página do criador /live página.
| Evento |
Quando é disparado |
Notas do payload |
message |
Novas entradas chegam do fluxo de chat SSE do Rumble depois que a API oficial resolve livestreams[].id; recorre a livestreams[].chat.recent_messages. |
Payload padrão de chat. meta.source é rumble_sse quando o fluxo de chat SSE está disponível e inclui URLs de avatar de users[].image.1; caso contrário, recorre a live_stream_api sem avatares. Quando o catálogo de emotes do popup está disponível, chatmessage renderiza emotes de código curto do Rumble como HTML de imagem e meta.plainText preserva o texto original do código curto. |
donation |
Novas entradas de rant aparecem em livestreams[].chat.recent_rants. |
hasDonation contém o valor formatado em USD; meta inclui amount_cents, amount_dollars, e expiresOn. |
new_follower |
Novas entradas aparecem em followers.recent_followers. |
Evento de sistema com chatname definido para o nome de usuário do seguidor e horário em meta.followedOn. |
new_subscriber |
Novas entradas aparecem em subscribers.recent_subscribers. |
membership é definido como SUBSCRIBER; subtitle espelha o valor documentado em USD quando fornecido pelo Rumble. |
subscription_gift |
Novas entradas aparecem em gifted_subs.recent_gifted_subs. |
chatname é quem presenteou, hasDonation torna-se N Gifted, e meta inclui totalGifted, remainingGifts, giftType, e videoId. |
follower_update |
Sempre que o contador de seguidores selecionado muda. |
meta contagem inteira de seguidores. O padrão é followers.num_followers; com ?followerMode=total, usa followers.num_followers_total quando fornecido pelo Rumble. |
subscriber_update |
Sempre que subscribers.num_subscribers muda. |
meta contagem inteira de inscritos. |
stream_online / stream_offline |
Quando a transmissão selecionada alterna entre estados ao vivo e offline. |
meta inclui um subconjunto higienizado dos campos da transmissão (id, title, createdOn, rótulos de categoria, curtidas/descurtidas e totais de espectadores). Valores confidenciais, como stream_key não são encaminhados intencionalmente. |
viewer_update |
Sempre que livestreams[].watching_now muda para a transmissão selecionada. |
meta contagem inteira de espectadores simultâneos; emite 0 quando a transmissão selecionada fica offline, para limpar contadores desatualizados. |
Este transporte destina-se a canais que você possui ou gerencia. Como a URL da API contém uma chave de transmissão ao vivo, não a exponha em sobreposições, registros, capturas de tela ou perfis compartilhados de navegador. Avatares do chat vêm do fluxo SSE do Rumble depois que a API oficial resolve o ID da transmissão; este transporte não extrai avatares de páginas do Rumble.
YouNow - Captura DOM
Implementação: sources/younow.js
- Lê o DOM renderizado do chat ao vivo e emite payloads padrão de chat com
type: "younow".
- Linhas de atividade do público, como
is watching, I became a fan!, e invited N fans to this broadcast. são marcados com event: true para que filtros de eventos possam encaminhá-los.
| Evento |
Quando é disparado |
Notas do payload |
message |
Novas linhas aparecem no chat ao vivo do público. |
Payload padrão de chat; linhas de atividades de fãs/público definem event: true. |
viewer_update |
A contagem visível no painel do público muda enquanto showviewercount/hypemode está ativado. |
meta contagem inteira de espectadores; emite 0 quando o contador desaparece. |
Favorited Studio - Captura DOM
Implementação: sources/favorited.js
- Lê o DOM renderizado do chat ao vivo e emite payloads padrão de chat com
type: "favorited".
| Evento |
Quando é disparado |
Notas do payload |
message |
Novas linhas de chat aparecem. |
Payload padrão de chat. |
viewer_update |
A contagem da aba de espectadores ao vivo muda enquanto showviewercount/hypemode está ativado. |
meta contagem inteira de espectadores lida de content-live-viewers aba. |
BEAM - Captura DOM
Implementação: sources/beamstream.js
- Lê o DOM renderizado do chat ao vivo e emite payloads padrão de chat com
type: "beamstream".
| Evento |
Quando é disparado |
Notas do payload |
message |
Novas linhas de chat aparecem. |
Payload padrão de chat com texto simples em chatname, URL do avatar em chatimg, e URLs de imagens ou objetos de distintivos SVG em chatbadges. Campos ocultos na página de captura do Beam permanecem vazios. Links nativos de perfis do Beam não são tratados como fontes externas de relay. contentimg pode conter anexos embutidos de vídeo/webm quando disponibilizados. |
viewer_update |
Um elemento de contagem de espectadores muda enquanto showviewercount/hypemode está ativado. |
meta contagem inteira de espectadores; emitida somente quando a página de chat disponibiliza um contador. |
Castyr - Captura DOM
Implementação: sources/castyr.js
- Lê novas linhas renderizadas de chat de
https://castyr.live/homebeta/popout-chat/* e emite payloads padrão de chat com type: "castyr".
- O histórico existente do chat é ignorado quando a fonte se conecta.
| Evento |
Quando é disparado |
Notas do payload |
message |
Um novo .chat-message aparece uma linha. |
Payload padrão de chat com nome do remetente, conteúdo renderizado da mensagem e cor do nome quando disponibilizada. |
viewer_update |
A contagem visível de participantes ativos do chat muda enquanto showviewercount/hypemode está ativado. |
meta é a contagem inteira lida do elemento de chat ativo com título do Castyr. |
SOOP - Captura DOM do player
Implementação: sources/sooplive.js. Oferece suporte ao formato unificado play.sooplive.com player e o legado play.sooplive.co.kr URLs. O antigo layout global de chat continua sendo reconhecido quando servido.
O chat público emite type/platform: "sooplive", texto simples chatname/userid, nameColor, e higienizado chatmessage. Linhas existentes, IDs duplicados de mensagens, cópias traduzidas e sussurros privados são excluídos. Emotes se tornam imagens seguras ou texto alternativo no modo somente texto.
Com showviewercount ou hypemode ativado, viewer_update contém um inteiro meta do campo do player #nAllViewer. Janelas separadas somente de chat podem não disponibilizar essa contagem. O SSApp usa o player completo ao abrir uma janela destacada, pois os popups atuais do SOOP dependem da janela que os abriu.
Gosh - Captura de chat do canal
Implementação: sources/gosh.js. Abra https://gosh.com/USERNAME com o chat visível, ou cole essa URL em Adicionar outra fonte no SSApp. Não é necessária uma janela separada de chat.
Novas linhas de chat emitem type/platform: "gosh", texto simples chatname, nameColor, e higienizado chatmessage. Imagens e GIFs embutidos mantêm URLs HTTP(S) seguras. Com textonlymode, imagens se tornam texto alternativo ou [image] quando nenhum texto alternativo está disponível. Avatares, distintivos, doações e membros permanecem vazios quando ausentes da linha capturada.
Mantenha o chat virtualizado rolado até as mensagens mais recentes. Histórico existente, linhas renderizadas novamente e avisos de sistema sem autor são excluídos. Índices de renderização ficam internos e não são emitidos como IDs nativos de mensagens. Nenhum evento de seguidor, doação, contagem de espectadores ou moderação é inferido.
Livacha - Captura de sala de chat
Implementação: sources/livacha.js. Abra https://livacha.com/chat/ROOM com o chat visível, ou cole a URL da sala em Adicionar outra fonte no SSApp.
Novas linhas de chat emitem type/platform: "livacha", texto simples chatname, chatimg, nameColor, e higienizado chatmessage. URLs relativas de avatares e imagens embutidas se tornam URLs HTTP(S) absolutas. Parágrafos, quebras de linha e listas são condensados em uma mensagem de chat. Com textonlymode, imagens se tornam texto alternativo ou [image].
IDs de mensagens são usados internamente para evitar recapturar edições e linhas remontadas. Histórico inicial e mensagens antigas adicionadas no início são ignorados; horários e menus de reações ficam fora do corpo capturado. Nenhum evento de doação, membro, moderação ou contagem de espectadores é inferido.
Stream.space - Captura DOM experimental
Implementação: sources/streamspace.js. Corresponde somente a https://beta.stream.space/chat-popup.php?channel=USERNAME e o equivalente https://stream.space popup.
Novas linhas renderizadas de chat emitem type: "streamspace", platform: "streamspace", texto simples chatname/userid, chatmessage, avatar chatimg, nível baseado em imagem chatbadges, e nameColor. Emotes embutidos são reconstruídos como imagens seguras ou seu texto alternativo quando textonlymode está ativado. Histórico existente, avisos de boas-vindas, prévias de respostas e duplicatas fixadas são excluídos.
viewer_update contém um inteiro meta lido de #popupViewersNum quando showviewercount ou hypemode está ativado. Nenhum evento de doação, membro ou moderação é inferido.
Experimental: o popup beta permaneceu em Carregando durante a inspeção. O SSApp carregou o popup e capturou atualizações de espectadores, mas a entrega de chat ao vivo e o popup de produção continuam sem verificação. O SSN não consegue capturar mensagens que o site não renderiza.
w.tv e Prime - Captura DOM
Implementações: sources/wtv.js em https://w.tv/USERNAME/chat e sources/prime.js em https://prime.gs/USERNAME?chat_popout=1.
Novas linhas de chat usam type/platform de wtv ou prime, texto simples chatname, nameColor, e higienizado chatmessage. Emotes embutidos se tornam imagens seguras ou texto alternativo no modo somente texto. Prime também inclui o campo da linha userid e aceita tanto links de perfil com login quanto rótulos de nome de usuário sem login. Avatares e distintivos ficam vazios quando indisponíveis na estrutura verificada da linha.
Histórico inicial, cartões fixados e prévias de respostas são excluídos. O w.tv virtualiza o chat: mantenha-o rolado até as mensagens mais recentes para capturar. Seus IDs de teste do DOM são índices de renderização, não IDs nativos de mensagens. Prime ignora históricos antigos carregados acima das mensagens iniciais e marcadores de usuários ignorados.
Nenhum dos popups disponibiliza uma contagem verificada de espectadores, portanto esses adaptadores não emitem atualizações de espectadores nem inferem eventos de doação, inscrição ou moderação.
Limites de cobertura e compatibilidade
Esta referência descreve payloads implementados, não uma garantia de que toda plataforma entregue todos os eventos. Valores vazios de hasDonation em uma fonte não demonstram suporte a doações. Visibilidade do DOM, permissões da conta, opções de captura e disponibilidade da API ainda determinam o que é recebido. O encaminhamento de exclusões é específico de cada fonte; não presuma sincronização universal de moderação.
Divergências e ausências acompanhadas
| Par/área |
Divergência / ausência observada |
Impacto |
| Twitch: Standard versus WebSocket |
Compartilhado: reward, subscription_gift, viewer_update, hype_train, e opcional watch_streak. Somente Standard: giftpurchase, knock, community_highlight. Somente WebSocket: new_subscriber, resub, cheer, powerup, raid, new_follower, follower_update, subscriber_update. |
channel_points agora é um alias legado obsoleto para resgates de recompensas do Twitch; novas integrações devem usar reward. |
| Kick: Standard versus WebSocket |
Standard emite marcadores simples (gift, reward, booleano true, viewer_update). WebSocket adiciona eventos oficiais de seguidores, inscrições, presentes, resgate de recompensas, KICKs, moderação e status ao vivo. Mantém o tratamento de compatibilidade para um evento legado raid payload, mas o Kick atualmente não oferece uma assinatura oficial de raid/host. |
O modo WebSocket é mais completo; automações baseadas em nomes de eventos exclusivos do Standard devem ser revisadas ao mudar. Não exija um evento de raid do Kick. |
| YouTube: Standard versus WebSocket |
Compartilhado: superchat, supersticker, jeweldonation, sponsorship, resub, giftpurchase, giftredemption, viewer_update. Somente Standard: thankyou, redirect. Somente WebSocket: membermilestone, new_follower, subscriber_update, view_update, likes_update (ativação opcional). |
Os nomes principais de eventos/membros são alinhados em ambos; Super Chat, Super Sticker e Joias usam hasDonation, enquanto compras/resgates de presentes de membros não. |
| Todas as interfaces |
Muitas fontes preenchem hasDonation sem definir data.event. |
Isso está correto; a renderização de doações deve usar hasDonation, com data.event reservado à semântica de sistema/evento. |
Aliases e nomes legados específicos de fontes
Esses mapeamentos são específicos da fonte/contexto listado, não substituições globais. O suporte a aliases pelos consumidores varia por página. As fontes atuais TikTok DOM e TikFinity ainda emitem followed; Velora usa subscription e channel_points, e o Streamlabs usa subscription. Aceite o contrato atual da fonte e seus aliases legados relevantes em vez de renomear todos os eventos correspondentes.
| Alias / nome legado |
Substituição canônica |
Contexto |
subscription | new_subscriber | Nova inscrição do Twitch/Kick |
subgift | subscription_gift | Inscrição presenteada do Twitch |
membership | sponsorship | Novo membro do YouTube (genérico) |
new_member | sponsorship | Novo membro do YouTube |
new_membership | sponsorship | Novo membro do YouTube |
newmember | sponsorship | Novo membro do YouTube |
new-membership | sponsorship | Extrator DOM do YouTube (variante com hífen) |
upgraded_membership | resub | Upgrade de nível do YouTube |
upgraded-membership | resub | Extrator DOM do YouTube (variante com hífen) |
membership_upgrade | resub | Upgrade de nível do YouTube |
membership_milestone | membermilestone | Mensagem de marco do YouTube |
member_milestone | membermilestone | Mensagem de marco do YouTube (variante com sublinhado) |
gift_membership | giftpurchase | Pacote de presentes do YouTube |
membership_gift | giftpurchase | Pacote de presentes do YouTube |
giftmemberships | giftpurchase | Pacote de presentes do YouTube (variante plural) |
gifted_membership | giftredemption | Presente recebido no YouTube |
gifted_memberships | giftpurchase | Pacote de presentes do YouTube (variante plural) |
community_gift | giftpurchase | Pacote comunitário de presentes |
channel_points | reward | Resgate de recompensa do Twitch WebSocket (alias legado) |
followed | new_follower | Saída atual do TikTok DOM/TikFinity; aceite ambos os nomes ao combinar modos de captura do TikTok. |
Usar esta referência
- Ao adicionar um evento, reutilize o vocabulário existente (
subscription_gift, viewer_update, etc.) sempre que possível. Se um desvio for inevitável, documente-o aqui junto com a justificativa.
- Mantenha
data.meta previsível: prefira chaves planas, nunca sobrecarregue strings com dados mistos e sempre inclua unidades (currency, bits, duration).
- Atualize esta página junto com mudanças nos payloads; atualize as instruções dos agentes somente quando regras compartilhadas de desenvolvimento mudarem.
- Valide mudanças nos payloads tanto na fonte emissora quanto na sobreposição ou gatilho do Event Flow consumidor.
- A captura depende do suporte da fonte e das configurações. Para ocultar linhas marcadas como evento no dock ou nas sobreposições de destaque, adicione
&hideevents ou &hideallevents. Para ocultar eventos selecionados, use &filterevents=subscription_gift,new_follower,gifted.
- Para YouTube, Twitch e Kick, ative Modo WebSocket para o suporte mais amplo a eventos específicos da plataforma. A captura de presentes/doações do YouTube (incluindo presentes e Super Chats) está disponível nos modos Standard e WebSocket; WebSocket adiciona outros tipos de evento. O suporte exato ainda varia conforme plataforma, função da conta e escopos concedidos.
Voltar ao topo
Sobreposições de monetização
Gorjetas do NinjaBacker usam platform: "ninjabacker", type: "ninjabacker", chatname, texto simples chatmessage, textonly: true, um campo com prefixo da fonte id, formatado hasDonation, e numérico donoValue. São linhas comuns no estilo doação sem um event substituição. meta.ninjabacker contém o horário ISO currency e em unidade principal amount. Gorjetas anônimas usam o nome de exibição Anonymous. A fonte usa SSE ao vivo (sem reprodução de histórico) ou o receptor opcional de webhook assinado na API do SSN (até sete dias de entrega enfileirada). Entregas confiáveis usam um identificador estável ninjabacker:delivery:DELIVERY_ID ID. Nenhum modo recebe estornos de reembolso/contestação. Credenciais de receptor e segredos de assinatura nunca entram nos payloads de eventos. Valores callbackId controlados pelo chamador não são identidade de pagamento e não são encaminhados. Gorjetas de teste do painel são excluídas das linhas de doação. Elas emitem event: "monetization_test" com meta.ninjabackerTest contendo id e at (milissegundos Unix), apenas para o alerta dedicado de prévia.
event: "monetization_update" é um retrato apenas de metadados de type/platform: "socialstream". meta.monetization.wishlist contém enabled, qr, position, rank, total, url pública e o item atual (name, amount, currency, image, url pública) ou null. meta.monetization.ninja contém enabled, qr, position, username e a url pública de gorjetas. Tip IDs privados nunca são incluídos. meta.monetization.ebay contém enabled, qr, position, display (cycle/cheapest/first), seconds, configurações opcionais de anúncios e itens públicos. Cada item tem id, name, amount, currency, image, url, auction, startingBid, endsAt, available, bought e updatedAt. Os horários são milissegundos Unix. Nenhuma credencial de vendedor nem identidade de comprador é incluída.
Uma compra de lista de desejos confirmada pelo anfitrião também inclui meta.wishlistPurchase com id, name, supporter opcional e at (milissegundos Unix). Isso é uma confirmação do anfitrião, não uma notificação de pagamento da Amazon, e não conta como doação monetária. Sobreposições devem deduplicar seu id e ignorar avisos antigos de compra.
Pedidos pagos do Shopify
O receptor opcional assinado do Shopify emite platform/type: "shopify" e event: "purchase" somente para orders/paid com financial_status: "paid", um total positivo, test: false, sem cancelamento e com um horário atual de atualização do corpo assinado. Notificações de teste, não pagas, antigas, canceladas e de reembolso não emitem ações de compra. Nenhuma intenção de presente é inferida.
chatname é Anonymous; campos de clientes, notas privadas e URLs de pedidos são excluídos. chatmessage é texto simples com textonly: true; subtitle contém até três títulos públicos de produtos. meta.commerce contém orderTotal e currency na moeda da loja, além de quantity quando uma contagem completa válida é conhecida. Destinatário e finalidade física/digital permanecem indefinidos. Sem hasDonation ou donoValue é definido. id é um hash opaco estável restrito à loja/pedido com prefixo Shopify; não é um identificador bruto de pedido.
Compras usam os caminhos existentes de atividade, categoria Compra do Multi Alerts e Event Flow. A promoção de produtos usa o recurso existente meta.monetization.commerce catálogo. Importar um produto ou definir seu rótulo promocional como Presente não gera evento de compra nem de presente. Configuração do Shopify e limites de entrega.
Presentes e comércio
Use event: "gift" para um presente, giftcontribution para apoio pago destinado a um presente, giftfunded para conclusão de financiamento, e purchase para uma venda de produto. Esses nomes independem do provedor e de o item ser físico ou digital. Reserve o legado giftpurchase para membros presenteados; o Throne usava esse nome incorretamente e agora emite gift. Os produtores existentes de eventos de membros permanecem inalterados. Filtros personalizados de nomes de eventos do Throne devem mudar para gift; filtros de doações não precisam mudar.
hasDonation continua sendo o sinal de compatibilidade para apoio pago, com donoValue com seu valor em USD fornecido ou estimado. Presentes e contribuições mantêm esses campos. A conclusão do financiamento omite ambos para evitar contar contribuições duas vezes. Vendas comuns de produtos os omitem por padrão, preservando o contrato do eBay. Não deduza intenção de presente a partir de uma loja, URL de lista de desejos ou item físico: uma compra para o comprador ou outro destinatário continua sendo venda, a menos que a fonte identifique explicitamente um presente para o criador.
Campo compartilhado opcional meta.commerce os campos são recipient (criador, comprador, outro), itemType (físico, digital, serviço), quantity (quantidade positiva de itens), currency (moeda ISO), goalAmount (alvo de financiamento em unidade principal, nunca nova receita), e orderTotal (total conhecido do pedido pago em unidade principal; comércio, não receita de doação). Omita detalhes desconhecidos. Mantenha os nomes de itens em subtitle, imagens em contentimg, e texto do apoiador em chatmessage. Os metadados existentes do provedor continuam disponíveis. O Throne fornece destinatário e moeda, além de goalAmount na conclusão; o eBay fornece quantidade. Nenhum tenta adivinhar o tipo de item nem expõe informações privadas do destinatário.
O feed de atividades exibe esses eventos mesmo sem texto do apoiador. O Multi Alerts usa a apresentação de doação para presentes e contribuições, incluindo uma notificação distinta de Presente totalmente financiado sem valor monetário. Compras têm uma categoria Compra separada, ativada por padrão, com purchasestyle, purchasesound, purchaseaccent, e disablepurchases de URL. Alertas de compra não mudam os totais de doações.
O Event Flow oferece esses nomes de evento nos gatilhos Tipo de evento e Outro evento. Gatilhos de doação ainda inspecionam hasDonation; gatilhos de inscrição presenteada mantêm a semântica de membros. Comparar propriedade aceita caminhos aninhados, como meta.commerce.recipient. Modelos de ações aceitam {meta.commerce.quantity} e {meta.commerce.currency}, junto com os campos existentes {donation}, {subtitle}, e {meta}. Caminhos aninhados diferenciam maiúsculas/minúsculas, valores ausentes são renderizados vazios e a travessia de protótipos é proibida.
Webhooks de comércio de criadores e sobreposições promocionais
Pagamentos públicos de doação do Ko-fi preservam hasDonation e recebem USD donoValue. Pagamentos de assinaturas usam new_subscriber ou resub, com o nível em membership. Pedidos de loja e encomendas usam purchase sem valores de doação. Eventos privados do Ko-fi continuam excluídos. JSON codificado em formulário é decodificado uma vez; nomes e mensagens são texto simples.
Buy Me a Coffee donation.created mantém apoio monetário; extra_purchase.created e commission_order.created tornam-se purchase. wishlist_payment.created torna-se giftcontribution usando apenas o valor desse pagamento; meta.commerce.completed registra o indicador de conclusão do provedor sem emitir outra linha monetária. membership.started torna-se new_subscriber com o nível em membership, deixando de usar incorretamente hasDonation para um nome de nível. Um valor de início de assinatura não é tratado independentemente como cobrança paga. Eventos de teste, reembolso, falha e atualizações/ciclo de vida não suportados não produzem alertas pagos. Notas ocultas de apoiadores são omitidas.
Fourthwall suporta ORDER_PLACED (purchase), GIFT_PURCHASE (gift, destinatário outro), DONATION (linha normal de doação) e SUBSCRIPTION_PURCHASED (new_subscriber). Os totais de pedidos existentes mantêm hasDonation para compatibilidade com versões anteriores, marcado meta.commerce.legacyDonationValue: true; esta é uma exceção explícita aos novos padrões de vendas de produtos. Pedidos com cartões-presente aplicados emitem alerta de compra sem valor de doação: não é possível deduzir com confiança a nova cobrança pelo total do pedido, e a compra do presente já foi contada. Nomes de faturamento e endereços de e-mail não são usados como identidade pública. Eventos de teste do painel e atualizações de pedidos não geram alertas pagos.
Esses adaptadores mantêm o relay, as ações de bot, o Event Flow e o encaminhamento de destinos existentes, com meta.webhookId deduplicação. Disponibilizam nomes públicos, mensagens em texto simples, nomes conhecidos de itens em subtitle, e ISO meta.commerce.currency junto com valores numéricos de doação quando aplicável. Não adicionam contabilidade de reembolsos nem nova autenticação do receptor; use a rota de webhook já configurada do provedor.
meta.monetization.commerce em monetization_update contém enabled, qr, position, display (first/cycle), seconds e um array público items. Cada item tem name, url, image, amount opcional (null quando desconhecido), currency e purpose (shop/gift/support/membership). São detalhes promocionais inseridos pelo anfitrião, não comprovantes de pagamento. Adicionar ou editar itens não emite eventos de doação nem de compra. A sobreposição genérica usa mode=commerce; view=both|showcase|card|alerts separa promoção de atividade. Parâmetros opcionais de URL style, scale, cardevery, cardfor e onlytype controlam a apresentação. Modos existentes de provedores também aceitam view e controles de programação. Veja o guia de configuração.
Eventos de presentes do Throne
A integração opcional de Monetização encaminha eventos assinados do Throne com platform e type definido como throne. Os três usam um identificador estável de entrega id, texto simples chatname, chatmessage com textonly: true, nome do item em subtitle, e miniatura HTTPS opcional em contentimg.
| evento | Significado | Valor da doação / nível |
|---|
gift | Um presente comprado | hasDonation e USD donoValue; +1 nível de presente |
giftcontribution | Uma contribuição para um presente | Somente valor da contribuição; sem aumento de nível |
giftfunded | Um presente de financiamento coletivo concluído | Não hasDonation ou donoValue, evitando contar novamente contribuições anteriores; +1 nível de presente |
meta.throne contém itemName, creator (nome de usuário público), completed, currency e em unidade principal amount. Para giftfunded, o valor descreve a meta, não nova receita. Presenteadores anônimos permanecem Anonymous; presentes comunitários concluídos usam Community. Campos privados de pagamento e entrega nunca são encaminhados.
monetization_update também contêm meta.monetization.throne: enabled, username, url, qr, position, rank, e gifts. Esses retratos de estado não contêm URL de webhook nem credenciais de escuta.
Comandos de voz do anfitrião (prévia para desktop)
O Event Flow Quando eu disser... recebe comandos confiáveis de microfone local do SSApp. Seu contexto interno de ação usa chatname: "Host", type: "hostvoice", a frase reconhecida em chatmessage, e textonly: true. Isso não é um evento recebido da plataforma nem um novo transporte de chat. Enviar esses campos pelo chat não ativa um gatilho de voz.
Exige uma versão atualizada do aplicativo para desktop, início explícito do microfone e ativação de ações após o modo Teste. Veja o configuração de prévia e status de validação.
Controles de exibição de produtos
Existente monetization_update podem incluir meta.monetization.commerce.live: null para a programação salva, ou {mode: "show" | "hide", url?: "https://...", until: 0 | epochMilliseconds}. Mostrar corresponde à URL exata do produto salvo; um produto ausente não mostra cartão. Um until positivo expira e volta à programação salva; zero dura até ser alterado ou o SSN reiniciar. Ocultar suprime promoções, não alertas de atividades pagas.
commerce.viewerURL é a URL publicada da loja somente leitura ou uma string vazia. Quando presente, QR codes promocionais apontam para ela. Nunca contém a sessão do SSN nem a chave de publicação. Os produtos permanecem em commerce.items. Nenhum evento de doação/compra é emitido por controles de exibição, importações ou publicação. Veja Controles de produtos para uso do Event Flow e da API remota.
O Event Flow commerceControl aguarda a resposta direta/do Chrome (até oito segundos). Em payloads comuns de evento, preserva o evento e adiciona meta.commerceControlResult: {success: true, commerce: controlState} ou {success: false, error: "..."}. Para um valor existente numérico, array ou outro que não seja objeto em meta, os metadados permanecem inalterados e o diagnóstico é retornado como commerceControlResult no resultado da ação, em vez disso. Controles que falham interrompem as ações posteriores nessa cadeia sem suprimir o evento original de pagamento. Um tempo esgotado não comprova que o controle não foi aplicado; inspecione o estado antes de repetir um comando relativo, como Próximo. O sucesso confirma o estado local selecionado/oculto/programado, nunca a visibilidade no OBS nem a sincronização da página pública.
Fluxos nomeados do Stream Deck / API
O gatilho de fluxo nomeado cria uma mensagem interna do Event Flow com type: "api", event: "workflow_trigger", chatname: "Stream Deck / API", vazio chatmessage, e textonly: true. Seu meta.workflow contém o nome do gatilho e um JSON fornecido pelo chamador data objeto. Leia os valores por modelos, como {meta.workflow.data.minutes}. Somente fluxos salvos e ativados que correspondam explicitamente a esse gatilho são avaliados. Isso não é um evento recebido de espectador/chat e não é transmitido como chat; copiar esses campos para o chat não ativa o gatilho nomeado.
Piloto de público do NinjaChatter
O conector experimental pareado da extensão envia linhas somente para exibição com type: socialstreamchat, platform: ninjachatter, e textonly: true. meta.ninjachatter contém origin: audience, o campo descritivo provider, e público room ID. Essas linhas ignoram respostas às plataformas, bots, gatilhos do Event Flow e pontos. Um provedor exibido não representa autorização. Capturas legadas da fonte NinjaChatter incluem meta.ninjachatter.room para supressão de duplicatas por sala.
Cheer usa um caminho separado e autenticado de solicitação e resultado, nunca um comando especial de chat. A predefinição fixa emite o evento existente da sobreposição Actions show_text por três segundos. Seu recebimento significa aceitação pelo transporte, não exibição verificada no OBS. Nenhum payload do público pode selecionar ações arbitrárias. O piloto fica desativado por padrão no NinjaChatter; o Electron mantém seu relay existente até que o novo limite de pareamento privado seja validado.
Painéis de posições comerciais e vendas recentes
O recurso existente monetization_update evento (type/platform: socialstream) também inclui meta.monetization.boards. Seu board contém title, style (posições/times), columns (1–20), visible, e até 120 spots. Cada posição tem uma string id, texto simples label, status (disponível/reservada/revelada) e result (texto simples, vazio até a revelação). Reservas e revelações são estados de exibição inseridos pelo anfitrião, não comprovantes de compra nem atribuições aleatórias.
boards.sales contém até 100 registros recentes: id, title, opcional amount (null quando desconhecido), currency, quantity, source, e at (milissegundos Unix no momento do registro). automatic ativa a coleta, salesVisible controla a exibição e revision aumenta quando há mudanças. A coleta automática aceita apenas purchase de Shopify, vendedor do eBay, Fourthwall, Ko-fi e Buy Me a Coffee; eventos privados/de teste são excluídos. Não trata metadados de leilão, gorjetas, presentes ou reservas de posições como compras. Registros automáticos não substituem o preço de um item por totais de pedidos, preços de anúncios ou valores de doação. Registros manuais usam source: "Host confirmed".
O estado persiste no armazenamento privado de monetização desta instalação; retratos públicos excluem IDs de deduplicação de entrega, identidade de compradores e segredos. Vendas explicitamente exibidas mantêm seus IDs de evento para remoção. Reembolsos exigem remoção pelo anfitrião. IDs de compras duplicadas são lembrados separadamente (até 2.000), inclusive após limpar o histórico visível. O recurso existente getCommerceState a resposta inclui commerce.boards; commerceControl aceita os comandos de painel/vendas documentados no guia de painéis. Edições manuais transmitem o estado atualizado, mas nunca criam eventos de compra, totais de doação nem recompensas pagas. As sobreposições se ocultam quando o retrato de estado do anfitrião fica ausente por 35 segundos.
Adições ao fluxo do vendedor: commerce.boards.board.id identifica uma geração de painel. Um registro manual de saleAdd pode fornecer boardId e spotId para registrar a venda e reservar a posição atomicamente; vendas vinculadas duplicadas ainda presentes no histórico recente são rejeitadas. saleRemove com reopenSpot: true libera essa posição somente se a geração do painel ainda corresponder. Entradas públicas de venda omitem esses campos de vínculo do operador. Um campo opcional platform em uma venda manual preserva sua fonte para filtragem, enquanto source: "Host confirmed" identifica o método de confirmação. amount é o total da entrada, incluindo sua quantity. O campo do adaptador de pedidos pagos do eBay meta.ebayPurchase.quantity é preservado.
salesSettings.auctionSource ativa o assistente de itens do Whatnot ou eBay Live. O campo da resposta de controle commerce.auction contém apenas source, title, priceText, status e at do último evento capturado auction_update, ou null. Expira após cinco minutos e é limpo ao mudar de fonte, receber um retrato inativo ou reiniciar. O assistente é exclusivo do operador: não é persistido nem incluído nas transmissões ao público; a identidade de licitante/vencedor é descartada. Scripts de fontes e payloads de eventos de leilão permanecem inalterados. Copiar um rascunho não confirma pagamento nem cria venda.