Live-Ereignisreferenz

Diese Seite dokumentiert die kanonischen Ereignisnutzdaten, die Social Stream Ninja für große Plattformen ausgibt. Verwende sie als gemeinsame maßgebliche Referenz beim Verbinden neuer Quellen, bei Integrationsfehlern oder beim Vereinheitlichen von Oberflächenbeschriftungen. Eine kürzere, auf Verbraucher ausgerichtete Übersicht findest du unter Kompatibilität von Ereignissen und Meldungen.

Wichtig: Ereignisverfügbarkeit hängt von Quelle, Berechtigungen und Erfassungseinstellungen ab. Füge zum Ausblenden ereignismarkierter Zeilen in Dock- oder Featured-Overlays &hideevents oder &hideallevents. Verwende zum Ausblenden ausgewählter Ereignisse &filterevents=subscription_gift,new_follower,gifted. Diese Filter können auch bezahlte Zeilen ausblenden, die ein event; normale Spendenzeilen ohne Ereigniskennzeichen werden von Ereignisfiltern nicht erfasst. Andere Nachrichtenfilter gelten weiterhin.
Erfassungsmethode auswählen: Für YouTube, Twitch und Kick WebSocket-Modus bietet generell größere Ereignisabdeckung. Standard-DOM-Erfassung liest die tatsächlich auf der Seite dargestellten Zeilen und Karten. YouTube Super Chats, Super Stickers und Jewel-Geschenke haben in beiden Modi Erfassungswege; andere Geschenk-, Trinkgeld- und Mitgliedschaftsereignisse hängen von der Quelle ab. Unterstützte Wege und nötige Einstellungen stehen in den Plattformtabellen.
Du baust Automatisierungen? Sieh dir den Event-Flow-Leitfaden um zu erfahren, wie du diese Ereignisnutzdaten in eigenen Auslösern, Meldungen und Workflows verwendest. Der Leitfaden enthält eine Referenz der Vorlagenvariablen für Textformatierung.
Nutzdatenstruktur: Chatzeilen im Spendenformat sollten hasDonation und optionales donoValue. Setze nicht event: "donation" nur weil eine normale Chat-/Trinkgeldzeile einen Wert hat; verwende spezifische Ereignisnamen nur für tatsächliche Plattformaktionen oder bezahlte Artikeltypen, etwa superchat, supersticker, gift, oder jeweldonation. Verwende meta nur für zusätzliche strukturierte Daten, die Verbraucher tatsächlich benötigen und die bestehende Felder noch nicht abdecken.

Funktionsverfügbarkeit auf einen Blick

Diese Tabelle zeigt, welche Meldungstypen die einzelnen Erfassungsmethoden derzeit liefern. Ausführliche Nutzdatenhinweise folgen unten.

Die eigene Multi-Stream Alert Box gruppiert Live-Ereignisse in sechs zentrale Meldungskategorien: Follow, Subscription/Member, Donation, Bits/Cheers, Raid/Host, und Purchase, sowie zwei ausdrücklich zu aktivierende Kategorien (Auction und Hype Train) per URL-Parameter aktiviert. Es leitet diese Kategorien aus den bestehenden event, membership, subtitle, hasDonation, und meta hier dokumentierten Felder; kein separates Nutzdatenformat ist nötig.

Quelle Neue Abonnenten / Mitglieder Neue Follower Spenden Zähler & Extras
YouTube (Data-API-Brücke) Mitgliedschaftsbeitritte, Verlängerungen, Geschenke Einzelne Abonnentenmeldungen* + Gesamtzahlen Super Chats & Super Stickers Zuschauer-, Abonnenten- und Aufrufgesamtzahlen (per Polling)
Twitch – DOM-Erfassung Geschenkpaketzeilen & Hinweise auf Beschenkte - Bits gekennzeichnet über hasDonation Zuschauerzahl, Belohnungskarten und Community-Highlight-Karten
Twitch – EventSub/WebSocket Sofortige Abonnements, Verlängerungen und Geschenke Sofortige Follows + Followergesamtzahl Cheers, Power-ups und Kanalpunkte-Einlösungen Zuschauer-/Abonnenten-/Followergesamtzahlen, Stream-Status, Werbehinweise
TikTok Live - Follow-Karten (wenn TikTok sie zeigt) In Münzgesamtwerte umgerechnete Geschenke Zuschauerzahl, Beitrittsmeldungen und Like-Wellen
YouNow - Fan- und Zuschaueraktivität - Zuschauerzahl aus dem Live-Zuschauerfeld
Favorited Studio - - - Zuschauerzahl aus dem Live-Zuschauer-Tab
Whatnot - - - Zuschauerzahl, Beitrittsmeldungen, Live-Auktionsmetadaten, Produkte und Gewinnspielmomentaufnahmen
eBay Live - - - Zuschauerzahl, Followerzahl, Live-Ereigniskarten-Momentaufnahmen, Metadaten der Auktionsfußzeile (falls verfügbar), Reaktionsherzen und Metadaten kommender Ereignisse
Streamlabs Alert Box Abonnements, Geschenke, Sponsoren, Follows Cheer/Bits, Spenden (mit Währung) Cheer/Bits, Spenden (hasDonation) Solange eine Meldungsbox geöffnet ist; auch verfügbar über sources/websocket/streamlabs.html Socket-Token
OBS Flow Actions - - - OBS-Ausgabe-, Szenen-, Wiederholungspuffer- und Medienende-Ereignisse für Event Flow, wenn actions.html mit OBS WebSocket verbunden ist
Kick – DOM - - - Zuschauerzahl plus einfache Belohnungs-/Geschenk-Systemhinweise; verwende die Kick-Brücke für umfangreichere Meldungen
Kick – WebSocket/Brücke Neue Abonnements, Verlängerungen und Geschenke Follow-Meldungen + Followergesamtzahl Unterstützungs-/Trinkgeldereignisse (Betrag + Währung) Stream-Status, Belohnungseinlösungen und Profilmetadaten
Facebook Live - - Stars, wenn im DOM sichtbar Chatzeilen, Stars und Zuschauerzahlabfragen
Rumble – DOM-Erfassung - - Sichtbare Rant-Preise Chat, eingehende Raids und Zuschauerzahlabfragen
Rumble – WebSocket-/API-URL Neue und verschenkte Abonnements Follow-Meldungen + Followergesamtzahl Rants/Trinkgelder (Betrag + Währung) Zuschauergesamtzahlen, Abonnentengesamtzahlen, Live-Status und Chatfeed
Streamplace - - - Zuschauerzahl plus Chatnamen, Farben, Abzeichen, Antworten und Links
WorldsWave - - Spendenbeschriftungen, falls vorhanden Dargestellter Livechat plus ausdrücklich aktivierte Zuschauerzahlaktualisierungen
CHZZK - - Sichtbare Cheese-Spendenzeilen Chatzeilen, Abzeichenbilder, Emotes und Zuschauerzahlabfragen
BEAM - - - Chatzeilen und Zuschauerzahlabfragen, wenn die reine Chatseite einen Zuschauerzähler bereitstellt
Seal Team Sloth - - - Dargestellte Popout-Chatzeilen plus viewer_update Abfragen bei aktivierten Zuschauerzahlen
Castyr - - - Dargestellte Popout-Chatzeilen plus ausdrücklich aktivierte Zuschauerzahlaktualisierungen
RPLAY - - - Angemeldetes /live/chat/box/ Popout: type: "rplay" Chat, Avatare, Stufenabzeichenbilder und Emotes. Münztrinkgelder behalten Betrag/Einheit in hasDonation für die gemeinsame USD-Umrechnung, ohne Spendenereignis. Ausdrücklich aktiviertes viewer_update Abfragen verwenden ganzzahliges meta aus RPLAYs öffentlichem Streamendpunkt. Weitergeleitete Twitch-Zeilen werden ausgeschlossen.
FLEX TV - - - Dargestellte Chatzeilen mit Namen, Autorenfarben, Abzeichenbildern und Mitgliedsmetadaten

*YouTube-Abonnentenmeldungen werden per Polling abgerufen und können verspätet oder unvollständig sein. Die API-Referenz verspricht kein festes Zustellfenster von vier Stunden. Siehe die offizielle Grenzen der Abonnement-API.

Feldübersicht

data bedeutet hier das Nachrichtenobjekt, keine zusätzliche Hülle. Chatzeilen und reine Metadatenereignisse haben unterschiedliche Strukturen: Zähler und Statusmomentaufnahmen können chatname/chatmessage. In Plattformtabellen, Nachricht beschreibt eine normale Chatzeile, kein wörtliches event: "message".

Feld Struktur Verwendung
data.type Zeichenfolge Quellkennung für Overlays, Filter und Event Flow. Instagram behält Livechat als instagramlive und nicht live stattfindende Kommentare als instagram. Siehe die Quelltypen-Leitfaden zu Varianten, allgemeinen Quellen und ausgehendem Routing.
data.chatname Zeichenfolge Von der Quelle gelieferter Anzeigename für Nachrichtenverarbeitung und Ausgaben außerhalb von Overlays. Ein konfigurierter Anzeigenamenalias darf diesen Wert nur in kopierten Dock- und Overlay-Transportnutzdaten ersetzen.
data.username Zeichenfolge Quellbenutzername, falls verfügbar. Dock- oder Overlay-Nutzdaten mit Alias können dieses Feld ergänzen, um den ursprünglichen chatname für Benutzeraktionen; die kanonische Nachricht bleibt unverändert.
data.userid Zeichenfolge Plattformspezifische Benutzerkennung. Benutzeraktionen bevorzugen diesen Wert gegenüber username und chatname.
data.platformZeichenfolge (optional)Manche Integrationen enthalten dies neben type. Viele Quelladapter lassen es weg; verwende type für Quellrouting.
data.idZeichenfolge | Zahl (optional)Nachrichten- oder Ereigniskennung. Ihre Bedeutung hängt von Quelle und Transport ab; gehe nicht davon aus, dass sie immer eine plattformnative Moderations-ID ist. Verwende meta.messageId wenn der Adapter es zur Löschsynchronisierung bereitstellt.
data.donoValueZahl (optional)Von der Quelle geliefertes numerisches USD-Äquivalent einschließlich Schätzungen. Ein gültiger Wert (auch null) hat Vorrang vor der Umrechnung durch currency.js. Fehlt er, schätzen Verbraucher USD anhand von hasDonation und Quellkontext. Ursprüngliche Beträge und Einheiten bleiben in hasDonation und bestehenden Anbietermetadaten.
data.chatbadgesArray | Zeichenfolge (optional)Abzeichen-Bild-URLs oder Abzeichenobjekte (type: "img" mit src, type: "svg" mit html, oder type: "text" mit text). Das Relay bewahrt die wörtliche Beschriftung eines Textabzeichens im optionalen rawText und erzeugt escaptes text für ältere Overlays. Erzeuge bei späteren Weiterleitungen text aus rawText; escape nicht text erneut. Aktuelle Renderer zeigen rawText wörtlich, wenn vorhanden, und behalte andernfalls die ältere Behandlung kodierten Texts bei. Dies ist ein Darstellungsfeld, keine Erlaubnis zum Rendern von HTML. Ältere Quellen können statt eines Arrays eine einzelne HTML-Zeichenfolge senden. Overlays zur Abzeichendarstellung akzeptieren beide Formate und bereinigen Abzeichen-HTML und URLs lokal, auch bei älteren Erweiterungen als Absender. Ungültige Abzeichen dürfen die Anzeige der Chat- oder Mitgliedschaftsnachricht nicht verhindern.
data.event Zeichenfolge | boolesch Kennung für Systemaktivität (zum Beispiel viewer_update, subscription_gift, giftpurchase). Normaler Chat sollte dies leer/false lassen, damit Overlays Systemhinweise von Gesprächsbeiträgen unterscheiden können.
data.chatmessage Zeichenfolge Nachrichteninhalt. Darf nur bereinigtes/darstellbares HTML enthalten, wenn data.textonly false ist.
data.textonly boolesch Gilt nur für data.chatmessage. true bedeutet, chatmessage als Klartext und bewahre wörtliche Tags und Text, der wie Entitäten aussieht; dekodiere oder HTML-bereinige diesen Inhalt nicht und füge keine Formatierungstags hinzu. Wende den Ereignisstil auf das angezeigte Element an. false bedeutet chatmessage kann bereinigtes/darstellbares HTML enthalten; ältere Nachrichten ohne Kennzeichen behalten dieses HTML-Verhalten. Andere normale Felder sind Klartext, ausgenommen Medienfelder wie chatimg und contentimg. Zeige Klartextfelder mit textContent, oder escape sie einmal beim Erstellen einer HTML-Vorlage; entferne oder dekodiere ihre Inhalte nicht wiederholt.
data.contentimg Zeichenfolge (optional) Inhaltsbild oder unterstützte Medien-URL. In Erweiterung und Desktop-App erkennt die ausdrücklich aktivierte allowExternalGifs Einstellung füllt ein leeres Feld aus dem ersten direkten HTTP(S)-GIF-Link im Nachrichtentext oder einem HTML-Link. Der URL-Pfad muss auf .gif (ohne Beachtung der Groß-/Kleinschreibung); Abfrageparameter und Fragmente bleiben erhalten. Benötigt keinen API-Schlüssel, bewahrt chatmessage und bestehende Anhänge und beachtet removeContentImage. Das optionale hideExternalGifUrl Einstellung ergänzt meta.hideExternalGifUrl: true; Dock und Featured-Overlay blenden den passenden GIF-Link erst aus, nachdem ihr Bild geladen wurde, und behalten umgebenden Text und ursprüngliche Nutzdaten. Fehlgeschlagene oder zu lange ladende Bilder klappen ihren Anhangscontainer ein und lassen den Link sichtbar. Das reine GIF-Overlay versucht eine direkte Bildanzeige, wenn der Abruf der Bildbytes scheitert, und verwendet die konfigurierte Anzeigedauer, wenn die Animationsdauer unbekannt ist; bei fehlgeschlagenem oder stockendem Laden geht die Warteschlange weiter. Es fügt kein event oder ändere die Quelle type. Externe Bilder werden nicht inhaltlich gefiltert und laden möglicherweise nicht, wenn der Host Einbettung blockiert.
data.membership Zeichenfolge Lesbarer Mitgliedschaftsstatus wie MEMBERSHIP, new_sponsor, gift_recipient. Oberflächen verwenden es für Abzeichen, Filter und Ansagen.
data.subtitle Zeichenfolge Ergänzende Beschreibung (Mitgliedschaftsdauer, Stufen-Upgrades, verschenkt von …). Halte sie kurz und als Klartext, damit Overlays sie unter dem Anzeigenamen platzieren können.
data.hasDonation Zeichenfolge Geldbetrag oder Wert eines virtuellen Geschenks ($5.00, 500 bits, 300 coins). Auch befüllen, wenn data.event ist leer, damit Spenden-Overlays es erkennen können.
data.meta Zahl | Objekt | Zeichenfolge (älter) Verwende einfache Ganzzahlen für einzelne Zähler (Zuschauer, Follower, Abonnenten) und Objekte für umfangreicheren Kontext. Manche älteren Ereignisse wie Twitch-DOM- community_highlight, enthalten eine Zeichenfolge. Prüfe die ereignisspezifische Struktur, bevor du Objekteigenschaften liest; neue strukturierte Details gehören in ein Objekt.
data.firsttime boolesch Auf true wenn die Erkennung erstmaliger Chatteilnehmer und die lokale Datenbank aktiviert sind und dies die erste gespeicherte Chatnachricht für diesen Benutzer/diese Quelle ist. Das Dock verwendet dies für die erstmalige Hervorhebung und entsprechende Signaltonfilter; die optionale Erstmalig-Abzeicheneinstellung stellt ein Blattabzeichen vor chatbadges.
data.lastactivity Zahl Unix-Zeitstempel in Sekunden für die zuvor gespeicherte Chataktivität dieses Benutzers, wenn Erkennung erstmaliger Chatteilnehmer und lokale Datenbank aktiviert sind. Bei ganz neuen Benutzern weggelassen.

Overlay-Steuerungstransport ist von erfasstem Chat/Ereignissen getrennt. Aktualisierte Empfänger verwenden einen ssnControl Hülle mit einer Zustellungs- id, hervorheben target, optionaler Antwortkanal und Snapshot-Client-ID. Bestehende Funktionsinhalte bleiben erhalten. Öffentliche Funktionssteuerung verwendet Kanal 7; Actions behält Kanal 6. Poll- und Map-Zustand enthält eine Host- epoch, revision und reset Kennzeichen; Timer, Ticker und Spotify verwenden ssnState mit einer Epoche und Revision. Diese Markierungen beschreiben den Host-Zustand, keinen wiederhergestellten Abstimmungs-/Chatverlauf. Quellen dürfen erfassten Nachrichten keine Steuerungshüllenfelder hinzufügen. Eine Empfangsbestätigung belegt weder Aktionsabschluss noch OBS-Sichtbarkeit. Siehe den Migrationsstatus zu unterstützten Funktionen, Antwortaushandlung und Wiederverbindungsgrenzen.

Phrase Guess verwendet das native {response: text} Anfrage für server2-Chatantworten und {action: "phraseGuessResponse", value: {type: "bot", chatname: name, chatmessage: text}} für Ansagen nur im Dock. Der Host muss eingehende server3-Nachrichten aktivieren; deaktivierte Host-Steuerung blockiert diese Anfragen weiterhin. Dock-Ansagen werden als normale Bot-Chatzeilen weitergeleitet mit textonly: true, ohne sie an Chateingaben der Erfassungsquellen zu senden. Der ältere API-Modus behält sein bestehendes Befehlsformat.

Meta-Konventionen

