Quelltypen

Verwende für eingehende Filter den exakten Quellnamen der Nutzdaten und verstehe die Zielfamilie, bevor du Chat zurücksendest.

Was ist ein type?

type ist die kanonische Quellkennung eingehender Social-Stream-Nutzdaten. Overlays, URL-Filter, APIs und Event Flow unterscheiden damit Plattformen und Quellvarianten.

{
  "type": "youtubeshorts",
  "chatname": "Ava",
  "chatmessage": "Hello from Shorts"
}
Name Bedeutung Nicht verwechseln mit
type Die Quelle der eingehenden Nutzdaten, etwa youtube oder instagramlive. Eine Anzeigebeschriftung, ein Verbindungsmodus oder Ereignisname.
event Was passiert ist, zum Beispiel superchat, gift, oder viewer_update. Die Plattform, die es erzeugt hat.
sourceName Ein optionaler Kanal-, Raum- oder Quellanzeigename. Der beständige Wert, den ein From-Source-Auslöser verwendet.
tid Die ursprüngliche Tab- oder Desktop-Quellfenster-ID für Antworten und Quellausschluss. Ein Plattformtyp.
Desktop-App target Die gespeicherte Kategorie zur Auswahl von URL, Modus und Erfassungsskript. Eine Garantie, dass alle ausgegebenen Nutzdaten dieselbe Zeichenfolge enthalten.

Wichtig: Der Event-Flow- Von Quelle (From Source) Auslöser vergleicht seinen eingestellten Wert direkt mit message.type. Verwende den genauen kleingeschriebenen Nutzdatenwert.

Häufige und missverständliche Typen

Erfassungs- oder Oberflächenname Nutzdatentyp Warum es überraschen kann
YouTube-Livechat youtube DOM, API-Polling und WebSocket/Streaming beschreiben Transportwege, keine getrennten Typen.
YouTube-Shorts-Livechat youtubeshorts Er ist für eingehende Filter und Event-Flow-Weiterleitungsziele getrennt, während gemeinsame YouTube-Steuerungen beide Varianten bei Bedarf weiterhin als eine Familie behandeln.
Instagram Live / InstaFeed live instagramlive Instagram-Beitrags- und Feedkommentare verwenden instagram.
TikFinity tiktok TikFinity ist der Connector; die normalisierte Plattform bleibt TikTok.
X x, oder älteres twitter mit der Twitter-Branding-Option Bestehende Filter behalten möglicherweise bewusst den älteren Namen.
Regionale Bilibili-Optionen bilibili Desktop-Ziele und Skripte heißen möglicherweise bilibilicom oder bilibilitv, während Nutzdaten normalisiert werden.
OBS-Systemereignisse obs Sie sind keine Chatquellen, können aber mit Ereignissen wie scene_changed.

Verwende: Ereignisreferenz für den Feldvertrag und Unterstützte Websites für öffentliche Plattform-Einrichtungsnamen.

YouTube Shorts und Event Flow

Eingehender Abgleich ist exakt: verwende youtubeshorts in einem From-Source-Auslöser für Shorts-Nachrichten und youtube für normalen YouTube-Livechat.

Ausgehender Abgleich ist ebenfalls exakt: Relay Chat behandelt sie als getrennte Ziele.

  • Ziel youtube sendet nur an normale YouTube-Livechat-Fenster.
  • Ziel youtubeshorts sendet nur an YouTube-Shorts-Livechat-Fenster.
  • Füge zum Erreichen beider Ziele je eine Aktion hinzu oder leite an alle Plattformen außer der Quelle weiter.

Andere YouTube-weite Steuerelemente können beide Typen bewusst als eine Plattformfamilie behandeln. Das ändert den obigen exakten Event-Flow-Abgleich nicht.

Fehlerbehebung älterer Versionen

Ältere Versionen fassten beide Weiterleitungsziele zusammen, sodass zwei Aktionen zweimal an jedes YouTube-Fenster senden konnten. Aktualisiere Social Stream Ninja, wenn das auftritt. Ein Reflection Filter verhindert Weiterleitungsschleifen, korrigiert aber keinen überlappenden Zielabgleich in diesen älteren Versionen.

Social Stream Ninja Event-Flow-Editor mit verbundenen Auslöser-, Filter- und Aktionsknoten
From Source liest den Typ eingehender Nutzdaten; Relay Chat wählt ausgehende Quellfenster.

Weiter mit dem Event-Flow-Leitfaden oder YouTube-Einrichtungsleitfaden.

Instagram Live und Instagram-Kommentare im Vergleich

Verwende instagramlive für Live-Raumchat, der von der Instagram-Live- oder InstaFeed-live-Quelle erfasst wird. Verwende instagram für nicht live stattfindende Feed-, Beitrags- oder statische Kommentare.

  • Livechat-Ablauf: From Source = instagramlive.
  • Beitrags-/Kommentarablauf: From Source = instagram.
  • Beide: verwende zwei Auslöser mit einer gemeinsamen Aktion oder einen Any-Source-Auslöser mit nachfolgendem typabhängigem Filter.

Der sichtbare Markenname Instagram reicht zur Typauswahl nicht aus; der Inhaltskontext unterscheidet beide.

Allgemeine, eigene und unbenannte Quellen

