Référence des événements en direct
Cette page documente les données d'événements canoniques émises par Social Stream Ninja pour les principales plateformes. Utilisez-la comme référence commune pour intégrer de nouvelles sources, résoudre des problèmes d'intégration ou harmoniser les libellés de l'interface. Pour un tableau plus court destiné aux consommateurs, consultez Compatibilité des événements et alertes.
Sur cette page
Accédez aux règles communes des champs, à l'implémentation d'une plateforme ou aux notes de compatibilité vers la fin.
Important : La disponibilité des événements dépend de la source, des autorisations et des paramètres de capture. Pour masquer les lignes marquées comme événements dans le Dock ou les incrustations de mise en avant, ajoutez &hideevents ou &hideallevents. Pour masquer certains événements, utilisez &filterevents=subscription_gift,new_follower,gifted. Ces filtres peuvent également masquer les lignes payantes contenant un champ event; les lignes ordinaires de dons sans marqueur d'événement ne correspondent pas aux filtres d'événements. Les autres filtres de messages restent appliqués.
Choisissez la méthode de capture : Pour YouTube, Twitch et Kick, Mode WebSocket offre généralement une couverture d'événements plus large. La capture DOM standard lit les lignes et cartes effectivement affichées sur la page. Les Super Chats, Super Stickers et cadeaux Jewel de YouTube disposent de circuits de capture dans les deux modes ; les autres événements de cadeaux, pourboires et abonnements varient selon la source. Consultez les tableaux des plateformes pour les circuits pris en charge et les paramètres requis.
Vous créez des automatisations ? Consultez le
Guide Event Flow pour apprendre à utiliser ces données d'événement dans des déclencheurs, alertes et flux de travail personnalisés. Le guide inclut un
Référence des variables de modèle pour le formatage du texte.
Structure des données : Les lignes de chat de type don doivent utiliser hasDonation et facultatif donoValue. Ne définissez pas event: "donation" simplement parce qu'une ligne ordinaire de chat/pourboire a une valeur ; utilisez des noms d'événements précis uniquement pour de véritables actions de plateforme ou types d'articles payants, tels que superchat, supersticker, gift, ou jeweldonation. Utilisez meta uniquement pour les données structurées supplémentaires dont les consommateurs ont réellement besoin et qui ne sont pas déjà couvertes par les champs existants.
Disponibilité rapide des fonctionnalités
Utilisez ce tableau pour voir quels types d'alertes chaque méthode de capture fournit actuellement. Des notes détaillées sur les données suivent ci-dessous.
La boîte d'alertes multistream dédiée regroupe les événements en direct en six catégories principales d'alertes : Follow, Subscription/Member, Donation, Bits/Cheers, Raid/Host, et Purchase, plus deux catégories sur activation (Auction et Hype Train) activées par paramètres d’URL. Ces catégories sont déduites des champs existants event, membership, subtitle, hasDonation, et meta champs documentés ici ; aucun format de données distinct n'est nécessaire.
| Source |
Nouveaux abonnés / membres |
Nouveaux followers |
Dons |
Compteurs et extras |
| YouTube (passerelle Data API) |
Nouveaux abonnements, renouvellements, cadeaux |
Alertes individuelles de nouveaux abonnés* + totaux |
Super Chats et Super Stickers |
Totaux de spectateurs, d'abonnés et de vues (interrogation périodique) |
| Twitch – Capture DOM |
Lignes de lots de cadeaux et avis de destinataires |
- |
Bits signalés via hasDonation |
Nombre de spectateurs, cartes de récompenses et cartes de mise en avant communautaire |
| Twitch – EventSub/WebSocket |
Abonnements, réabonnements et cadeaux instantanés |
Nouveaux followers instantanés + total de followers |
Cheers, Power-ups et utilisations de points de chaîne |
Totaux de spectateurs/abonnés/followers, état du direct, avis publicitaires |
| TikTok Live |
- |
Cartes de nouveaux followers (lorsque TikTok les affiche) |
Cadeaux convertis en totaux de pièces |
Nombre de spectateurs, alertes d'arrivée et rafales de J'aime |
| YouNow |
- |
Activité des fans et du public |
- |
Nombre de spectateurs du panneau du public en direct |
| Favorited Studio |
- |
- |
- |
Nombre de spectateurs de l'onglet des spectateurs en direct |
| Whatnot |
- |
- |
- |
Nombre de spectateurs, alertes d'arrivée, métadonnées d'enchères en direct, produits et instantanés de tirages au sort |
| eBay Live |
- |
- |
- |
Nombre de spectateurs, nombre de followers, instantanés des cartes d'événements en direct, métadonnées du pied d'enchère (lorsqu'elles sont exposées), cœurs de réaction et métadonnées des événements à venir |
| Boîte d'alertes Streamlabs |
Abonnements, cadeaux, sponsors, nouveaux followers |
Cheers/bits, dons (avec devise) |
Cheers/bits, dons (hasDonation) |
Lorsqu'une boîte d'alertes est ouverte ; également disponible via sources/websocket/streamlabs.html jeton socket |
| OBS Flow Actions |
- |
- |
- |
Événements OBS de sortie, de scène, de tampon de relecture et de fin de média pour Event Flow lorsque actions.html est connecté à OBS WebSocket |
| Kick – DOM |
- |
- |
- |
Nombre de spectateurs et avis système simples de récompenses/cadeaux ; utilisez la passerelle Kick pour des alertes plus complètes |
| Kick – WebSocket/passerelle |
Nouveaux abonnements, renouvellements et cadeaux |
Alertes de nouveaux followers + total de followers |
Événements de soutien/pourboire (montant + devise) |
État du direct, utilisations de récompenses et métadonnées de profils |
| Facebook Live |
- |
- |
Stars lorsqu'elles sont visibles dans le DOM |
Lignes de chat, Stars et interrogation du nombre de spectateurs |
| Rumble – Capture DOM |
- |
- |
Prix Rant visibles |
Chat, raids entrants et interrogation du nombre de spectateurs |
| Rumble – WebSocket/URL API |
Nouveaux abonnements et abonnements offerts |
Alertes de nouveaux followers + total de followers |
Rants/pourboires (montant + devise) |
Totaux de spectateurs, totaux d'abonnés, état du direct et flux de chat |
| Streamplace |
- |
- |
- |
Nombre de spectateurs ainsi que noms, couleurs, badges, réponses et liens du chat |
| WorldsWave |
- |
- |
Libellés de dons lorsqu'ils sont présents |
Chat en direct affiché et mises à jour facultatives du nombre de spectateurs |
| CHZZK |
- |
- |
Lignes visibles de dons de fromage |
Lignes de chat, images de badges, émoticônes et interrogation du nombre de spectateurs |
| BEAM |
- |
- |
- |
Lignes de chat et interrogation du nombre de spectateurs lorsque la page de chat seule expose un compteur de spectateurs |
| Seal Team Sloth |
- |
- |
- |
Lignes de chat détaché affichées et viewer_update interroge lorsque les nombres de spectateurs sont activés |
| Castyr |
- |
- |
- |
Lignes de chat détaché affichées et mises à jour facultatives du nombre de spectateurs |
| RPLAY |
- |
- |
- |
Connecté /live/chat/box/ fenêtre détachée : type: "rplay" chat, avatars, images de badges de niveau et émoticônes. Les pourboires en pièces conservent leur montant et leur unité dans hasDonation pour la conversion commune en USD, sans événement de don. L'option à activer viewer_update les interrogations utilisent un entier meta depuis le point de terminaison public de direct RPLAY. Les lignes Twitch relayées sont exclues. |
| FLEX TV |
- |
- |
- |
Lignes de chat affichées avec les noms, les couleurs des auteurs, les images de badges et les métadonnées des membres |
*Les alertes d’abonnés YouTube sont interrogées périodiquement et peuvent être retardées ou incomplètes. La référence API ne garantit pas une fenêtre fixe de quatre heures. Consultez le limites de l'API officielle d'abonnement.
Présentation des champs
data désigne ici l'objet message, pas une enveloppe supplémentaire à ajouter. Les lignes de chat et les événements composés uniquement de métadonnées ont des structures différentes : les compteurs et instantanés d'état peuvent omettre chatname/chatmessage. Dans les tableaux des plateformes, message décrit une ligne de chat ordinaire, pas un texte littéral event: "message".
| Champ |
Structure |
Utilisation |
data.type |
chaîne |
Identifiant de source utilisé par les incrustations, les filtres et Event Flow. Instagram conserve le chat en direct sous instagramlive et les commentaires hors direct sous instagram. Consultez le Guide des types de sources pour les variantes, les sources génériques et le routage sortant. |
data.chatname |
chaîne |
Nom d'affichage fourni par la source, utilisé par le traitement des messages et les sorties autres que les incrustations. Un alias de nom d'affichage configuré peut remplacer cette valeur uniquement dans les copies de données transportées vers le Dock et les incrustations. |
data.username |
chaîne |
Nom d'utilisateur de la source lorsqu'il est disponible. Les données du Dock ou de l'incrustation utilisant un alias peuvent ajouter ce champ pour préserver la valeur d'origine de chatname pour les actions utilisateur ; le message canonique reste inchangé. |
data.userid |
chaîne |
Identifiant utilisateur propre à la plateforme. Les actions utilisateur privilégient cette valeur par rapport à username et chatname. |
data.platform | chaîne (facultatif) | Certaines intégrations l'incluent avec type. De nombreux adaptateurs de source l'omettent ; utilisez type pour le routage des sources. |
data.id | chaîne | nombre (facultatif) | Identifiant du message ou de l'événement. Sa signification dépend de la source et du transport ; ne supposez pas qu'il s'agit toujours d'un identifiant de modération natif de la plateforme. Utilisez meta.messageId lorsque l'adaptateur l'expose pour synchroniser les suppressions. |
data.donoValue | nombre (facultatif) | Équivalent numérique en USD fourni par la source, y compris les estimations. Une valeur valide (y compris zéro) remplace la conversion currency.js. En son absence, les consommateurs estiment les USD à partir de hasDonation et du contexte de la source. Les montants et unités d'origine restent dans hasDonation et dans les métadonnées existantes du fournisseur. |
data.chatbadges | tableau | chaîne (facultatif) | URL d'images de badges ou objets de badge (type: "img" avec src, type: "svg" avec html, ou type: "text" avec text). Le relais garde le libellé littéral d’un badge texte dans le champ facultatif rawText et produit des valeurs échappées de text pour les anciennes incrustations. Lors des passages de relais suivants, régénérez text depuis rawText; n'échappez pas text de nouveau. Les moteurs d'affichage actuels affichent rawText littéralement lorsqu'il est présent et conservent sinon l'ancien traitement du texte encodé. Il s'agit d'un champ de représentation, pas d'une autorisation d'afficher du HTML. Les anciennes sources peuvent envoyer une seule chaîne HTML au lieu d'un tableau. Les incrustations affichant des badges acceptent les deux formats et assainissent localement le HTML et les URL des badges, même lorsque l'expéditeur est une ancienne extension. Les badges non valides ne doivent pas empêcher l'affichage du message de chat ou d'abonnement. |
data.event |
chaîne | booléen |
Identifiant d'activité système (par exemple viewer_update, subscription_gift, giftpurchase). Le chat ordinaire doit laisser ce champ vide/false pour distinguer les avis système de la conversation. |
data.chatmessage |
chaîne |
Corps du message. Il peut contenir du HTML assaini et affichable uniquement lorsque data.textonly est false. |
data.textonly |
booléen |
S'applique uniquement à data.chatmessage. true signifie afficher chatmessage comme texte brut, en préservant les balises littérales et le texte ressemblant à des entités ; ne décodez pas ce corps, ne l'assainissez pas comme du HTML et n'ajoutez pas de balises de formatage. Appliquez le style de l'événement à l'élément affiché. false signifie chatmessage peut contenir du HTML assaini et affichable ; les anciens messages sans indicateur conservent ce comportement HTML. Les autres champs ordinaires sont en texte brut, à l'exception des champs multimédias tels que chatimg et contentimg. Affichez les champs de texte brut avec textContent, ou échappez-les une seule fois en construisant un modèle HTML ; ne supprimez ni ne décodez leur contenu à répétition. |
data.contentimg |
chaîne (facultatif) |
Image de contenu ou URL de média prise en charge. Dans l'extension et l'application de bureau, l'option à activer allowExternalGifs le paramètre remplit un champ vide à partir du premier lien GIF HTTP(S) direct dans le texte du message ou d'un lien HTML. Le chemin de l'URL doit se terminer par .gif (insensible à la casse) ; paramètres de requête et fragments sont conservés. Aucune clé API requise, conserve chatmessage et les pièces jointes existantes, et respecte removeContentImage. Le champ facultatif hideExternalGifUrl le paramètre ajoute meta.hideExternalGifUrl: true; le Dock et l'incrustation de mise en avant masquent ensuite le lien GIF correspondant uniquement après le chargement de son image, en conservant le texte environnant et les données d'origine. Les images en échec ou expirées replient leur conteneur de pièce jointe et laissent le lien visible. L'incrustation réservée aux GIF tente d'afficher directement l'image si la récupération de ses octets échoue, en utilisant la durée d'affichage configurée lorsque la durée de l'animation est indisponible ; les chargements en échec ou bloqués font avancer sa file d'attente. Elle n'ajoute pas de event ou modifiez la source type. Les images externes ne font pas l'objet d'un filtrage du contenu et peuvent ne pas se charger si l'hébergeur bloque leur intégration. |
data.membership |
chaîne |
État d'abonnement lisible tel que MEMBERSHIP, new_sponsor, gift_recipient. Les interfaces l'utilisent pour les badges, les filtres et les annonces. |
data.subtitle |
chaîne |
Description complémentaire (ancienneté d'abonnement, passage à un niveau supérieur, offert par…). Gardez-la courte et en texte seul pour que les incrustations puissent l'insérer sous le nom d'affichage. |
data.hasDonation |
chaîne |
Montant monétaire ou de cadeau virtuel ($5.00, 500 bits, 300 coins). Renseignez même lorsque data.event est vide pour que les incrustations de dons puissent le détecter. |
data.meta |
nombre | objet | chaîne (ancien format) |
Utilisez des entiers simples pour les compteurs uniques (spectateurs, followers, abonnés) et des objets pour les contextes plus riches. Certains anciens événements, tels que Twitch DOM community_highlight, portent une chaîne. Vérifiez la structure de l’événement avant de lire des propriétés ; les nouveaux détails structurés appartiennent à un objet. |
data.firsttime |
booléen |
Définir sur true lorsque la détection des nouveaux participants et la base de données locale sont activées, et qu'il s'agit du premier message de chat enregistré pour cet utilisateur/cette source. Le Dock l'utilise pour la mise en évidence et les filtres de bip des nouveaux participants ; le paramètre facultatif de badge de nouveau participant ajoute un badge en forme de feuille devant chatbadges. |
data.lastactivity |
nombre |
Horodatage Unix en secondes de la dernière activité de chat enregistrée de cet utilisateur, lorsque la détection des nouveaux participants et la base de données locale sont activées. Omis pour les nouveaux utilisateurs. |
Couverture des plateformes
YouTube – Capture DOM standard
Implémentation : sources/youtube.js
- Gardez l'onglet du chat en direct ouvert. La capture lit les cartes d'abonnement et de cadeaux affichées dans cette session ; elle n'exige pas que le spectateur soit propriétaire ou modérateur de la chaîne. L'accès au compte et la vue de chat sélectionnée peuvent influer sur les lignes visibles.
- L’ouverture de l’overlay du nombre de spectateurs et de l’activité du chat avec les spectateurs affichés demande automatiquement leur nombre. Les options Afficher le nombre de spectateurs et Suivre les participants actifs du chat activent également la collecte des données.
- Pour les alertes de nouveaux followers et les événements supplémentaires, activez WebSocket dans les paramètres de l’extension.
| Événement |
Déclenchement |
Notes sur les données |
sponsorship |
En-tête de bienvenue aux membres sans texte de chat explicite (nouveaux membres, réception de lots offerts), notamment les cartes de bienvenue structurées ou le texte localisé « Bienvenue à … ». |
membership renseigné avec la traduction de « MEMBERSHIP » ; subtitle contient la série/le niveau lorsqu'ils sont détectés ; nameColor utilise le vert des abonnements lorsque cela est autorisé. |
giftpurchase |
Bannière d'achat d'un lot de cadeaux (ytd-sponsorships-live-chat-gift-purchase). |
membership devient gift_giver; subtitle contient le nombre de cadeaux lorsqu'il est connu ; aucun hasDonation ou donoValue. |
giftredemption |
Annonce d'activation d'un cadeau pour les destinataires. |
membership devient « MEMBERSHIP » ; subtitle inclut « Offert par … ». |
resub |
Bannières de passage à un niveau supérieur incluant « upgraded to … ». |
subtitle contient le nouveau libellé de niveau ; membership reste « MEMBERSHIP ». |
superchat, supersticker, jeweldonation |
Super Chats, Super Stickers, cartes d'annonce de dons et cadeaux YouTube utilisant les Jewels (yt-gift-message-view-model). |
hasDonation contient la valeur ; event identifie le type d'article payant YouTube. Les cadeaux YouTube utilisent N Jewels lorsqu'il est présent, ou 1 YouTube Gift lorsque YouTube masque le nombre. Les images de cadeaux utilisent contentimg, les libellés de cadeaux utilisent subtitle, et les détails minimaux du cadeau sont recopiés sous meta.youtubeGift. |
jeweldonation effet de cadeau |
YouTube affiche un cadeau Jewel animé au-dessus du chat en direct (ytls-gift-overlay-item-view-model). |
Envoyé directement à la destination dédiée aux GIF et médias pour permettre la lecture de l'animation sans dupliquer la ligne de cadeau normale. contentimg contient la ressource animée et meta.youtubeGift.animationUrl/animationDescription conservent les détails de l'effet. |
reaction |
Une réaction de spectateur apparaît dans la fontaine d'émojis du direct YouTube. |
Envoyé directement à la destination dédiée aux réactions. L'émoji anonyme et l'URL de l'image sont conservés dans chatmessage/contentimg et sous meta.reactionType/reactionImage. Les variantes observées en direct comprennent ❤, 😄, 🎉, 😳 et 💯. |
thankyou |
Message de repli lorsqu'un montant de don existe mais qu'aucun texte de chat n'a été fourni. |
Conserve hasDonation et injecte automatiquement « Merci pour votre don ! » pour les incrustations. |
redirect |
Une bannière de redirection YouTube apparaît dans le chat en direct (l'équivalent le plus proche d'un avis de raid). |
Capture DOM uniquement depuis yt-live-chat-banner-redirect-renderer. Définit event à redirect et utilise membership comme libellé pour que les incrustations l'affichent comme les autres avis système. |
viewer_update |
Interrogation toutes les 30 s du point de terminaison de spectateurs de Social Stream (repli sur l'extraction de la page en cas d'erreur de quota). |
meta est le nombre entier de spectateurs en direct ; contribue au total agrégé viewer_updates dans le script d'arrière-plan. |
Les blocs d'abonnement définissent également membership pour le chat des modérateurs/membres, tandis que subtitle contient soit un nombre de mois, soit un nom de niveau. sourceName/sourceImg sont renseignés une fois que getChannelInfo réussit. Le chat DOM standard inclut maintenant meta.messageId lorsque YouTube expose un identifiant natif de message de chat en direct, que le Dock utilise pour synchroniser les suppressions.
YouTube – Capture WebSocket/Data API
Implémentation : sources/websocket/youtube.html, utilitaires partagés sous shared/
- Utilise par défaut les autorisations OAuth
youtube.readonly et youtube.channel-memberships.creator. L'accès facultatif en écriture ajoute youtube.force-ssl pour l'envoi de messages de chat, la modération, les bannissements et les modifications des détails du direct ; Google peut présenter cela comme une autorisation générale de gestion de YouTube, car YouTube ne propose aucune autorisation d'écriture limitée au chat.
- Les statistiques de chaîne respectent les options de chaque paramètre (
showsubscount, showviewercount).
- L'API ne peut pas fournir les images de badges personnalisés ; les badges de repli utilisent les émojis indiqués ci-dessous.
- Lorsque l'API signale explicitement
authorDetails.isChatModerator: true, les données de chat, Super Chat, Super Sticker, cadeau YouTube et adhésion offerte incluent mod: true. Le statut de modérateur n'est ni déduit ni mis en cache entre les événements.
- Les alertes de nouveaux abonnés utilisent le
myRecentSubscribers API (interrogée toutes les 5 minutes). Remarque : les résultats peuvent être retardés ou incomplets ; seuls les abonnements visibles publiquement peuvent être identifiés.
- Les bannières de redirection YouTube ne sont pas exposées par la Data API, donc
redirect reste disponible uniquement avec la capture DOM standard.
| Événement |
Déclenchement |
Notes sur les données |
superchat |
Entrées Super Chat provenant de l'historique Data API ou de l'interrogation du direct. |
hasDonation conserve le montant du site (devise + valeur) ; event est superchat. Les anciennes versions WebSocket utilisaient event: "donation" pour cette ligne ; les consommateurs peuvent donc continuer à l'accepter comme ancien alias. |
supersticker |
Super Stickers (texte du message en repli uniquement, aucune image fournie par l'API). |
hasDonation contient le montant ; chatmessage contient le texte de description décodé. |
jeweldonation |
YouTube giftEvent messages lorsque les spectateurs échangent des Jewels contre des cadeaux. |
hasDonation contient N Jewels, ou 1 YouTube Gift lorsque YouTube masque le nombre ; contentimg utilise l'URL de la ressource du cadeau lorsqu'elle est exposée ; subtitle contient le libellé du cadeau ; meta.youtubeGift contient des détails supplémentaires sur le cadeau. |
sponsorship |
Un nouveau membre rejoint via newSponsorEvent. |
membership devient new_sponsor ou new_member; meta inclut originalEventType, durées et informations de niveau. |
resub |
Renouvellements d'abonnement ou passage à un niveau supérieur. |
membership devient renewed_member (renouvellements) ou upgraded_member (montées de niveau) ; subtitle affiche le niveau. |
giftpurchase |
Lots de cadeaux achetés via l'API. |
membership défini sur gift_giver; subtitle indique le nombre/le niveau ; aucun hasDonation ou donoValue. |
giftredemption |
Notifications d'activation de cadeaux. |
membership gift_recipient; les badges utilisent 🎁 par défaut ; subtitle indique le niveau offert. |
membermilestone |
Messages d'étape marquante (memberMonth ou displayMessage présent). |
membership member_milestone; subtitle résume les mois et le niveau ; meta contient la correspondance brute de l'étape marquante. |
viewer_update |
Statistiques du direct (spectateurs simultanés) lorsque le signalement des spectateurs est activé. |
meta est un nombre entier ; reproduit le fonctionnement du script DOM pour que les consommateurs en aval puissent fusionner les deux flux. Un Dock utilisant &showviewercount demande la collecte du nombre de spectateurs pendant 70 minutes et renouvelle cette demande toutes les heures sans modifier durablement le paramètre global. |
likes_update |
Interrogation des statistiques officielles de la vidéo lorsque Envoyer les totaux de J'aime de la plateforme est activé. |
meta est le nombre entier actuel de J'aime de la vidéo. Il est émis lors des changements et périodiquement lorsqu'il ne change pas pour que les consommateurs restent à jour. L'option globale captureliketotals le paramètre l'active ; l'ancien captureyoutubelikes reste un alias de compatibilité. L'activation de l'option par Dock dans la fenêtre &showlikecount l'option active aussi durablement ces paramètres globaux de capture, tandis que l'ajout manuel du paramètre URL contrôle uniquement l'affichage. Désactiver l'option d'affichage ne désactive pas la collecte globale. |
subscriber_update |
Interrogation des statistiques de chaîne (abonnés) lorsque showsubscount pas explicitement désactivé. |
meta est le nombre total d'abonnés ; l'interface met à jour les compteurs du tableau de bord. |
view_update |
Interrogation des statistiques de chaîne (vues cumulées) lorsque showviewercount ou le mode Hype est actif. |
meta est le nombre entier de vues. |
live_chat_ended |
Le chat en direct devient indisponible pour la diffusion associée. |
meta.streamTitle renseigné lorsque les métadonnées du direct ont été mises en cache. |
user_banned |
userBannedEvent depuis l'API de chat en direct ou le flux gRPC. |
Événement composé uniquement de métadonnées pour les widgets de modération. meta inclut le nom d'utilisateur/d'affichage, l'identifiant de chaîne, l'URL d'avatar/de profil, le modérateur, la durée du bannissement/de l'exclusion temporaire et le caractère permanent. |
new_follower |
Nouvel abonné détecté via myRecentSubscribers API (interrogée toutes les 5 minutes). |
chatname est le nom de chaîne de l'abonné ; chatmessage est vide sauf si les messages d'alerte de nouveaux abonnés sont activés sur la page source YouTube. meta inclut channelId, title, subscribedAt, et les rafales groupées ajoutent grouped, count, others, et subscribers. Remarque : les résultats peuvent être retardés ou incomplets ; seuls les abonnements visibles publiquement peuvent être identifiés. |
Les relais de chat de l'API utilisent meta.plainText pour le message en texte brut avec les données enrichies chatmessage contenu. Il s'agit de texte, pas de HTML, qui peut encore contenir des émojis Unicode. Les badges d'abonnement utilisent des émojis en repli (⭐, 💝, 🏅, etc.) pour rester cohérent avec la capture DOM. Le chat ordinaire inclut aussi meta.messageId pour que les actions de suppression du Dock puissent revenir à l'API de modération YouTube.
Alertes de nouveaux abonnés YouTube (new_follower)
Social Stream peut désormais détecter les nouveaux abonnés YouTube à l'aide de myRecentSubscribers Point de terminaison API. Cela fonctionne de façon similaire aux alertes d'abonnés Streamlabs.
Fonctionnement :
- Interroge l'API YouTube toutes les 5 minutes pour obtenir les abonnés récents
- Mémorise les abonnés observés dans localStorage pour détecter les nouveaux
- Renvoie
new_follower événements avec le nom, l'avatar et l'identifiant de chaîne de l'abonné
- Laisse les messages d'alerte de nouveaux abonnés désactivés par défaut ; leur activation utilise la chaîne de traduction actuelle de
alert-just-subscribed
- Regroupe par défaut les arrivées de plus de trois nouveaux abonnés pour éviter que les reconnexions ne saturent les incrustations ou Event Flow
- Nécessite l'activation du mode WebSocket dans les paramètres de l'extension
Limites (il s'agit de restrictions de l'API YouTube, et non de Social Stream) :
- Aucun délai de livraison garanti – SSN interroge toutes les cinq minutes, mais l'API peut renvoyer des résultats retardés ou incomplets. Ne vous fiez pas à une fenêtre fixe de quatre heures.
- Abonnements publics uniquement – Les abonnés ayant rendu leur liste d'abonnements privée ne déclenchent pas d'alertes. Les abonnements sont privés par défaut sur YouTube.
- Propriétaire de la chaîne uniquement – Vous ne pouvez recevoir des alertes d'abonnés que pour les chaînes que vous possédez et auxquelles vous êtes authentifié.
- Utilisation du quota API – Chaque interrogation coûte 1 unité API. À des intervalles de 5 minutes, cela représente environ 288 unités par jour (sur le quota quotidien par défaut de 10 000).
Déclencheur de l'éditeur Event Flow : Utilisez data.event === "new_follower" et data.type === "youtube"
YouTube WebSocket : référence rapide des événements et abonnements
data.event |
data.membership |
Scénario |
sponsorship | new_sponsor | Nouveau membre via newSponsorEvent |
sponsorship | new_member | Nouveau membre via processMembership |
resub | renewed_member | Renouvellement d'abonnement |
resub | upgraded_member | Passage à un niveau supérieur |
giftpurchase | gift_giver | Abonnements offerts à la chaîne |
giftredemption | gift_recipient | Abonnement offert reçu |
membermilestone | member_milestone | Message d'anniversaire d'abonnement |
superchat | - | Super Chat |
supersticker | - | Super Sticker |
user_banned | - | Événement de bannissement/exclusion temporaire composé uniquement de métadonnées |
new_follower | - | Nouvel abonné (interrogation périodique ; délai possible) |
Twitch – Capture DOM standard
Implémentation : sources/twitch.js
- Gardez le chat Twitch ouvert. Les abonnements et avis utilisateur sont capturés lorsque Twitch les affiche ; ils ne sont pas réservés aux comptes de diffuseurs ou de modérateurs. Une authentification peut être nécessaire pour les fonctionnalités propres au compte.
- Les requêtes de nombre de spectateurs ciblent
https://api.socialstream.ninja/twitch/viewers toutes les 30 secondes.
- Pour les alertes de nouveaux followers, les raids et la prise en charge complète des événements, activez WebSocket dans les paramètres de l’extension.
- Les avis Watch Streak partagés par les spectateurs sont désactivés par défaut et nécessitent l'option Afficher les séries de visionnage Twitch paramètre.
- L'option à activer PluralMind le paramètre peut remplacer
chatname, nameColor, et la portion encapsulée par le proxy de chatmessage, et peut ajouter un badge texte de pronoms. username reste l'identifiant de connexion Twitch ; les suppressions associées contiennent delete.meta.pluralmind pour que le Dock utilise cet identifiant de connexion stable.
| Événement |
Déclenchement |
Notes sur les données |
reward |
Cartes d'utilisation de points de chaîne (y compris le conteneur de récompenses 7TV). |
chatmessage contient le texte d'utilisation de récompense ; membership inchangé. |
giftpurchase |
Lignes système telles que « User gifting X Subs in the channel ». |
chatmessage est la ligne système, permettant aux incrustations de mettre en avant les campagnes de cadeaux. |
subscription_gift |
Avis d'abonnements offerts (« User gifted a Sub to … »). |
Marque l'événement pour les filtres de mise en évidence ; membership reste le libellé de badge du destinataire. |
viewer_update |
Récupération toutes les 30 s auprès du proxy de spectateurs de Social Stream (valeur de repli de 0 en cas d'erreur). |
meta nombre entier de spectateurs. |
hype_train |
La mise en avant communautaire épinglée de Twitch montre un Hype Train actif dans le chat détaché. |
Repli DOM composé uniquement de métadonnées avec meta.sourceMode défini sur dom. Utilise le niveau, le minuteur et le champ visibles meta.progressPercent lorsque Twitch n'expose pas les totaux de points EventSub. |
community_highlight |
Éléments du widget « Community Highlight » de Twitch. |
meta est le texte extrait de la mise en évidence pour les points d'intégration des automatisations. |
knock |
Invitations de collaboration Stream Together affichées au-dessus du chat. |
chatmessage contient le texte de l'invitation ; chatname est dérivé de l'utilisateur de l'alerte lorsqu'il est disponible. |
watch_streak |
Avis Watch Streak partagé volontairement par un spectateur et affiché dans le chat Twitch. |
meta.streakCount contient le nombre visible lorsqu'il est détecté ; meta.milestoneId utilise l'identifiant de l'avis DOM lorsqu'il est disponible. |
Les bits et Cheers renseignent hasDonation (par exemple « 500 bits »), même si data.event reste vide ; utilisez ce champ pour afficher les widgets de dons. Les informations de série d'abonnement apparaissent dans subtitle lorsque les badges exposent les mois.
Twitch – EventSub/WebSocket
Implémentation : sources/websocket/twitch.js avec le noyau partagé providers/twitch/chatClient.js
- Autorisations 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. Les tokens du diffuseur débloquent les totaux d’abonnés/suivis.
- Événements fournis par EventSub, plus interrogation Helix des totaux de spectateurs, de followers et d'abonnés.
- Le mode WebSocket fournit en temps réel alertes de nouveaux followers, événements d'abonnement, raids, Cheers, Power-ups, utilisations de points de chaîne et métadonnées de Hype Train.
- Les lignes Shared Chat utilisent les champs IRC Twitch
source-room-id pour renseigner sourceName/sourceImg avec la chaîne d'origine lorsqu'elle diffère de la chaîne connectée.
- Les avis Watch Streak partagés par les spectateurs sont désactivés par défaut et nécessitent l'option Afficher les séries de visionnage Twitch paramètre.
- L'option à activer PluralMind le paramètre peut remplacer
chatname, nameColor, et la portion encapsulée par le proxy de chatmessage, et peut ajouter un badge texte de pronoms. username et userid conservent l'identité Twitch ; les suppressions associées contiennent delete.meta.pluralmind pour que le Dock utilise ces champs stables.
| Événement |
Déclenchement |
Notes sur les données |
cheer |
Notifications de Cheers d'EventSub channel.bits.use. |
hasDonation « N bits » ; meta.bits numérique ; chatmessage conserve le message brut ; les auteurs de Cheers identifiés incluent chatimg. |
powerup |
Notifications de Power-ups intégrés ou personnalisés provenant d'EventSub channel.bits.use. |
Données réservées aux événements avec un champ vide chatmessage et aucun hasDonation, donc cela ne crée pas une ligne ordinaire de chat. meta.bits est numérique et meta.powerUp conserve le sous-type Twitch, le titre/l'identifiant de la récompense, les détails de l'effet et le texte du message fourni lorsqu'il est disponible. |
new_subscriber |
channel.subscribe ou USERNOTICE avec msg-id=sub. |
meta inclut { userId, tier, isGift }; le total d'abonnés en cache est incrémenté lorsqu'il est disponible ; les totaux de spectateurs sont interrogés séparément. |
resub |
channel.subscription.message ou USERNOTICE msg-id=resub. |
meta contient la série et les mois cumulés ; chatmessage inclut le texte de réabonnement. |
subscription_gift |
channel.subscription.gift ou USERNOTICE msg-id=subgift. |
meta expose le total offert et le niveau ; chatmessage résume l'action. |
reward |
channel.channel_points_custom_reward_redemption.add. |
meta inclut l'identifiant, le titre, le coût et l'invite de la récompense, la saisie utilisateur, l'identifiant/l'état de l'utilisation et l'ancien alias. Aucun champ de premier niveau reward objet est émis par ce gestionnaire EventSub. Les anciens consommateurs peuvent encore exposer channel_points comme alias obsolète. |
raid |
EventSub channel.raid ou USERNOTICE msg-id=raid. |
meta = { fromId, fromLogin, viewers }. |
watch_streak |
USERNOTICE IRC Twitch à activer avec msg-id=viewermilestone et msg-param-category=watch-streak. |
Inclut le spectateur dans chatname, texte d’avis Twitch dans chatmessage, et meta.streakCount/meta.milestoneId. Les autres types génériques de USERNOTICE restent ignorés. |
new_follower |
channel.follow Notifications EventSub. |
Incrémente automatiquement follower_update; meta enregistre { userId, followedAt }. |
viewer_update |
Helix streams interrogation toutes les 30 secondes. |
meta nombre entier de spectateurs ; supprimé sauf si les statistiques de spectateurs sont activées dans les paramètres. |
follower_update |
Total de followers Helix, récupéré après les événements de suivi ou lors d'une interrogation périodique. |
meta nombre entier de followers. |
subscriber_update |
Total d'abonnés Helix (nécessite un jeton de diffuseur avec l'autorisation d'abonnement). |
meta nombre entier d'abonnés. |
stream_online / stream_offline |
EventSub stream.online/stream.offline. |
meta.startedAt présent pour les événements en ligne ; hors ligne utilise un objet vide. |
ad_break / ad_request / ad_schedule |
Réponses de l'API du gestionnaire de publicités (channel.ad_break.begin, manuel POST channels/ads, GET channels/ads). |
meta détaille la durée, le demandeur et les données de programmation pour les tableaux de bord. |
hype_train |
EventSub channel.hype_train.begin, channel.hype_train.progress, et channel.hype_train.end notifications v2. |
Événement composé uniquement de métadonnées : aucun chatname ou chatmessage. meta.phase est begin, progress, ou end; meta inclut l'identifiant du train, le niveau, la progression, l'objectif, le total, les contributeurs, les champs temporels, l'indicateur de train partagé et trainType. Les trains au trésor sont exposés via meta.trainType lorsque Twitch les identifie comme tels. |
user_banned |
EventSub channel.ban, ou IRC CLEARCHAT repli lorsque les événements de bannissement EventSub sont indisponibles. |
Événement composé uniquement de métadonnées pour les widgets de modération. meta inclut le nom d'utilisateur/d'affichage, l'identifiant utilisateur, l'URL d'avatar/de profil, le modérateur, le motif, la durée du bannissement/de l'exclusion temporaire et le caractère permanent. |
Les données de chat réutilisent le fournisseur partagé, donc data.event est renseigné pour `/me` (action) et l’ancien bits balises même en dehors des flux EventSub. Les messages GIF Twitch placent la ressource Giphy dans contentimg, laissez chatmessage vide, et conservent le libellé de repli de Twitch dans meta.gifLabel. La déduplication et la suppression utilisent les identifiants des messages ; les messages envoyés via SSN utilisent le champ natif message_id depuis l'écho IRC de Twitch dans data.id.
Métadonnées du Hype Train Twitch
hype_train est composé uniquement de métadonnées et n'inclut pas chatname ou chatmessage. Les tableaux de bord doivent mettre à jour un affichage de train existant à l'aide de meta.id au lieu d'ajouter chaque mise à jour de progression comme un message de chat. La barre de métadonnées (meta.html) affiche ces événements comme barre de progression supérieure.
| Champ |
Tapez |
Remarques |
type | chaîne | Toujours twitch. |
event | chaîne | Toujours hype_train. |
meta.phase | chaîne | begin, progress, ou end. |
meta.id | chaîne | Identifiant stable du train. Utilisez-le pour insérer ou mettre à jour un seul widget de train visible. |
meta.broadcasterUserId | chaîne | Identifiant utilisateur du diffuseur Twitch. |
meta.broadcasterUserLogin | chaîne | Identifiant de connexion du diffuseur Twitch. |
meta.broadcasterUserName | chaîne | Nom d'affichage du diffuseur Twitch. |
meta.total | nombre | null | Valeur totale du soutien signalée par Twitch pour le train. |
meta.progress | nombre | null | Progression actuelle vers l'objectif du niveau. |
meta.goal | nombre | null | Objectif du niveau actuel. |
meta.progressPercent | nombre | null | Pourcentage de repli du DOM lorsque Twitch n'expose que la barre de progression visible du chat détaché. |
meta.level | nombre | null | Niveau actuel ou final du train. |
meta.topContributions | tableau | Principaux contributeurs. Chaque entrée inclut userId, userLogin, userName, type, et le champ numérique total. |
meta.lastContribution | objet | null | Contribution la plus récente, utilisant la même structure de contribution que topContributions. |
meta.sharedTrainParticipants | tableau | Données brutes des participants au train partagé fournies par Twitch, lorsqu'elles sont disponibles. |
meta.startedAt | chaîne | Horodatage ISO de début du train. |
meta.expiresAt | chaîne | Horodatage ISO d'expiration du train actuel. |
meta.endedAt | chaîne | Horodatage ISO de fin du train, ou vide avant la fin. |
meta.cooldownEndsAt | chaîne | Horodatage ISO de fin du délai de récupération, ou vide avant la fin. |
meta.isSharedTrain | booléen | Vrai lorsque Twitch marque le train comme partagé. |
meta.trainType | chaîne | Généralement regular; les trains au trésor sont exposés ici lorsque Twitch les identifie comme tels. |
meta.allTimeHighLevel | nombre | null | Niveau record du train lorsque Twitch le fournit. |
meta.allTimeHighTotal | nombre | null | Total record du train lorsque Twitch le fournit. |
meta.sourceMode | chaîne | Marqueur de source facultatif tel que dom. |
meta.eventSubType | chaîne | Type EventSub d'origine : channel.hype_train.begin, channel.hype_train.progress, channel.hype_train.end, ou dom.community_highlight. |
Twitch EventSub : référence rapide des événements
data.event |
Scénario |
new_follower | Un utilisateur a suivi la chaîne |
new_subscriber | Nouvel abonnement |
resub | Réabonnement avec message |
subscription_gift | Abonnements offerts à la chaîne |
cheer | Bits offerts |
powerup | Utilisation d'un Power-up intégré ou personnalisé |
reward | Utilisation de points de chaîne |
raid | Raid entrant |
viewer_update | Nombre de spectateurs simultanés |
follower_update | Nombre total de followers |
subscriber_update | Nombre total d'abonnés |
stream_online | Début du direct |
stream_offline | Fin du direct |
ad_break | Début d'une coupure publicitaire |
hype_train | Métadonnées d'état du Hype Train/du train au trésor |
user_banned | Un utilisateur a été banni ou exclu temporairement |
OBS Flow Actions
Implémentation : actions.html via les événements OBS WebSocket v5, avec dock.html Événements de source navigateur OBS en repli
- Gardez l'incrustation Flow Actions ouverte avec la même session Social Stream que l'éditeur Event Flow/le processus d'arrière-plan, ou gardez le Dock chargé dans OBS.
- Configurez OBS WebSocket v5 dans OBS 28+ ; l'URL par défaut est
ws://127.0.0.1:4455.
- Il s'agit d'événements système Event Flow. Ils n'incluent pas
chatname ou chatmessage, et les détails OBS supplémentaires restent dans meta.
| Événement |
Déclenchement |
Notes sur les données |
stream_started |
OBS signale que la sortie de diffusion a atteint l'état démarré. |
type est obs; event est stream_started; meta.source est obs-websocket ou obs-browser-source; meta.outputState peut contenir l'état brut de sortie OBS. |
stream_stopped |
OBS signale que la sortie de diffusion a atteint l'état arrêté. |
type est obs; event est stream_stopped; meta.outputActive peut être false. |
recording_started |
OBS signale le démarrage de l'enregistrement. |
type est obs; meta.obsEvent identifie la source d'événement OBS. |
recording_stopped |
OBS signale l'arrêt de l'enregistrement. |
type est obs; meta.outputState peut contenir l'état brut WebSocket. |
scene_changed |
OBS change la scène active du programme. |
type est obs; meta.sceneName contient le nom de la scène lorsqu'OBS le fournit. |
media_ended |
Une entrée multimédia OBS termine sa lecture. |
type est obs; meta.inputName et meta.inputUuid identifient l'entrée multimédia. |
replay_buffer_saved |
OBS enregistre le tampon de relecture. |
type est obs; meta.savedReplayPath peut contenir le chemin de la relecture enregistrée. |
Boîte d'alertes Streamlabs
Implémentation : sources/streamlabs.js (DOM du cadre d’alertes) ; pont socket facultatif à sources/websocket/streamlabs.html
- Gardez votre boîte d'alertes Streamlabs ouverte dans un onglet ou une source navigateur pour que les alertes s'affichent ; le script de contenu lit le DOM de l'alerte pour extraire le message, l'image et les jetons.
- Les alertes de type don définissent
hasDonation (par exemple « $10 USD » ou « 100 bits ») et, facultativement, donoValue en USD.
- Types d'événements déduits :
follow, subscription, gift, cheer, donation, superchat, raid, redeem, merch, sponsor.
- Pour la passerelle socket, collez votre jeton Socket API Streamlabs et connectez-vous ; les alertes sont relayées sans la page de boîte d'alertes.
| Événement |
Déclenchement |
Notes sur les données |
donation |
Pourboires, dons caritatifs, JustGiving ou alertes génériques « donated ». |
hasDonation conserve le texte de la devise (par ex. « $36 » ou « $10 CAD ») ; donoValue n'est fourni que lorsqu'une valeur en USD est disponible ; les autres montants libellés utilisent la conversion monétaire commune. |
cheer |
Alertes de bits/Cheers Twitch. |
hasDonation devient « 100 bits » et donoValue contient la valeur en USD. |
subscription |
Alertes d'abonnement. |
Champs standard définis ; chatmessage est la ligne d'alerte ; meta.tokens contient les valeurs des jetons (name, amount, levelName, etc.). |
gift |
Adhésions/abonnements offerts. |
meta.tokens.amount peut afficher le nombre de cadeaux ; meta.tokens.levelName peut contenir le niveau. |
follow |
Alertes de nouveaux followers. |
Aucun champ de don ; chatname reflète le jeton de nom de l'alerte. |
raid |
Alertes de raid. |
meta.tokens.count contient le nombre de participants au raid lorsqu'il est présent. |
redeem |
Alertes d'utilisation de récompenses Cloudbot. |
meta.tokens.product contient l'article de la récompense utilisée. |
merch |
Alertes d'achat de produits dérivés. |
meta.tokens.product contient le nom de l'article acheté. |
superchat |
Alertes de type Super Chat provenant de YouTube ou d'intégrations d'alertes prises en charge. |
hasDonation contient le montant ; les consommateurs peuvent continuer à accepter l'ancien donation alias. |
sponsor |
Alertes de type sponsor/membre exposées par Streamlabs. |
Champs standard ; aucun don sauf si le texte inclut un montant. |
TikTok Live – Capture DOM et flux TikFinity
Implémentation : sources/tiktok.js pour les pages TikTok natives et sources/tikfinity.js pour le widget/l'iframe de flux d'activité TikFinity. SSApp dispose toujours d'une intégration TikTok native offrant la couverture d'événements la plus large (voir la documentation SSApp).
- Fonctionne sur la page en direct du diffuseur. Les bannières de cadeaux/J'aime/suivi ne sont renseignées que lorsque la session est authentifiée.
- TikTok fournit de nombreux événements par détection DOM sans nécessiter le mode WebSocket – les cadeaux, nouveaux followers, J'aime et arrivées activées sont capturés depuis les lignes affichées.
- Pages de widgets TikFinity à l'adresse
tikfinity.zerody.one/widget/activity-feed* fonctionnent également. L'iframe intégrée du flux d'activité émet les mêmes champs canoniques TikTok pour le chat, les nouveaux followers, les partages, les cadeaux, les abonnements, les arrivées activées et les coffres au trésor.
- Aucune authentification API supplémentaire requise.
- Mode natif SSApp ajoute encore des événements au-delà des circuits de capture de page/widget :
question_new, emote, viewer_update, et l’agrégat sur activation likes_update.
| Événement |
Déclenchement |
Notes sur les données |
gift |
Lignes de bannière de cadeaux ou DivGiftMessage entrées. |
hasDonation convertit en « N coins » (avec recherche du cadeau en repli) ; membership utilise le texte du badge lorsqu'il est disponible. |
joined |
Notifications d'arrivée lorsque l'option globale Capturer les événements de participation au direct « joined » le paramètre est activé. |
Ignore les notifications de partage ; chatname peut être vide pour certaines chaînes système. |
followed |
Messages de suivi analysés à partir des cartes sociales. |
Garantit chatname existe avant l'émission. |
shared |
Lignes de partage TikFinity. |
chatmessage est le texte de partage affiché. |
subscribe |
Lignes d'abonnement TikFinity. |
membership est défini sur SUBSCRIBER. |
envelope |
Lignes de coffres au trésor TikFinity. |
meta.coins et meta.canOpen contiennent les détails du coffre. |
liked |
Résumés de rafales de J'aime déclenchés par les cartes sociales TikTok. |
chatname est inclus lorsque TikTok l'expose ; les cartes anonymes/système de J'aime peuvent tout de même être émises. TikTok les envoie par le circuit normal en arrière-plan. Le processus d'arrière-plan en dirige une copie vers l'incrustation de réactions, puis poursuit vers le circuit principal de chat et d'événements uniquement lorsque capturelikeevent est activé. |
likes_update |
SSApp reçoit un total cumulatif TikTok LIVE faisant autorité pendant que captureliketotals est activé. |
meta est le total entier actuel. SSApp envoie immédiatement la première valeur, regroupe les rafales pour ne produire au maximum qu'une mise à jour toutes les cinq secondes, répète la dernière valeur environ toutes les 90 secondes et envoie zéro à la fin du direct. Cela est distinct des événements propres à un spectateur liked événements. |
true (booléen) |
Diffusions sociales ou système génériques lorsque TikTok ne fournit aucun sous-type. |
Utilisez chatmessage contenu pour décider de la présentation ; le booléen true indique « événement système – type inconnu ». |
membership reproduit les infobulles des badges (niveaux d'abonnement). La mise en cache des avatars conserve chatimg valide entre les événements ; si le DOM supprime la couleur pour les modérateurs, le script efface nameColor. Les lignes de cadeaux TikFinity définissent également contentimg sur l'icône du cadeau lorsqu'elle est disponible. Les mises à jour de séries de cadeaux DOM natives et TikFinity incluent meta.tiktokGiftStreakId, meta.tiktokGiftCount, et meta.tiktokGiftQuietMs pour que les incrustations puissent regrouper les mises à jour répétées ; les anciens identifiants de série sont propres à l'instance de page. Les métadonnées de cadeau peuvent également inclure tiktokGiftMessageId (ID original du message TikTok), tiktokGiftSenderId, groupId, giftId, giftName, streakable, et repeatEnd. Les identifiants natifs identifient le même cadeau dans plusieurs fenêtres de capture ; un identifiant de groupe non nul, accompagné des identifiants de l'expéditeur et du cadeau, identifie les mises à jour cumulatives d'une série. La capture WebSocket de SSApp fournit les mêmes champs après stabilisation d'une série, avec count conservé pour la compatibilité. Son option de dons est vérifiée lors de la transmission de chaque cadeau : désactiver les dons TikTok supprime hasDonation et donoValue tout en conservant l'événement de cadeau et ses métadonnées. La synthèse vocale utilise ces identités pour regrouper les mises à jour et supprimer les doublons terminés pendant jusqu'à dix minutes (cache limité), et lit les cadeaux TikTok sous la forme expéditeur, quantité et nom du cadeau. Les anciennes données utilisent en repli leurs identifiants de série et textes de messages existants ; aucune identité n'est déduite du seul texte du cadeau. La lecture vocale des cadeaux TikTok utilise la langue de synthèse vocale/de voix sélectionnée, indépendamment de la langue de l'interface. Les verbes d'annonce sont localisés en anglais, espagnol, portugais, français, allemand, italien et néerlandais ; les autres langues utilisent l'expéditeur, la quantité et le nom du cadeau sans verbe anglais. La synthèse vocale simplifiée conserve ce format neutre. Les noms des cadeaux restent tels que fournis par la plateforme ; cela ne traduit pas automatiquement les catalogues de cadeaux ni les messages du chat et ne déduit pas la langue d'un direct.
Pour ces mises à jour de série, le nombre et le libellé du don sont cumulatifs : 1, 2, 3 signifie trois cadeaux, et non six. Les consommateurs de totaux ne doivent ajouter que l'augmentation par rapport au montant le plus élevé déjà observé pour cet identifiant de série. La capture standard prend en charge les anciennes classes de cadeaux et les lignes actuelles d'image et de nombre ; les deux conservent event: "gift" et hasDonation. Les cadeaux dont le prix est inconnu conservent leur nombre et leur nom pour l'affichage et utilisent une estimation en USD d'une pièce par cadeau. La valeur fournie par la source donoValue a la priorité ; les métadonnées du cadeau affiché peuvent fournir coinsPerGift ou diamondsPerGift avant de devoir utiliser la table des cadeaux ou la valeur par défaut. Les estimations en pièces standard/TikFinity et les estimations en diamants natifs SSApp utilisent leurs conversions distinctes existantes ; aucune ne représente un versement en espèces garanti.
Whatnot
Implémentation : sources/whatnot.js
- Ouvrez la page de l'émission Whatnot en direct avec le chat visible ; la capture WebSocket existante fournit le chat, les notifications d'enchères et de ventes, les échecs de paiement, les raids, les dons et les mises à jour rapides des spectateurs. Les instantanés de produits et de tirages au sort dépendent toujours des sections DOM affichées dans la vue de l'émission.
- Capturer les événements du direct contrôle les événements système Whatnot ainsi que les mises à jour des métadonnées d'enchères et de catalogue ; les lignes d'arrivée nécessitent également Capturer les événements de participation au direct « joined »; les nombres de spectateurs suivent toujours les options de spectateurs et de hype.
| Événement |
Déclenchement |
Notes sur les données |
viewer_update |
Changements du nombre de spectateurs issus des mises à jour WebSocket du direct, avec interrogation DOM en repli. |
meta est un nombre entier de spectateurs. |
donation |
Événements WebSocket de pourboires et de contributions au boost communautaire Whatnot. |
hasDonation contient le montant formaté ; le contexte propre au WebSocket reste sous meta. |
raid |
Événements de raid WebSocket Whatnot, y compris les réponses d'activité de l'historique. |
meta.numRaiders est inclus lorsque Whatnot le fournit. |
joined |
Lignes de chat dont le corps normalisé commence par joined, lorsque Capturer les événements de participation au direct « joined » est activé. |
Utilise des libellés d'événement textuels pour les avis d'arrivée (et non le booléen true). |
auction_update |
Lorsque l'état de l'enchère dans le pied de page du direct change (texte du gagnant/de l'enchérisseur en tête, titre, offres, prix, minuteur, état vendu), souvent plus rapidement grâce aux paquets WebSocket du cycle de vie des enchères. |
Événement composé uniquement de métadonnées. Aucun chatname/chatmessage; les données se trouvent dans meta (par exemple meta.title, meta.bids, meta.price, meta.timer, meta.status). |
commerce_update |
Lorsque les sections du catalogue changent (produits, ensembles surprises, tirages à venir), souvent plus rapidement grâce aux paquets WebSocket du cycle de vie des tirages et produits. |
Instantané composé uniquement de métadonnées avec les compteurs de sections et les tableaux d'articles sous meta.products, meta.surpriseSets, et meta.upcomingGiveaways. |
auction_started, new_bid, auction_ended, product_sold |
La notification WebSocket en direct correspondante arrive. Il s'agit d'événements individuels, distincts des instantanés d'affichage existants. |
platform/type: "whatnot", texte brut chatname, userid lorsqu'il est fourni, le nom du produit dans subtitle, et un champ de texte brut chatmessage avec textonly: true. Les identifiants disponibles et détails d’enchère sont sous meta: productId, auctionId, orderId, transactionId, livestreamId, bidId, bids, auctionEndTime, et status. Facultatif price est exprimé en unités monétaires principales, avec priceText et currency lorsqu'il est fourni. |
payment_failed |
Une notification WebSocket d'échec de paiement arrive en direct. |
Les mêmes champs disponibles d'acheteur, de produit et d'identifiant, avec meta.paymentStatus: "failed". Lorsque seul product.purchaserUserId identifie l'acheteur, il renseigne userid sur les événements de vente/paiement et le nom de l'acheteur reste vide. Aucun acheteur n'est déduit d'une enchère différente ou précédente. |
payment_succeeded |
Une notification WebSocket de réussite de paiement arrive en direct. |
meta.paymentStatus: "succeeded", avec l’acheteur, l’article, l’ID de commande et les autres champs autorisés de cet avis. Cela reste un événement de paiement distinct ; aucun second purchase ou de don. Les champs manquants restent vides ou omis, même si une vente précédente les fournissait. |
Les mises à jour d'affichage des enchères et du commerce restent des instantanés issus du DOM. Pour faire correspondre un événement WebSocket individuel dans Event Flow, utilisez Type d'événement (avancé), sélectionnez Événement personnalisé, puis entrez son nom exact. Les étiquettes peuvent utiliser **{username}**\n{subtitle} avec la graisse de texte sélectionnée ; les conditions peuvent comparer meta.paymentStatus avec failed. Un exemple importable de libellé Whatnot est disponible. Les paramètres existants de capture des événements de direct s'appliquent toujours.
Les autres champs facultatifs sont meta.catalogProductId (le champ du paquet product.productId), meta.parentProductId (product.parentId), meta.transactionType (type de vente Whatnot inchangé), et meta.placeOrderErrorReason (code d’erreur de commande/paiement fourni par Whatnot). Ces références décrivent le catalogue ou l’annonce parente ; elles ne remplacent pas un ID de commande. La quantité en stock n’est pas traitée comme quantité achetée.
Pour une automatisation à la réussite du paiement, définissez un Type d'événement (avancé) déclencheur sur Événement personnalisé: payment_succeeded, et filtrez sur Whatnot. Les conditions et modèles existants peuvent utiliser le champ de cet événement userid, chatname, subtitle et meta.orderId directement. Aucun achat mémorisé n'est nécessaire lorsque la notification contient les détails requis.
La fin d'une enchère ou le marquage d'un article comme vendu ne confirme pas la réussite du paiement : ces notifications ne sont pas émises comme des événements payants purchase événements et ne définissent pas de montants de don. Un événement de réussite n'est émis qu'à la réception d'un payment_succeeded notification ; la capture n'interroge pas l'état du paiement pour vérifier son achèvement et ne le déduit pas d'une vente. Les autres paymentStatus les valeurs sont transmises uniquement lorsqu'elles sont explicitement fournies dans un paquet capturé. Les identifiants manquants sont omis ; un identifiant de produit seul peut couvrir plusieurs ventes, utilisez donc un identifiant de commande/d'enchère fourni pour relier les notifications. La capture ne mémorise pas les achats et ne rapproche pas les mises à jour de paiement ; tout flux de ce type doit être configuré explicitement dans Event Flow. Les doublons brefs de paquets provenant des deux passerelles de capture existantes sont supprimés. Les objets bruts de commande/paiement ne sont pas transmis.
eBay Live
La connexion vendeur eBay de Monétisation nécessite un service SSN eBay configuré et le consentement OAuth du vendeur ; la capture eBay Live décrite ci-dessous est indépendante. Le mode bac à sable utilise des URL d'annonces du bac à sable, nomme l'acheteur « eBay Sandbox buyer » et préfixe le message par « Sandbox test purchase: ». Les achats du bac à sable conservent le même contrat d'achat et peuvent déclencher les alertes et actions de chat activées pendant les tests. Son contrat de paiement implémenté émet event: "purchase", avec type et platform défini sur ebay. Cela nécessite une commande payée correspondant à un produit sélectionné. id est un identifiant opaque stable de ligne de commande ; chatname est « eBay buyer », chatmessage est du texte brut (textonly: true), subtitle est le nom du produit et le champ facultatif contentimg est son image. meta.ebayPurchase contient itemId, itemName, quantity, et le public url. Aucune identité d'acheteur, donnée de livraison, hasDonation ou donoValue est inclus. Cela diffère des mises à jour extraites d'enchères ou de stock, qui ne prouvent pas le paiement.
Implémentation : sources/ebay.js
- Ouvrez l'un des deux
/ebaylive/events/<id>/chat ou /ebaylive/events/<id>/stream. Les deux reçoivent le même flux d’enchères en direct.
- Le flux WebSocket public fournit les enchères, les offres, les gagnants, les prolongations et les changements de stock ; une requête GraphQL en lecture seule fournit les détails des annonces. La capture DOM reste une solution de repli lorsque les données réseau sont indisponibles.
- Capturer les événements du direct contrôle les instantanés de métadonnées (
auction_update, commerce_update) ; les compteurs de spectateurs respectent toujours les options spectateurs/Hype.
| Événement |
Déclenchement |
Notes sur les données |
viewer_update |
Lorsque le nombre de spectateurs de l'événement actif change (compteur d'en-tête ou pastille d'événement en direct en repli). |
meta est un nombre entier de spectateurs. |
follower_update |
Lorsque le nombre de followers du vendeur est renvoyé par le point de terminaison de statistiques du vendeur. |
meta est un nombre entier de followers. La source interroge le point de terminaison du vendeur toutes les 60 secondes ; ce dernier peut encore renvoyer une valeur en cache pendant jusqu'à 5 minutes. |
auction_update |
Lorsque les métadonnées de l'enchère active changent. |
Événement composé uniquement de métadonnées. La capture réseau définit meta.sourceMode à network et fournit le titre, le prix, l'enchérisseur, le gagnant, les offres, le minuteur et endingAt. meta.ebay contient eventId, listingId, l'enregistrement GraphQL de l'annonce (listing), annonce publique actuelle du socket (eventListing), et dernière mise à jour d’enchère (update). Ils conservent catégorie, images, devises, quantités, détails de breaks, résultats d’enchères et temps, sans aplatir les détails de plateforme. Le registre GraphQL est un instantané récupéré ; l’annonce du socket et sa mise à jour portent l’état live plus récent. L’historique initial/de reconnexion est incorporé à l’instantané plutôt qu’émis comme anciennes victoires. Retirer toutes les annonces présentées émet status: "idle" avec cardCount: 0 pour effacer l'enchère. Le repli DOM conserve les champs de carte du lecteur ou d'aperçu d'événement. |
commerce_update |
Lorsque les sections des instantanés du catalogue ou des événements en direct changent. |
Instantané composé uniquement de métadonnées sous meta. Le mode réseau inclut eventId, navigation.viewerCount et playerCards pour les annonces actuellement présentées, chacune avec les mêmes détails ebay objet comme instantané d'enchère. Une liste de cartes vide efface les annonces supprimées. Le repli DOM peut également inclure liveEvents, livePreview, currentEvent et upcomingEvents. |
reaction |
Lorsqu'eBay Live affiche une animation de cœur/réaction. |
Envoyé directement à la destination dédiée aux réactions. meta.reactionType est heart; eBay n'expose pas de nom individuel pour ces animations DOM. |
Les événements de métadonnées eBay omettent volontairement chatname/chatmessage; les incrustations en aval doivent afficher à partir de data.event + data.meta uniquement.
Kick – Capture DOM standard
Implémentation : sources/kick.js
- Nécessite une session authentifiée pour récupérer les images de profil et les badges d'abonnés.
- Détection limitée des événements par correspondance du texte du chat et des badges ; les nombres de spectateurs fonctionnent toujours lorsque l'option est activée.
| Événement |
Déclenchement |
Notes sur les données |
gift |
Cadeaux KICKs détectés via l'image de sticker et le montant visible en devise Kick. |
hasDonation contient N KICKs (1 KICK pour un) lorsque le montant visible est disponible ; contentimg contient l'image du cadeau. Le texte du message existant est conservé. |
reward |
Utilisations de récompenses (« has redeemed … »). |
chatmessage contient le texte d'utilisation de récompense. |
true (booléen) |
Avis système génériques ne correspondant pas aux modèles de cadeaux ou de récompenses. |
Utilisez chatmessage contenu pour décider de la présentation ; le booléen true indique « événement système – type inconnu ». |
viewer_update |
Interroge l'API de chaîne Kick toutes les 30 secondes (uniquement lorsque les statistiques de spectateurs sont activées). |
meta nombre entier de spectateurs ; pour les abonnements, nouveaux followers ou pourboires, utilisez la passerelle Kick ci-dessous. |
Kick – WebSocket/passerelle
Implémentation : sources/websocket/kick.js avec les fonctions auxiliaires partagées sous providers/kick/core.js
- OAuth via la passerelle Kick de Social Stream. Les autorisations actuelles sont
user:read, channel:read, channel:write, channel:rewards:read, chat:write, events:subscribe, moderation:ban, moderation:chat_message:manage, et kicks:read. Les jetons sont renouvelés automatiquement.
- La mise en place des webhooks Kick peut prendre plusieurs minutes ; l'interface répertorie les abonnements actifs par chaîne.
| Événement |
Déclenchement |
Notes sur les données |
message |
Données de chat de la passerelle. |
meta.plainText contient le message en texte brut (qui peut encore inclure des émojis) ; les badges combinent la plateforme et le cache de profils. Les réponses aux fils renseignent initial, reply, et meta.reply lorsque les détails de réponse ou un message parent en cache sont disponibles. |
reward |
channel.reward.redemption.updated, plus les données chat/système du pont ressemblant à des récompenses. |
meta inclut l'identifiant de récompense/d'utilisation, le titre, le coût, l'état, la saisie utilisateur et l'utilisateur ayant utilisé la récompense. |
new_subscriber |
channel.subscription.new. |
membership affecté au rôle d'abonné ; meta inclut { subscriber, plan }. |
resub |
channel.subscription.renewal. |
meta.duration (mois) et meta.plan disponible ; subtitle résume la série. |
subscription_gift |
channel.subscription.gifts. |
meta.totalGifted, meta.gifter; les badges utilisent l'icône 💝 en repli. |
donation |
Événements de soutien/pourboire détectés par heuristiques sur le type d'événement ; les cadeaux KICKs utilisent gift ci-dessous. |
hasDonation contient le montant formaté ; meta contient { amount, currency, supporter, message, giftName }. |
gift |
kicks.gifted (cadeaux KICKs), comme le capteur du DOM. |
hasDonation contient N KICKs (1 KICK pour un) ; contentimg contient l'image du cadeau lorsqu'elle est disponible. Les détails structurés du cadeau restent sous meta. |
raid |
Prise en charge de compatibilité des anciennes données de socket de type host, telles que App\Events\StreamHostEvent. |
Le catalogue officiel actuel d'événements Kick ne propose aucun abonnement raid/host. Si des données anciennes compatibles arrivent, elles sont associées à l'événement canonique raid; n'en dépendez pas pour un flux de travail Kick actuel. |
new_follower |
channel.followed. |
Les icônes des followers proviennent du cache de profils ; follower_update se déclenche lorsque Kick fournit les totaux cumulés. |
follower_update |
La passerelle fournit le nombre de followers dans les données du webhook. |
meta total entier ; utilisé par les tableaux de bord pour les objectifs de followers. |
stream_online / stream_offline |
livestream.status.updated. |
meta contient le corps brut de l'état provenant de Kick (is_live, title, etc.). |
viewer_update |
livestream.status.updated lorsque Kick inclut les totaux de spectateurs simultanés. |
meta nombre entier de spectateurs ; émet 0 lors du passage hors ligne pour effacer les compteurs périmés. |
user_banned |
moderation.banned depuis la passerelle/le webhook, ou les événements de bannissement du socket de chat Kick. |
Événement composé uniquement de métadonnées pour les widgets de modération. meta inclut le nom d'utilisateur/d'affichage, l'identifiant utilisateur, l'URL d'avatar/de profil, le modérateur, le motif, la durée du bannissement/de l'exclusion temporaire et le caractère permanent. |
Les recherches de profils utilisent profileCache; mapBadges fusionne les images de badges Kick avec les SVG en cache lorsqu'ils sont disponibles. Lorsque Kick signale des dons en KICKs, la passerelle les convertit en hasDonation plus meta.amount avec currency utilise « KICKs » en repli. Les données de chat incluent meta.messageId lorsque la passerelle expose un identifiant natif de message Kick pour que la synchronisation des suppressions cible le bon message. Les données de réponse incluent meta.reply avec le parent messageId, author, et text lorsqu'ils sont connus. Les détails de réponse fournis restent disponibles même si le message d'origine n'est pas en cache ; une réponse ne contenant qu'un identifiant sans contexte en cache peut toujours ne pas afficher de citation.
Kick WebSocket : référence rapide des événements
data.event |
Scénario |
new_follower | Un utilisateur a suivi la chaîne |
new_subscriber | Nouvel abonnement |
resub | Renouvellement d'abonnement |
subscription_gift | Abonnements offerts |
reward | Utilisation d'une récompense de chaîne ou message de chat/système de type récompense |
donation | Événement de pourboire/soutien |
gift | Événement de cadeau KICKs |
raid | Ancienne entrée host/raid réservée à la compatibilité ; ce n'est pas un abonnement officiel Kick actuel |
follower_update | Nombre total de followers |
stream_online | Début du direct |
stream_offline | Fin du direct |
user_banned | Un utilisateur a été banni ou exclu temporairement |
VPZone - WebSocket
Implémentation : sources/websocket/vpzone.js
- Se connecte à
wss://chat.vpzone.tv/ws?channel=USERNAME; OAuth demande profile:read, chat:read, chat:write, channel:read, channel:write, et chat:moderate. Un token Bearer peut aussi être fourni manuellement.
- Trames VPZone simples telles que
type: "msg" sont normalisés en données de chat standard.
- Côté plateforme
delete_message / clear_chat les trames suppriment les lignes correspondantes du Dock ; des options facultatives synchronisent les suppressions et blocages du Dock vers VPZone (propriétaire de chaîne uniquement).
- Les propriétaires de chaîne disposent d'un panneau Stream Info local à la page pour modifier le titre et la catégorie du direct (selon le même principe que la page source Twitch).
| Événement |
Déclenchement |
Notes sur les données |
message |
VPZone msg, message, new_message, ou chat_message trame WebSocket. |
chatname provient de username; chatmessage provient de body; les indicateurs d'abonné, de propriétaire, de modérateur et de VIP sont copiés dans chatbadges, indicateurs de rôle au premier niveau et meta. Les identifiants natifs renseignent data.id et meta.messageId. |
viewer_update |
VPZone presence trame avec count ou un champ équivalent de spectateurs. |
meta est le nombre entier de spectateurs en direct ; contribue au total agrégé viewer_updates. |
new_subscriber |
VPZone subscribe / subscription trame. |
membership est défini sur Subscriber lorsque des indicateurs d'abonnement sont présents. |
subscription_gift |
VPZone gift / gift_subscription trame. |
Utilise le même nom d'événement d'abonnement offert que Twitch, Kick, Rumble et Velora. subtitle contient le nombre de cadeaux (x5) ou destinataire. |
message + hasDonation |
VPZone system trame avec metadata.kind: "pixels_cheer" (pourboire en Pixels). |
Ligne de chat comportant un don ; hasDonation est le libellé du montant (par exemple 100 Pixels), meta.pixels l'entier. event reste vide ; détectez ce pourboire à partir de hasDonation. Les événements de soutien de la passerelle Kick utilisent quant à eux event: "donation". |
message réponses |
VPZone msg trame contenant metadata.reply_to (ID du message, auteur, extrait — dénormalisés côté serveur). |
Affichées comme les réponses Kick : initial contient le libellé « auteur : extrait », reply le texte brut de la réponse, meta.reply la cible structurée. Respecte le exclure « replying to » paramètre. |
raid |
VPZone raid trame avec metadata.kind: "incoming". |
Les trames de raids sortants sont ignorées ; meta.viewers contient la taille du raid lorsqu'elle est fournie. |
shoutout |
VPZone shoutout trame (!so commande). |
meta.targetUser nomme la chaîne mise en avant. |
reward |
VPZone system trame avec metadata.kind: "channel_points_redeem". |
Utilisation de points de chaîne, avec le même nom d'événement que les récompenses Twitch. |
stream_online / stream_offline |
VPZone system trames avec metadata.kind: "stream_started" / "stream_ended". |
Attribué au nom de la chaîne (les trames ne contiennent aucun acteur). |
new_follower |
VPZone follow trame. |
Associé à la structure standard d'événement de nouveau follower. |
joined |
Événements WebSocket de type arrivée/présence VPZone, lorsque Capturer les événements de participation au direct « joined » est activé. |
Associé à un événement système de type chat avec les métadonnées de l'acteur VPZone sous meta. |
Joystick
Implémentations : sources/joystick.js, sources/inject/joystick-ws.js, et sources/websocket/joystick.js
- La source normale du site Joystick 2.0 s'exécute sur la page connectée
/u/<channel>/chat page. Elle lit le champ de la page ChatChannel, WhisperChatChannel, EventLogChannel, et SystemEventChannel Trames Action Cable, avec repli sur les lignes affichées pour Electron et les cas de reconnexion.
- Les messages de chat du site utilisent les mêmes champs principaux que YouTube, Twitch et Kick : le champ natif
id, chatname, chatmessage, chatimg, chatbadges, nameColor, membership, mod, private, username/userid, et timestamp lorsque Joystick les fournit. Lorsque le socket omet une couleur de nom d'utilisateur, la ligne affichée fournit la même valeur de nameColor champ utilisé par les Docks avec couleurs activées.
- Les modifications de messages côté site remplacent la ligne correspondante du Dock ; les suppressions, mises en sourdine et blocages retirent les lignes correspondantes à l'aide de l'identifiant natif ou du nom d'utilisateur.
- La source WebSocket distincte utilise les identifiants de bot Joystick (
client_id + client_secret) ; la source du site utilise la session connectée de la page.
- Autorise sur
https://joystick.tv/api/oauth/authorize, puis échange/renouvelle les tokens à https://api.joystick.tv/api/oauth/token.
- Se connecte à
wss://api.joystick.tv/cable et s'abonne à GatewayChannel.
- Un échange facultatif de jetons OAuth est utilisé pour les points de terminaison auxiliaires tels que
https://api.joystick.tv/api/users/stream-settings.
- La source distincte utilisant les identifiants de bot n'émet pas
viewer_update. La source du site connecté émet bien des nombres de spectateurs lorsque le socket de sa page les fournit, comme décrit ci-dessous.
| Événement |
Déclenchement |
Notes sur les données |
message |
Joystick ChatMessage, BotMessage, new_message, bot_message, event_bot_message, pvp_message, et les chuchotements. |
Le chat ordinaire n'a pas de event. L'identifiant natif est placé dans le champ de premier niveau id et meta.messageId; les rôles et l'état privé utilisent les champs établis de premier niveau et de badges. |
new_follower |
Joystick StreamEvent avec le type Followed. |
Utilise la structure standard de nouveau follower et est dédupliqué avec la ligne de bot correspondante de Joystick. Champ facultatif meta.userId/meta.followedAt ne sont inclus que lorsque Joystick les fournit. |
new_subscriber / subscription_gift |
Types d'événements Joystick NewSubscription / GiftedSubscription. |
Utilise les clés de métadonnées d'abonnement compatibles avec Kick : eventType, subscriber, gifter, totalGifted, duration, et plan. |
donation |
Joystick StreamEvent types Tipped / TipMenu. |
hasDonation contient le montant et l'unité des jetons pour la conversion commune en USD lorsqu'ils sont disponibles, et la ligne de bot Joystick correspondante est dédupliquée. meta utilise les clés établies des événements de soutien Kick : eventType, supporter, amount, currency, message, giftName, giftType, et tier. |
stream_online / stream_offline |
Joystick StreamEvent types tels que Started, StreamResuming, Ended, StreamEnding. |
Utilisé pour les automatisations en ligne/hors ligne tenant compte du transport. |
user_enter / user_leave |
Joystick UserPresence types enter_stream / leave_stream. |
Les notifications de présence sont émises comme messages d'événement et peuvent être supprimées par les paramètres de masquage des événements. Ceux-ci masquent également les événements de diffusion autres que les dons. |
viewer_update |
La source du site connecté reçoit ViewerCountUpdated via EventLogChannel. |
Utilise un entier simple meta, comme YouTube, Twitch et Kick. Émis seulement si le comptage des spectateurs ou Hype est actif. La source séparée à identifiants de bot ne reçoit toujours pas les compteurs. |
follower_update / subscriber_update |
Événements de mise à jour du nombre de followers et d'abonnés Joystick. |
Utilise un entier simple meta, conformément au contrat des compteurs Twitch. |
| Notifications internes ignorées |
ChatMessageReceived, état de l’appareil et actualisations de widgets non associées, comme les objectifs de pourboires/PvP/subathon. |
Il s'agit de notifications de transport ou d'état de page, pas d'événements Social Stream. Elles ne sont pas converties en événements inventés snake_case noms d'événements ; le véritable ChatChannel/new_message la ligne reste l'unique donnée de chat. |
XP Sync
Implémentation : sources/xpsync.js
- Les lignes de chat utilisent les champs de données canoniques avec
type: "xpsync", dont auteur, message, avatar, badges images et SVG intégrés, couleur du nom, adhésion, indicateurs modérateur/membre/bot et UUID natif du message dans id lorsqu'il est disponible.
- Les réponses suivent la convention des sources DOM YouTube, Twitch et Kick : sauf si les préfixes de réponse sont désactivés,
initial contient l'utilisateur auquel la réponse s'adresse, reply conserve le message sans préfixe, et chatmessage reçoit le préfixe de réponse visible.
- Les lignes mises en évidence par Sparks sont capturées même si XPSync les affiche sans la classe de ligne de chat ni l'identifiant de message habituels ; le montant visible est exposé via
hasDonation comme N Sparks.
- Lorsque la capture d'événements est activée, les lignes contenant « just followed » ou « followed the channel » émettent
event: "new_follower".
- Lorsque les nombres de spectateurs sont activés, le Dock de chat permanent émet
event: "viewer_update" à partir du nombre de spectateurs de la vidéo en direct déjà chargé par la page XPSync et l'actualise à partir des mises à jour de la page en direct XPSync. Aucun identifiant SSN distinct n'est requis.
Instagram – Capture REST en direct et boîte de réception des actualités
Implémentation : sources/instagram.js et sources/instagramlive.js (copies identiques)
- Sur les pages de direct (
/<user>/live/?broadcast_id=...), le chat en direct vient de l’API web d’Instagram, interrogée depuis la même origine avec le cookie de session : GET /api/v1/live/{broadcast_id}/get_comment/?last_comment_ts={ts} environ toutes les 2 s, et POST /api/v1/live/{broadcast_id}/heartbeat_and_get_viewer_count/ environ toutes les 5 s lorsque les nombres de spectateurs sont activés. Après 3 échecs consécutifs (ou en l'absence de broadcast_id peut être découvert), la source se replie sur l'analyse du DOM du chat affiché.
- Le flux d'activité du compte lui-même est interrogé via
POST /api/v1/news/inbox/ environ toutes les 45 s sur toute page Instagram. La première interrogation initialise uniquement l'ensemble de déduplication pour que l'historique ne soit jamais rejoué ; les actualités sont dédupliquées par tuuid.
- En-têtes API requis (tous statiques ou déductibles) :
X-IG-App-ID: 936619743392459, X-CSRFToken (depuis le cookie), X-ASBD-ID: 359341, X-Requested-With: XMLHttpRequest, Content-Type: application/x-www-form-urlencoded.
- Tous les événements du flux d'activité utilisent
type: "instagram"; le chat en direct reste type: "instagramlive". Les événements J'aime suivent le circuit normal en arrière-plan : le processus d'arrière-plan envoie une copie à l'incrustation de réactions dédiée, puis les inclut dans le flux principal de chat et d'événements uniquement lorsque capturelikeevent est activé, comme sur TikTok et MeetMe. hideevents et le filtre d'événements personnalisé les bloque partout. Comme les événements de la boîte de réception appartiennent au compte connecté, ils sont supprimés pendant le visionnage du direct d'une autre personne (à la fois /<user>/live/ pages et directs dans la visionneuse de stories ; la propriété est déterminée par profil et la recherche est retentée après un échec), et émis sur votre propre direct ainsi que sur toutes les pages hors direct. Un seul onglet Instagram actif interroge la boîte de réception du compte à la fois, et l'interrogation ne fonctionne que lorsque vous êtes connecté.
| Événement |
Déclenchement |
Notes sur les données |
message (en direct) |
De nouvelles entrées dans le get_comment réponse (comments[]/system_comments[]), ou nouvelles lignes DOM si REST est indisponible. |
Données de chat standard, type: "instagramlive". REST fournit des valeurs exactes de user.username, user.profile_pic_url, et une valeur unique pk utilisé pour la déduplication. |
viewer_update |
heartbeat_and_get_viewer_count signale une modification de viewer_count, quand la capture du nombre de spectateurs ou Hype est activé. |
meta nombre entier de spectateurs. L'interrogation s'arrête lorsque broadcast_status n'est plus "live". |
stream_online / stream_offline |
stream_online se déclenche une fois au démarrage d'une session de diffusion REST ; stream_offline se déclenche lorsque le signal de présence indique un état hors direct broadcast_status (nécessite la capture du nombre de spectateurs ou le mode Hype). |
Événements composés uniquement de métadonnées correspondant au vocabulaire commun d'état de diffusion utilisé par Twitch et Joystick. |
new_follower |
Une actualité de la boîte de réception avec un type de suivi notif_name (ou story_type 12) apparaît. |
chatname est le nouveau follower, chatimg leur image de profil, chatmessage le texte de la boîte de réception (par exemple « x a commencé à vous suivre. »). |
follow_request |
Un private_user_follow_request une actualité apparaît (les comptes privés reçoivent des demandes au lieu de suivis directs). |
Même structure que new_follower, gardés distincts pour permettre des approbations ou salutations différentes. |
liked |
Une actualité de la boîte de réception avec un type J'aime notif_name (y compris comment_like) apparaît. |
Vocabulaire de J'aime commun avec TikTok/MeetMe. chatname est l'acteur, chatmessage le texte de la boîte de réception (par exemple « x a aimé votre photo. »). |
message (commentaire sur sa propre publication) |
Une actualité de la boîte de réception avec un type de commentaire notif_name apparaît. |
Ligne de chat simple (event: false), type: "instagram"; chatmessage contient le texte de la boîte de réception, y compris l'extrait du commentaire. |
notification |
Tout autre type d'actualité de la boîte de réception (mentions, identifications, achats, etc.). |
Catégorie générique ; meta.notifName et meta.storyType conservent la classification brute de l'actualité. |
Facebook Live
Implémentation : sources/facebook.js (capture du DOM) et pont Graph API facultatif à sources/websocket/facebook.html
- La capture DOM lit les commentaires Facebook affichés ; la passerelle Graph API des Pages gérées lit les commentaires vidéo. Les deux utilisent
type: "facebook", les champs standard de chat et aucun event pour les commentaires ordinaires. La passerelle API inclut également le champ facultatif platform: "facebook".
- La passerelle API utilise
userid pour l'identifiant de l'auteur lorsqu'il est disponible, timestamp pour une date de création valide en millisecondes Unix, et contentimg pour une image jointe HTTP(S) fournie par l'API. Les commentaires composés uniquement d'une image peuvent avoir un champ vide chatmessage. textonly s'applique uniquement au corps du message : texte brut si true, HTML échappé si false.
- Le contexte des commentaires API utilise
meta.messageId (ID natif du commentaire), meta.permalink, meta.videoId, et meta.pageId. Les anciennes versions de l'API utilisaient meta.commentId, champs auteur/temps dupliqués sous meta, et y transmettait les pièces jointes brutes. Les nouvelles versions utilisent les champs standard auteur/temps/média ; cela n’ajoute pas la synchronisation des suppressions.
- Les nombres de spectateurs ne sont actualisés que lorsqu'ils sont activés. La passerelle API lit les valeurs simultanées
live_views; cela ne remplace pas ce nombre par les vues cumulées de la vidéo et n'invente pas un zéro lorsqu'il est indisponible. La capture API ne déduit pas les Stars, les abonnements, les mises en avant ou les réponses à partir du texte ordinaire des commentaires.
- Les Stars sont capturées depuis le DOM du chat en direct affiché lorsque Facebook montre l'élément visible
N sent marqueur ; ils renseignent hasDonation et donoValue au taux de 100 Stars = 1 $ USD sans définir data.event.
- Pour tester, ajoutez
ssnreplay=1 à l'URL Facebook Live pour traiter les lignes de chat déjà visibles après l'actualisation.
| Événement |
Déclenchement |
Notes sur les données |
viewer_update |
Le DOM interroge le badge des spectateurs en direct ; la passerelle API interroge les vues simultanées en direct lorsqu'elle est activée. |
meta nombre entier de spectateurs, comme pour les autres sources. Les nombres absents ou impossibles à analyser sont ignorés ; un vrai zéro est valide. |
hasDonation |
Stars Facebook affichées dans le DOM du chat en direct. |
Données de chat standard ; hasDonation contient le montant visible de Stars, par exemple 100 Stars, et donoValue contient la valeur en USD. Les Stars ne définissent pas data.event. |
highlightColor |
Facebook affiche un élément visible HIGHLIGHTED libellé. |
Utilise les champs de chat habituels et highlightColor; aucun data.event est défini. Les Stars utilisent toujours hasDonation. |
Online Church
Implémentation : sources/onlinechurch.js
- Repose sur l'extraction DOM du chat public et de l'en-tête média.
- Les nombres de spectateurs ne sont actualisés que lorsque Afficher le nombre de spectateurs ou le mode Hype est activé.
| Événement |
Déclenchement |
Notes sur les données |
message |
De nouvelles entrées apparaissent sous #publicchat. |
Données de chat standard avec nom de l'expéditeur, avatar, badges et libellé d'abonnement facultatif lorsqu'il figure dans le DOM. |
viewer_update |
Interroge le badge de présence en direct dans l'en-tête média toutes les 10 s. |
meta nombre entier de spectateurs ; envoie 0 lorsque le badge est absent ou illisible, pour effacer les compteurs périmés. |
SharePlay.tv
Implémentation : sources/shareplay.js
- Repose sur l'extraction DOM du volet de chat en direct sur les pages de chaîne SharePlay.
- Seules les nouvelles lignes de chat et cartes insérées sont émises après la connexion de l'extracteur ; l'historique existant est délibérément ignoré.
| Événement |
Déclenchement |
Notes sur les données |
message |
De nouvelles lignes de chat apparaissent dans le flux principal du chat. |
Données de chat standard avec auteur, avatar, images de badges et émoticônes conservées en HTML. Les réponses aux fils renseignent également initial, reply, et meta.reply lorsque la ligne parente est encore présente. |
raid |
SharePlay insère une carte Blitz dans le flux de chat en direct. |
Associé à l'événement de raid canonique. meta.cardType est "blitz", avec le facultatif meta.fromLogin et meta.viewers lorsque le texte de la carte les expose. |
shoutout |
SharePlay insère une carte de mise en avant/suivi dans le flux de chat. |
Émis sous la forme data.event = "shoutout". L'image de bannière de la carte est transmise via contentimg, tandis que meta.cardType et meta.action conservent le libellé de la carte/le texte du bouton. |
viewer_update |
Interroge le badge visible des spectateurs dans l'en-tête toutes les 10 s. |
meta nombre entier de spectateurs ; émis uniquement lorsque Afficher le nombre de spectateurs ou le mode Hype est activé, et envoie 0 si le badge devient illisible, afin d'effacer les compteurs périmés. |
Streamplace
Implémentation : sources/streamplace.js
- Lit la page de direct de Streamplace affichée par React et ignore l'historique visible du chat lors de la connexion.
- Messages de type relais tels que
Name (Discord): message sont normalisés vers le nom de l'expéditeur relayé.
| Événement |
Déclenchement |
Notes sur les données |
message |
De nouvelles lignes de chat Streamplace apparaissent après la connexion. |
Données de chat standard avec nameColor, chatbadges, liens conservés en HTML et champs de réponse initial, reply, et meta.reply lorsqu'il est visible. |
viewer_update |
Le badge des spectateurs dans l'en-tête change lorsque la capture du nombre de spectateurs ou le mode Hype est activé. |
meta nombre entier de spectateurs. |
WorldsWave
Implémentation : sources/worldswave.js
- Prend en charge les pages de direct WorldsWave et les URL de chat seul telles que
https://worldswave.com/kn_livecmd.php?cmd=viewStream&streamId=STREAM_ID&chatonly=1.
- Utilise l'identifiant stable
data-ww-*/ww-chat-* balisage lorsqu'il est disponible, tout en conservant les anciens sélecteurs kontackt pour les pages de chat seul et les anciennes dispositions.
- L'historique de chat existant est ignoré au démarrage de la capture ; testez avec un nouveau message.
- Les nombres de spectateurs nécessitent Afficher le nombre de spectateurs ou le mode Hype. Les événements dédiés de cadeaux/pourboires et l'envoi de réponses ne sont pas implémentés. Une ligne affichée peut tout de même fournir un libellé de don via
data-ww-donation.
| Événement |
Déclenchement |
Notes sur les données |
message |
Une nouvelle ligne de chat WorldsWave s'affiche. |
Données de chat standard avec type: "worldswave", nom de l’expéditeur, avatar, ID utilisateur facultatif, couleur, badges, statut de modérateur, adhésion, valeur du don, pièce jointe et identité du canal. Les ID stables WorldsWave sont exposés dans meta.messageId et dédupliqués entre les panneaux d'aperçu et de chat complet simultanés. Les images intégrées aux messages restent assainies lorsque le mode texte seul est désactivé. |
viewer_update |
Le total visible de spectateurs en direct change lorsque la capture du nombre de spectateurs ou le mode Hype est activé. |
meta est le nombre entier de spectateurs. L'identifiant stable data-ww-viewer-count la valeur est privilégiée ; les anciennes valeurs compactes telles que 1.2K sont normalisés en repli. |
FLEX TV
Implémentation : sources/flextv.js
- Lit le panneau de chat affiché sur
https://www.flextv.co.kr/channels/*/live pages.
- Le panneau de chat doit être visible. L'historique existant du chat est ignoré lors de la connexion de la source ; testez donc avec une nouvelle ligne de chat.
- Aucun nombre de spectateurs, don ou circuit de réponse n'est encore documenté pour cette source.
| Événement |
Déclenchement |
Notes sur les données |
message |
Nouvelles entrées FLEX TV visibles .chat-item des lignes apparaissent dans le flux de chat en direct. |
Données de chat standard avec type: "flextv", chatname, chatmessage, nameColor, images de badges dans chatbadges, et les détails des membres FLEX sous meta lorsqu'il est exposé par data-member. |
Seal Team Sloth
Implémentation : sources/sealteamsloth.js
- Lit le chat détaché affiché sur
https://sealteamsloth.com/popout-chat/* pages.
- Les nombres de spectateurs nécessitent Afficher le nombre de spectateurs ou le mode Hype.
| Événement |
Déclenchement |
Notes sur les données |
message |
Une nouvelle ligne de chat Seal Team Sloth s'affiche. |
Données de chat standard avec type: "sealteamsloth", nom de l’expéditeur, avatar et contenu du message. |
viewer_update |
Le total visible de spectateurs en direct change lorsque la capture du nombre de spectateurs ou le mode Hype est activé. |
meta est le nombre entier de spectateurs ; les valeurs compactes telles que 1.2K sont normalisés. |
MeetMe - Capture DOM et WebSocket
Implémentation : sources/meetme.js
- Lit le DOM du chat en direct affiché de MeetMe sur
app.meetme.com/live/view/... pages et dans le api.gateway.meetme-live.com/web-live/... iframe.
- Lorsque le WebSocket de l'iframe est disponible,
wss://video-live.meetme.com/ les trames sont analysées avant le repli DOM pour capturer des événements en direct plus riches.
hideevents supprime les événements autres que les dons ; les cadeaux MeetMe et les dons de diamants renseignent toujours les champs de don. capturejoinedevent active les avis d'arrivée et de retour. Les événements propres à un acteur liked les événements utilisent le routage commun en arrière-plan contrôlé par capturelikeevent; agrégat reaction les effets restent explicitement destinés à l'incrustation de réactions.
- Les nombres de spectateurs privilégient le compteur visible de l'en-tête MeetMe et utilisent les totaux WebSocket en repli uniquement lorsque le compteur DOM est indisponible. Les nombres sont émis à chaque changement et le dernier nombre est répété environ toutes les 30 secondes pendant que
showviewercount/hypemode est activé ; les totaux de followers sont émis uniquement lors des changements et limités à environ une fois toutes les 60 secondes.
| Événement |
Déclenchement |
Notes sur les données |
message |
Nouveau SNSChatMessage des trames WebSocket arrivent, ou de nouveaux ChatMessage_* Les lignes DOM apparaissent sous ChatHistoryContainer_*. |
Données de chat standard avec nom de l'expéditeur, avatar, HTML/texte du message et images/texte des badges. Les détails de ligne DOM sont des champs simples meta clés, notamment messageId, roomId, level, levelColor, badgeLabels, badgeSrcs, badgeClasses, isBouncer, isTopStreamer, isBestOfTheWeek, rank, et rowClassName. Les données WebSocket définissent meta.source = "websocket". |
joined / rejoined / left |
SNSChatParticipant des trames WebSocket de création, mise à jour ou suppression arrivent, ou MeetMe affiche dans le DOM un join-cell ligne. Les avis d'arrivée/retour nécessitent Capturer les événements de participation au direct « joined ». |
Émet des avis système de type chat avec le nom et l'avatar de l'acteur lorsque MeetMe les expose. meta.isNewViewer, meta.viewerLevelId, meta.isBouncer, et meta.isSubscriber conservent l'état des participants. |
new_follower |
MeetMe affiche dans le DOM une ligne de favori/suivi telle que Favorited. |
Utilise le vocabulaire commun des événements de nouveaux followers. chatname est l'acteur, chatimg est la photo de profil détectée lorsqu'elle est disponible, et les champs simples meta.favoriteText/meta.targetName conservent les détails de la ligne d'origine. |
gift |
SNSGiftMessage des trames WebSocket arrivent, ou MeetMe affiche une image de cadeau dans une ligne de chat. |
hasDonation contient le libellé visible du cadeau ou sa valeur en diamants, contentimg contient l'image du cadeau lorsqu'elle est exposée, et des clés simples telles que meta.giftName, meta.giftCount, meta.amount, et meta.currency conservent les détails structurés. Le gift l'événement est réservé aux véritables trames/lignes de cadeaux ; l'affichage des dons doit toujours se baser sur hasDonation. |
donation |
SNSDiamond les trames WebSocket exposent l'activité de diamants. |
Les trames dédiées aux diamants sont traitées comme des événements de don. hasDonation est formaté en diamants pour la conversion commune en USD, et meta.amount/meta.currency restent simples pour les automatisations. |
liked / reaction |
SNSLike des trames WebSocket arrivent. |
Les J'aime propres à un acteur utilisent le même liked vocabulaire et routage centralisé en arrière-plan de TikTok. Les totaux agrégés/anonymes de J'aime sont envoyés uniquement à la destination de réactions sous reaction, avec des champs plats meta.reactionType, meta.totalLikes, et meta.subscriberLikes. La distinction porte sur le sens de l'événement, pas sur l'anonymat : capturelikeevent contrôle uniquement les événements individuels liked/like événements. |
follower_update |
SNSVideo les métadonnées WebSocket exposent les totaux de followers. |
meta est le nombre entier de followers, conformément à la convention commune des événements de compteur. |
guest_update |
SNSVideoGuestBroadcast des trames de création/mise à jour arrivent. |
Événement composé uniquement de métadonnées pour l'état d'un invité ou coprésentateur en direct. Les données simples meta les clés comprennent status, position, totalGuests, isMuted, guestBroadcastId, videoViewerId, et broadcastId. |
viewer_update |
Le badge visible des spectateurs dans l'en-tête change, ou SNSVideo les métadonnées WebSocket exposent les totaux de spectateurs lorsque le badge est indisponible ; les totaux inchangés sont répétés environ toutes les 30 secondes lorsque l'option est activée. |
meta nombre entier de spectateurs ; émis uniquement lorsque la capture du nombre de spectateurs ou le mode Hype est activé. |
Velora
Implémentation : sources/velora.js et sources/websocket/velora.js
- Le mode standard lit le DOM du chat visible ; le mode WebSocket utilise l'API Events de Velora avec OAuth.
- Les URL prises en charge en mode standard comprennent
https://velora.tv/*, https://velora.tv/dashboard/stream/popout?panels=chat%2Cactivity&channel=CHANNEL&layout=vertical, et https://velora.tv/dashboard/stream/popout/CHANNEL/obs-chat.
- Les cartes de type Volts et points de chaîne sont émises sous forme de données d'événement lorsqu'elles sont exposées par le DOM ou l'API Events.
| Événement |
Déclenchement |
Notes sur les données |
message |
De nouvelles lignes de chat Velora apparaissent ou des messages de chat de l'API Events arrivent. |
Données de chat standard avec badges, couleur de l'auteur, liens et émoticônes conservés hors du mode texte seul. |
volts |
Cartes Volts Velora ou channel.volts Les données de l'API Events arrivent. |
hasDonation contient le montant de Volts affiché ; les captures DOM incluent meta.source = "dom". |
channel_points |
Cartes de points de chaîne/utilisation de récompenses Velora ou channel.channel_points_redemption Les données de l'API Events arrivent. |
chatmessage contient le message d'utilisation ou le titre de la récompense ; meta.rewardTitle identifie la récompense lorsqu'elle est disponible. |
subscription |
Une ligne d'activité Velora visible indique qu'un utilisateur est devenu membre/abonné de la chaîne. |
membership contient le libellé d'abonnement visible. |
viewer_update |
Le nombre visible de spectateurs change lorsque la capture du nombre de spectateurs ou le mode Hype est activé. |
meta nombre entier de spectateurs. |
Parti - Capture de chat de profil / détaché
Implémentation : sources/parti.js
- Prend en charge les URL de profil telles que
https://parti.com/USERNAME et les URL de chat détaché telles que https://parti.com/popout-chat?id=USER_ID.
- Les nombres de spectateurs utilisent le point de terminaison de présence du direct Parti lorsque la capture du nombre de spectateurs ou le mode Hype est activé.
| Événement |
Déclenchement |
Notes sur les données |
message |
Des lignes de chat Parti visibles apparaissent dans le flux du chat de profil ou détaché. |
Données de chat standard ; nameColor conserve la couleur affichée de l'auteur sur Parti et chatmessage conserve le contenu intégré sauf si le mode texte seul est activé. |
donation |
Les lignes de pourboire Parti visibles indiquent qu'un utilisateur a donné un montant. |
hasDonation contient le montant affiché, meta.amount/meta.currency sont renseignés lorsqu'ils peuvent être analysés, meta.amountText conserve le texte brut du montant, et donoValue est défini pour les pourboires en USD. |
viewer_update |
Le signal de présence de Parti renvoie le nombre de spectateurs en direct. |
meta est le nombre entier de spectateurs ; la page réutilise un jeton de présence par fenêtre source pour éviter de gonfler les nombres. |
CHZZK - Capture du chat détaché
Implémentation : sources/chzzk.js
- Prend en charge
https://chzzk.naver.com/live/*/chat et https://chzzk.naver.com/iframe/live/*/chat.
- Les nombres de spectateurs utilisent le point de terminaison d'interrogation de l'état du direct CHZZK lorsque la capture du nombre de spectateurs ou le mode Hype est activé.
| Événement |
Déclenchement |
Notes sur les données |
message |
Des lignes de chat CHZZK visibles apparaissent dans le flux du chat détaché. |
Données de chat standard avec type: "chzzk", nameColor, URL d’images de badges dans chatbadges, et les emotes affichées dans chatmessage sauf si le mode texte seul est activé. |
chat avec hasDonation |
Des lignes de dons de fromage CHZZK visibles apparaissent dans le chat. |
hasDonation contient le montant de fromage affiché. Ces lignes ne définissent pas data.event. |
viewer_update |
L'interrogation de l'état du direct renvoie un nombre de spectateurs. |
meta est le nombre entier de spectateurs. |
Rumble - Capture DOM standard
Implémentation : sources/rumble.js
- Nécessite les cookies d'une session authentifiée pour que le
service.php l'API des spectateurs répond.
- Les lignes Rant affichées fournissent
hasDonation; les cartes de raids entrants fournissent event: "raid". Cette source DOM n'émet pas le flux d'événements d'abonnés et de followers de la passerelle API.
| Événement |
Déclenchement |
Notes sur les données |
message |
Des lignes de chat Rumble visibles apparaissent dans le chat de la page ou de la fenêtre détachée. |
Données de chat standard ; chatmessage conserve le HTML des images d'émoticônes Rumble après leur affichage par la page, sauf si le mode texte seul est activé. |
viewer_update |
Appelle le point de terminaison de Rumble video.watching-now service toutes les 30 s. |
meta nombre entier de spectateurs ; utilise credentials: 'include' pour réutiliser les cookies de session. |
chat avec hasDonation | Une ligne Rant visible contient un prix. | hasDonation conserve le prix affiché ; aucun marqueur d'événement de don n'est ajouté. |
raid | Une carte de raid entrant apparaît dans le chat. | Utilise le message de raid visible et l'image facultative de la carte dans contentimg. |
Rumble - WebSocket/URL API
Implémentation : sources/websocket/rumble.js
- Nécessite l'URL Live Stream API appartenant au créateur, disponible dans
https://rumble.com/account/livestream-api. Rumble indique que cette URL inclut la clé de diffusion en direct, ne nécessite aucune authentification distincte et ne doit être partagée qu'avec des tiers de confiance.
- Transport en lecture seule. La documentation publique de l'API Rumble Live Stream ne décrit aucun point de terminaison officiel pour envoyer des messages de chat ; cette source relaie donc les messages et événements vers Social Stream, mais n'envoie pas de messages à Rumble.
livestreams[].chat n'est renseigné que lorsque le direct sélectionné est en cours. Utilisez ?streamId=... pour fixer un direct précis lorsque l'API en expose plusieurs ; les identifiants non valides provoquent désormais un échec au lieu de basculer silencieusement vers un autre direct.
- La page résout également
https://rumble.com/chat/popup/<livestreams[].id> pour que vous puissiez ouvrir directement le chat détaché injecté habituel sans charger d'abord la page du diffuseur /live page.
| Événement |
Déclenchement |
Notes sur les données |
message |
De nouvelles entrées arrivent du flux de chat SSE de Rumble une fois que l'API officielle a résolu livestreams[].id; utilise en repli livestreams[].chat.recent_messages. |
Données de chat standard. meta.source est rumble_sse lorsque le flux de chat SSE est disponible et inclut les URL d'avatars provenant de users[].image.1; sinon, utilise en repli live_stream_api sans avatars. Lorsque le catalogue d'émoticônes de la fenêtre est disponible, chatmessage affiche les émoticônes shortcode de Rumble comme images HTML et meta.plainText conserve le texte du shortcode d'origine. |
donation |
De nouvelles entrées Rant apparaissent dans livestreams[].chat.recent_rants. |
hasDonation contient le montant formaté en USD ; meta inclut amount_cents, amount_dollars, et expiresOn. |
new_follower |
De nouvelles entrées apparaissent dans followers.recent_followers. |
Événement système avec chatname défini sur le nom d'utilisateur du follower et l'horodatage sous meta.followedOn. |
new_subscriber |
De nouvelles entrées apparaissent dans subscribers.recent_subscribers. |
membership est défini sur SUBSCRIBER; subtitle reproduit le montant en USD documenté lorsque Rumble le fournit. |
subscription_gift |
De nouvelles entrées apparaissent dans gifted_subs.recent_gifted_subs. |
chatname est l'auteur du cadeau, hasDonation devient N Gifted, et meta inclut totalGifted, remainingGifts, giftType, et videoId. |
follower_update |
Chaque fois que le compteur de followers sélectionné change. |
meta nombre entier de followers. Valeur par défaut : followers.num_followers; avec ?followerMode=total, utilise followers.num_followers_total lorsque Rumble le fournit. |
subscriber_update |
Chaque fois que subscribers.num_subscribers change. |
meta nombre entier d'abonnés. |
stream_online / stream_offline |
Lorsque le direct sélectionné passe de l'état en direct à hors ligne, ou inversement. |
meta inclut un sous-ensemble assaini des champs du direct (id, title, createdOn, libellés de catégorie, mentions J’aime/Je n’aime pas et totaux de spectateurs). Les valeurs sensibles comme stream_key ne sont volontairement pas transmis. |
viewer_update |
Chaque fois que livestreams[].watching_now change pour le direct sélectionné. |
meta nombre entier de spectateurs simultanés ; émet 0 lorsque le direct sélectionné passe hors ligne, pour effacer les compteurs périmés. |
Ce transport est destiné aux chaînes que vous possédez ou gérez. Comme l'URL API contient une clé de diffusion en direct, ne l'exposez pas dans les incrustations, journaux, captures d'écran ou profils de navigateur partagés. Les avatars du chat proviennent du flux de chat SSE de Rumble une fois que l'API officielle a résolu l'identifiant du direct ; ce transport n'extrait pas les avatars des pages Rumble.
YouNow - Capture DOM
Implémentation : sources/younow.js
- Lit le DOM du chat en direct affiché et émet des données de chat standard avec
type: "younow".
- Des lignes d'activité du public telles que
is watching, I became a fan!, et invited N fans to this broadcast. sont signalés par event: true pour que les filtres d'événements puissent les router.
| Événement |
Déclenchement |
Notes sur les données |
message |
De nouvelles lignes de chat apparaissent dans le chat du public en direct. |
Données de chat standard ; les lignes d'activité des fans et du public définissent event: true. |
viewer_update |
Le nombre visible dans le panneau du public change lorsque showviewercount/hypemode est activé. |
meta nombre entier de spectateurs ; émet 0 lorsque le compteur disparaît. |
Favorited Studio - Capture DOM
Implémentation : sources/favorited.js
- Lit le DOM du chat en direct affiché et émet des données de chat standard avec
type: "favorited".
| Événement |
Déclenchement |
Notes sur les données |
message |
De nouvelles lignes de chat apparaissent. |
Données de chat standard. |
viewer_update |
Le compteur de l'onglet des spectateurs en direct change lorsque showviewercount/hypemode est activé. |
meta nombre entier de spectateurs lu depuis le content-live-viewers onglet. |
BEAM - Capture DOM
Implémentation : sources/beamstream.js
- Lit le DOM du chat en direct affiché et émet des données de chat standard avec
type: "beamstream".
| Événement |
Déclenchement |
Notes sur les données |
message |
De nouvelles lignes de chat apparaissent. |
Données de chat standard avec texte brut dans chatname, URL d’avatar dans chatimg, et les URL d’images ou objets de badges SVG dans chatbadges. Les champs masqués sur la page de capture de Beam restent vides. Les liens de profils natifs de Beam ne sont pas traités comme des sources de relais externes. contentimg peut contenir des pièces jointes vidéo/webm intégrées lorsqu'elles sont exposées. |
viewer_update |
Un élément de compteur de spectateurs change pendant que showviewercount/hypemode est activé. |
meta nombre entier de spectateurs ; émis uniquement lorsque la page de chat expose un compteur de spectateurs. |
Castyr - Capture DOM
Implémentation : sources/castyr.js
- Lit les nouvelles lignes de chat affichées depuis
https://castyr.live/homebeta/popout-chat/* et émet des données de chat standard avec type: "castyr".
- L'historique de chat existant est ignoré lors de la connexion de la source.
| Événement |
Déclenchement |
Notes sur les données |
message |
Un nouveau .chat-message ligne apparaît. |
Données de chat standard avec nom de l'expéditeur, contenu affiché du message et couleur du nom lorsqu'elle est exposée. |
viewer_update |
Le nombre visible d'utilisateurs actifs du chat change lorsque showviewercount/hypemode est activé. |
meta est le nombre entier lu dans l'élément de chat actif avec titre de Castyr. |
SOOP - Capture DOM du lecteur
Implémentation : sources/sooplive.js. Prend en charge le format unifié play.sooplive.com lecteur et ancien play.sooplive.co.kr URL. L'ancienne disposition du chat global reste reconnue lorsqu'elle est servie.
Le chat public émet type/platform: "sooplive", texte brut chatname/userid, nameColor, et le contenu assaini chatmessage. Les lignes existantes, les identifiants de messages en double, les copies traduites et les messages privés sont exclus. Les émoticônes deviennent des images sûres ou du texte alternatif en mode texte seul.
Avec showviewercount ou hypemode activé, viewer_update contient un entier meta depuis le champ du lecteur #nAllViewer. Les fenêtres de chat seules n'exposent pas forcément ce nombre. SSApp utilise le lecteur complet pour ouvrir une fenêtre détachée, car les fenêtres SOOP actuelles dépendent de leur fenêtre d'origine.
Gosh - Capture du chat de chaîne
Implémentation : sources/gosh.js. Ouvrez https://gosh.com/USERNAME avec le chat visible, ou collez cette URL dans Add other source de SSApp. Une fenêtre de chat détachée n'est pas nécessaire.
Les nouvelles lignes de chat émettent type/platform: "gosh", texte brut chatname, nameColor, et le contenu assaini chatmessage. Les images intégrées et les GIF conservent des URL HTTP(S) sûres. Avec textonlymode, les images deviennent du texte alternatif ou [image] lorsqu'aucun texte alternatif n'est disponible. Les avatars, badges, dons et abonnements restent vides lorsqu'ils sont absents de la ligne capturée.
Gardez le chat virtualisé défilé jusqu'aux messages les plus récents. L'historique existant, les lignes réaffichées et les avis système sans auteur sont exclus. Les indices d'affichage restent internes et ne sont pas émis comme identifiants natifs de messages. Aucun événement de suivi, de don, de nombre de spectateurs ou de modération n'est déduit.
Livacha - Capture de salon de chat
Implémentation : sources/livacha.js. Ouvrez https://livacha.com/chat/ROOM avec le chat visible, ou collez l'URL du salon dans Add other source de SSApp.
Les nouvelles lignes de chat émettent type/platform: "livacha", texte brut chatname, chatimg, nameColor, et le contenu assaini chatmessage. Les URL relatives des avatars et des images intégrées deviennent des URL HTTP(S) absolues. Les paragraphes, sauts de ligne et listes sont regroupés dans un seul message de chat. Avec textonlymode, les images deviennent du texte alternatif ou [image].
Les identifiants de messages servent en interne à éviter de recapturer les modifications et les lignes remontées. L'historique initial et les anciens messages ajoutés au début sont ignorés ; les horodatages et menus de réactions sont exclus du corps capturé. Aucun événement de don, d'abonnement, de modération ou de nombre de spectateurs n'est déduit.
Stream.space - Capture DOM expérimentale
Implémentation : sources/streamspace.js. Correspond uniquement à https://beta.stream.space/chat-popup.php?channel=USERNAME et l'équivalent https://stream.space fenêtre détachée.
Les nouvelles lignes de chat affichées émettent type: "streamspace", platform: "streamspace", texte brut chatname/userid, chatmessage, avatar chatimg, niveau sous forme d’image chatbadges, et nameColor. Les émoticônes intégrées sont reconstruites sous forme d'images sûres, ou de texte alternatif lorsque textonlymode est activé. L'historique existant, les avis de bienvenue, les aperçus de réponses et les doublons épinglés sont exclus.
viewer_update contient un entier meta lu depuis #popupViewersNum lorsque showviewercount ou hypemode est activé. Aucun événement de don, d'abonnement ou de modération n'est déduit.
Expérimental : la fenêtre bêta est restée sur Loading lors de l'inspection. SSApp a chargé la fenêtre et capturé les mises à jour de spectateurs, mais la réception du chat en direct et la fenêtre de production restent non vérifiées. SSN ne peut pas capturer les messages que le site n'affiche pas.
w.tv et Prime - Capture DOM
Implémentations : sources/wtv.js sur https://w.tv/USERNAME/chat et sources/prime.js sur https://prime.gs/USERNAME?chat_popout=1.
Les nouvelles lignes de chat utilisent type/platform de wtv ou prime, texte brut chatname, nameColor, et le contenu assaini chatmessage. Les émoticônes intégrées deviennent des images sûres ou du texte alternatif en mode texte seul. Prime inclut aussi le champ de la ligne userid et prend en charge à la fois les liens de profils connectés et les libellés de noms d'utilisateurs déconnectés. Les avatars et badges restent vides lorsqu'ils ne sont pas disponibles dans la structure de ligne vérifiée.
L'historique initial, les cartes épinglées et les aperçus de réponses sont exclus. w.tv virtualise son chat : gardez-le défilé jusqu'aux messages les plus récents pour la capture. Ses identifiants de test DOM sont des indices d'affichage, et non des identifiants natifs de messages. Prime ignore l'ancien historique chargé au-dessus des messages initiaux et les espaces réservés aux utilisateurs ignorés.
Aucune des deux fenêtres ne fournit de nombre vérifié de spectateurs du direct ; ces adaptateurs n'émettent donc pas de mises à jour de spectateurs et ne déduisent pas d'événements de don, d'abonnement ou de modération.
Couverture et limites de compatibilité
Cette référence décrit les données implémentées, sans garantir que chaque plateforme fournit chaque événement. Des valeurs vides de hasDonation affectations dans une source ne prouvent pas la prise en charge des dons. La visibilité dans le DOM, les autorisations du compte, les options de capture et la disponibilité de l'API déterminent toujours ce qui est reçu. La transmission des suppressions est propre à chaque source ; ne supposez pas une synchronisation universelle de la modération.
Incohérences et lacunes suivies
| Paire/zone |
Incohérence / absence observée |
Impact |
| Twitch : standard et WebSocket |
Commun : reward, subscription_gift, viewer_update, hype_train, et le champ sur activation watch_streak. Standard uniquement : giftpurchase, knock, community_highlight. WebSocket uniquement : new_subscriber, resub, cheer, powerup, raid, new_follower, follower_update, subscriber_update. |
channel_points est désormais un ancien alias obsolète pour les utilisations de récompenses Twitch ; les nouvelles intégrations doivent se baser sur reward. |
| Kick : standard et WebSocket |
Le mode standard émet des marqueurs légers (gift, reward, booléen true, viewer_update). WebSocket ajoute les événements officiels de suivi, abonnement, cadeau, récompense, KICKs, modération et état live. Il conserve la compatibilité avec un ancien raid données, mais Kick ne propose actuellement aucun abonnement officiel raid/host. |
Le mode WebSocket est plus complet ; les automatisations fondées sur des noms d'événements propres au mode standard doivent être revues lors du changement. N'exigez pas d'événement de raid Kick. |
| YouTube : standard et WebSocket |
Commun : superchat, supersticker, jeweldonation, sponsorship, resub, giftpurchase, giftredemption, viewer_update. Standard uniquement : thankyou, redirect. WebSocket uniquement : membermilestone, new_follower, subscriber_update, view_update, likes_update (sur activation). |
Les noms principaux des membres et événements sont harmonisés entre les deux ; Super Chat, Super Sticker et Jewels utilisent hasDonation, contrairement aux achats/réceptions d’adhésions offertes. |
| Toutes les interfaces |
De nombreuses sources renseignent hasDonation sans définir data.event. |
C'est correct ; l'affichage des dons doit se baser sur hasDonation, avec data.event réservé à la sémantique système/événement. |
Alias propres aux sources et anciens noms
Ces correspondances sont propres à la source et au contexte indiqués ; ce ne sont pas des remplacements globaux. La prise en charge des alias par les consommateurs varie selon la page. Les sources actuelles TikTok DOM et TikFinity émettent toujours followed; Velora utilise subscription et channel_points, et Streamlabs utilise subscription. Acceptez le contrat actuel de la source et ses alias anciens pertinents plutôt que renommer chaque événement correspondant.
| Alias / ancien nom |
Remplacement canonique |
Contexte |
subscription | new_subscriber | Nouvel abonnement Twitch/Kick |
subgift | subscription_gift | Abonnement Twitch offert |
membership | sponsorship | Nouveau membre YouTube (générique) |
new_member | sponsorship | Nouveau membre YouTube |
new_membership | sponsorship | Nouveau membre YouTube |
newmember | sponsorship | Nouveau membre YouTube |
new-membership | sponsorship | Extracteur DOM YouTube (variante avec trait d'union) |
upgraded_membership | resub | Passage à un niveau supérieur YouTube |
upgraded-membership | resub | Extracteur DOM YouTube (variante avec trait d'union) |
membership_upgrade | resub | Passage à un niveau supérieur YouTube |
membership_milestone | membermilestone | Message d'étape marquante YouTube |
member_milestone | membermilestone | Message d'étape marquante YouTube (variante avec trait de soulignement) |
gift_membership | giftpurchase | Lot de cadeaux YouTube |
membership_gift | giftpurchase | Lot de cadeaux YouTube |
giftmemberships | giftpurchase | Lot de cadeaux YouTube (variante au pluriel) |
gifted_membership | giftredemption | Cadeau YouTube reçu |
gifted_memberships | giftpurchase | Lot de cadeaux YouTube (variante au pluriel) |
community_gift | giftpurchase | Lot de cadeaux communautaires |
channel_points | reward | Utilisation de récompense Twitch WebSocket (ancien alias) |
followed | new_follower | Sortie actuelle de TikTok DOM/TikFinity ; acceptez les deux noms lorsque vous combinez les modes de capture TikTok. |
Utiliser cette référence
- Lors de l'ajout d'un nouvel événement, réutilisez le vocabulaire existant (
subscription_gift, viewer_update, etc.) si possible. Si un écart est inévitable, documentez-le ici avec sa raison.
- Gardez
data.meta prévisible : privilégiez les clés simples, ne surchargez jamais les chaînes avec des données mixtes et incluez toujours les unités (currency, bits, duration).
- Mettez cette page à jour lors des modifications des données ; ne modifiez les instructions des agents que lorsque les règles communes de développement changent.
- Validez les modifications des données à la fois avec la source émettrice et avec l'incrustation ou le déclencheur Event Flow qui les consomme.
- La capture dépend de la prise en charge par la source et des paramètres. Pour masquer les lignes marquées comme événements dans le Dock ou les incrustations de mise en avant, ajoutez
&hideevents ou &hideallevents. Pour masquer certains événements, utilisez &filterevents=subscription_gift,new_follower,gifted.
- Pour YouTube, Twitch et Kick, activez Mode WebSocket pour la prise en charge la plus large des événements propres à chaque plateforme. La capture des cadeaux et dons YouTube (y compris les cadeaux et Super Chats) est disponible dans les modes standard et WebSocket ; WebSocket ajoute d'autres types d'événements. La prise en charge exacte varie toujours selon la plateforme, le rôle du compte et les autorisations accordées.
Retour en haut
Incrustations de monétisation
Les pourboires NinjaBacker utilisent platform: "ninjabacker", type: "ninjabacker", chatname, texte brut chatmessage, textonly: true, un champ préfixé par la source id, formaté hasDonation, et le champ numérique donoValue. Ce sont des lignes ordinaires de type don sans champ event valeur de remplacement. meta.ninjabacker contient l'horodatage ISO currency et le montant en unités principales amount. Les pourboires anonymes utilisent le nom visible Anonymous. La source utilise SSE en direct (sans rejeu) ou le récepteur facultatif de webhooks signés sur l’API SSN (jusqu’à sept jours de livraison en file). Les livraisons fiables utilisent un identifiant stable ninjabacker:delivery:DELIVERY_ID identifiant. Aucun des deux modes ne reçoit les annulations liées aux remboursements ou litiges. Les identifiants du récepteur et les secrets de signature n'entrent jamais dans les données d'événement. Les valeurs callbackId contrôlées par l'appelant ne sont pas des identifiants de paiement et ne sont pas transmises. Les pourboires de test du tableau de bord sont exclus des lignes de dons. Ils émettent event: "monetization_test" avec meta.ninjabackerTest contenant id et at (millisecondes Unix), uniquement pour l'alerte d'aperçu dédiée.
event: "monetization_update" est un instantané composé uniquement de métadonnées provenant de type/platform: "socialstream". meta.monetization.wishlist contient enabled, qr, position, rank, total, l'url publique et l'article actuel (name, amount, currency, image, url publique) ou null. meta.monetization.ninja contient enabled, qr, position, username et l'url publique de pourboire. Les Tip IDs privés ne sont jamais inclus. meta.monetization.ebay contient enabled, qr, position, display (cycle/cheapest/first), seconds, les paramètres d'annonce à activer et les articles publics. Chaque article possède id, name, amount, currency, image, url, auction, startingBid, endsAt, available, bought et updatedAt. Les heures sont en millisecondes Unix. Aucun identifiant vendeur ni aucune identité d'acheteur n'est inclus.
Un achat de liste de souhaits confirmé par l'hôte inclut également meta.wishlistPurchase avec id, name, supporter facultatif et at (millisecondes Unix). Il s'agit d'une confirmation de l'hôte, pas d'une notification de paiement Amazon, et elle ne compte pas comme un don monétaire. Les incrustations doivent dédupliquer son id et ignorer les anciens avis d'achat.
Commandes Shopify payées
Le récepteur Shopify signé facultatif émet platform/type: "shopify" et event: "purchase" uniquement pour orders/paid avec financial_status: "paid", un total positif, test: false, aucune annulation et un horodatage actuel de mise à jour du corps signé. Les avis de test, impayés, périmés, annulés et remboursés ne déclenchent pas d’achat. Aucune intention de cadeau n’est déduite.
chatname est Anonymous ; les champs client, les notes privées et les URL de commandes sont exclus. chatmessage est du texte brut avec textonly: true; subtitle contient jusqu'à trois titres de produits publics. meta.commerce contient orderTotal et currency dans la devise de la boutique, plus quantity lorsqu'un nombre complet valide est connu. Le destinataire et la finalité physique/numérique restent non définis. Aucun hasDonation ou donoValue est défini. id est un hachage opaque stable propre à la boutique/commande avec un préfixe Shopify ; ce n'est pas un identifiant brut de commande.
Les achats utilisent les circuits existants d'activité, de catégorie Purchase de multi-alerts et d'Event Flow. La promotion des produits utilise le mécanisme existant meta.monetization.commerce catalogue. Importer un produit ou définir son libellé promotionnel sur Gift ne génère aucun événement d'achat ou de cadeau. Configuration Shopify et limites de livraison.
Cadeaux et commerce
Utilisez event: "gift" pour un cadeau, giftcontribution pour un soutien payant destiné à un cadeau, giftfunded pour la fin du financement, et purchase pour une vente de produit. Ces noms sont indépendants du fournisseur et du caractère physique ou numérique de l'article. Réservez l'ancien giftpurchase événement pour les abonnements offerts ; Throne utilisait auparavant ce nom à tort et émet maintenant gift. Les producteurs d'abonnements existants restent inchangés. Les filtres personnalisés de noms d'événements Throne doivent passer à gift; les filtres de dons ne nécessitent aucune modification.
hasDonation reste le signal de compatibilité pour le soutien payant, avec donoValue contenant sa valeur en USD fournie ou estimée. Les cadeaux et contributions conservent ces champs. La fin du financement omet les deux pour éviter de compter les contributions deux fois. Les ventes ordinaires de produits les omettent par défaut, préservant le contrat eBay. Ne déduisez pas une intention de cadeau à partir d'une boutique, d'une URL de liste de souhaits ou d'un article physique : un achat pour l'acheteur ou un autre destinataire reste une vente sauf si la source identifie explicitement un cadeau au créateur.
Champ partagé facultatif meta.commerce les champs sont recipient (créateur, acheteur, autre), itemType (physique, numérique, service), quantity (nombre positif d’articles), currency (devise ISO), goalAmount (objectif de financement en unités principales, jamais un nouveau revenu), et orderTotal (total connu de commande payée en unités monétaires principales ; commerce, pas revenu de don). Omettez les détails inconnus. Gardez les noms d’articles dans subtitle, images dans contentimg, et le texte du soutien dans chatmessage. Les métadonnées existantes des fournisseurs restent disponibles. Throne fournit le destinataire et la devise, ainsi que goalAmount à l'achèvement ; eBay fournit la quantité. Aucun des deux ne déduit le type d'article ni n'expose d'informations privées sur le destinataire.
Le flux d'activité affiche ces événements même sans texte de soutien. Multi-alerts utilise la présentation des dons pour les cadeaux et contributions, avec une notification distincte Gift Fully Funded sans valeur monétaire. Les achats ont une catégorie Purchase distincte, activée par défaut, avec purchasestyle, purchasesound, purchaseaccent, et disablepurchases Commandes URL. Les alertes d'achat ne modifient pas les totaux de dons.
Event Flow propose ces noms d'événements dans les déclencheurs Event Type et Other Event. Les déclencheurs de dons examinent toujours hasDonation; les déclencheurs Gift Sub conservent la sémantique des abonnements. Compare Property accepte des chemins imbriqués tels que meta.commerce.recipient. Les modèles d’actions acceptent {meta.commerce.quantity} et {meta.commerce.currency}, avec les champs existants {donation}, {subtitle}, et {meta}. Les chemins imbriqués respectent la casse, les valeurs manquantes s'affichent comme du texte vide et la traversée des prototypes est interdite.
Webhooks de commerce pour créateurs et incrustations promotionnelles
Les paiements Donation publics de Ko-fi conservent hasDonation et obtiennent la valeur en USD donoValue. Les paiements d'abonnement utilisent new_subscriber ou resub, avec le niveau dans membership. Les commandes de boutique et les commissions utilisent purchase sans valeurs de don. Les événements Ko-fi privés restent exclus. Le JSON encodé comme formulaire est décodé une seule fois ; les noms et messages sont en texte brut.
Buy Me a Coffee donation.created conserve le soutien monétaire ; extra_purchase.created et commission_order.created deviennent purchase. wishlist_payment.created devient giftcontribution en utilisant uniquement ce montant de paiement ; meta.commerce.completed enregistre l'indicateur d'achèvement du fournisseur sans émettre une autre ligne monétaire. membership.started devient new_subscriber avec le niveau dans membership, sans utiliser incorrectement hasDonation pour un nom de niveau. Un montant de début d'abonnement n'est pas traité séparément comme un paiement effectué. Les événements de test, remboursés, échoués et les événements de mise à jour/cycle de vie non pris en charge ne produisent pas d'alertes payantes. Les notes masquées des contributeurs sont omises.
Fourthwall prend en charge ORDER_PLACED (purchase), GIFT_PURCHASE (gift, destinataire autre), DONATION (ligne de don ordinaire) et SUBSCRIPTION_PURCHASED (new_subscriber). Les totaux de commandes existants conservent hasDonation pour la rétrocompatibilité, marqué meta.commerce.legacyDonationValue: true; il s'agit d'une exception explicite aux valeurs par défaut des nouvelles ventes de produits. Les commandes utilisant des cartes-cadeaux émettent une alerte d'achat sans valeur de don : le nouveau montant facturé ne peut pas être déduit de manière fiable du total de la commande, et l'achat du cadeau a déjà été comptabilisé. Les noms de facturation et les adresses e-mail ne servent pas d'identité publique. Les événements de test du tableau de bord et les mises à jour de commandes ne génèrent pas d'alertes payantes.
Ces adaptateurs conservent le relais, les actions des bots, Event Flow et le routage des destinations existants, avec meta.webhookId déduplication. Ils exposent les noms publics, les messages en texte brut, les noms d'articles connus dans subtitle, et la devise ISO meta.commerce.currency avec les valeurs numériques de don, le cas échéant. Ils n'ajoutent ni comptabilisation des remboursements ni nouvelle authentification du récepteur ; utilisez le circuit de webhook déjà configuré du fournisseur.
meta.monetization.commerce dans monetization_update contient enabled, qr, position, display (first/cycle), seconds et un tableau public items. Chaque article possède name, url, image, amount facultatif (null si inconnu), currency et purpose (shop/gift/support/membership). Ce sont des détails promotionnels saisis par l'hôte, pas une preuve de paiement. Ajouter ou modifier des articles n'émet aucun événement de don ou d'achat. L'incrustation générique utilise mode=commerce; view=both|showcase|card|alerts sépare la promotion de l'activité. Les paramètres URL facultatifs style, scale, cardevery, cardfor et onlytype contrôlent la présentation. Les modes de fournisseurs existants acceptent également les commandes view et de programmation. Consultez le guide de configuration.
Événements de cadeaux Throne
L'intégration Monétisation, à activer, transmet les événements Throne signés avec platform et type défini sur throne. Les trois utilisent un identifiant stable de livraison id, texte brut chatname, chatmessage avec textonly: true, nom de l’article dans subtitle, et une miniature HTTPS facultative dans contentimg.
| événement | Signification | Montant du don / classement |
|---|
gift | Un cadeau acheté | hasDonation et la valeur en USD donoValue; +1 au classement des cadeaux |
giftcontribution | Une contribution à un cadeau | Montant de contribution uniquement ; aucune augmentation du classement |
giftfunded | Un cadeau financé collectivement terminé | Non hasDonation ou donoValue, pour éviter de recompter les contributions précédentes ; +1 au rang de cadeaux |
meta.throne contient itemName, creator (nom d’utilisateur public), completed, currency et le montant en unités principales amount. Pour giftfunded, amount décrit l’objectif, pas un nouveau revenu. Les donateurs anonymes restent Anonymous; les cadeaux communautaires terminés utilisent Community. Les champs privés de paiement et de livraison ne sont jamais transmis.
monetization_update les instantanés contiennent également meta.monetization.throne: enabled, username, url, qr, position, rank, et gifts. Ces instantanés ne contiennent aucune URL de webhook ni aucun identifiant d'écoute.
Commandes vocales de l'hôte (aperçu sur ordinateur)
Le flux Event Flow Quand je dis… le déclencheur reçoit les commandes fiables du microphone local de SSApp. Son contexte d'action interne utilise chatname: "Host", type: "hostvoice", la phrase reconnue dans chatmessage, et textonly: true. Il ne s'agit pas d'un événement entrant de plateforme ni d'un nouveau transport de chat. Envoyer ces champs dans le chat ne peut pas activer un déclencheur vocal.
Nécessite une version de bureau mise à jour, le démarrage explicite du microphone et l'activation des actions après le mode Test. Consultez le configuration de l'aperçu et état de validation.
Commandes d'affichage des produits
Existant monetization_update les instantanés peuvent inclure meta.monetization.commerce.live: null pour la programmation enregistrée, ou {mode: "show" | "hide", url?: "https://...", until: 0 | epochMilliseconds}. Show correspond à l'URL exacte du produit enregistré ; un produit absent n'affiche aucune carte. Une valeur until positive expire et rétablit la programmation enregistrée ; zéro reste actif jusqu'à sa modification ou au redémarrage de SSN. Hide masque les promotions, mais pas les alertes d'activités payantes.
commerce.viewerURL est l'URL publiée de la boutique en lecture seule, ou une chaîne vide. Lorsqu'elle est présente, les codes QR promotionnels y renvoient. Elle ne contient jamais la session SSN ni la clé de publication. Les produits restent dans commerce.items. Aucun événement de don ou d'achat n'est émis par les commandes d'affichage, les importations ou la publication. Voir Commandes de produits pour l'utilisation d'Event Flow et de l'API distante.
Le flux Event Flow commerceControl l'action attend la réponse directe/Chrome (jusqu'à huit secondes). Sur les données d'événement ordinaires, elle conserve l'événement et ajoute meta.commerceControlResult: {success: true, commerce: controlState} ou {success: false, error: "..."}. Pour une valeur existante numérique, de type tableau ou autre qu'un objet dans meta, les métadonnées restent inchangées et le diagnostic est retourné dans commerceControlResult sur le résultat de l'action à la place. Les commandes en échec arrêtent les actions suivantes de cette chaîne sans supprimer l'événement de paiement d'origine. Un délai d'attente dépassé ne prouve pas que la commande n'a pas été appliquée ; inspectez l'état avant de réessayer une commande relative telle que Next. La réussite confirme l'état local de sélection, masquage ou programmation, jamais la visibilité dans OBS ni la synchronisation de la page publique.
Flux de travail nommés Stream Deck / API
Le déclencheur de flux de travail nommé crée un message Event Flow interne avec type: "api", event: "workflow_trigger", chatname: "Stream Deck / API", vide chatmessage, et textonly: true. Son champ meta.workflow l'objet contient le nom du déclencheur et une valeur JSON fournie par l'appelant data objet. Lisez les valeurs à l'aide de modèles tels que {meta.workflow.data.minutes}. Seuls les flux enregistrés et activés correspondant explicitement à ce déclencheur sont évalués. Il ne s'agit pas d'un événement entrant de spectateur ou de chat, et il n'est pas diffusé comme un message de chat ; copier ces champs dans le chat n'active pas le déclencheur nommé.
Pilote du public NinjaChatter
Le connecteur expérimental d'extension appairée envoie des lignes destinées uniquement à l'affichage avec type: socialstreamchat, platform: ninjachatter, et textonly: true. meta.ninjachatter contient origin: audience, le champ descriptif provider, et le public room ID. Ces lignes contournent les réponses de plateforme, les bots, les déclencheurs Event Flow et les points. L'affichage d'un fournisseur ne vaut pas autorisation. Les anciennes captures de source NinjaChatter incluent meta.ninjachatter.room pour la suppression des doublons propre au salon.
Cheer utilise un circuit distinct de demande et de résultat authentifiés, jamais une commande de chat spéciale. Le préréglage fixe émet la commande existante de l'incrustation Actions show_text message pendant trois secondes. Sa réception signifie l'acceptation par le transport, pas un affichage vérifié dans OBS. Aucune donnée du public ne peut sélectionner des actions arbitraires. Le pilote est désactivé par défaut sur NinjaChatter ; Electron conserve son relais existant jusqu'à validation de la nouvelle séparation d'appairage privé.
Tableaux d'emplacements commerciaux et ventes récentes
Le mécanisme existant monetization_update événement (type/platform: socialstream) inclut aussi meta.monetization.boards. Son champ board contient title, style (places/équipes), columns (1–20), visible, et jusqu’à 120 spots. Chaque emplacement possède une chaîne id, texte brut label, status (disponible/réservé/révélé) et result (texte brut, vide jusqu’à révélation). Réservations et révélations sont des états d’affichage saisis par l’hôte, pas des preuves d’achat ni des attributions aléatoires.
boards.sales contient jusqu'à 100 enregistrements récents : id, title, facultatif amount (null si inconnu), currency, quantity, source, et at (millisecondes Unix lors de l’enregistrement). automatic active la collecte, salesVisible contrôle l'affichage et revision s'incrémente lors des changements. La collecte automatique accepte uniquement purchase événements provenant de Shopify, du vendeur eBay, de Fourthwall, de Ko-fi et de Buy Me a Coffee ; les événements privés et de test sont exclus. Les métadonnées d'enchères, les pourboires, les cadeaux et les réservations d'emplacements ne sont pas traités comme des achats. Les enregistrements automatiques ne remplacent pas le prix d'un article par le total de la commande, le prix d'une annonce ou le montant d'un don. Les enregistrements manuels utilisent source: "Host confirmed".
L'état persiste dans le stockage privé de monétisation de cette installation ; les instantanés publics excluent les identifiants de déduplication des livraisons, l'identité de l'acheteur et les secrets. Les ventes explicitement affichées conservent leurs identifiants d'événement pour permettre leur suppression. Les remboursements nécessitent une suppression par l'hôte. Les identifiants d'achats en double sont mémorisés séparément (jusqu'à 2 000), même après l'effacement de l'historique visible. Le mécanisme existant getCommerceState la réponse inclut commerce.boards; commerceControl accepte les commandes de tableau et de ventes documentées dans le guide des tableaux. Les modifications manuelles diffusent l'état mis à jour mais ne créent jamais d'événements d'achat, de totaux de dons ni de récompenses payantes. Les incrustations se masquent lorsque l'instantané de l'hôte est absent depuis 35 secondes.
Ajouts au flux de travail du vendeur : commerce.boards.board.id identifie une génération de tableau. Une commande manuelle saleAdd peut fournir boardId et spotId pour enregistrer la vente et réserver cet emplacement de manière atomique ; les ventes liées en double encore présentes dans l'historique récent sont refusées. saleRemove avec reopenSpot: true libère cet emplacement uniquement si la génération du tableau correspond toujours. Les entrées publiques de ventes omettent ces champs de liaison destinés à l'opérateur. Un champ facultatif platform sur une vente manuelle conserve sa source pour le filtrage tandis que source: "Host confirmed" identifie la méthode de confirmation. amount est le total de l'entrée, y compris son quantity. Le champ de l'adaptateur de commandes payées eBay meta.ebayPurchase.quantity est conservé.
salesSettings.auctionSource active l'assistant d'articles Whatnot ou eBay Live. Le champ de la réponse de commande commerce.auction contient uniquement source, title, priceText, status et at provenant du dernier événement capturé auction_update, ou null. Expire après cinq minutes et s’efface au changement de source, à un instantané inactif ou au redémarrage. L’assistant est réservé à l’opérateur : ni enregistré ni diffusé au public ; l’identité des enchérisseurs/gagnants est supprimée. Scripts sources et événements d’enchères ne changent pas. Copier un brouillon ne confirme aucun paiement et ne crée pas de vente.