Befolge diese Konventionen beim Erweitern von data.meta:

  • viewer_update, follower_update, subscriber_update, und likes_update verwenden eine einfache Ganzzahl meta Wert. likes_update ist eine maßgebliche Plattformgesamtzahl: Verbraucher müssen den angezeigten Wert setzen, statt ihn zu addieren. Das Hintergrundskript fasst Zuschauerzahlen in viewer_updates mit einem Objekt mit Schlüsseln nach data.type.
  • giveaway_state ist eine vom Host erzeugte Momentaufnahme nur mit Metadaten für verwaltete Anzeigen. meta.giveaway Version 2 enthält giveawayId, dauerhaftes roundId/epoch, erhöht generation über neue Runden hinweg, revision innerhalb einer Runde, status, open, draw, keyword, count, ticketCount, eingefrorenes config, bis zu 120 Vorschau- entrants, und die letzten 20 winners. Einträge liefern id, name, platform und tickets; Gewinner ergänzen drawnAt und vergebene points. Coin Flip Pot ergänzt outcome; Number Hunt ergänzt number mit öffentlichem low, high und aktuelle guesses, niemals das Geheimnis. Verbraucher filtern nach Gewinnspiel-ID und verwerfen ältere Generationen/Revisionen. Dies sind Anzeigeauszüge, kein vollständiges Ticketbuch und keine Auszahlungsanweisung. Kontoschlüssel, Guthaben und Reservierungen bleiben außerhalb der Zuschauermomentaufnahmen. Der Host veröffentlicht an giveaway P2P-Label und aktivierte Overlay-WebSocket-Feeds; dies sagt nichts über OBS-Sichtbarkeit aus. Leitfaden.
  • meta.giveawayControlResult enthält das Ergebnis einer Event-Flow-Gewinnspielaktion (ok, optionales error, giveaway oder simulated). meta.giveawayHandled listet Gewinnspiel-IDs, die bereits durch eine Teilnahme-/Kauf-Flow-Aktion verarbeitet wurden, damit der automatische Chatbefehl nicht erneut abbucht. Der Editor ergänzt meta.economyTest für simulierte Gewinnspielaktionen; es ist weder ein Ereignis der Quellplattform noch ein Autorisierungsnachweis.
  • video_stats verwendet ein strukturiertes meta Objekt für den Zustand externer Encoder/Server, einschließlich provider, label, online, bitrateKbps, rttMs, bufferMs, Paketverlust-/Verwerfungszähler und optionale Codec-Details.
  • Ereignisse im Spendenformat können ein beschreibendes Objekt enthalten, zum Beispiel { amount, currency, supporter } für Kick, { bits } für Twitch-Cheers. Mitgliedschaftsereignisse haben eigene quellspezifische Metadaten; sie sind nicht automatisch Geldspenden.
  • Normalisierte Stripe-, Ko-fi-, Buy-Me-a-Coffee- und Fourthwall-Webhook-Nachrichten enthalten anbieterspezifische meta.webhookId, kopiert aus der stabilen Ereigniskennung des Anbieters, damit nachgelagerte Seiten Duplikate durch Wiederholungen und gemischte Transportwege unterdrücken können.
  • Twitch-Raids übergeben { fromId, fromLogin, viewers }. Andere Quellen unterscheiden sich: Whatnot verwendet meta.numRaiders, während SharePlay optionales meta.fromLogin/meta.viewers. Prüfe die quellenspezifische Zeile, bevor du Raid-Metadaten liest.
  • Twitch-EventSub-Belohnungseinlösungen liefern meta.rewardId, cost, rewardTitle, redemptionId, und ein älteres alias zusammen mit der vorbereiteten Nachricht. DOM-Belohnungskarten und andere Quellen können weniger oder andere Felder liefern.
  • user_banned enthält nur Metadaten für Moderationswidgets. Bewusst weggelassen wird chatname und chatmessage; verwende meta.username, meta.displayName, meta.avatarUrl, und meta.profileUrl.
  • Chattransporte mit Unterstützung für Löschsynchronisierung der Quellsteuerung sollten die plattformnative Chatkennung als meta.messageId statt sich auf das interne data-mid Wert.
  • Quelllöschungen verwenden {delete: {type, id}} für eine bekannte Dock-Nachrichten-ID oder {delete: {type, meta: {messageId}}} für eine native Plattform-Nachrichten-ID. Eine bekannte ID entfernt nur passende Nachrichten. Ist nur der Zielbenutzer bekannt, sende {delete: {type, userid}} oder {delete: {type, chatname}} um die Nachrichten dieses Benutzers von dieser Plattform zu entfernen. Ersetze die Identität des Zielbenutzers nie durch die des Moderators. Eingehende Löschungen benötigen die optionale Einstellung zur Dock-zu-Plattform-Moderationssynchronisierung nicht.
  • SSApp-Quellidentitätsmetadaten können meta.ssnAccountRole, meta.ssnSourceId, und meta.ssnSession wenn einer Quelle eine abweichende Kontorolle zugewiesen wird.
  • Event Flow kann eine Hervorhebung anfordern, indem es meta.featured = true in den Chatnutzdaten, wodurch die Nachricht in Dock-/Featured-Overlays automatisch hervorgehoben wird.
  • AI Event Overlay: die Aktion showAiEventOverlay sendet eine Kopie der auslösenden Nachricht an das Label aievent-CONFIGURATION_ID und fügt Folgendes hinzu: meta.aiEventOverlay: {profile: "CONFIGURATION_ID"}. Bestehende Nachrichtenfelder und Metadaten in Objektform bleiben erhalten; skalare Metadaten werden gespeichert als meta.value. Dies ist eine gezielte Zustellung, kein neues Plattformereignis. Die ursprüngliche Nachricht wird nicht verändert. Siehe den Einrichtungsleitfaden.
  • Optional meta.aiEventOverlay.variation wählt eine exakte, in den gespeicherten Overlay-Einstellungen freigegebene Formulierung aus. Zuschauertext und Metadaten füllen die Vorlagenfelder nach der Generierung.
  • Anzeigeanfragen für AI Event Overlay benötigen ein Profil und dessen privates Anzeigetoken. Einstellungen und API-Schlüssel werden ausschließlich im lokalen SSN-Popup verwaltet. Antworten verwenden {aiEventResponse: {target, value}} oder {aiEventResponse: {target, error}}. Generierte Ergebnisse enthalten template, duration, warnings, sowie optionale Medien-Daten-URLs in image/audio.
  • Mit Punkten bezahlte KI-Overlay-Belohnungen verwenden aiEventPresentation (id, profile, expiresAt, result, message) und bestätigen den Empfang mit aiEventDelivered (Zustellungs-ID). Abbuchungsbelege und Erstattungsbeträge verbleiben beim Host.
  • Event Flow kann Anheften im Dock anfordern, indem es meta.pinned = true; optionales meta.pinnedTarget beschränkt das Anheften auf ein Dock mit passendem label.
  • Event-Flow-Thermodruck speichert sein Ergebnis unter meta.thermalPrintResult (success und optionales code/error), wobei Chatereignis und andere Metadaten erhalten bleiben. Bei Ereignissen mit numerischen oder anderen nicht objektförmigen Metadaten bleibt die Diagnose im Aktionsergebnis und das Ereignis unverändert.
  • Ausdrücklich zu aktivierende SSN-Stickerbelohnungen: event: "sticker" wird nur an das stickers Overlay-Label nach Abbuchung von Treuepunkten. Es setzt platform und type auf das type, und bewahrt chatname, mit leerem chatmessage, textonly: true, und contentimg mit einem relativen Pfad zu einem mitgelieferten Bild oder einer vom Host genehmigten HTTPS-Medien-URL. meta.sticker enthält id, pack, name, cost, duration (Sekunden), motion, redemptionId, und expiresAt (Unix-Millisekunden). Dies ist eine SSN-Belohnung, keine Plattformspende und kein natives Kanalpunkteereignis. Siehe den Galerie und Einrichtungsleitfaden.
  • Der Stickerplayer gibt ein Steuerungspaket zurück {action: "stickerReceipt", meta: {sticker: {redemptionId, success}}} an seinen Absender, wenn das Bild lädt oder fehlschlägt. Nur Empfangsbestätigungen von einem verbundenen stickers Peer eine ausstehende Einlösung abschließt. Fehlgeschlagene oder unbestätigte Zustellung löst eine Erstattung aus; dieses Steuerungspaket ist kein Chatereignis. Eine aktive Stickeranzeige pro Sitzung wird empfohlen.
  • KI-Bühnen-Overlay-Befehle verwenden { action: "aiOverlay", target, meta } oder vom Dock gesteuerte Co-Host-Wiedergabe verwendet { action: "cohostOverlay", target, meta }; behalte alle Befehlsdetails wie command, text, emotion, avatar, und tts innerhalb meta.
  • Wenn eine Plattform mehrere Zähler zusammen liefert, bevorzuge ein strukturiertes Objekt mit ausdrücklichen Schlüsseln (meta.viewer_count, meta.follower_count) statt Zeichenfolgen mit mehreren Bedeutungen zu überladen.
  • Verkaufs-Overlays sollten Momentaufnahmeobjekte unter meta (zum Beispiel auction_update und commerce_update) und vermeide zusätzliche Felder auf oberster Ebene.

Plattformabdeckung

YouTube – Standard-DOM-Erfassung

Implementierung: sources/youtube.js

  • Lass den Livechat-Tab geöffnet. Die Erfassung liest Mitgliedschafts- und Geschenkkarten, die in dieser Sitzung dargestellt werden; der Zuschauer muss dafür weder Kanalbesitzer noch Moderator sein. Kontozugriff und gewählte Chatansicht können beeinflussen, welche Zeilen sichtbar sind.
  • Beim Öffnen des Overlays für Zuschauerzahl und Chataktivität mit eingeblendeten Zuschauern werden die Zuschauerzahlen automatisch angefordert. Auch die Einstellungen Zuschauerzahl anzeigen und Aktive Chatteilnehmer erfassen aktivieren die Erfassung.
  • Für Follower-Meldungen und zusätzliche Ereignisse, aktiviere den WebSocket-Modus in den Erweiterungseinstellungen.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
sponsorship Willkommensüberschrift einer Mitgliedschaft ohne ausdrücklichen Chattext (neue Mitglieder, eintreffende Geschenkpakete), einschließlich strukturierter Willkommenskarten oder lokalisiertem „Willkommen bei …“-Text. membership mit übersetztem „MEMBERSHIP“ befüllt; subtitle enthält Serie/Stufe, falls erkannt; nameColor verwendet Mitgliedschaftsgrün, soweit erlaubt.
giftpurchase Banner für den Kauf eines Geschenkpakets (ytd-sponsorships-live-chat-gift-purchase). membership wird zu gift_giver; subtitle enthält die Geschenkanzahl, wenn bekannt; kein hasDonation oder donoValue.
giftredemption Geschenkeinlösungsankündigung für Empfänger. membership wird zu „MEMBERSHIP“; subtitle enthält „Gifted by …“.
resub Upgrade-Banner mit „upgraded to …“. subtitle erfasst die neue Stufenbeschriftung; membership bleibt „MEMBERSHIP“.
superchat, supersticker, jeweldonation Super Chats, Super Stickers, Spendenankündigungskarten und YouTube Gifts mit Jewels (yt-gift-message-view-model). hasDonation enthält den Wert; event kennzeichnet den bezahlten YouTube-Artikeltyp. YouTube Gifts verwenden N Jewels falls vorhanden, oder 1 YouTube Gift wenn YouTube die Anzahl verbirgt. Geschenkbilder verwenden contentimg, Geschenkbeschriftungen verwenden subtitle, und minimale Geschenkdetails werden unter meta.youtubeGift.
jeweldonation Geschenkeffekt YouTube zeigt ein animiertes Jewel-Geschenk über dem Livechat (ytls-gift-overlay-item-view-model). Direkt an das eigene GIF-/Medienziel gesendet, damit die Animation ohne Verdopplung der normalen Geschenkzeile laufen kann. contentimg enthält die animierte Ressource und meta.youtubeGift.animationUrl/animationDescription bewahren die Effektdetails.
reaction Eine Zuschauerreaktion erscheint in YouTubes Live-Emoji-Fontäne. Direkt an das eigene Reaktionsziel gesendet. Anonymes Emoji und Bild-URL bleiben in chatmessage/contentimg und unter meta.reactionType/reactionImage. Bekannte Livevarianten sind ❤, 😄, 🎉, 😳 und 💯.
thankyou Ersatznachricht, wenn ein Spendenbetrag vorhanden ist, aber kein Chattext geliefert wurde. Bewahrt hasDonation und fügt für Overlays automatisch „Vielen Dank für deine Spende!“ ein.
redirect YouTube-Weiterleitungsbanner erscheint im Livechat (die nächste Entsprechung einer Raid-Meldung). Reine DOM-Erfassung aus yt-live-chat-banner-redirect-renderer. Setzt event auf redirect und verwendet membership als Beschriftung, damit Overlays es wie andere Systemhinweise darstellen.
viewer_update Abfrage des Social-Stream-Zuschauerendpunkts alle 30 Sekunden (bei Kontingentfehlern Fallback auf Seitenauslesen). meta ist die ganzzahlige Live-Zuschauerzahl; trägt zur zusammengefassten viewer_updates im Hintergrundskript.

Mitgliedschaftsblöcke setzen außerdem membership für Moderator-/Mitgliederchat, während subtitle enthält entweder Monatsanzahlen oder Stufennamen. sourceName/sourceImg werden befüllt, sobald getChannelInfo erfolgreich ist. Standard-DOM-Chat enthält jetzt meta.messageId wenn YouTube eine native Livechat-Nachrichten-ID liefert, die das Dock für Löschsynchronisierung verwendet.

YouTube – WebSocket-/Data-API-Erfassung

Implementierung: sources/websocket/youtube.html, gemeinsame Hilfsfunktionen unter shared/

  • Verwendet standardmäßig die OAuth-Berechtigungsbereiche youtube.readonly und youtube.channel-memberships.creator. Optionaler Schreibzugriff ergänzt youtube.force-ssl für Chatsenden, Moderation, Sperren und Streamdetailänderungen; Google kann dies als weitreichende YouTube-Verwaltungsberechtigung darstellen, da YouTube keinen reinen Chat-Schreibbereich bietet.
  • Kanalstatistiken beachten die jeweiligen Einstellungsschalter (showsubscount, showviewercount).
  • Die API kann keine eigenen Abzeichenbilder liefern; ersatzweise werden die unten genannten Emoji-Symbole verwendet.
  • Wenn die API ausdrücklich authorDetails.isChatModerator: true, Chat-, Super-Chat-, Super-Sticker-, YouTube-Gift- und Mitgliedschaftsgeschenk-Nutzdaten enthalten mod: true. Moderatorstatus wird weder abgeleitet noch zwischen Ereignissen zwischengespeichert.
  • Neue Abonnentenmeldungen verwenden die myRecentSubscribers API (alle 5 Minuten abgefragt). Hinweis: Ergebnisse können verspätet oder unvollständig sein; nur öffentlich sichtbare Abonnements lassen sich identifizieren.
  • YouTube-Weiterleitungsbanner werden von der Data API nicht bereitgestellt, daher redirect bleibt nur über Standard-DOM-Erfassung verfügbar.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
superchat Super-Chat-Einträge aus dem Data-API-Verlauf oder Stream-Polling. hasDonation bewahrt den Website-Betrag (Währung + Wert); event ist superchat. Ältere WebSocket-Builds verwendeten event: "donation" für diese Zeile, sodass Verbraucher dies weiterhin als älteren Alias akzeptieren können.
supersticker Super Stickers (nur Ersatztext der Nachricht, kein Bild aus der API). hasDonation enthält den Betrag; chatmessage enthält dekodierten Beschreibungstext.
jeweldonation YouTube giftEvent Nachrichten, wenn Zuschauer Jewels gegen Gifts einlösen. hasDonation enthält N Jewels, oder 1 YouTube Gift wenn YouTube die Anzahl verbirgt; contentimg verwendet die Geschenkressourcen-URL, falls verfügbar; subtitle enthält die Geschenkbeschriftung; meta.youtubeGift enthält zusätzliche Geschenkdetails.
sponsorship Neues Mitglied tritt über newSponsorEvent. membership wird zu new_sponsor oder new_member; meta enthält originalEventType, Dauerwerte und Stufeninformationen.
resub Mitgliedschaftsverlängerungen oder Stufen-Upgrades. membership wird zu renewed_member (Verlängerungen) oder upgraded_member (Upgrades); subtitle zeigt die Stufe.
giftpurchase Über die API gekaufte Geschenkpakete. membership gesetzt auf gift_giver; subtitle listet Anzahl/Stufe; kein hasDonation oder donoValue.
giftredemption Meldungen zu Geschenkeinlösungen. membership gift_recipient; Abzeichen sind standardmäßig 🎁; subtitle kennzeichnet die verschenkte Stufe.
membermilestone Meilenstein-Chatnachrichten (memberMonth oder displayMessage vorhanden). membership member_milestone; subtitle fasst Monate + Stufe zusammen; meta erfasst die rohe Meilensteinzuordnung.
viewer_update Streaming-Statistiken (gleichzeitige Zuschauer), wenn Zuschauerberichte aktiviert sind. meta ist eine Ganzzahl; spiegelt die DOM-Skripte wider, damit nachgelagerte Verbraucher beide Wege zusammenführen können. Ein Dock mit &showviewercount fordert die Erfassung von Zuschauerzahlen für 70 Minuten an und erneuert diese stündlich, ohne die globale Einstellung dauerhaft zu ändern.
likes_update Abfrage offizieller Videostatistik, wenn Gesamtzahlen von Plattform-Likes senden aktiviert ist. meta ist die aktuelle ganzzahlige Video-Like-Zahl. Wird bei Änderung und regelmäßig auch bei unverändertem Wert gesendet, damit Verbraucher aktuell bleiben. Der globale captureliketotals Einstellung aktiviert dies; älteres captureyoutubelikes bleibt ein Kompatibilitätsalias. Das Aktivieren der Popup-Option pro Dock &showlikecount Option aktiviert diese globalen Erfassungseinstellungen ebenfalls dauerhaft; das manuelle Hinzufügen des URL-Parameters steuert nur die Darstellung. Das Ausschalten der Anzeigeoption deaktiviert die globale Erfassung nicht.
subscriber_update Abfrage der Kanalstatistik (Abonnenten), wenn showsubscount nicht ausdrücklich deaktiviert. meta ist die Abonnentengesamtzahl; die Oberfläche aktualisiert Dashboard-Zähler.
view_update Abfrage der Kanalstatistik (Gesamtaufrufe), wenn showviewercount oder Hype-Modus aktiv ist. meta ist die ganzzahlige Aufrufzahl.
live_chat_ended Livechat wird für die zugeordnete Übertragung nicht mehr verfügbar. meta.streamTitle befüllt, wenn Streammetadaten zwischengespeichert wurden.
user_banned userBannedEvent aus der Livechat-API oder dem gRPC-Stream. Ereignis nur mit Metadaten für Moderationswidgets. meta enthält Benutzername/Anzeigename, Kanal-ID, Avatar-/Profil-URL, Moderator, Sperr-/Timeout-Dauer und Dauerhaftigkeit.
new_follower Neuer Abonnent erkannt über myRecentSubscribers API (alle 5 Minuten abgefragt). chatname ist der Kanalname des Abonnenten; chatmessage ist leer, sofern Abonnentenmeldungen auf der YouTube-Quellseite nicht aktiviert sind. meta enthält channelId, title, subscribedAt, und gruppierte Serien ergänzen grouped, count, others, und subscribers. Hinweis: Ergebnisse können verspätet oder unvollständig sein; nur öffentlich sichtbare Abonnements lassen sich identifizieren.

Chatweiterleitungen aus der API verwenden meta.plainText für die Klartextnachricht neben umfangreichem chatmessage Inhalt. Es ist Text, kein HTML, und kann weiterhin Unicode-Emojis enthalten. Mitgliedschaftsabzeichen verwenden ersatzweise Emojis (⭐, 💝, 🏅, usw.), um mit der DOM-Erfassung übereinzustimmen. Normale Chatnutzdaten enthalten außerdem meta.messageId damit Dock-Löschaktionen zur YouTube-Moderations-API zurückgehen können.

YouTube-Abonnentenmeldungen (new_follower)

Social Stream kann neue YouTube-Abonnenten jetzt über die myRecentSubscribers API-Endpunkt. Dies funktioniert ähnlich wie Streamlabs-Abonnentenmeldungen.

So funktioniert es:

  • Fragt die YouTube-API alle 5 Minuten nach neuen Abonnenten ab
  • Speichert bereits gesehene Abonnenten in localStorage, um neue zu erkennen
  • Liefert new_follower Ereignisse mit Name, Avatar und Kanal-ID des Abonnenten
  • Lässt Abonnentenmeldungen standardmäßig deaktiviert; bei Aktivierung wird die aktuelle Übersetzungszeichenfolge für alert-just-subscribed
  • Gruppiert standardmäßig Schübe von mehr als drei neuen Abonnenten, damit Wiederverbindungen Overlays oder Event Flow nicht überfluten
  • WebSocket-Modus muss in den Erweiterungseinstellungen aktiviert sein

Einschränkungen (dies sind YouTube-API-Beschränkungen, keine Social-Stream-Beschränkungen):

  • Keine garantierte Zustellverzögerung – SSN fragt alle fünf Minuten ab, aber die API kann verzögerte oder unvollständige Ergebnisse liefern. Verlasse dich nicht auf ein festes Vierstundenfenster.
  • Nur öffentliche Abonnements – Abonnenten mit privater Abonnementliste lösen keine Meldungen aus. Abonnements sind auf YouTube standardmäßig privat.
  • Nur Kanalbesitzer – Du kannst Abonnentenmeldungen nur für Kanäle empfangen, die dir gehören und für die du authentifiziert bist.
  • Nutzung des API-Kontingents – Jede Abfrage kostet 1 API-Einheit. In 5-Minuten-Abständen ergibt das ungefähr 288 Einheiten pro Tag (vom Standard-Tageskontingent von 10.000).

Auslöser im Event-Flow-Editor: Verwende data.event === "new_follower" und data.type === "youtube"