sources/generic.js ist ein allgemeiner Fallback für DOM-Erfassung. Er sucht gängige Chatzeilen, Namen, Nachrichten, Avatare und Eingaben. Er beginnt mit generic, und leitet dann normalerweise einen kleingeschriebenen Typ aus einer bekannten Plattform oder dem Hostnamen der Seite ab.

  • Prüfe damit, ob sich ein gewöhnlicher DOM-Chat erfassen lässt, bevor du eine eigene Quelle schreibst.
  • Erwarte keine zuverlässige Unterstützung für Ereignisse, Moderation, Löschungen, virtualisierte Listen oder geschlossenes Shadow DOM.
  • Ein vom Hostnamen abgeleiteter Typ ist praktisch, aber kein dauerhafter öffentlicher Vertrag. Prüfe die ausgegebenen Nutzdaten, bevor du Filter darauf aufbaust.
  • Wenn eine Quelle keinen etablierten Plattformnamen hat, wähle einen beständigen kleingeschriebenen type. Verwende sourceName für die lesbare Raum- oder Kanalbeschriftung.
  • Wenn noch keine stabile Identität existiert, ist generic sicherer, als den Typ pro Nachricht zu ändern. Externe Integrationen verwenden häufig einen bewusst gewählten Wert wie external.

Sobald Benutzer, Overlays oder Flows von einem neuen Typ abhängen, dokumentiere ihn in der Ereignisreferenz statt ihn stillschweigend umzubenennen.

Skripteinbindung der Desktop-App

Die Desktop-App speichert ein Quellen- target, wählt ein oder mehrere sourceFile/sourceFiles, öffnet ein Quellfenster und bindet gemeinsame Erfassungsskripte aus diesem Projekt ein. Eine Chrome-Runtime-Kompatibilitätsbrücke überträgt erfasste Nachrichten und Antwortbefehle zwischen Seite und App.

  • Ziel und Skriptdateiname müssen nicht dem Nutzdatentyp entsprechen. Das youtubeshorts Ziel lädt sources/youtube.js, das youtube oder youtubeshorts aus dem Seitenkontext.
  • Bilibili-Ziele werden ähnlich gemeinsamen/regionalen Skripten zugeordnet und geben dabei bilibili.
  • sources/inject/*.js Dateien sind Hilfen im Seitenkontext für Sockets oder Seitenvariablen. Die Quellhülle bleibt für die kanonischen Nutzdaten verantwortlich.
  • Wenn mehrere Skripte eingebunden werden, sollte nicht jede Hilfsfunktion dasselbe ausgehende Ziel beanspruchen. Erfassungsidentität und Antwortfähigkeit sind getrennte Aspekte.
  • Änderungen an der Quellerfassung gehören in die sources/ Dateien dieses Repositorys. Die Desktop-App verwendet sie; ihre mitgelieferte Fallback-Kopie ist nicht maßgeblich.
Quelleneinträge der Social Stream Ninja Desktop-App mit Verbindungsmodi
Jede Desktop-Quelle behält ihr eigenes Ziel, ihre URL, ihren Verbindungsmodus und ihr Erfassungsskript.

Projektbetreuer können die Einrichtung in der index.html Quellfenstererstellung und dann main.js und preload.js für Einbindung und Brückenkommunikation.

Antworten und Weiterleiten an Quellen

Eingehende Identität und ausgehende Fähigkeit hängen zusammen, sind aber nicht derselbe Vertrag.

Aktion Wie die Auswahl erfolgt Häufiger Fehler
Der Quelle antworten Verwendet tid um genau den ursprünglichen Tab/das ursprüngliche Fenster anzusprechen. Nein tid, oder dieser Erfassungsmodus kann keinen Chat senden.
An eine Plattform weiterleiten Fragt offene Quellen, ob sie dieses ausgehende Ziel unterstützen. Für die gewählte Variante ist kein passendes Quellfenster geöffnet oder die Quelle kann keinen Chat senden.
An alle außer der Quelle weiterleiten Sendet an erreichbare Quellen und schließt die ursprüngliche tid. Eine Quelle akzeptiert keine automatisierten Eingaben oder eine zurückgespiegelte Nachricht wird erneut erfasst.
  • Die getSource Antwort ist ein Signal für ausgehende Erreichbarkeit. Gemeinsame YouTube-Steuerungen können beide Varianten gruppieren, während Relay Chat zum Zielabgleich den genauen Shorts-URL-Kontext ergänzt.
  • Die allgemeine Erfassung kann wahrscheinliche Eingabefelder finden und fokussieren. Das garantiert aber nicht, dass die Website automatisiertes Senden akzeptiert.
  • API-/WebSocket-Modi senden möglicherweise über Plattform-APIs, statt in die sichtbare Seite zu tippen.
  • In der Desktop-App Bot nur zum Antworten (keine Erfassung) hält eine Quelle für Antworten/Status verfügbar und unterdrückt ihre normalen erfassten Nachrichten.
  • Teste Antwortunterstützung mit einem Quellfenster, bevor du eine plattformübergreifende Weiterleitung aufbaust.

Wo du genaue Details findest

Prüfe bei der Fehlersuche einen rohen Nutzdatensatz und notiere dessen type, event, sourceName, und tid. Damit lassen sich gewöhnlich eingehender Abgleich, ausgehendes Routing und doppelte Erfassung unterscheiden.