YouTube WebSocket: Ereignis- & Mitgliedschafts-Kurzreferenz

data.event data.membership Szenario
sponsorshipnew_sponsorNeues Mitglied über newSponsorEvent
sponsorshipnew_memberNeues Mitglied über processMembership
resubrenewed_memberMitgliedschaftsverlängerung
resubupgraded_memberStufen-Upgrade
giftpurchasegift_giverAn den Kanal verschenkte Mitgliedschaften
giftredemptiongift_recipientVerschenkte Mitgliedschaft erhalten
membermilestonemember_milestoneChatnachricht zum Mitgliedschaftsjubiläum
superchat-Super Chat
supersticker-Super Sticker
user_banned-Sperr-/Timeout-Ereignis nur mit Metadaten
new_follower-Neuer Abonnent (per Polling; möglicherweise verzögert)

Twitch – Standard-DOM-Erfassung

Implementierung: sources/twitch.js

  • Lass den Twitch-Chat geöffnet. Mitgliedschafts- und Benutzerhinweise werden erfasst, wenn Twitch sie darstellt; sie sind nicht auf Broadcaster- oder Moderatorenkonten beschränkt. Für kontospezifische Funktionen kann Authentifizierung nötig sein.
  • Zuschauerzahlanfragen gehen an https://api.socialstream.ninja/twitch/viewers alle 30 Sekunden.
  • Für Follower-Meldungen, Raids und vollständige Ereignisunterstützung, aktiviere den WebSocket-Modus in den Erweiterungseinstellungen.
  • Von Zuschauern geteilte Watch-Streak-Hinweise sind standardmäßig aus und erfordern den Twitch Watch Streaks anzeigen Einstellung.
  • Das ausdrücklich aktivierte PluralMind Einstellung kann chatname, nameColor, und den über einen Proxy geleiteten Anteil von chatmessage, und kann ein Pronomen-Textabzeichen hinzufügen. username bleibt der Twitch-Loginname; zugehörige Löschungen enthalten delete.meta.pluralmind damit das Dock diesen stabilen Loginnamen verwendet.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
reward Karten zu Kanalpunkte-Einlösungen (einschließlich 7TV-Belohnungscontainer). chatmessage enthält Einlösungstext; membership unverändert.
giftpurchase Systemzeilen wie „User gifting X Subs in the channel“. chatmessage ist die Systemzeile, über die Overlays Geschenkkampagnen hervorheben können.
subscription_gift Hinweise auf verschenkte Abonnements („User gifted a Sub to …“). Markiert das Ereignis für Hervorhebungsfilter; membership bleibt die Abzeichenbeschriftung des Empfängers.
viewer_update Abruf alle 30 Sekunden über den Social-Stream-Zuschauerproxy (bei Fehler 0). meta ganzzahlige Zuschauerzahl.
hype_train Twitchs angeheftetes Community-Highlight zeigt einen aktiven Hype Train im Popout-Chat. DOM-Fallback nur mit Metadaten und meta.sourceMode gesetzt auf dom. Verwendet sichtbare Stufe, Timer und meta.progressPercent wenn Twitch keine EventSub-Punktesummen liefert.
community_highlight Elemente in Twitchs Widget „Community Highlight“. meta ist der extrahierte Hervorhebungstext für Automatisierungsanschlüsse.
knock Einladungen zur Zusammenarbeit über Stream Together, die oberhalb des Chats erscheinen. chatmessage enthält den Einladungstext; chatname wird aus dem Benutzer der Meldung abgeleitet, falls verfügbar.
watch_streak Ausdrücklich aktivierter, vom Zuschauer geteilter Watch-Streak-Hinweis im Twitch-Chat. meta.streakCount enthält die sichtbare Anzahl, falls erkannt; meta.milestoneId verwendet die DOM-Hinweiskennung, falls verfügbar.

Bits/Cheers füllen hasDonation (zum Beispiel „500 bits“), obwohl data.event bleibt leer; stütze die Darstellung von Spendenwidgets auf dieses Feld. Informationen zur Abonnementserie stehen in subtitle wenn Abzeichen Monate liefern.

Twitch – EventSub/WebSocket

Implementierung: sources/websocket/twitch.js mit gemeinsamem Kern providers/twitch/chatClient.js

  • OAuth-Berechtigungsbereiche: 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. Broadcaster-Tokens schalten Abonnenten-/Followerzähler frei.
  • Über EventSub zugestellte Ereignisse sowie Helix-Polling für Zuschauer-/Follower-/Abonnentengesamtzahlen.
  • WebSocket-Modus liefert in Echtzeit Follower-Meldungen, Abonnementereignisse, Raids, Cheers, Power-ups, Kanalpunkte-Einlösungen und Hype-Train-Metadaten.
  • Shared-Chat-Zeilen verwenden Twitch IRC source-room-id um sourceName/sourceImg mit dem Ursprungskanal, wenn er vom verbundenen Kanal abweicht.
  • Von Zuschauern geteilte Watch-Streak-Hinweise sind standardmäßig aus und erfordern den Twitch Watch Streaks anzeigen Einstellung.
  • Das ausdrücklich aktivierte PluralMind Einstellung kann chatname, nameColor, und den über einen Proxy geleiteten Anteil von chatmessage, und kann ein Pronomen-Textabzeichen hinzufügen. username und userid behalten die Twitch-Identität; zugehörige Löschungen enthalten delete.meta.pluralmind damit das Dock diese stabilen Felder verwendet.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
cheer Cheer-Meldungen von EventSub channel.bits.use. hasDonation „N bits“; meta.bits numerisch; chatmessage bewahrt die rohe Nachricht; identifizierte Cheer-Absender enthalten chatimg.
powerup Integrierte oder eigene Power-up-Meldungen von EventSub channel.bits.use. Reine Ereignisnutzdaten mit leerem chatmessage und kein hasDonation, sodass keine normale Chatzeile entsteht. meta.bits ist numerisch und meta.powerUp bewahrt Twitch-Untertyp, Titel/Belohnungs-ID, Effektdetails und gelieferten Nachrichtentext, falls verfügbar.
new_subscriber channel.subscribe oder USERNOTICE mit msg-id=sub. meta enthält { userId, tier, isGift }; die zwischengespeicherte Abonnentengesamtzahl wird erhöht, falls verfügbar; Zuschauerzahlen werden separat abgefragt.
resub channel.subscription.message oder USERNOTICE msg-id=resub. meta enthält Serie und kumulative Monate; chatmessage enthält den Text des erneuten Abonnements.
subscription_gift channel.subscription.gift oder USERNOTICE msg-id=subgift. meta liefert verschenkten Gesamtwert und Stufe; chatmessage fasst die Aktion zusammen.
reward channel.channel_points_custom_reward_redemption.add. meta enthält Belohnungs-ID, Titel, Kosten, Prompt, Benutzereingabe, Einlösungs-ID/-Status und älteren Alias. Kein oberstes reward Objekt wird von diesem EventSub-Handler gesendet. Ältere Verbraucher zeigen möglicherweise weiterhin channel_points als veralteten Alias.
raid EventSub channel.raid oder USERNOTICE msg-id=raid. meta = { fromId, fromLogin, viewers }.
watch_streak Ausdrücklich aktiviertes Twitch-IRC-USERNOTICE mit msg-id=viewermilestone und msg-param-category=watch-streak. Enthält den Zuschauer in chatname, Twitchs Hinweistext in chatmessage, und meta.streakCount/meta.milestoneId. Andere allgemeine USERNOTICE-Typen werden weiterhin ignoriert.
new_follower channel.follow EventSub-Benachrichtigungen. Erhöht automatisch follower_update; meta erfasst { userId, followedAt }.
viewer_update Helix streams Abfrage alle 30 Sekunden. meta ganzzahlige Zuschauerzahl; unterdrückt, sofern Zuschauerstatistik in den Einstellungen nicht aktiviert ist.
follower_update Helix-Followergesamtzahl, ausgelöst nach Follow-Ereignissen oder regelmäßiger Abfrage. meta ganzzahlige Followerzahl.
subscriber_update Helix-Abonnentengesamtzahl (erfordert Broadcaster-Token mit Abonnementberechtigung). meta ganzzahlige Abonnentenzahl.
stream_online / stream_offline EventSub stream.online/stream.offline. meta.startedAt bei Online-Ereignissen vorhanden; offline wird ein leeres Objekt verwendet.
ad_break / ad_request / ad_schedule Antworten der Ad-Manager-API (channel.ad_break.begin, manuelles POST channels/ads, GET channels/ads). meta enthält Dauer, Anforderer und Zeitplannutzdaten für Dashboards.
hype_train EventSub channel.hype_train.begin, channel.hype_train.progress, und channel.hype_train.end v2-Benachrichtigungen. Ereignis nur mit Metadaten: kein chatname oder chatmessage. meta.phase ist begin, progress, oder end; meta enthält Train-ID, Stufe, Fortschritt, Ziel, Gesamtwert, Beitragende, Zeitfelder, Kennzeichen für gemeinsamen Train und trainType. Treasure Trains werden über meta.trainType wenn Twitch sie kennzeichnet.
user_banned EventSub channel.ban, oder IRC CLEARCHAT Fallback, wenn EventSub-Sperrereignisse nicht verfügbar sind. Ereignis nur mit Metadaten für Moderationswidgets. meta enthält Benutzername/Anzeigename, Benutzer-ID, Avatar-/Profil-URL, Moderator, Grund, Sperr-/Timeout-Dauer und Dauerhaftigkeit.

Chatnutzdaten verwenden den gemeinsamen Anbieter wieder, daher data.event wird für `/me` befüllt (action) und ältere bits Tags auch außerhalb von EventSub-Flows. Twitch-GIF-Nachrichten legen die Giphy-Ressource in contentimg, lass chatmessage leer und bewahre Twitchs Ersatzbeschriftung in meta.gifLabel. Duplikat- und Löschlogik verwenden Nachrichten-IDs; über SSN gesendete Nachrichten verwenden die native message_id aus Twitchs IRC-Echo in data.id.

Twitch-Hype-Train-Metadaten

hype_train enthält nur Metadaten und kein chatname oder chatmessage. Dashboards sollten eine bestehende Train-Anzeige anhand von meta.id statt jede Fortschrittsaktualisierung als Chat anzuhängen. Die Meta Data Bar (meta.html) zeigt diese Ereignisse als Fortschrittsleiste am oberen Rand.

Feld Tippe Hinweise
typeZeichenfolgeImmer twitch.
eventZeichenfolgeImmer hype_train.
meta.phaseZeichenfolgebegin, progress, oder end.
meta.idZeichenfolgeStabile Train-ID. Verwende sie zum Anlegen/Aktualisieren eines einzelnen sichtbaren Train-Widgets.
meta.broadcasterUserIdZeichenfolgeBenutzer-ID des Twitch-Broadcasters.
meta.broadcasterUserLoginZeichenfolgeLoginname des Twitch-Broadcasters.
meta.broadcasterUserNameZeichenfolgeAnzeigename des Twitch-Broadcasters.
meta.totalZahl | nullVon Twitch gemeldeter Gesamt-Unterstützungswert des Trains.
meta.progressZahl | nullAktueller Fortschritt zum Stufenziel.
meta.goalZahl | nullAktuelles Stufenziel.
meta.progressPercentZahl | nullDOM-Fallback-Prozentwert, wenn Twitch nur den sichtbaren Popout-Fortschrittsbalken bereitstellt.
meta.levelZahl | nullAktuelle oder abschließende Train-Stufe.
meta.topContributionsArrayWichtigste Beitragende. Jeder Eintrag enthält userId, userLogin, userName, type, und numerisches total.
meta.lastContributionObjekt | nullNeuester Beitrag mit derselben Beitragsstruktur wie topContributions.
meta.sharedTrainParticipantsArrayRohe Teilnehmerdaten gemeinsamer Trains von Twitch, sofern geliefert.
meta.startedAtZeichenfolgeISO-Zeitstempel für Train-Start.
meta.expiresAtZeichenfolgeISO-Zeitstempel für den aktuellen Train-Ablauf.
meta.endedAtZeichenfolgeISO-Zeitstempel für Train-Ende oder davor leer.
meta.cooldownEndsAtZeichenfolgeISO-Zeitstempel für das Ende der Abklingzeit oder davor leer.
meta.isSharedTrainbooleschTrue, wenn Twitch den Train als gemeinsam kennzeichnet.
meta.trainTypeZeichenfolgeNormalerweise regular; Treasure Trains erscheinen hier, wenn Twitch sie so kennzeichnet.
meta.allTimeHighLevelZahl | nullHöchste jemals erreichte Train-Stufe, wenn Twitch sie liefert.
meta.allTimeHighTotalZahl | nullHöchster jemals erreichter Train-Gesamtwert, wenn Twitch ihn liefert.
meta.sourceModeZeichenfolgeOptionale Quellmarkierung wie dom.
meta.eventSubTypeZeichenfolgeUrsprünglicher EventSub-Typ: channel.hype_train.begin, channel.hype_train.progress, channel.hype_train.end, oder dom.community_highlight.

Twitch EventSub: Ereignis-Kurzreferenz

data.event Szenario
new_followerBenutzer folgt dem Kanal
new_subscriberNeues Abonnement
resubErneutes Abonnement mit Nachricht
subscription_giftAn den Kanal verschenkte Abonnements
cheerMit Bits gecheert
powerupIntegriertes oder eigenes Power-up verwendet
rewardKanalpunkte-Einlösung
raidEingehender Raid
viewer_updateGleichzeitige Zuschauerzahl
follower_updateFollowergesamtzahl
subscriber_updateAbonnentengesamtzahl
stream_onlineStream ging live
stream_offlineStream beendet
ad_breakWerbepause gestartet
hype_trainStatusmetadaten für Hype Train/Treasure Train
user_bannedBenutzer wurde gesperrt oder zeitweise stummgeschaltet

OBS Flow Actions

Implementierung: actions.html über OBS-WebSocket-v5-Ereignisse, mit dock.html OBS-Browserquellen-Ereignisse als Fallback

  • Lass das Flow-Actions-Overlay mit derselben Social-Stream-Sitzung wie Event-Flow-Editor/Hintergrund geöffnet oder das Dock in OBS geladen.
  • Richte OBS WebSocket v5 unter OBS 28+ ein; die Standard-URL lautet ws://127.0.0.1:4455.
  • Dies sind Event-Flow-Systemereignisse. Sie enthalten keine chatname oder chatmessage, und zusätzliche OBS-Details bleiben in meta.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
stream_started OBS meldet, dass die Streamausgabe den gestarteten Zustand erreicht hat. type ist obs; event ist stream_started; meta.source ist obs-websocket oder obs-browser-source; meta.outputState kann den rohen OBS-Ausgabezustand enthalten.
stream_stopped OBS meldet, dass die Streamausgabe den gestoppten Zustand erreicht hat. type ist obs; event ist stream_stopped; meta.outputActive kann false.
recording_started OBS meldet gestartete Aufnahme. type ist obs; meta.obsEvent kennzeichnet die OBS-Ereignisquelle.
recording_stopped OBS meldet gestoppte Aufnahme. type ist obs; meta.outputState kann den rohen WebSocket-Zustand enthalten.
scene_changed OBS ändert die aktive Programmszene. type ist obs; meta.sceneName enthält den Szenennamen, wenn OBS ihn liefert.
media_ended Eine OBS-Medieneingabe beendet die Wiedergabe. type ist obs; meta.inputName und meta.inputUuid kennzeichnen die Medieneingabe.
replay_buffer_saved OBS speichert den Wiederholungspuffer. type ist obs; meta.savedReplayPath kann den gespeicherten Wiederholungspfad enthalten.

Streamlabs Alert Box

Implementierung: sources/streamlabs.js (Meldungsbox-DOM); optionale Socket-Brücke unter sources/websocket/streamlabs.html

  • Lass deine Streamlabs-Meldungsbox in einem Tab oder einer Browserquelle geöffnet, damit Meldungen dargestellt werden; das Inhaltsskript liest Nachricht/Bild/Tokens aus dem Meldungs-DOM.
  • Meldungen im Spendenformat setzen hasDonation (z. B. „$10 USD“ oder „100 bits“) und optional donoValue in USD.
  • Abgeleitete Ereignistypen: follow, subscription, gift, cheer, donation, superchat, raid, redeem, merch, sponsor.
  • Füge für die Socket-Brücke dein Streamlabs-Socket-API-Token ein und verbinde; Meldungen werden ohne Meldungsbox-Seite weitergeleitet.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
donation Trinkgelder, Wohltätigkeit, JustGiving oder allgemeine „donated“-Meldungen. hasDonation bewahrt den Währungstext (z. B. „$36“ oder „$10 CAD“); donoValue wird nur bei verfügbarem USD-Wert geliefert; andere beschriftete Beträge verwenden die gemeinsame Währungsumrechnung.
cheer Twitch-Bits-/Cheer-Meldungen. hasDonation wird zu „100 bits“ und donoValue erfasst den USD-Wert.
subscription Abonnementmeldungen. Standardfelder gesetzt; chatmessage ist die Meldungszeile; meta.tokens enthält als Tokens aufbereitete Werte (name, amount, levelName usw.).
gift Verschenkte Mitgliedschaften/Abonnements. meta.tokens.amount kann die Geschenkanzahl zeigen; meta.tokens.levelName kann die Stufe enthalten.
follow Follower-Meldungen. Keine Spendenfelder; chatname spiegelt das Namenstoken der Meldung.
raid Raid-Meldungen. meta.tokens.count enthält die Raid-Teilnehmerzahl, falls vorhanden.
redeem Cloudbot-Einlösungsmeldungen. meta.tokens.product erfasst den eingelösten Artikel.
merch Merchandise-Kaufmeldungen. meta.tokens.product enthält den Namen des gekauften Artikels.
superchat Meldungen im Super-Chat-Stil von YouTube oder unterstützten Meldungsintegrationen. hasDonation enthält den Betrag; Verbraucher können weiterhin älteres donation Aliase.
sponsor Von Streamlabs bereitgestellte Meldungen im Sponsor-/Mitgliedschaftsformat. Standardfelder; keine Spende, sofern der Text keinen Betrag enthält.

TikTok Live – DOM-Erfassung und TikFinity-Feed

Implementierung: sources/tiktok.js für native TikTok-Seiten und sources/tikfinity.js für TikFinitys Aktivitätsfeed-Widget/-Iframe. SSApp hat weiterhin eine native TikTok-Integration mit der größten Ereignisabdeckung (siehe SSApp-Dokumentation).

  • Funktioniert auf der Liveseite des Broadcasters. Geschenk-/Like-/Follow-Banner werden nur bei authentifizierter Sitzung gefüllt.
  • TikTok liefert viele Ereignisse über DOM-Erkennung ohne erforderlichen WebSocket-Modus – Geschenke, Follows, Likes und ausdrücklich aktivierte Beitritte werden aus dargestellten Zeilen erfasst.
  • TikFinity-Widget-Seiten unter tikfinity.zerody.one/widget/activity-feed* funktionieren ebenfalls. Der eingebettete Aktivitätsfeed-Iframe sendet dieselben kanonischen TikTok-Nutzdatenfelder für Chat, Follows, Teilungen, Geschenke, Abonnements, ausdrücklich aktivierte Beitritte und Schatztruhen.
  • Keine zusätzliche API-Authentifizierung erforderlich.
  • Nativer SSApp-Modus ergänzt weiterhin Ereignisse über die Seiten-/Widget-Erfassungswege hinaus: question_new, emote, viewer_update, und die ausdrücklich aktivierte Summe likes_update.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
gift Geschenkbannerzeilen oder DivGiftMessage Einträge. hasDonation wandelt in „N coins“ um (mit Geschenknachschlage-Fallback); membership verwendet Abzeichentext, falls verfügbar.
joined Beitrittsmeldungen, wenn der globale Stream-Ereignisse „joined“ erfassen Einstellung aktiviert ist. Überspringt Teilungsmeldungen; chatname kann bei manchen Systemzeichenfolgen leer sein.
followed Aus Social-Karten ausgelesene Follow-Nachrichten. Stellt sicher, dass chatname vor der Ausgabe vorhanden ist.
shared TikFinity-Teilungszeilen. chatmessage ist der dargestellte Teilungstext.
subscribe TikFinity-Abonnementzeilen. membership wird auf SUBSCRIBER.
envelope TikFinity-Schatztruhenzeilen. meta.coins und meta.canOpen enthalten die Schatztruhendetails.
liked Zusammenfassungen von Like-Wellen, ausgelöst durch TikTok-Social-Karten. chatname ist enthalten, wenn TikTok es liefert; anonyme/System-Like-Karten können weiterhin gesendet werden. TikTok sendet dies über den normalen Hintergrundpfad. Der Hintergrund leitet eine Kopie an das Reactions Overlay weiter und geht nur dann zur Haupt-Chat-/Ereignisverarbeitung über, wenn capturelikeevent aktiviert ist.
likes_update SSApp empfängt eine maßgebliche kumulative TikTok-LIVE-Gesamtzahl, während captureliketotals aktiviert ist. meta ist die aktuelle ganzzahlige Gesamtsumme. SSApp sendet den ersten Wert sofort, bündelt Schübe auf höchstens ein Update alle fünf Sekunden, wiederholt den letzten Wert etwa alle 90 Sekunden und sendet beim Streamende null. Dies ist getrennt von zuschauerspezifischen liked Ereignisse.
true (boolesch) Allgemeine Social-/Systemmeldungen, wenn TikTok keinen Untertyp liefert. Verwende chatmessage Inhalt zur Wahl der Darstellung; boolesches true bedeutet „Systemereignis – Typ unbekannt“.

membership spiegelt Abzeichen-Tooltips (Abonnentenstufen). Der Avatarcache hält chatimg zwischen Ereignissen gültig; wenn das DOM Farben für Moderatoren unterdrückt, leert das Skript nameColor. TikFinity-Geschenkzeilen setzen außerdem contentimg auf das Geschenksymbol, falls verfügbar. Native DOM- und TikFinity-Geschenkserienupdates enthalten meta.tiktokGiftStreakId, meta.tiktokGiftCount, und meta.tiktokGiftQuietMs damit Overlays wiederholte Updates zusammenfassen können; ältere Serien-IDs gelten nur für die jeweilige Seiteninstanz. Geschenkmetadaten können außerdem tiktokGiftMessageId (ursprüngliche TikTok-Nachrichten-ID), tiktokGiftSenderId, groupId, giftId, giftName, streakable, und repeatEnd. Native IDs identifizieren dasselbe Geschenk über mehrere Erfassungsfenster hinweg; eine von null verschiedene Gruppen-ID zusammen mit Absender- und Geschenk-IDs kennzeichnet kumulative Serienaktualisierungen. SSApp-WebSocket-Erfassung liefert nach Abschluss einer Serie dieselben Felder mit count zur Kompatibilität beibehalten. Der Spendenschalter wird beim Weiterleiten jedes Geschenks geprüft: Das Deaktivieren von TikTok-Spenden entfernt hasDonation und donoValue wobei Geschenkereignis und Metadaten erhalten bleiben. TTS verwendet diese Identitäten zum Zusammenfassen von Updates und Unterdrücken abgeschlossener Duplikate für bis zu zehn Minuten (begrenzter Cache) und liest TikTok-Geschenke als Absender, Menge und Geschenkname vor. Ältere Nutzdaten verwenden ersatzweise ihre bisherigen Serien-IDs und Nachrichtentexte; aus Geschenktext allein wird keine Identität abgeleitet. TikTok-Geschenkansagen verwenden die gewählte TTS-/Stimmensprache unabhängig von der Oberflächensprache. Ansageverben sind für Englisch, Spanisch, Portugiesisch, Französisch, Deutsch, Italienisch und Niederländisch übersetzt; andere Sprachen verwenden Absender, Menge und Geschenkname ohne englisches Verb. Vereinfachte TTS behält dieses neutrale Format. Geschenknamen bleiben wie von der Plattform geliefert; dies übersetzt weder Geschenkkataloge noch Chatnachrichten automatisch und leitet keine Streamsprache ab.

Bei diesen Serienaktualisierungen sind Anzahl und Spendenbeschriftung kumulativ: 1, 2, 3 bedeutet drei Geschenke, nicht sechs. Summenverbraucher sollten nur den Zuwachs gegenüber dem höchsten bereits für diese Serien-ID gesehenen Betrag addieren. Standarderfassung unterstützt ältere Geschenkklassen und aktuelle Bild-/Anzahlzeilen; beide behalten event: "gift" und hasDonation. Bei unbekannten Preisen bleiben Geschenkanzahl/-namen für die Anzeige erhalten; als USD-Schätzung wird eine Münze pro Geschenk verwendet. Von der Quelle geliefertes donoValue hat Vorrang; dargestellte Geschenkmetadaten können coinsPerGift oder diamondsPerGift bevor Geschenktabelle oder Standardwert benötigt werden. Standard-/TikFinity-Münzschätzungen und native SSApp-Diamantenschätzungen verwenden ihre bestehenden unterschiedlichen Umrechnungen; keine davon ist eine garantierte Barauszahlung.

Whatnot

Implementierung: sources/whatnot.js

  • Öffne die Live-Whatnot-Showseite mit sichtbarem Chat; die bestehende WebSocket-Erfassung liefert Chat, Auktions-/Verkaufsmeldungen, Zahlungsfehler, Raids, Spenden und schnelle Zuschaueraktualisierungen. Produkt-/Gewinnspielmomentaufnahmen benötigen weiterhin in der Showansicht dargestellte DOM-Abschnitte.
  • Stream-Ereignisse erfassen (Capture Stream Events) steuert Whatnot-Systemereignisse sowie Auktions-/Katalogmetadaten-Updates; Beitrittszeilen benötigen außerdem Stream-Ereignisse „joined“ erfassen; Zuschauerzahlen folgen weiterhin den Zuschauer-/Hype-Schaltern.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
viewer_update Zuschauerzahländerungen aus WebSocket-Livestream-Updates mit DOM-Polling als Fallback. meta ist eine ganzzahlige Zuschauerzahl.
donation Whatnot-WebSocket-Trinkgelder und Community-Boost-Beitragsereignisse. hasDonation enthält den formatierten Betrag; WebSocket-spezifischer Kontext bleibt unter meta.
raid Whatnot-WebSocket-Raid-Ereignisse, einschließlich Antworten aus dem Aktivitätsverlauf. meta.numRaiders ist enthalten, wenn Whatnot es liefert.
joined Chatzeilen, deren normalisierter Text mit joined, wenn Stream-Ereignisse „joined“ erfassen aktiviert ist. Verwendet Zeichenfolgen als Ereigniskennzeichen für Beitrittsmeldungen (kein boolesches true).
auction_update Wenn sich der Auktionszustand in der Live-Fußzeile ändert (Gewinner-/Führend-Text, Titel, Gebote, Preis, Timer, Verkauft-Status), oft beschleunigt durch WebSocket-Pakete zum Auktionslebenszyklus. Ereignis nur mit Metadaten. Kein chatname/chatmessage; Daten liegen in meta (zum Beispiel meta.title, meta.bids, meta.price, meta.timer, meta.status).
commerce_update Wenn sich Katalogabschnitte ändern (Produkte, Surprise Sets, kommende Gewinnspiele), oft beschleunigt durch WebSocket-Pakete zum Gewinnspiel-/Produktlebenszyklus. Momentaufnahme nur mit Metadaten, mit Abschnittszählern und Artikelarrays unter meta.products, meta.surpriseSets, und meta.upcomingGiveaways.
auction_started, new_bid, auction_ended, product_sold Die zugehörige Live-WebSocket-Meldung trifft ein. Dies sind einzelne Ereignisse, getrennt von bestehenden Anzeigemomentaufnahmen. platform/type: "whatnot", Klartext- chatname, userid falls geliefert, Produktname in subtitle, und ein Klartext- chatmessage mit textonly: true. Verfügbare Kennungen und Auktionsdetails stehen unter meta: productId, auctionId, orderId, transactionId, livestreamId, bidId, bids, auctionEndTime, und status. Optionales price ist in Hauptwährungseinheiten, mit priceText und currency falls geliefert.
payment_failed Eine Live-WebSocket-Meldung über eine fehlgeschlagene Zahlung trifft ein. Dieselben verfügbaren Käufer-, Produkt- und Kennungsfelder mit meta.paymentStatus: "failed". Wenn nur product.purchaserUserId den Käufer identifiziert, füllt es userid bei Verkaufs-/Zahlungsereignissen und der Käufername bleibt leer. Aus einer anderen oder vorherigen Auktion wird kein Käufer abgeleitet.
payment_succeeded Eine Live-WebSocket-Meldung über eine erfolgreiche Zahlung trifft ein. meta.paymentStatus: "succeeded", mit Käufer, Artikel, Bestell-ID und weiteren zulässigen Feldern dieser Meldung. Dies bleibt ein eigenständiges Zahlungsereignis; es sendet kein weiteres purchase oder Spende. Fehlende Felder bleiben leer oder fehlen, auch wenn ein früherer Verkauf sie geliefert hat.

Auktions-/Verkaufsanzeige-Updates bleiben DOM-basierte Momentaufnahmen. Verwende zum Abgleich eines einzelnen WebSocket-Ereignisses in Event Flow Ereignistyp (erweitert), wähle Eigenes Ereignis, und gib den genauen Namen ein. Beschriftungen können **{username}**\n{subtitle} mit gewählter Textgewichtung; Bedingungen können meta.paymentStatus mit failed. Ein importierbares Whatnot-Etikettenbeispiel verfügbar ist. Bestehende Einstellungen zur Stream-Ereigniserfassung gelten weiterhin.

Weitere optionale Felder sind meta.catalogProductId (die product.productId), meta.parentProductId (product.parentId), meta.transactionType (Whatnots Verkaufstyp, unverändert) und meta.placeOrderErrorReason (von Whatnot gelieferter Bestell-/Zahlungsfehlercode). Diese Produktverweise beschreiben den Katalog oder das übergeordnete Angebot; sie ersetzen keine Bestell-ID. Bestandsmenge wird nicht als gekaufte Menge behandelt.

Setze für Automatisierung nach erfolgreicher Zahlung einen Ereignistyp (erweitert) Auslöser auf Eigenes Ereignis: payment_succeeded, und filtere die Quelle auf Whatnot. Bestehende Bedingungen und Vorlagen können die userid, chatname, subtitle und meta.orderId direkt. Kein gespeicherter Kauf ist nötig, wenn die Meldung die erforderlichen Details enthält.

Das Ende einer Auktion oder die Markierung eines Artikels als verkauft bestätigt keine erfolgreiche Zahlung: Diese Meldungen werden nicht als bezahlte purchase Ereignisse und setzen keine Spendenbeträge. Ein Erfolgsereignis wird nur für ein empfangenes payment_succeeded Meldung; die Erfassung fragt Zahlungsabschluss nicht ab und leitet ihn nicht aus einem Verkauf ab. Andere paymentStatus Werte werden nur weitergeleitet, wenn sie ausdrücklich in einem erfassten Paket enthalten sind. Fehlende Kennungen werden weggelassen; eine Produkt-ID allein kann mehrere Verkäufe umfassen. Verwende daher eine gelieferte Bestell-/Auktions-ID zur Zuordnung von Meldungen. Die Erfassung merkt sich keine Käufe und gleicht keine Zahlungsupdates ab; solche Abläufe müssen ausdrücklich in Event Flow eingerichtet werden. Kurzzeitig doppelte Pakete der beiden bestehenden Erfassungsbrücken werden unterdrückt. Rohe Bestell-/Zahlungsobjekte werden nicht weitergeleitet.

eBay Live

Die Monetarisierungs-eBay-Verkäuferverbindung benötigt einen eingerichteten SSN-eBay-Dienst und die OAuth-Zustimmung des Verkäufers; die unten beschriebene eBay-Live-Erfassung ist unabhängig. Der Sandbox-Modus verwendet Sandbox-Angebots-URLs, nennt den Käufer „eBay Sandbox buyer“ und stellt der Nachricht „Sandbox test purchase:“ voran. Sandbox-Käufe behalten denselben Kaufvertrag und können beim Testen aktivierte Meldungen/Chataktionen auslösen. Der umgesetzte Zahlungsvertrag sendet event: "purchase", mit type und platform gesetzt auf ebay. Benötigt eine bezahlte Bestellung, die zu einem ausgewählten Produkt passt. id ist eine stabile undurchsichtige Kennung einer Bestellposition; chatname ist „eBay buyer“, chatmessage ist Klartext (textonly: true), subtitle ist der Produktname und optionales contentimg ist dessen Bild. meta.ebayPurchase enthält itemId, itemName, quantity, und öffentliches url. Keine Käuferidentität, Versanddaten, hasDonation oder donoValue ist enthalten. Das unterscheidet sich von ausgelesenen Auktions- oder Bestandsänderungen, die keine Zahlung belegen.

Implementierung: sources/ebay.js

  • Öffne entweder /ebaylive/events/<id>/chat oder /ebaylive/events/<id>/stream. Beide empfangen denselben Live-Auktionsfeed.
  • Der öffentliche WebSocket-Feed liefert Auktionen, Gebote, Gewinner, Zeitverlängerungen und Bestandsänderungen; eine schreibgeschützte GraphQL-Abfrage liefert Angebotsdetails. DOM-Erfassung bleibt ein Fallback, wenn Netzwerkdaten nicht verfügbar sind.
  • Stream-Ereignisse erfassen (Capture Stream Events) steuert Metadatenmomentaufnahmen (auction_update, commerce_update); Zuschauerzähler beachten weiterhin die Zuschauer-/Hype-Schalter.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
viewer_update Wenn sich die Zuschauerzahl des aktiven Ereignisses ändert (Kopfbereichszahl oder ersatzweise Live-Ereignisanzeige). meta ist eine ganzzahlige Zuschauerzahl.
follower_update Wenn der Verkäuferstatistik-Endpunkt die Followerzahl des Verkäufers liefert. meta ist eine ganzzahlige Followerzahl. Die Quelle fragt den Verkäuferendpunkt alle 60 Sekunden ab; der Endpunkt kann trotzdem bis zu 5 Minuten einen zwischengespeicherten Wert liefern.
auction_update Wenn sich aktive Auktionsmetadaten ändern. Ereignis nur mit Metadaten. Netzwerkerfassung setzt meta.sourceMode auf network und liefert Titel, Preis, Bieter, Gewinner, Gebote, Timer und endingAt. meta.ebay enthält eventId, listingId, den GraphQL-Angebotsdatensatz (listing), aktuelles öffentliches Socket-Angebot (eventListing), und neueste Auktionsaktualisierung (update). Diese bewahren Kategorie, Bilder, Währungen, Mengen, Case-Break-Details, Auktionsergebnisse und Zeitfelder, ohne Plattformdetails zu verlieren. Der GraphQL-Datensatz ist eine abgerufene Momentaufnahme; Socket-Angebot und Aktualisierung enthalten neueren Livezustand. Anfänglicher Verlauf bzw. Verlauf nach Wiederverbindung wird in die aktuelle Momentaufnahme eingearbeitet, statt als alte Gewinne ausgegeben zu werden. Das Entfernen aller präsentierten Angebote sendet status: "idle" mit cardCount: 0 um die Auktion zu leeren. Der DOM-Fallback behält Playerkarten- oder Ereignisvorschaufelder.
commerce_update Wenn sich Katalog-/Live-Ereignis-Momentaufnahmeabschnitte ändern. Momentaufnahme nur mit Metadaten unter meta. Der Netzwerkmodus enthält eventId, navigation.viewerCount und playerCards für die aktuell präsentierten Angebote, jeweils mit derselben detaillierten ebay Objekt als Auktionsmomentaufnahme. Eine leere Kartenliste entfernt verschwundene Angebote. Der DOM-Fallback kann außerdem liveEvents, livePreview, currentEvent und upcomingEvents.
reaction Wenn eBay Live eine Herz-/Reaktionsanimation darstellt. Direkt an das eigene Reaktionsziel gesendet. meta.reactionType ist heart; eBay liefert für diese DOM-Animationen keinen Namen pro Benutzer.

eBay-Metadatenereignisse lassen bewusst chatname/chatmessage; nachgelagerte Overlays sollten aus data.event + data.meta nur.

Kick – Standard-DOM-Erfassung

Implementierung: sources/kick.js

  • Benötigt eine authentifizierte Sitzung, um Profilbilder und Abonnentenabzeichen aufzulösen.
  • Begrenzte Ereigniserkennung über Chattextabgleich und Abzeichen; Zuschauerzahlen funktionieren weiterhin bei aktiviertem Schalter.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
gift Über Stickerbild und sichtbaren Kick-Währungsbetrag erkannte KICKs-Geschenke. hasDonation enthält N KICKs (1 KICK für eines), wenn der sichtbare Betrag verfügbar ist; contentimg enthält das Geschenkbild. Bestehender Nachrichtentext bleibt erhalten.
reward Belohnungseinlösungen („has redeemed …“). chatmessage enthält Einlösungstext.
true (boolesch) Allgemeine Systemhinweise ohne passende Geschenk- oder Belohnungsmuster. Verwende chatmessage Inhalt zur Wahl der Darstellung; boolesches true bedeutet „Systemereignis – Typ unbekannt“.
viewer_update Fragt Kicks Kanal-API alle 30 Sekunden ab (nur bei aktivierter Zuschauerstatistik). meta ganzzahlige Zuschauerzahl; verwende für Abonnements, Follows oder Trinkgelder die Kick-Brücke unten.

Kick – WebSocket/Brücke

Implementierung: sources/websocket/kick.js mit gemeinsamen Hilfsfunktionen unter providers/kick/core.js

  • OAuth über die Social-Stream-Kick-Brücke. Aktuelle Berechtigungsbereiche sind user:read, channel:read, channel:write, channel:rewards:read, chat:write, events:subscribe, moderation:ban, moderation:chat_message:manage, und kicks:read. Tokens werden automatisch erneuert.
  • Die Einrichtung der Kick-Webhooks kann mehrere Minuten dauern; die Oberfläche listet aktive Abonnements pro Kanal auf.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Chatnutzdaten der Brücke. meta.plainText enthält die Klartextnachricht (die weiterhin Emojis enthalten kann); Abzeichen führen Plattform und Profilcache zusammen. Thread-Antworten füllen initial, reply, und meta.reply wenn Antwortdetails oder eine zwischengespeicherte Elternnachricht verfügbar sind.
reward channel.reward.redemption.updated, sowie Chat-/Systemnutzdaten der Brücke, die wie Einlösungen aussehen. meta enthält Belohnungs-/Einlösungs-ID, Titel, Kosten, Status, Benutzereingabe und Einlöser.
new_subscriber channel.subscription.new. membership der Abonnentenrolle zugewiesen; meta enthält { subscriber, plan }.
resub channel.subscription.renewal. meta.duration (Monate) und meta.plan verfügbar; subtitle fasst die Serie zusammen.
subscription_gift channel.subscription.gifts. meta.totalGifted, meta.gifter; Abzeichen verwenden ersatzweise das 💝-Symbol.
donation Über Ereignistyp-Heuristiken erkannte Unterstützungs-/Trinkgeldereignisse; KICKs-Geschenke verwenden gift unten. hasDonation enthält den formatierten Betrag; meta enthält { amount, currency, supporter, message, giftName }.
gift kicks.gifted (KICKs-Geschenke), passend zur DOM-Erfassung. hasDonation enthält N KICKs (1 KICK für eines); contentimg enthält das Geschenkbild, falls verfügbar. Strukturierte Geschenkdetails bleiben unter meta.
raid Kompatibilitätsverarbeitung für ältere Socket-Nutzdaten im Host-Format wie App\Events\StreamHostEvent. Kicks aktueller offizieller Ereigniskatalog enthält kein Raid-/Host-Abonnement. Wenn kompatible ältere Nutzdaten eintreffen, werden sie dem kanonischen raid; verlasse dich bei einem aktuellen Kick-Ablauf nicht darauf.
new_follower channel.followed. Follower-Symbole stammen aus dem Profilcache; follower_update wird ausgelöst, wenn Kick laufende Gesamtzahlen liefert.
follower_update Die Brücke liefert Followerzahlen in Webhook-Nutzdaten. meta ganzzahlige Gesamtsumme; von Dashboards für Followerziele verwendet.
stream_online / stream_offline livestream.status.updated. meta enthält den rohen Statusinhalt von Kick (is_live, title usw.).
viewer_update livestream.status.updated wenn Kick gleichzeitige Zuschauergesamtzahlen enthält. meta ganzzahlige Zuschauerzahl; sendet 0 bei Offline-Status, um veraltete Zähler zu leeren.
user_banned moderation.banned aus der Brücke/dem Webhook oder Sperrereignissen des Kick-Chat-Sockets. Ereignis nur mit Metadaten für Moderationswidgets. meta enthält Benutzername/Anzeigename, Benutzer-ID, Avatar-/Profil-URL, Moderator, Grund, Sperr-/Timeout-Dauer und Dauerhaftigkeit.

Profilabfragen verwenden profileCache; mapBadges führt Kicks Abzeichenressourcen mit zwischengespeichertem SVG zusammen, falls verfügbar. Wenn Kick Spenden in KICKs meldet, wandelt die Brücke sie in hasDonation plus meta.amount mit currency Fallback auf „KICKs“. Chatnutzdaten enthalten meta.messageId wenn die Brücke eine native Kick-Nachrichten-ID liefert, damit Löschsynchronisierung die richtige Nachricht trifft. Antwortnutzdaten enthalten meta.reply mit der übergeordneten messageId, author, und text wenn bekannt. Gelieferte Antwortdetails bleiben verfügbar, auch wenn die ursprüngliche Nachricht nicht zwischengespeichert ist; einer Antwort nur mit ID ohne gespeicherten Kontext kann weiterhin ein sichtbares Zitat fehlen.

Kick WebSocket: Ereignis-Kurzreferenz

data.event Szenario
new_followerBenutzer folgt dem Kanal
new_subscriberNeues Abonnement
resubAbonnementverlängerung
subscription_giftVerschenkte Abonnements
rewardKanalbelohnungseinlösung oder belohnungsartige Chat-/Systemnachricht
donationTrinkgeld-/Unterstützungsereignis
giftKICKs-Geschenkereignis
raidNur zur Kompatibilität: ältere Host-/Raid-Eingabe; kein aktuelles offizielles Kick-Abonnement
follower_updateFollowergesamtzahl
stream_onlineStream ging live
stream_offlineStream beendet
user_bannedBenutzer wurde gesperrt oder zeitweise stummgeschaltet

VPZone – WebSocket

Implementierung: sources/websocket/vpzone.js

  • Verbindet sich mit wss://chat.vpzone.tv/ws?channel=USERNAME; OAuth fordert profile:read, chat:read, chat:write, channel:read, channel:write, und chat:moderate. Ein Bearer-Token kann auch manuell angegeben werden.
  • Flache VPZone-Frames wie type: "msg" werden zu Standard-Chatnutzdaten normalisiert.
  • Plattformseitiges delete_message / clear_chat Frames entfernen die passenden Dock-Zeilen; optionale Schalter synchronisieren Dock-Löschungen und Sperren zurück an VPZone (nur Kanalbesitzer).
  • Kanalbesitzer erhalten ein seiteneigenes Stream-Info-Feld zum Aktualisieren von Livestream-Titel und -Kategorie (dasselbe Muster wie auf der Twitch-Quellseite).
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message VPZone msg, message, new_message, oder chat_message WebSocket-Frame. chatname stammt aus username; chatmessage stammt aus body; Abonnenten-/Besitzer-/Mod-/VIP-Kennzeichen werden in chatbadges, Rollenkennzeichen auf oberster Ebene und meta. Native IDs füllen data.id und meta.messageId.
viewer_update VPZone presence Frame mit count oder gleichwertiges Zuschauerfeld. meta ist die ganzzahlige Live-Zuschauerzahl; trägt zur zusammengefassten viewer_updates.
new_subscriber VPZone subscribe / subscription Frame. membership wird bei vorhandenen Abonnementkennzeichen auf Subscriber gesetzt.
subscription_gift VPZone gift / gift_subscription Frame. Verwendet denselben Ereignisnamen für Geschenkabonnements wie Twitch, Kick, Rumble und Velora. subtitle enthält die Geschenkanzahl (x5) oder Empfänger.
message + hasDonation VPZone system Frame mit metadata.kind: "pixels_cheer" (Pixels-Trinkgeld). Chatzeile mit Spendenwert; hasDonation ist die Betragsbeschriftung (zum Beispiel 100 Pixels), meta.pixels die Ganzzahl. event bleibt leer; erkenne dieses Trinkgeld anhand von hasDonation. Unterstützungsereignisse der Kick-Brücke verwenden stattdessen event: "donation".
message Antworten VPZone msg Frame mit metadata.reply_to (Nachrichten-ID, Autor, Auszug – serverseitig denormalisiert). Wie Kick-Antworten dargestellt: initial enthält die Beschriftung „Autor: Auszug“, reply den rohen Antworttext, meta.reply das strukturierte Ziel. Beachtet die schließen „replying to“ aus Einstellung.
raid VPZone raid Frame mit metadata.kind: "incoming". Ausgehende Raid-Frames werden übersprungen; meta.viewers enthält die Raid-Größe, sofern geliefert.
shoutout VPZone shoutout Frame (!so Befehl). meta.targetUser nennt den per Shoutout erwähnten Kanal.
reward VPZone system Frame mit metadata.kind: "channel_points_redeem". Kanalpunkte-Einlösung mit demselben Ereignisnamen wie Twitch-Belohnungen.
stream_online / stream_offline VPZone system Frames mit metadata.kind: "stream_started" / "stream_ended". Dem Kanalnamen zugeordnet (die Frames enthalten keinen Akteur).
new_follower VPZone follow Frame. Wird dem Standardformat für Follower-Ereignisse zugeordnet.
joined VPZone-WebSocket-Ereignisse für Beitritt/Anwesenheit, wenn Stream-Ereignisse „joined“ erfassen aktiviert ist. Wird einem chatartigen Systemereignis mit VPZone-Akteurmetadaten unter meta.

Joystick

Implementierungen: sources/joystick.js, sources/inject/joystick-ws.js, und sources/websocket/joystick.js

  • Die normale Joystick-2.0-Website-Quelle läuft auf der angemeldeten /u/<channel>/chat Seite. Liest die ChatChannel, WhisperChatChannel, EventLogChannel, und SystemEventChannel Action-Cable-Frames mit Fallback auf dargestellte Zeilen für Electron und Wiederverbindungen.
  • Website-Chatnachrichten verwenden dieselben Kernfelder wie YouTube, Twitch und Kick: native id, chatname, chatmessage, chatimg, chatbadges, nameColor, membership, mod, private, username/userid, und timestamp wenn Joystick sie liefert. Wenn der Socket keine Benutzernamenfarbe enthält, liefert die dargestellte Zeile dieselbe nameColor Feld für Docks mit aktivierten Farben.
  • Seitenseitige Nachrichtenänderungen ersetzen die passende Dock-Zeile; Löschungen, Stummschaltungen und Sperren entfernen passende Zeilen anhand nativer ID oder Benutzername.
  • Die separate WebSocket-Quelle verwendet Joystick-Bot-Zugangsdaten (client_id + client_secret); die Website-Quelle verwendet die angemeldete Seitensitzung.
  • Autorisiert unter https://joystick.tv/api/oauth/authorize, tauscht/aktualisiert dann Tokens unter https://api.joystick.tv/api/oauth/token.
  • Verbindet sich mit wss://api.joystick.tv/cable und abonniert GatewayChannel.
  • Optionaler OAuth-Tokenaustausch wird für Hilfsendpunkte wie https://api.joystick.tv/api/users/stream-settings.
  • Die separate Quelle mit Bot-Zugangsdaten sendet keine viewer_update. Die angemeldete Website-Quelle sendet Zuschauerzahlen, wenn ihr Seitensocket diese liefert, wie unten beschrieben.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Joystick ChatMessage, BotMessage, new_message, bot_message, event_bot_message, pvp_message, und Flüsternachrichten. Normaler Chat hat kein event. Die native ID steht im Feld auf oberster Ebene id und meta.messageId; Rollen und privater Status verwenden die etablierten Felder auf oberster Ebene bzw. Abzeichenfelder.
new_follower Joystick StreamEvent mit Typ Followed. Verwendet die Standard-Follower-Struktur und wird gegen Joysticks passende Bot-Zeile dedupliziert. Optionales meta.userId/meta.followedAt sind nur enthalten, wenn Joystick sie liefert.
new_subscriber / subscription_gift Joystick-Ereignistypen NewSubscription / GiftedSubscription. Verwendet die Kick-kompatiblen Metadatenschlüssel für Abonnements: eventType, subscriber, gifter, totalGifted, duration, und plan.
donation Joystick StreamEvent Typen Tipped / TipMenu. hasDonation enthält Tokenbetrag und -einheit für die gemeinsame USD-Umrechnung, falls verfügbar, und die passende Joystick-Bot-Zeile wird dedupliziert. meta verwendet die etablierten Kick-Unterstützungsereignisschlüssel: eventType, supporter, amount, currency, message, giftName, giftType, und tier.
stream_online / stream_offline Joystick StreamEvent Typen wie Started, StreamResuming, Ended, StreamEnding. Für Automatisierungen zum transportabhängigen Online-/Offline-Zustand.
user_enter / user_leave Joystick UserPresence Typen enter_stream / leave_stream. Anwesenheitsmeldungen werden als Ereignisnachrichten gesendet und lassen sich mit Einstellungen zum Ausblenden von Ereignissen unterdrücken. Diese unterdrücken außerdem Stream-Ereignisse ohne Spende.
viewer_update Die angemeldete Website-Quelle empfängt ViewerCountUpdated über EventLogChannel. Verwendet eine einfache Ganzzahl meta, passend zu YouTube, Twitch und Kick. Wird nur ausgegeben, wenn Zuschauerzahlerfassung oder Hype-Modus aktiviert ist. Die separate Quelle mit Bot-Zugangsdaten erhält weiterhin keine Zuschauerzahlen.
follower_update / subscriber_update Joystick-Ereignisse zur Aktualisierung von Follower-/Abonnentenzahlen. Verwendet eine einfache Ganzzahl meta, passend zum Twitch-Zählervertrag.
Ignorierte interne Benachrichtigungen ChatMessageReceived, Gerätezustand und nicht zugeordnete Widget-Aktualisierungen wie Trinkgeldziel-/PvP-/Subathon-Zustand. Dies sind Transport- oder Seitenzustandsmeldungen, keine Social-Stream-Ereignisse. Sie werden nicht in erfundene snake_case Ereignisnamen; das echte ChatChannel/new_message Zeile bleibt die einzige Chatnutzlast.

XP Sync

Implementierung: sources/xpsync.js

  • Chatzeilen verwenden die kanonischen Nutzdatenfelder mit type: "xpsync", einschließlich Autor, Nachricht, Avatar, Bild- und Inline-SVG-Abzeichen, Namensfarbe, Mitgliedschaft, Moderator-/Mitglied-/Bot-Kennzeichen und nativer Nachrichten-UUID als id falls verfügbar.
  • Antworten folgen der Konvention der YouTube-, Twitch- und Kick-DOM-Quellen: Sofern Antwortpräfixe nicht deaktiviert sind, initial enthält den Benutzer, dem geantwortet wird, reply bewahrt die Nachricht ohne Präfix, und chatmessage erhält das sichtbare Antwortpräfix.
  • Mit Sparks hervorgehobene Zeilen werden erfasst, obwohl XPSync sie ohne normale Chatzeilenklasse oder Nachrichten-ID darstellt; der sichtbare Betrag wird über hasDonation als N Sparks.
  • Bei aktivierter Ereigniserfassung senden Zeilen mit „just followed“ oder „followed the channel“ event: "new_follower".
  • Bei aktivierten Zuschauerzahlen sendet das permanente Chat-Dock event: "viewer_update" aus der von der XPSync-Seite bereits geladenen Livevideozahl und aktualisiert sie anhand von XPSyncs Liveseiten-Updates. Separate SSN-Zugangsdaten sind nicht nötig.

Instagram – Live-REST-Erfassung und Nachrichteneingang

Implementierung: sources/instagram.js und sources/instagramlive.js (identische Kopien)

  • Auf Liveseiten (/<user>/live/?broadcast_id=...), stammt der Livechat aus Instagrams eigener Web-API, die mit dem Sitzungscookie vom selben Origin abgefragt wird: GET /api/v1/live/{broadcast_id}/get_comment/?last_comment_ts={ts} etwa alle 2 Sekunden, und POST /api/v1/live/{broadcast_id}/heartbeat_and_get_viewer_count/ etwa alle 5 Sekunden bei aktivierten Zuschauerzahlen. Nach 3 aufeinanderfolgenden Fehlern (oder wenn kein broadcast_id ermittelbar ist), fällt die Quelle auf das Auslesen des dargestellten Chat-DOMs zurück.
  • Der eigene Aktivitätsfeed des Kontos wird über POST /api/v1/news/inbox/ etwa alle 45 Sekunden auf jeder Instagram-Seite. Die erste Abfrage füllt nur die Duplikatmenge, damit Verlauf nie erneut abgespielt wird; Stories werden anhand von tuuid.
  • Erforderliche API-Header (alle statisch/ableitbar): X-IG-App-ID: 936619743392459, X-CSRFToken (aus Cookie), X-ASBD-ID: 359341, X-Requested-With: XMLHttpRequest, Content-Type: application/x-www-form-urlencoded.
  • Alle Aktivitätsfeed-Ereignisse verwenden type: "instagram"; Livechat bleibt type: "instagramlive". Like-Ereignisse verwenden den normalen Hintergrundpfad: Der Hintergrund sendet eine Kopie an das eigene Reactions Overlay und nimmt sie nur dann in den Haupt-Chat-/Ereignisfeed auf, wenn capturelikeevent aktiviert ist, passend zu TikTok und MeetMe. hideevents und der eigene Ereignisfilter blockieren sie überall. Da Ereignisse des Nachrichteneingangs zum angemeldeten Konto gehören, werden sie beim Ansehen fremder Livestreams unterdrückt (sowohl /<user>/live/ Seiten und Lives im Story-Viewer; Besitz wird pro Profil ermittelt und nach fehlgeschlagenen Abfragen erneut versucht) und auf deinem eigenen Live sowie allen Nicht-Live-Seiten ausgegeben. Jeweils ein aktiver Instagram-Tab fragt den Kontoeingang ab; Polling läuft nur bei Anmeldung.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message (live) Neue Einträge im get_comment Antwort (comments[]/system_comments[]), oder neue DOM-Chatzeilen, wenn REST nicht verfügbar ist. Standard-Chatnutzdaten, type: "instagramlive". REST liefert genaue user.username, user.profile_pic_url, und eine eindeutige pk für Duplikaterkennung verwendet.
viewer_update heartbeat_and_get_viewer_count meldet geändertes viewer_count, wenn Zuschauerzahlerfassung oder Hype-Modus aktiviert ist. meta ganzzahlige Zuschauerzahl. Polling stoppt, wenn broadcast_status ist nicht länger "live".
stream_online / stream_offline stream_online wird einmal ausgelöst, wenn eine REST-Übertragungssitzung beginnt; stream_offline wird ausgelöst, wenn der Heartbeat einen nicht live befindlichen broadcast_status (erfordert aktivierte Zuschauerzahlerfassung oder Hype-Modus). Ereignisse nur mit Metadaten entsprechend dem gemeinsamen Stream-Statusvokabular von Twitch und Joystick.
new_follower Eine Story im Nachrichteneingang mit einem Follow- notif_name (oder story_type 12) erscheint. chatname ist der neue Follower, chatimg deren Profilbild, chatmessage der Text des Nachrichteneingangs (zum Beispiel „x started following you.“).
follow_request Ein private_user_follow_request Story erscheint (private Konten erhalten Anfragen statt direkter Follows). Gleiche Struktur wie new_follower, bewusst getrennt gehalten, damit Automatisierungen Anfragen genehmigen oder unterschiedlich begrüßen können.
liked Eine Story im Nachrichteneingang mit einem Like- notif_name (einschließlich comment_like) erscheint. Gemeinsames Like-Vokabular mit TikTok/MeetMe. chatname ist der Akteur, chatmessage der Text des Nachrichteneingangs (zum Beispiel „x liked your photo.“).
message (Kommentar zum eigenen Beitrag) Eine Story im Nachrichteneingang mit einem Kommentar- notif_name erscheint. Normale Chatzeile (event: false), type: "instagram"; chatmessage enthält den Text des Nachrichteneingangs einschließlich Kommentarauszug.
notification Jeder andere Story-Typ im Nachrichteneingang (Erwähnungen, Markierungen, Shopping usw.). Allgemeiner Auffangtyp; meta.notifName und meta.storyType bewahren die rohe Story-Klassifizierung.

Facebook Live

Implementierung: sources/facebook.js (DOM-Auslesen) und optionale Graph-API-Brücke unter sources/websocket/facebook.html

  • DOM-Erfassung liest dargestellte Facebook-Kommentare; die Graph-API-Brücke für verwaltete Seiten liest Videokommentare. Beide verwenden type: "facebook", die Standard-Chatfelder und kein event für gewöhnliche Kommentare. Die API-Brücke enthält außerdem das optionale platform: "facebook".
  • Die API-Brücke verwendet userid für die Autoren-ID, falls verfügbar, timestamp für einen gültigen Erstellungszeitpunkt in Unix-Millisekunden und contentimg für ein von der API geliefertes HTTP(S)-Anhangsbild. Reine Bildkommentare können ein leeres chatmessage. textonly gilt nur für den Nachrichteninhalt: Rohtext bei true, escaptes HTML bei false.
  • API-Kommentarkontext verwendet meta.messageId (native Kommentar-ID), meta.permalink, meta.videoId, und meta.pageId. Frühere API-Builds verwendeten meta.commentId, doppelte Autoren-/Zeitfelder unter meta, und übergab dort unverarbeitete Anhänge. Neue Builds verwenden stattdessen die Standardfelder für Autor/Zeit/Medien; dies fügt keine Löschsynchronisierung hinzu.
  • Zuschauerzahlen aktualisieren sich nur bei Aktivierung. Die API-Brücke liest gleichzeitige live_views; ersetzt fehlende gleichzeitige Zuschauerzahlen weder durch kumulative Videoaufrufe noch durch eine erfundene Null. Die API-Erfassung leitet Stars, Mitgliedschaften, Hervorhebungen oder Antworten nicht aus gewöhnlichem Kommentartext ab.
  • Stars werden aus dem dargestellten Livechat-DOM erfasst, wenn Facebook das sichtbare N sent Kennzeichen; sie befüllen hasDonation und donoValue mit 100 Stars = 1 USD, ohne data.event.
  • Füge zum Testen ssnreplay=1 zur Facebook-Live-URL hinzu, um nach dem Neuladen bereits sichtbare Chatzeilen zu verarbeiten.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
viewer_update DOM fragt das Live-Zuschauerabzeichen ab; die API-Brücke fragt bei Aktivierung gleichzeitige Liveaufrufe ab. meta ganzzahlige Zuschauerzahl, passend zu anderen Quellen. Fehlende oder nicht lesbare Zahlen werden übersprungen; eine tatsächliche Null ist gültig.
hasDonation Facebook Stars, die im Livechat-DOM dargestellt werden. Standard-Chatnutzdaten; hasDonation enthält den sichtbaren Stars-Betrag, etwa 100 Stars, und donoValue enthält den USD-Wert. Stars setzen kein data.event.
highlightColor Facebook zeigt ein sichtbares HIGHLIGHTED Beschriftung. Verwendet die normalen Chatfelder und highlightColor; kein data.event gesetzt ist. Stars verwenden weiterhin hasDonation.

Online Church

Implementierung: sources/onlinechurch.js

  • Verwendet DOM-Auslesen von öffentlichem Chat und Medienkopf.
  • Zuschauerzahlen aktualisieren sich nur, wenn Zuschauerzahl anzeigen oder Hype-Modus aktiviert ist.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Neue Einträge erscheinen unter #publicchat. Standard-Chatnutzdaten mit Absendername, Avatar, Abzeichen und optionaler Mitgliedschaftsbeschriftung, sofern im DOM vorhanden.
viewer_update Fragt das Live-Belegungsabzeichen im Medienkopf alle 10 Sekunden ab. meta ganzzahlige Zuschauerzahl; sendet 0 wenn das Abzeichen fehlt oder unlesbar ist, um veraltete Zähler zu leeren.

SharePlay.tv

Implementierung: sources/shareplay.js

  • Verwendet DOM-Auslesen der Livechat-Leiste auf SharePlay-Kanalseiten.
  • Nach dem Start der Erfassung werden nur neu eingefügte Chatzeilen und Karten ausgegeben; der vorhandene Verlauf wird bewusst ignoriert.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Neue Chatzeilen erscheinen im Haupt-Chatfeed. Standard-Chatnutzdaten mit Autor, Avatar, Abzeichenbildern und als HTML erhaltenen Emotes. Thread-Antworten füllen außerdem initial, reply, und meta.reply wenn die Elternzeile noch vorhanden ist.
raid SharePlay fügt dem Livechat-Feed eine Blitz-Karte hinzu. Wird dem kanonischen Raid-Ereignis zugeordnet. meta.cardType ist "blitz", mit optionalem meta.fromLogin und meta.viewers wenn der Kartentext sie liefert.
shoutout SharePlay fügt dem Chatfeed eine Shoutout-/Follow-Karte hinzu. Ausgegeben als data.event = "shoutout". Das Kartenbannerbild wird über contentimg, während meta.cardType und meta.action bewahren Kartenbeschriftung/Schaltflächentext.
viewer_update Fragt das sichtbare Zuschauerabzeichen im Kopfbereich alle 10 Sekunden ab. meta ganzzahlige Zuschauerzahl; wird nur ausgegeben, wenn Zuschauerzahl anzeigen oder Hype-Modus aktiviert ist, und sendet 0 wenn das Abzeichen unlesbar wird, um veraltete Zähler zu leeren.

Streamplace

Implementierung: sources/streamplace.js

  • Liest Streamplaces mit React dargestellte Liveseite und überspringt beim Verbinden den sichtbaren Chatverlauf.
  • Nachrichten im Relay-Stil wie Name (Discord): message werden auf den weitergeleiteten Absendernamen normalisiert.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Neue Streamplace-Chatzeilen erscheinen nach dem Verbinden. Standard-Chatnutzdaten mit nameColor, chatbadges, als HTML erhaltene Links und Antwortfelder initial, reply, und meta.reply wenn sichtbar.
viewer_update Das Zuschauerabzeichen im Kopfbereich ändert sich bei aktivierter Zuschauerzahlerfassung oder aktiviertem Hype-Modus. meta ganzzahlige Zuschauerzahl.

WorldsWave

Implementierung: sources/worldswave.js

  • Unterstützt WorldsWave-Liveseiten und reine Chat-URLs wie https://worldswave.com/kn_livecmd.php?cmd=viewStream&streamId=STREAM_ID&chatonly=1.
  • Verwendet die stabile data-ww-*/ww-chat-* Markup, falls verfügbar, und behält ältere kontackt-Selektoren für reine Chatseiten und ältere Layouts bei.
  • Vorhandener Chatverlauf wird beim Start der Erfassung übersprungen; teste mit einer neuen Nachricht.
  • Zuschauerzahlen erfordern Zuschauerzahl anzeigen oder Hype-Modus. Eigene Geschenk-/Trinkgeldereignisse und Rücksenden sind nicht implementiert. Eine dargestellte Zeile kann trotzdem eine Spendenbeschriftung über data-ww-donation.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Eine neue dargestellte WorldsWave-Chatzeile erscheint. Standard-Chatnutzdaten mit type: "worldswave", Absendername, Avatar, optionale Benutzer-ID, Namensfarbe, Abzeichen, Moderatorstatus, Mitgliedschaft, Spendenwert, Anhang und Kanalidentität. Stabile WorldsWave-Nachrichten-IDs werden als meta.messageId und über gleichzeitige Vorschau-/Vollchatfelder hinweg dedupliziert. Inline-Nachrichtenbilder bleiben bei deaktiviertem Nur-Text-Modus bereinigt.
viewer_update Die sichtbare Live-Zuschauergesamtzahl ändert sich bei aktivierter Zuschauerzahlerfassung oder aktiviertem Hype-Modus. meta ist die ganzzahlige Zuschauerzahl. Die stabile data-ww-viewer-count Wert wird bevorzugt; ältere Kurzformen wie 1.2K werden als Fallback normalisiert.

FLEX TV

Implementierung: sources/flextv.js

  • Liest das dargestellte Chatfeld auf https://www.flextv.co.kr/channels/*/live Seiten.
  • Das Chatfeld muss sichtbar sein. Bestehender Chatverlauf wird beim Verbinden der Quelle übersprungen; teste daher mit einer neuen Chatzeile.
  • Für diese Quelle ist noch kein Weg für Zuschauerzahlen, Spenden oder Antworten dokumentiert.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Neue sichtbare FLEX-TV- .chat-item Zeilen erscheinen im Livechat-Feed. Standard-Chatnutzdaten mit type: "flextv", chatname, chatmessage, nameColor, Abzeichenbilder in chatbadges, und FLEX-Mitgliedsdetails unter meta wenn bereitgestellt durch data-member.

Seal Team Sloth

Implementierung: sources/sealteamsloth.js

  • Liest den dargestellten ausgeklappten Chat auf https://sealteamsloth.com/popout-chat/* Seiten.
  • Zuschauerzahlen erfordern Zuschauerzahl anzeigen oder Hype-Modus.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Eine neue dargestellte Seal-Team-Sloth-Chatzeile erscheint. Standard-Chatnutzdaten mit type: "sealteamsloth", Absendername, Avatar und Nachrichteninhalt.
viewer_update Die sichtbare Live-Zuschauergesamtzahl ändert sich bei aktivierter Zuschauerzahlerfassung oder aktiviertem Hype-Modus. meta ist die ganzzahlige Zuschauerzahl; Kurzformen wie 1.2K werden normalisiert.

MeetMe – DOM- und WebSocket-Erfassung

Implementierung: sources/meetme.js

  • Liest MeetMes dargestelltes Livechat-DOM auf app.meetme.com/live/view/... Seiten und innerhalb des api.gateway.meetme-live.com/web-live/... Iframe.
  • Wenn der Iframe-WebSocket verfügbar ist, wss://video-live.meetme.com/ Frames werden vor dem DOM-Fallback ausgewertet, um umfangreichere Live-Ereignisse zu erfassen.
  • hideevents unterdrückt Ereignisse ohne Spende; MeetMe-Geschenke und Diamantenspenden füllen weiterhin Spendenfelder. capturejoinedevent aktiviert Beitritts-/Wiederbeitrittshinweise. Akteurspezifische liked Ereignisse verwenden das gemeinsame Hintergrundrouting, gesteuert durch capturelikeevent; zusammengefasstes reaction Effekte bleiben ausdrücklich an das Reactions Overlay gerichtet.
  • Zuschauerzahlen bevorzugen die sichtbare Anzahl im MeetMe-Kopfbereich und verwenden WebSocket-Gesamtzahlen nur ersatzweise, wenn die DOM-Anzahl nicht verfügbar ist. Sie werden bei Änderung gesendet und etwa alle 30 Sekunden wiederholt, während showviewercount/hypemode aktiviert ist; Followergesamtzahlen werden nur bei Änderung und höchstens etwa alle 60 Sekunden gesendet.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Neu SNSChatMessage WebSocket-Frames treffen ein oder neue ChatMessage_* DOM-Zeilen erscheinen unter ChatHistoryContainer_*. Standard-Chatnutzdaten mit Absendername, Avatar, Nachrichten-HTML/-Text und Abzeichenbildern/-text. DOM-Zeilendetails sind flache meta Schlüssel, einschließlich messageId, roomId, level, levelColor, badgeLabels, badgeSrcs, badgeClasses, isBouncer, isTopStreamer, isBestOfTheWeek, rank, und rowClassName. WebSocket-Nutzdaten setzen meta.source = "websocket".
joined / rejoined / left SNSChatParticipant WebSocket-Frames zum Erstellen, Aktualisieren oder Löschen treffen ein oder MeetMe stellt ein DOM- join-cell Zeile. Beitritts-/Wiederbeitrittshinweise erfordern Stream-Ereignisse „joined“ erfassen. Sendet chatartige Systemhinweise mit Akteurname/Avatar, wenn MeetMe diese bereitstellt. meta.isNewViewer, meta.viewerLevelId, meta.isBouncer, und meta.isSubscriber bewahren den Teilnehmerzustand.
new_follower MeetMe stellt eine DOM-Favoriten-/Follow-Zeile dar, etwa Favorited. Verwendet das gemeinsame Vokabular für Follower-Ereignisse. chatname ist der Akteur, chatimg ist das erkannte Profilfoto, falls verfügbar, und flache meta.favoriteText/meta.targetName bewahren die ursprünglichen Zeilendetails.
gift SNSGiftMessage WebSocket-Frames treffen ein oder MeetMe stellt ein Geschenkbild in einer Chatzeile dar. hasDonation enthält die sichtbare Geschenkbeschriftung oder den Diamantenwert, contentimg enthält das Geschenkbild, falls bereitgestellt, und flache Schlüssel wie meta.giftName, meta.giftCount, meta.amount, und meta.currency bewahren strukturierte Details. Das gift Ereignis ist tatsächlichen Geschenk-Frames/-Zeilen vorbehalten; Spendendarstellung sollte sich weiterhin an hasDonation.
donation SNSDiamond WebSocket-Frames liefern Diamantenaktivität. Eigene Diamanten-Frames werden als Spendenereignisse behandelt. hasDonation wird für die gemeinsame USD-Umrechnung als Diamanten formatiert, und meta.amount/meta.currency bleiben für Automatisierungen flach.
liked / reaction SNSLike WebSocket-Frames treffen ein. Akteursbezogene Likes verwenden dasselbe liked Vokabular und zentrales Hintergrundrouting wie TikTok. Zusammengefasste/anonyme Like-Gesamtzahlen werden nur an das Reaktionsziel gesendet als reaction, mit flachem meta.reactionType, meta.totalLikes, und meta.subscriberLikes. Der Unterschied liegt in der Ereignisbedeutung, nicht in der Anonymität: capturelikeevent steuert nur einzelne liked/like Ereignisse.
follower_update SNSVideo WebSocket-Metadaten liefern Followergesamtzahlen. meta ist die ganzzahlige Followerzahl, passend zur gemeinsamen Zählerereigniskonvention.
guest_update SNSVideoGuestBroadcast Erstellungs-/Aktualisierungs-Frames treffen ein. Ereignis nur mit Metadaten zum Gast-/Live-Co-Host-Zustand. Flache meta Schlüssel sind status, position, totalGuests, isMuted, guestBroadcastId, videoViewerId, und broadcastId.
viewer_update Das sichtbare Zuschauerabzeichen im Kopfbereich ändert sich oder SNSVideo WebSocket-Metadaten liefern Zuschauergesamtzahlen, wenn das Abzeichen nicht verfügbar ist; unveränderte Gesamtzahlen werden bei Aktivierung etwa alle 30 Sekunden wiederholt. meta ganzzahlige Zuschauerzahl; wird nur bei aktivierter Zuschauerzahlerfassung oder aktiviertem Hype-Modus ausgegeben.

Velora

Implementierung: sources/velora.js und sources/websocket/velora.js

  • Standardmodus liest das sichtbare Chat-DOM; WebSocket-Modus verwendet die Velora Events API mit OAuth.
  • Unterstützte URLs im Standardmodus sind https://velora.tv/*, https://velora.tv/dashboard/stream/popout?panels=chat%2Cactivity&channel=CHANNEL&layout=vertical, und https://velora.tv/dashboard/stream/popout/CHANNEL/obs-chat.
  • Volts- und Kanalpunktekarten werden als Ereignisnutzdaten ausgegeben, wenn DOM oder Events API sie bereitstellt.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Neue Velora-Chatzeilen erscheinen oder Events-API-Chatnachrichten treffen ein. Standard-Chatnutzdaten mit erhaltenen Abzeichen, Autorenfarbe, Links und Emotes außerhalb des Nur-Text-Modus.
volts Velora-Volts-Karten oder channel.volts Events-API-Nutzdaten treffen ein. hasDonation enthält den angezeigten Volts-Betrag; DOM-Erfassungen enthalten meta.source = "dom".
channel_points Velora-Kanalpunkte-/Einlösungskarten oder channel.channel_points_redemption Events-API-Nutzdaten treffen ein. chatmessage enthält die Einlösungsnachricht oder den Belohnungstitel; meta.rewardTitle kennzeichnet die Belohnung, falls verfügbar.
subscription Eine sichtbare Velora-Aktivitätszeile meldet, dass ein Benutzer Kanalmitglied/Abonnent wurde. membership enthält die sichtbare Mitgliedschaftsbeschriftung.
viewer_update Sichtbare Zuschauerzahl ändert sich bei aktivierter Zuschauerzahlerfassung oder aktiviertem Hype-Modus. meta ganzzahlige Zuschauerzahl.

Parti – Profil-/Popout-Chat-Erfassung

Implementierung: sources/parti.js

  • Unterstützt Profil-URLs wie https://parti.com/USERNAME und Popout-URLs wie https://parti.com/popout-chat?id=USER_ID.
  • Zuschauerzahlen verwenden Partis Livestream-Heartbeat-Endpunkt bei aktivierter Zuschauerzahlerfassung oder aktiviertem Hype-Modus.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Sichtbare Parti-Chatzeilen erscheinen im Profil- oder Popout-Chatstream. Standard-Chatnutzdaten; nameColor bewahrt Partis dargestellte Autorenfarbe und chatmessage bewahrt Inline-Inhalt, sofern Nur-Text-Modus nicht aktiviert ist.
donation Sichtbare Parti-Trinkgeldzeilen melden, dass ein Benutzer einen Betrag gegeben hat. hasDonation enthält den angezeigten Betrag, meta.amount/meta.currency werden befüllt, wenn auswertbar, meta.amountText bewahrt den rohen Betragstext, und donoValue wird für USD-Trinkgelder gesetzt.
viewer_update Der Parti-Heartbeat liefert eine Live-Zuschauerzahl. meta ist die ganzzahlige Zuschauerzahl; die Seite verwendet pro Quellfenster ein Heartbeat-Token wieder, um Zahlen nicht künstlich zu erhöhen.

CHZZK – Popout-Chat-Erfassung

Implementierung: sources/chzzk.js

  • Unterstützt https://chzzk.naver.com/live/*/chat und https://chzzk.naver.com/iframe/live/*/chat.
  • Zuschauerzahlen verwenden CHZZKs Live-Status-Abfrageendpunkt bei aktivierter Zuschauerzahlerfassung oder aktiviertem Hype-Modus.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Sichtbare CHZZK-Chatzeilen erscheinen im Popout-Chatstream. Standard-Chatnutzdaten mit type: "chzzk", nameColor, Abzeichen-Bild-URLs in chatbadges, und dargestellte Emotes in chatmessage sofern Nur-Text-Modus nicht aktiviert ist.
Chat mit hasDonation Sichtbare CHZZK-Cheese-Spendenzeilen erscheinen im Chat. hasDonation enthält den angezeigten Cheese-Betrag. Diese Zeilen setzen kein data.event.
viewer_update Die Live-Statusabfrage liefert eine Zuschauerzahl. meta ist die ganzzahlige Zuschauerzahl.

Rumble – Standard-DOM-Erfassung

Implementierung: sources/rumble.js

  • Benötigt authentifizierte Sitzungscookies, damit die service.php Zuschauer-API antwortet.
  • Dargestellte Rant-Zeilen liefern hasDonation; eingehende Raid-Karten liefern event: "raid". Diese DOM-Quelle sendet nicht den Abonnenten-/Follower-Ereignisfeed der API-Brücke.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Sichtbare Rumble-Chatzeilen erscheinen im Seiten- oder Popup-Chat. Standard-Chatnutzdaten; chatmessage bewahrt Rumble-Emote-Bild-HTML nach der Seitendarstellung, sofern Nur-Text-Modus nicht aktiviert ist.
viewer_update Ruft Rumbles video.watching-now Dienst alle 30 Sekunden. meta ganzzahlige Zuschauerzahl; verwendet credentials: 'include' um Sitzungscookies wiederzuverwenden.
Chat mit hasDonationEine sichtbare Rant-Zeile enthält einen Preis.hasDonation bewahrt den dargestellten Preis; es wird kein Spendenereigniskennzeichen hinzugefügt.
raidEine eingehende Raid-Karte erscheint im Chat.Verwendet die sichtbare Raid-Nachricht und das optionale Kartenbild in contentimg.

Rumble – WebSocket-/API-URL

Implementierung: sources/websocket/rumble.js

  • Benötigt die dem Creator gehörende Live-Stream-API-URL von https://rumble.com/account/livestream-api. Rumble dokumentiert, dass diese URL den Livestream-Schlüssel enthält, keine separate Authentifizierung benötigt und nur mit vertrauenswürdigen Dritten geteilt werden sollte.
  • Transport nur zum Lesen. Die öffentlichen Rumble-Live-Stream-API-Dokumente beschreiben keinen offiziellen Endpunkt zum Chatsenden. Daher leitet diese Quelle Nachrichten/Ereignisse in Social Stream ein, sendet aber keinen Chat zurück an Rumble.
  • livestreams[].chat wird nur gefüllt, während der gewählte Stream live ist. Verwende ?streamId=... um einen bestimmten Stream festzulegen, wenn die API mehrere liefert; ungültige IDs führen jetzt zu einem Fehler statt zum stillen Ausweichen auf einen anderen Stream.
  • Die Seite löst außerdem https://rumble.com/chat/popup/<livestreams[].id> damit du den normalen Popup-Chat mit eingebundenem Skript direkt öffnen kannst, ohne zuerst die /live Seite.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Neue Einträge kommen aus Rumbles SSE-Chatstream, nachdem die offizielle API livestreams[].id; fällt zurück auf livestreams[].chat.recent_messages. Standard-Chatnutzdaten. meta.source ist rumble_sse wenn der SSE-Chatstream verfügbar ist und Avatar-URLs aus users[].image.1; andernfalls fällt es zurück auf live_stream_api ohne Avatare. Wenn der Popup-Emote-Katalog verfügbar ist, chatmessage stellt Rumble-Shortcode-Emotes als Bild-HTML dar und meta.plainText bewahrt den ursprünglichen Shortcode-Text.
donation Neue Rant-Einträge erscheinen in livestreams[].chat.recent_rants. hasDonation enthält den als USD formatierten Betrag; meta enthält amount_cents, amount_dollars, und expiresOn.
new_follower Neue Einträge erscheinen in followers.recent_followers. Systemereignis mit chatname auf den Follower-Benutzernamen gesetzt und Zeitstempel unter meta.followedOn.
new_subscriber Neue Einträge erscheinen in subscribers.recent_subscribers. membership wird auf SUBSCRIBER; subtitle spiegelt den dokumentierten USD-Betrag, wenn Rumble ihn liefert.
subscription_gift Neue Einträge erscheinen in gifted_subs.recent_gifted_subs. chatname ist der Schenker, hasDonation wird zu N Gifted, und meta enthält totalGifted, remainingGifts, giftType, und videoId.
follower_update Immer wenn sich der gewählte Followerzähler ändert. meta ganzzahlige Followerzahl. Standardmäßig followers.num_followers; mit ?followerMode=total, verwendet followers.num_followers_total wenn Rumble ihn liefert.
subscriber_update Immer wenn subscribers.num_subscribers ändert sich. meta ganzzahlige Abonnentenzahl.
stream_online / stream_offline Wenn der gewählte Livestream zwischen live und offline wechselt. meta enthält eine bereinigte Auswahl von Streamfeldern (id, title, createdOn, Kategoriebeschriftungen, Likes/Dislikes und Zuschauerzahlen). Sensible Werte wie stream_key werden bewusst nicht weitergeleitet.
viewer_update Immer wenn livestreams[].watching_now ändert sich für den gewählten Stream. meta ganzzahlige gleichzeitige Zuschauerzahl; sendet 0 wenn der ausgewählte Stream offline geht, um veraltete Zähler zu leeren.

Dieser Transport ist für Kanäle gedacht, die du besitzt oder verwaltest. Da die API-URL einen Livestream-Schlüssel enthält, darf sie nicht in Overlays, Protokollen, Screenshots oder gemeinsam genutzten Browserprofilen offengelegt werden. Chatavatare stammen aus Rumbles SSE-Chatstream, sobald die offizielle API die Stream-ID aufgelöst hat; dieser Transport liest keine Rumble-Seiten nach Avataren aus.

YouNow – DOM-Erfassung

Implementierung: sources/younow.js

  • Liest das dargestellte Livechat-DOM und sendet Standard-Chatnutzdaten mit type: "younow".
  • Zuschaueraktivitätszeilen wie is watching, I became a fan!, und invited N fans to this broadcast. werden mit event: true damit Ereignisfilter sie weiterleiten können.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Neue Chatzeilen erscheinen im Live-Zuschauerchat. Standard-Chatnutzdaten; Fan-/Zuschaueraktivitätszeilen setzen event: true.
viewer_update Die sichtbare Anzahl im Zuschauerfeld ändert sich, während showviewercount/hypemode aktiviert ist. meta ganzzahlige Zuschauerzahl; sendet 0 wenn der Zähler verschwindet.

Favorited Studio – DOM-Erfassung

Implementierung: sources/favorited.js

  • Liest das dargestellte Livechat-DOM und sendet Standard-Chatnutzdaten mit type: "favorited".
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Neue Chatzeilen erscheinen. Standard-Chatnutzdaten.
viewer_update Die Anzahl im Live-Zuschauer-Tab ändert sich, während showviewercount/hypemode aktiviert ist. meta ganzzahlige Zuschauerzahl aus dem content-live-viewers Tab.

BEAM – DOM-Erfassung

Implementierung: sources/beamstream.js

  • Liest das dargestellte Livechat-DOM und sendet Standard-Chatnutzdaten mit type: "beamstream".
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Neue Chatzeilen erscheinen. Standard-Chatnutzdaten mit Klartext- chatname, Avatar-URL in chatimg, und Bild-URLs oder SVG-Abzeichenobjekte in chatbadges. Auf Beams Erfassungsseite verborgene Felder bleiben leer. Native Beam-Profillinks werden nicht als externe Relay-Quellen behandelt. contentimg kann Inline-Video-/WebM-Anhänge enthalten, falls bereitgestellt.
viewer_update Ein Zuschauerzählelement ändert sich, während showviewercount/hypemode aktiviert ist. meta ganzzahlige Zuschauerzahl; wird nur ausgegeben, wenn die Chatseite einen Zuschauerzähler bereitstellt.

Castyr – DOM-Erfassung

Implementierung: sources/castyr.js

  • Liest neue dargestellte Chatzeilen aus https://castyr.live/homebeta/popout-chat/* und sendet Standard-Chatnutzdaten mit type: "castyr".
  • Vorhandener Chatverlauf wird beim Verbinden der Quelle übersprungen.
Ereignis Wann es ausgelöst wird Nutzdatenhinweise
message Ein neues .chat-message Zeile erscheint. Standard-Chatnutzdaten mit Absendername, dargestelltem Nachrichteninhalt und Namensfarbe, soweit verfügbar.
viewer_update Die sichtbare Anzahl aktiver Chats ändert sich, während showviewercount/hypemode aktiviert ist. meta ist die aus Castyrs aktivem Chatelement mit Titel gelesene Ganzzahl.

SOOP – Player-DOM-Erfassung

Implementierung: sources/sooplive.js. Unterstützt das einheitliche play.sooplive.com Player und älteres play.sooplive.co.kr URLs. Das frühere globale Chatlayout wird weiterhin erkannt, wenn es bereitgestellt wird.

Öffentlicher Chat sendet type/platform: "sooplive", Klartext- chatname/userid, nameColor, und bereinigtes chatmessage. Bestehende Zeilen, doppelte Nachrichten-IDs, Übersetzungskopien und private Flüsternachrichten werden ausgeschlossen. Emotes werden zu sicheren Bildern oder im Nur-Text-Modus zu Alternativtext.

Mit showviewercount oder hypemode aktiviert, viewer_update enthält eine Ganzzahl meta aus dem #nAllViewer. Reine Chat-Popouts zeigen diese Zahl möglicherweise nicht. SSApp verwendet beim Öffnen eines abgetrennten Popups den vollständigen Player, da aktuelle SOOP-Popouts von ihrem öffnenden Fenster abhängen.

Gosh – Kanalchat-Erfassung

Implementierung: sources/gosh.js. Öffne https://gosh.com/USERNAME mit sichtbarem Chat oder füge diese URL in SSApps Add other source ein. Ein Chat-Popout ist nicht nötig.

Neue Chatzeilen senden type/platform: "gosh", Klartext- chatname, nameColor, und bereinigtes chatmessage. Inline-Bilder und GIFs behalten sichere HTTP(S)-URLs. Mit textonlymode, Bilder werden zu Alternativtext oder [image] wenn kein Alternativtext verfügbar ist. Avatare, Abzeichen, Spenden und Mitgliedschaften bleiben leer, wenn sie in der erfassten Zeile fehlen.

Lass den virtualisierten Chat zu den neuesten Nachrichten gescrollt. Bestehender Verlauf, erneut dargestellte Zeilen und Systemhinweise ohne Autor werden ausgeschlossen. Darstellungsindizes bleiben intern und werden nicht als native Nachrichten-IDs ausgegeben. Follow-, Spenden-, Zuschauerzahl- oder Moderationsereignisse werden nicht abgeleitet.

Livacha – Chatraum-Erfassung

Implementierung: sources/livacha.js. Öffne https://livacha.com/chat/ROOM mit sichtbarem Chat oder füge die Raum-URL in SSApps Add other source ein.

Neue Chatzeilen senden type/platform: "livacha", Klartext- chatname, chatimg, nameColor, und bereinigtes chatmessage. Relative Avatar- und Inline-Bild-URLs werden zu absoluten HTTP(S)-URLs. Absätze, Zeilenumbrüche und Listen werden zu einer Chatnachricht zusammengefasst. Mit textonlymode, Bilder werden zu Alternativtext oder [image].

Nachrichten-IDs werden intern verwendet, um bearbeitete und erneut eingefügte Zeilen nicht doppelt zu erfassen. Anfangsverlauf und vorangestellte ältere Nachrichten werden übersprungen; Zeitstempel und Reaktionsmenüs liegen außerhalb des erfassten Texts. Spenden-, Mitgliedschafts-, Moderations- oder Zuschauerzahlereignisse werden nicht abgeleitet.

Stream.space – experimentelle DOM-Erfassung

Implementierung: sources/streamspace.js. Passt nur zu https://beta.stream.space/chat-popup.php?channel=USERNAME und das entsprechende https://stream.space Popup.

Neue dargestellte Chatzeilen senden type: "streamspace", platform: "streamspace", Klartext- chatname/userid, chatmessage, Avatar chatimg, bildbasierte Stufen- chatbadges, und nameColor. Inline-Emotes werden als sichere Bilder rekonstruiert oder als Alternativtext, wenn textonlymode aktiviert ist. Bestehender Verlauf, Willkommenshinweise, Antwortvorschauen und angeheftete Duplikate werden ausgeschlossen.

viewer_update enthält eine Ganzzahl meta gelesen aus #popupViewersNum wenn showviewercount oder hypemode aktiviert ist. Spenden-, Mitgliedschafts- oder Moderationsereignisse werden nicht abgeleitet.

Experimentell: Das Beta-Popup blieb bei der Prüfung auf Loading. SSApp lud das Popup und erfasste Zuschaueraktualisierungen, aber Livechat-Zustellung und produktives Popup sind weiterhin ungeprüft. SSN kann keine Nachrichten erfassen, die die Website nicht darstellt.

w.tv und Prime – DOM-Erfassung

Implementierungen: sources/wtv.js auf https://w.tv/USERNAME/chat und sources/prime.js auf https://prime.gs/USERNAME?chat_popout=1.

Neue Chatzeilen verwenden type/platform von wtv oder prime, Klartext- chatname, nameColor, und bereinigtes chatmessage. Inline-Emotes werden zu sicheren Bildern oder im Nur-Text-Modus zu Alternativtext. Prime enthält außerdem das userid und unterstützt sowohl angemeldete Profillinks als auch Benutzernamenbeschriftungen ohne Anmeldung. Avatare und Abzeichen bleiben leer, wenn sie in der geprüften Zeilenstruktur nicht verfügbar sind.

Anfangsverlauf, angeheftete Karten und Antwortvorschauen werden ausgeschlossen. w.tv virtualisiert seinen Chat: Lass ihn für die Erfassung zu den neuesten Nachrichten gescrollt. Seine DOM-Test-IDs sind Darstellungsindizes, keine nativen Nachrichten-IDs. Prime überspringt ältere, oberhalb der anfänglichen Nachrichten geladene Verläufe und Platzhalter ignorierter Benutzer.

Keines der Popups liefert eine verifizierte Stream-Zuschauerzahl. Daher senden diese Adapter keine Zuschaueraktualisierungen und leiten keine Spenden-, Abonnement- oder Moderationsereignisse ab.

Plattformübergreifende Ereignisvereinheitlichung

Diese Tabelle zeigt die Zuordnung ähnlicher Konzepte über Plattformen hinweg. Neue Quellen sollten nach Möglichkeit die gemeinsamen Ereignisnamen der ersten Spalte verwenden.

Begriff YouTube WS Twitch WS Kick WS
Neues Mitglied/Abonnement sponsorship new_subscriber new_subscriber
Verlängerung/erneutes Abo resub resub resub
Verschenkte Abonnements giftpurchase subscription_gift subscription_gift
Geschenk erhalten giftredemption - -
Meilenstein membermilestone - -
Spende/Trinkgeld superchat, supersticker, jeweldonation mit hasDonation cheer (Bits) donation
Neuer Follower new_follower (per Polling)* new_follower new_follower
Zuschauerzahl viewer_update viewer_update viewer_update
Followerzahl - follower_update follower_update
Abonnentenzahl subscriber_update subscriber_update -
Stream-Status live_chat_ended stream_online/stream_offline stream_online/stream_offline
Raid - raid -
Belohnungseinlösung - reward reward

Hinweise zur Vereinheitlichung

  • YouTube verwendet sponsorship für neue Mitglieder, während Twitch und Kick new_subscriber. Berücksichtige beim Erstellen plattformübergreifender Auslöser gegebenenfalls beide.
  • resub ist einheitlich auf allen drei Plattformen für Verlängerungen.
  • Geschenkereignisse unterscheiden sich: YouTube verwendet giftpurchase/giftredemption, während Twitch und Kick subscription_gift.
  • Spenden unterscheiden sich je nach Plattform: YouTube verwendet spezifische Namen für bezahlte Ereignisse wie superchat, supersticker, und jeweldonation mit hasDonation; Twitch hat Bits (cheer); Kick hat Trinkgelder (donation).
  • new_follower ist jetzt einheitlich auf allen drei Plattformen, aber YouTube fragt neue Abonnenten per Polling ab und liefert möglicherweise verzögerte oder unvollständige Ergebnisse.
  • Likes und Reaktionen sind getrennte Verträge: einzelnes liked/like Ereignisse erreichen das Reactions Overlay, sofern nicht global gefiltert, und gelangen nur dann in die Hauptverarbeitung, wenn capturelikeevent aktiviert ist. Visuelle oder plattformnative reaction Ereignisse behalten das vom Erzeuger definierte Routing. Zusammengefasste likes_update Zähler werden separat gesteuert durch captureliketotals.

Abdeckung und Kompatibilitätsgrenzen

Diese Referenz beschreibt implementierte Nutzdaten und garantiert nicht, dass jede Plattform jedes Ereignis liefert. Leere hasDonation Zuweisungen in einer Quelle belegen keine Spendenunterstützung. DOM-Sichtbarkeit, Kontoberechtigungen, Erfassungsschalter und API-Verfügbarkeit bestimmen weiterhin, was empfangen wird. Die Weiterleitung von Löschungen ist quellenspezifisch; setze keine universelle Moderationssynchronisierung voraus.

Erfasste Abweichungen und Lücken

Paar/Bereich Beobachtete Abweichung / Lücke Auswirkung
Twitch: Standard und WebSocket im Vergleich Gemeinsam: reward, subscription_gift, viewer_update, hype_train, und ausdrücklich aktiviertes watch_streak. Nur Standard: giftpurchase, knock, community_highlight. Nur WebSocket: new_subscriber, resub, cheer, powerup, raid, new_follower, follower_update, subscriber_update. channel_points ist jetzt ein veralteter Alias für Twitch-Belohnungseinlösungen; neue Integrationen sollten reward.
Kick: Standard und WebSocket im Vergleich Standard sendet einfache Markierungen (gift, reward, boolesches true, viewer_update). WebSocket ergänzt offizielle Follow-, Abonnement-, Geschenk-, Belohnungseinlösungs-, KICKs-, Moderations- und Live-Statusereignisse. Es behält Kompatibilitätsverarbeitung für ein älteres raid Nutzdaten, aber Kick bietet derzeit kein offizielles Raid-/Host-Abonnement. WebSocket-Modus ist umfangreicher; Automatisierungen mit Standard-spezifischen Ereignisnamen sollten beim Wechsel geprüft werden. Setze kein Kick-Raid-Ereignis voraus.
YouTube: Standard und WebSocket im Vergleich Gemeinsam: superchat, supersticker, jeweldonation, sponsorship, resub, giftpurchase, giftredemption, viewer_update. Nur Standard: thankyou, redirect. Nur WebSocket: membermilestone, new_follower, subscriber_update, view_update, likes_update (ausdrücklich zu aktivieren). Zentrale Mitgliedschafts-/Ereignisnamen stimmen bei beiden überein; Super Chat, Super Sticker und Jewels verwenden hasDonation, während Käufe/Einlösungen von Mitgliedschaftsgeschenken dies nicht tun.
Alle Oberflächen Viele Quellen befüllen hasDonation ohne data.event. Dies ist korrekt; Spendendarstellung sollte sich an hasDonation, mit data.event für System-/Ereignisbedeutungen reserviert.

Quellspezifische Aliase und ältere Namen

Diese Zuordnungen gelten für die angegebene Quelle/den Kontext, nicht als globale Ersetzungen. Alias-Unterstützung unterscheidet sich je nach Seite. Aktuelle TikTok-DOM- und TikFinity-Quellen senden weiterhin followed; Velora verwendet subscription und channel_points, und Streamlabs verwendet subscription. Akzeptiere den aktuellen Quellvertrag und seine relevanten älteren Aliase, statt jedes passende Ereignis umzubenennen.

Alias / älterer Name Kanonischer Ersatz Kontext
subscriptionnew_subscriberNeues Twitch-/Kick-Abonnement
subgiftsubscription_giftVerschenktes Twitch-Abonnement
membershipsponsorshipNeues YouTube-Mitglied (allgemein)
new_membersponsorshipNeues YouTube-Mitglied
new_membershipsponsorshipNeues YouTube-Mitglied
newmembersponsorshipNeues YouTube-Mitglied
new-membershipsponsorshipYouTube-DOM-Erfassung (Variante mit Bindestrich)
upgraded_membershipresubYouTube-Stufen-Upgrade
upgraded-membershipresubYouTube-DOM-Erfassung (Variante mit Bindestrich)
membership_upgraderesubYouTube-Stufen-Upgrade
membership_milestonemembermilestoneYouTube-Meilenstein-Chat
member_milestonemembermilestoneYouTube-Meilenstein-Chat (Variante mit Unterstrich)
gift_membershipgiftpurchaseYouTube-Geschenkpaket
membership_giftgiftpurchaseYouTube-Geschenkpaket
giftmembershipsgiftpurchaseYouTube-Geschenkpaket (Pluralvariante)
gifted_membershipgiftredemptionYouTube-Geschenk erhalten
gifted_membershipsgiftpurchaseYouTube-Geschenkpaket (Pluralvariante)
community_giftgiftpurchaseCommunity-Geschenkpaket
channel_pointsrewardTwitch-WebSocket-Belohnungseinlösung (älterer Alias)
followednew_followerAktuelle TikTok-DOM-/TikFinity-Ausgabe; akzeptiere beim Kombinieren von TikTok-Erfassungsmodi beide Namen.

Diese Referenz verwenden

  • Verwende beim Hinzufügen eines neuen Ereignisses bestehendes Vokabular (subscription_gift, viewer_update, usw.), wann immer möglich. Wenn eine Abweichung unvermeidbar ist, dokumentiere sie hier mit Begründung.
  • Lasse data.meta vorhersehbar: Bevorzuge flache Schlüssel, überlade Zeichenfolgen nie mit gemischten Daten und gib immer Einheiten an (currency, bits, duration).
  • Aktualisiere diese Seite zusammen mit Nutzdatenänderungen; ändere Agentenanweisungen nur bei geänderten gemeinsamen Entwicklungsregeln.
  • Prüfe Nutzdatenänderungen sowohl an der ausgebenden Quelle als auch am empfangenden Overlay oder Event-Flow-Auslöser.
  • Erfassung hängt von Quellunterstützung und Einstellungen ab. Füge zum Ausblenden ereignismarkierter Zeilen in Dock- oder Featured-Overlays &hideevents oder &hideallevents. Verwende zum Ausblenden ausgewählter Ereignisse &filterevents=subscription_gift,new_follower,gifted.
  • Aktiviere für YouTube, Twitch und Kick WebSocket-Modus für die breiteste plattformspezifische Ereignisunterstützung. Geschenk-/Spendenerfassung für YouTube (einschließlich Geschenken und Super Chats) ist sowohl im Standard- als auch im WebSocket-Modus verfügbar; WebSocket ergänzt weitere Ereignistypen. Die genaue Unterstützung hängt weiterhin von Plattform, Kontorolle und erteilten Berechtigungen ab.

Nach oben

Monetarisierungs-Overlays

NinjaBacker-Trinkgelder verwenden platform: "ninjabacker", type: "ninjabacker", chatname, Klartext- chatmessage, textonly: true, ein mit Quellenpräfix versehenes id, formatiertes hasDonation, und numerisches donoValue. Dies sind normale Zeilen im Spendenformat ohne event Überschreibung. meta.ninjabacker enthält den ISO- currency und in Hauptwährungseinheiten amount. Anonyme Trinkgelder verwenden den Anzeigenamen Anonymous. Die Quelle nutzt entweder Live-SSE (ohne Wiederholung) oder den ausdrücklich aktivierten signierten Webhook-Empfänger der SSN-API (bis zu sieben Tage Zustellwarteschlange). Zuverlässige Zustellungen verwenden eine stabile ninjabacker:delivery:DELIVERY_ID ID. Keiner der Modi empfängt Rückbuchungen durch Erstattungen/Streitfälle. Empfängerzugangsdaten und Signaturschlüssel gelangen nie in Ereignisnutzdaten. Vom Aufrufer bestimmte callbackId-Werte sind keine Zahlungsidentität und werden nicht weitergeleitet. Dashboard-Testtrinkgelder werden von Spendenzeilen ausgeschlossen. Sie senden event: "monetization_test" mit meta.ninjabackerTest mit id und at (Unix-Millisekunden), nur für die eigene Vorschaumeldung.

event: "monetization_update" ist eine Momentaufnahme nur mit Metadaten aus type/platform: "socialstream". meta.monetization.wishlist enthält enabled, qr, position, rank, total, öffentliche url und den aktuellen Artikel (name, amount, currency, image, öffentliche url) oder null. meta.monetization.ninja enthält enabled, qr, position, username und die öffentliche Trinkgeld-url. Private Tip IDs sind nie enthalten. meta.monetization.ebay enthält enabled, qr, position, display (cycle/cheapest/first), seconds, ausdrücklich aktivierte Ansageeinstellungen und öffentliche items. Jeder Eintrag hat id, name, amount, currency, image, url, auction, startingBid, endsAt, available, bought und updatedAt. Zeiten sind Unix-Millisekunden. Verkäuferzugangsdaten und Käuferidentität sind nicht enthalten.

Ein vom Host bestätigter Wunschlistenkauf enthält außerdem meta.wishlistPurchase mit id, name, optional supporter und at (Unix-Millisekunden). Dies ist eine Host-Bestätigung, keine Amazon-Zahlungsmeldung, und zählt nicht als Geldspende. Overlays sollten die id deduplizieren und alte Kaufhinweise ignorieren.

Bezahlte Shopify-Bestellungen

Der optionale signierte Shopify-Empfänger sendet platform/type: "shopify" und event: "purchase" nur für orders/paid mit financial_status: "paid", eine positive Gesamtsumme, test: false, keine Stornierung und einen aktuellen Aktualisierungszeitstempel im signierten Inhalt. Test-, unbezahlte, veraltete, stornierte und Erstattungsmeldungen senden keine Kaufaktionen. Eine Geschenkabsicht wird nicht abgeleitet.

chatname ist Anonymous; Kundenfelder, private Notizen und Bestell-URLs sind ausgeschlossen. chatmessage ist Klartext mit textonly: true; subtitle enthält bis zu drei öffentliche Produkttitel. meta.commerce enthält orderTotal und currency in der Shopwährung, zusätzlich quantity wenn eine vollständige gültige Anzahl bekannt ist. Empfänger und physischer/digitaler Zweck bleiben ungesetzt. Kein hasDonation oder donoValue gesetzt ist. id ist ein stabiler undurchsichtiger Hash für Shop/Bestellung mit Shopify-Präfix; keine rohe Bestellkennung.

Käufe verwenden die bestehenden Aktivitäts-, Multi-Alerts-Purchase-Kategorie- und Event-Flow-Wege. Produktwerbung verwendet die bestehenden meta.monetization.commerce Katalog. Das Importieren eines Produkts oder die Werbebeschriftung Gift erzeugt kein Kauf- oder Geschenkereignis. Shopify-Einrichtung und Zustellgrenzen.

Geschenke und Handel

Verwende event: "gift" für ein Geschenk, giftcontribution für bezahlte Unterstützung zu einem Geschenk, giftfunded für abgeschlossene Finanzierung und purchase für einen Produktverkauf. Diese Namen sind unabhängig vom Anbieter und davon, ob ein Artikel physisch oder digital ist. Reserviere das ältere giftpurchase Ereignis für verschenkte Mitgliedschaften; Throne verwendete diesen Namen früher fälschlich und sendet jetzt gift. Bestehende Erzeuger von Mitgliedschaftsereignissen bleiben unverändert. Eigene Throne-Ereignisnamenfilter sollten auf gift; Spendenfilter müssen nicht geändert werden.

hasDonation bleibt das Kompatibilitätssignal für bezahlte Unterstützung, mit donoValue mit dem gelieferten oder geschätzten USD-Wert. Geschenke und Beiträge behalten diese Felder. Abgeschlossene Finanzierung lässt beide weg, um Beiträge nicht doppelt zu zählen. Normale Produktverkäufe lassen sie standardmäßig weg und bewahren so den eBay-Vertrag. Leite keine Geschenkabsicht aus Shop, Wunschlisten-URL oder physischem Artikel ab: Ein Kauf für Käufer oder andere Empfänger bleibt ein Verkauf, sofern die Quelle nicht ausdrücklich ein Geschenk an den Creator kennzeichnet.

Optionales gemeinsames meta.commerce Felder sind recipient (creator, buyer, other), itemType (physical, digital, service), quantity (positive Artikelanzahl), currency (ISO-Währung), goalAmount (Finanzierungsziel in Hauptwährungseinheiten, niemals neue Einnahmen) und orderTotal (bekannter Gesamtbetrag der bezahlten Bestellung in Hauptwährungseinheiten; Handel, keine Spendeneinnahmen). Unbekannte Angaben weglassen. Artikelnamen in subtitle, Bilder in contentimg, und Unterstützertext in chatmessage. Bestehende Anbietermetadaten bleiben verfügbar. Throne liefert Empfänger und Währung sowie goalAmount bei Abschluss; eBay liefert die Menge. Keiner errät den Artikeltyp oder gibt private Empfängerinformationen preis.

Der Aktivitätsfeed zeigt diese Ereignisse auch ohne Unterstützertext. Multi-alerts verwendet für Geschenke und Beiträge die Spendendarstellung, einschließlich einer eigenen Meldung „Gift Fully Funded“ ohne Geldwert. Käufe haben eine separate, standardmäßig aktivierte Purchase-Kategorie mit purchasestyle, purchasesound, purchaseaccent, und disablepurchases URL-Steuerelemente. Kaufmeldungen ändern keine Spendensummen.

Event Flow bietet diese Ereignisnamen in den Auslösern Event Type und Other Event an. Donation-Auslöser prüfen weiterhin hasDonation; Gift-Sub-Auslöser behalten die Mitgliedschaftsbedeutung. Compare Property akzeptiert verschachtelte Pfade wie meta.commerce.recipient. Aktionsvorlagen akzeptieren {meta.commerce.quantity} und {meta.commerce.currency}, neben bestehenden {donation}, {subtitle}, und {meta}. Verschachtelte Pfade beachten Groß-/Kleinschreibung, fehlende Werte werden leer dargestellt und Prototypzugriff ist verboten.

Creator-Verkaufs-Webhooks und Werbe-Overlays

Öffentliche Ko-fi-Donation-Zahlungen behalten hasDonation und erhalten USD donoValue. Abonnementzahlungen verwenden new_subscriber oder resub, mit der Stufe in membership. Shop Order und Commission verwenden purchase ohne Spendenwerte. Private Ko-fi-Ereignisse bleiben ausgeschlossen. Formularkodiertes JSON wird einmal dekodiert; Namen und Nachrichten sind Klartext.

Buy Me a Coffee donation.created behält monetäre Unterstützung; extra_purchase.created und commission_order.created werden zu purchase. wishlist_payment.created wird zu giftcontribution nur anhand dieses Zahlungsbetrags; meta.commerce.completed erfasst das Abschlusskennzeichen des Anbieters, ohne eine weitere Geldzeile zu senden. membership.started wird zu new_subscriber mit der Stufe in membership, ohne weiterhin hasDonation für einen Stufennamen. Ein Betrag beim Abonnementbeginn wird nicht gesondert als bezahlte Abbuchung behandelt. Test-, erstattete, fehlgeschlagene und nicht unterstützte Aktualisierungs-/Lebenszyklusereignisse erzeugen keine bezahlten Meldungen. Verborgene Unterstützernotizen werden weggelassen.

Fourthwall unterstützt ORDER_PLACED (purchase), GIFT_PURCHASE (gift, Empfänger other), DONATION (normale Spendenzeile) und SUBSCRIPTION_PURCHASED (new_subscriber). Bestehende Bestellsummen behalten hasDonation zur Abwärtskompatibilität, markiert meta.commerce.legacyDonationValue: true; dies ist eine ausdrückliche Ausnahme von den neuen Standardregeln für Produktverkäufe. Bestellungen mit angewendeten Geschenkkarten senden eine Kaufmeldung ohne Spendenwert: Die neue Abbuchung lässt sich nicht zuverlässig aus der Bestellsumme ableiten, und der Geschenkkartenkauf wurde bereits gezählt. Rechnungsnamen und E-Mail-Adressen werden nicht als öffentliche Identität verwendet. Dashboard-Testereignisse und Bestellaktualisierungen erzeugen keine bezahlten Meldungen.

Diese Adapter behalten bestehende Weiterleitung, Bot-Aktionen, Event Flow und Zielrouting bei, mit meta.webhookId Duplikaterkennung. Sie liefern öffentliche Namen, Klartextnachrichten, bekannte Artikelnamen in subtitle, und ISO meta.commerce.currency zusammen mit numerischen Spendenwerten, soweit zutreffend. Sie ergänzen weder Erstattungsbuchhaltung noch neue Empfängerauthentifizierung; verwende die vorhandene konfigurierte Webhook-Route des Anbieters.

meta.monetization.commerce in monetization_update enthält enabled, qr, position, display (first/cycle), seconds und ein öffentliches items-Array. Jeder Eintrag hat name, url, image, optional amount (null, wenn unbekannt), currency und purpose (shop/gift/support/membership). Dies sind vom Host eingegebene Werbeangaben, keine Zahlungsbelege. Hinzufügen oder Bearbeiten sendet kein Spenden- oder Kaufereignis. Das allgemeine Overlay verwendet mode=commerce; view=both|showcase|card|alerts trennt Werbung von Aktivität. Optionale URL-Parameter style, scale, cardevery, cardfor und onlytype steuern die Darstellung. Bestehende Anbietermodi akzeptieren außerdem Ansichts- und Zeitplansteuerung. Siehe den Einrichtungsleitfaden.

Throne-Geschenkereignisse

Die ausdrücklich aktivierte Monetarisierungsintegration leitet signierte Throne-Ereignisse mit platform und type gesetzt auf throne. Alle drei verwenden eine stabile Zustellungs- id, Klartext- chatname, chatmessage mit textonly: true, Artikelname in subtitle, und optionales HTTPS-Vorschaubild in contentimg.

EreignisBedeutungSpendenbetrag / Rang
giftEin gekauftes GeschenkhasDonation und USD donoValue; +1 Geschenkrang
giftcontributionEin Beitrag zu einem GeschenkNur Beitragsbetrag; kein Ranganstieg
giftfundedEin vollständig finanziertes Crowdfunding-GeschenkNein hasDonation oder donoValue, vermeidet die Doppelzählung früherer Beiträge; +1 Geschenkrang

meta.throne enthält itemName, creator (öffentlicher Benutzername), completed, currency und in Hauptwährungseinheiten amount. Für giftfunded, der Betrag beschreibt das Ziel, keine neuen Einnahmen. Anonyme Schenker bleiben Anonymous; abgeschlossene Community-Geschenke verwenden Community. Private Zahlungs- und Versandfelder werden nie weitergeleitet.

monetization_update Momentaufnahmen enthalten zusätzlich meta.monetization.throne: enabled, username, url, qr, position, rank, und gifts. Diese Momentaufnahmen enthalten weder Webhook-URL noch Empfangszugangsdaten.

Sprachbefehle des Hosts (Desktop-Vorschau)

Der Event-Flow- Wenn ich sage… Auslöser empfängt vertrauenswürdige lokale Mikrofonbefehle von SSApp. Sein interner Aktionskontext verwendet chatname: "Host", type: "hostvoice", die erkannte Formulierung in chatmessage, und textonly: true. Dies ist kein eingehendes Plattformereignis und kein neuer Chattransport. Das Senden dieser Felder über Chat kann keinen Sprachauslöser aktivieren.

Benötigt einen aktualisierten Desktop-Build, ausdrücklichen Mikrofonstart und Aktivierung der Aktionen nach dem Testmodus. Siehe den Vorschaueinrichtung und Prüfstatus.

Produktanzeigesteuerung

Bestehendes monetization_update Momentaufnahmen können meta.monetization.commerce.live: null für den gespeicherten Zeitplan oder {mode: "show" | "hide", url?: "https://...", until: 0 | epochMilliseconds}. Show vergleicht die genaue gespeicherte Produkt-URL; bei fehlendem Produkt erscheint keine Karte. Ein positiver until-Wert kehrt nach Ablauf zum gespeicherten Zeitplan zurück; null gilt bis zur Änderung oder zum SSN-Neustart. Hide unterdrückt Werbung, nicht Meldungen bezahlter Aktivität.

commerce.viewerURL ist die veröffentlichte schreibgeschützte Shop-URL oder eine leere Zeichenfolge. Falls vorhanden, führen Werbe-QR-Codes dorthin. Sie enthält nie SSN-Sitzung oder Veröffentlichungsschlüssel. Produkte bleiben in commerce.items. Anzeigesteuerungen, Importe oder Veröffentlichung senden kein Spenden-/Kaufereignis. Siehe Produktsteuerung für Event Flow und Remote-API-Nutzung.

Der Event-Flow- commerceControl Aktion wartet auf die direkte/Chrome-Antwort (bis zu acht Sekunden). Bei normalen Ereignisnutzdaten bewahrt sie das Ereignis und ergänzt meta.commerceControlResult: {success: true, commerce: controlState} oder {success: false, error: "..."}. Für ein vorhandenes numerisches, Array- oder anderes nicht objektförmiges meta, bleiben Metadaten unverändert und die Diagnose wird als commerceControlResult stattdessen im Aktionsergebnis zurückgegeben. Fehlgeschlagene Steuerungen stoppen spätere Aktionen dieser Kette, ohne das ursprüngliche Zahlungsereignis zu unterdrücken. Eine Zeitüberschreitung belegt nicht, dass die Steuerung nicht angewendet wurde; prüfe den Zustand vor Wiederholung eines relativen Befehls wie Next. Erfolg bestätigt lokale Auswahl/Ausblendung/Zeitplan, niemals OBS-Sichtbarkeit oder Synchronisierung der öffentlichen Seite.

Benannte Stream-Deck-/API-Workflows

Der benannter Workflow-Auslöser erstellt eine interne Event-Flow-Nachricht mit type: "api", event: "workflow_trigger", chatname: "Stream Deck / API", leeres chatmessage, und textonly: true. Sein meta.workflow Objekt enthält den Auslösernamen und vom Aufrufer geliefertes JSON- data Objekt. Lies Werte über Vorlagen wie {meta.workflow.data.minutes}. Nur gespeicherte, aktivierte Flows, die ausdrücklich zu diesem Auslöser passen, werden ausgewertet. Dies ist kein eingehendes Zuschauer-/Chatereignis und wird nicht als Chat gesendet; das Kopieren dieser Felder in Chat aktiviert den benannten Auslöser nicht.

NinjaChatter-Zuschauerpilot

Der experimentelle gekoppelte Erweiterungsconnector sendet reine Anzeigezeilen mit type: socialstreamchat, platform: ninjachatter, und textonly: true. meta.ninjachatter enthält origin: audience, die beschreibende provider, und öffentliches room ID. Diese Zeilen umgehen Plattformantworten, Bots, Event-Flow-Auslöser und Punkte. Ein angezeigter Anbieter ist keine Autorisierung. Ältere NinjaChatter-Quellerfassungen enthalten meta.ninjachatter.room zur raumspezifischen Duplikatunterdrückung.

Cheer verwendet einen separaten authentifizierten Anforderungs- und Ergebnispfad, niemals einen besonderen Chatbefehl. Die feste Vorgabe sendet das bestehende Actions-Overlay- show_text Nachricht für drei Sekunden. Ihr Empfang bedeutet Annahme durch den Transport, keine bestätigte OBS-Anzeige. Keine Zuschauernutzdaten können beliebige Aktionen auswählen. Der Pilot ist in NinjaChatter standardmäßig deaktiviert; Electron behält sein bestehendes Relay, bis die neue private Kopplungsgrenze geprüft ist.

Verkaufsplatztafeln und letzte Verkäufe

Das bestehende monetization_update Ereignis (type/platform: socialstream) enthält außerdem meta.monetization.boards. Sein board enthält title, style (spots/teams), columns (1–20), visible, und bis zu 120 spots. Jeder Platz hat eine Zeichenfolge id, Klartext- label, status (available/claimed/revealed) und result (Klartext, bis zum Aufdecken leer). Belegungen und Aufdeckungen sind vom Host eingegebene Anzeigezustände, keine Kaufbelege oder zufälligen Zuweisungen.

boards.sales enthält bis zu 100 letzte Einträge: id, title, optionales amount (null, wenn unbekannt), currency, quantity, source, und at (Unix-Millisekunden zum Aufzeichnungszeitpunkt). automatic aktiviert die Erfassung ausdrücklich, salesVisible steuert die Anzeige und revision erhöht sich bei Änderungen. Automatische Erfassung akzeptiert nur purchase Ereignisse von Shopify, eBay-Verkäufern, Fourthwall, Ko-fi und Buy Me a Coffee; private/Testereignisse sind ausgeschlossen. Es behandelt weder Auktionsmetadaten noch Trinkgelder, Geschenke oder Platzbelegungen als Käufe. Automatische Einträge ersetzen einen Artikelpreis nicht durch Bestellsumme, Angebotspreis oder Spendenbetrag. Manuelle Einträge verwenden source: "Host confirmed".

Der Zustand bleibt im privaten Monetarisierungsspeicher dieser Installation erhalten; öffentliche Momentaufnahmen schließen Zustellungs-Duplikat-IDs, Käuferidentität und Geheimnisse aus. Ausdrücklich angezeigte Verkäufe behalten ihre Ereignis-IDs zum Entfernen. Erstattungen müssen vom Host entfernt werden. Doppelte Kauf-IDs werden getrennt gespeichert (bis zu 2.000), auch nach Leeren des sichtbaren Verlaufs. Das bestehende getCommerceState Antwort enthält commerce.boards; commerceControl akzeptiert die im Tafelleitfaden. Manuelle Änderungen senden aktualisierten Zustand, erzeugen aber nie Kaufereignisse, Spendensummen oder bezahlte Belohnungen. Overlays werden ausgeblendet, wenn seit 35 Sekunden keine Host-Momentaufnahme eingegangen ist.

Ergänzungen für Verkäuferabläufe: commerce.boards.board.id kennzeichnet eine Tafelgeneration. Ein manuelles saleAdd kann boardId und spotId um Verkauf und Platzbelegung atomar zu erfassen; doppelte verknüpfte Verkäufe, die noch im letzten Verlauf stehen, werden abgelehnt. saleRemove mit reopenSpot: true gibt diesen Platz nur frei, wenn die Tafelgeneration noch übereinstimmt. Öffentliche Verkaufseinträge lassen diese Betreiber-Verknüpfungsfelder weg. Ein optionales platform bei einem manuellen Verkauf erhält dessen Quelle für Filter, während source: "Host confirmed" kennzeichnet die Bestätigungsmethode. amount ist der Gesamtbetrag des Eintrags einschließlich seiner quantity. Das meta.ebayPurchase.quantity bleibt erhalten.

salesSettings.auctionSource aktiviert die Whatnot- oder eBay-Live-Artikelhilfe ausdrücklich. Das commerce.auction enthält nur source, title, priceText, status und at aus dem zuletzt erfassten auction_update, oder null. Läuft nach fünf Minuten ab und wird bei Quellwechsel, inaktiver Momentaufnahme oder Neustart gelöscht. Die Hilfe ist nur für den Betreiber: Sie wird weder dauerhaft gespeichert noch an Zuschauer gesendet; Bieter-/Gewinneridentität wird verworfen. Quellskripte und Auktionsereignisnutzdaten bleiben unverändert. Das Kopieren eines Entwurfs bestätigt keine Zahlung und erstellt keinen Verkauf.