ライブイベントリファレンス

このページは、Social Stream Ninjaが主要プラットフォーム向けに送信する標準イベントペイロードを説明します。新しいソースの接続、連携のトラブル対処、UIラベルの統一の際に、共通の基準として使ってください。利用側向けの短い一覧はこちら: イベントとアラートの互換性.

重要: イベントの可用性はソース、権限、取り込み設定によって異なります。ドックや注目表示オーバーレイでイベント付き行を隠すには、次を追加します: &hideevents または &hideallevents。特定のイベントを隠すには次を使います: &filterevents=subscription_gift,new_follower,gifted。これらのフィルターは、次の値を持つ有料行も隠す場合があります: event。イベントマーカーのない通常の寄付行はイベントフィルターに一致しません。他のメッセージフィルターは引き続き適用されます。
取り込み方法を選びます: YouTube、Twitch、Kickでは、 WebSocketモード は通常、より幅広いイベントに対応します。標準DOM取り込みは、ページに実際に表示された行とカードを読み取ります。YouTubeのSuper Chat、Super Sticker、Jewelギフトには両モードで取り込み経路があります。他のギフト、投げ銭、メンバーシップイベントはソースによって異なります。対応経路と必要な設定は各プラットフォームの表を確認してください。
自動化を作りますか? こちらをご覧ください: Event Flowガイド を参照すると、カスタムトリガー、アラート、ワークフローでこれらのイベントペイロードを使用する方法を確認できます。ガイドには次が含まれます: テンプレート変数リファレンス をテキストの書式設定に使います。
ペイロードの形式: 寄付形式のチャット行では次を使ってください: hasDonation 、任意の donoValue。次の値は設定しないでください: event: "donation" を、通常のチャット・投げ銭行に金額があるという理由だけで設定しないでください。固有のイベント名は、実際のプラットフォーム操作や有料アイテム種類にだけ使います。例: superchat, supersticker, gift、または jeweldonation。使う項目: meta は、受信側が実際に必要とし、既存フィールドで表せない追加の構造化データにだけ使ってください。

機能対応の早見表

この表で、各取り込み方法が現在どの種類のアラートを提供するか確認できます。詳しいペイロードの補足は後述します。

専用のMulti-Stream Alert Boxは、ライブイベントを6つの基本アラートカテゴリに分類します: Follow, Subscription/Member, Donation, Bits/Cheers, Raid/Host、および Purchaseに加え、任意で有効にする2カテゴリ(Auction および Hype Train)をURLパラメーターで有効にします。これらのカテゴリは既存の次の値から導出します: event, membership, subtitle, hasDonation、および meta のフィールドはここに記載しています。別のペイロード形式は不要です。

ソース 新しいサブスク・メンバー 新しいフォロワー 寄付 件数と追加情報
YouTube(Data APIブリッジ) メンバーシップの加入・更新・ギフト 個別の登録通知* + 合計 Super ChatとSuper Sticker 視聴者、登録者、視聴回数の合計(定期取得)
Twitch – DOM取り込み ギフトまとめ買いの行と受取通知 - Bitsの判定元: hasDonation 視聴者数、報酬カード、コミュニティハイライトカード
Twitch – EventSub・WebSocket 即時のサブスク・更新・ギフト通知 即時フォロー通知 + フォロワー合計 Cheer、Power-up、チャンネルポイント交換 視聴者・サブスク・フォロワー合計、配信状態、広告通知
TikTok Live - フォローカード(TikTokが表示する場合) ギフトをコイン合計に換算 視聴者数、参加アラート、いいねのまとまり
YouNow - ファンと視聴者の活動 - ライブ視聴者パネルの視聴者数
Favorited Studio - - - ライブ視聴者タブの視聴者数
Whatnot - - - 視聴者数、参加アラート、ライブオークションのメタデータ、商品・プレゼント企画のスナップショット
eBay Live - - - 視聴者数、フォロワー数、ライブイベントカードのスナップショット、オークションフッターのメタデータ(公開されている場合)、ハートのリアクション、今後のイベントのメタデータ
Streamlabs Alert Box サブスク、ギフト、スポンサー、フォロー Cheer・Bits、寄付(通貨付き) Cheer・Bits、寄付(hasDonation) アラートボックスが開いている間。次の方法でも利用できます: sources/websocket/streamlabs.html ソケットトークン
OBS Flow Actions - - - Event Flow向けのOBS出力、シーン、リプレイバッファ、メディア終了イベント。条件: actions.html がOBS WebSocketに接続されている場合
Kick – DOM - - - 視聴者数と基本的な報酬・ギフトのシステム通知。より豊富なアラートにはKickブリッジを使ってください
Kick – WebSocket・ブリッジ 新規サブスク、更新、ギフト フォロー通知 + フォロワー合計 支援・投げ銭イベント(金額 + 通貨) 配信状態、報酬交換、プロフィールのメタデータ
Facebook Live - - DOMに表示されたStars チャット行、Stars、視聴者数の定期取得
Rumble – DOM取り込み - - 表示されるRantの価格 チャット、受信レイド、視聴者数の定期取得
Rumble – WebSocket/API URL 新規サブスクとサブスクギフト フォロー通知 + フォロワー合計 Rant・投げ銭(金額 + 通貨) 視聴者合計、登録者合計、ライブ状態、チャットフィード
Streamplace - - - 視聴者数に加え、チャットの名前、色、バッジ、返信、リンク
WorldsWave - - 寄付ラベルがある場合 描画されたライブチャットと、任意で有効化する視聴者数更新
CHZZK - - 表示されるチーズ寄付行 チャット行、バッジ画像、エモート、視聴者数の定期取得
BEAM - - - チャット専用ページが視聴者カウンターを公開している場合、チャット行と視聴者数を定期取得
Seal Team Sloth - - - 描画されたポップアウトチャット行に加え、 viewer_update 視聴者数が有効な場合にポーリングします
Castyr - - - 描画されたポップアウトチャット行と、任意で有効化する視聴者数更新
RPLAY - - - ログイン済みの /live/chat/box/ ポップアウト: type: "rplay" のチャット、アバター、ティアバッジ画像、エモートを扱います。コインの投げ銭は、元の金額・単位を次に保持します: hasDonation を共通の米ドル換算に使い、寄付イベントは付けません。任意の viewer_update 投票では整数を使用します: meta をRPLAYの公開配信エンドポイントから取得します。転送されたTwitch行は除外します。
FLEX TV - - - 名前、投稿者の色、バッジ画像、メンバーのメタデータを持つ、描画済みチャット行

*YouTubeのチャンネル登録通知は定期取得されるため、遅れたり欠けたりする場合があります。APIリファレンスでは、固定の4時間以内の配信は保証していません。参照先: 公式サブスクリプションAPIの制限.

フィールドの概要

data はここではメッセージオブジェクトを意味し、追加するラッパーではありません。チャット行とメタデータのみのイベントは形式が異なります。カウンターや状態スナップショットでは、次を省略する場合があります: chatname/chatmessage。プラットフォームの表では、 メッセージ は通常のチャット行を表し、文字どおりの次のイベントではありません: event: "message".

フィールド 形式 用途
data.type 文字列 オーバーレイ、フィルター、Event Flowが使うソース識別子。Instagramのライブチャットは次のままにします: instagramlive 、ライブ以外のコメントは次として扱います: instagram。参照先: ソース種類ガイド に派生形、汎用ソース、送信先経路を記載しています。
data.chatname 文字列 メッセージ処理やオーバーレイ以外の出力が使う、ソース提供の表示名。設定したユーザー表示名の別名は、コピーされたドック・オーバーレイ通信ペイロード内だけでこの値を置き換えられます。
data.username 文字列 取得可能な場合のソース上のユーザー名。別名を適用したドック・オーバーレイペイロードでは、元の次の値を保持するため、このフィールドを追加する場合があります: chatname をユーザー操作に使います。標準メッセージ自体は変えません。
data.userid 文字列 プラットフォーム固有のユーザー識別子。ユーザー操作では、次よりこの値を優先します: username および chatname.
data.platform文字列(任意)一部の連携では、次と併せて含めます: type。多くのソースアダプターは省略するため、次を使ってください: type をソースの経路指定に使います。
data.id文字列 | 数値(任意)メッセージまたはイベントの識別子。意味はソースと通信経路によるため、常にプラットフォーム固有のモデレーションIDだと考えないでください。使う値: meta.messageId アダプターが削除同期用に公開している場合。
data.donoValue数値(任意)ソースが提供する数値の米ドル相当額。推定値を含みます。有効な値は0も含めてcurrency.jsの換算より優先します。なければ受信側でhasDonationとソースの文脈から米ドル額を見積もります。元の金額と単位はhasDonationおよび既存のプロバイダーメタデータに保持します。
data.chatbadges配列 | 文字列(任意)バッジ画像URLまたはバッジオブジェクト(type: "img" 付随する値: src, type: "svg" 付随する値: html、または type: "text" 付随する値: text)。転送では、テキストバッジのラベル文字列を任意の次の欄に保持します: rawText から、エスケープ済みの次の値を生成します: text を古いオーバーレイ向けに使います。その後の転送時には、次を再生成してください: text 取得元: rawText。次をエスケープしないでください: text を再度処理しないでください。現在のレンダラーの表示対象: rawText がある場合は文字どおりに扱い、それ以外では従来のエンコード済みテキスト処理を維持します。これは表現形式のフィールドであり、HTML描画の許可ではありません。古いソースは配列の代わりに単一HTML文字列を送る場合があります。バッジ表示オーバーレイは両形式を受け付け、古い拡張機能からの送信でもバッジのHTML・URLをローカルでサニタイズします。不正なバッジがあっても、チャットやメンバーシップメッセージの表示を妨げてはいけません。
data.event 文字列 | 真偽値 システム活動の識別子(例: viewer_update, subscription_gift, giftpurchase)。通常のチャットでは空またはfalseにし、オーバーレイがシステム通知と会話文を区別できるようにします。
data.chatmessage 文字列 メッセージ本文。サニタイズ済みで描画可能なHTMLを含められるのは、次の場合だけです: data.textonly はfalseです。
data.textonly 真偽値 適用対象は次だけです: data.chatmessage. true の意味は、次を描画することです: chatmessage をプレーンテキストとして扱い、タグや実体参照のような文字列をそのまま保持します。本文をデコードしたり、HTMLサニタイズしたり、書式タグを追加したりしないでください。イベントのスタイルは表示要素に適用します。 false の意味: chatmessage にはサニタイズ済みで描画可能なHTMLを含められます。フラグのない古いメッセージも、そのHTML動作を保ちます。他の通常フィールドはプレーンテキストですが、次のようなメディアフィールドは例外です: chatimg および contentimg。プレーンテキストのフィールドは次で表示します: textContent、またはHTMLテンプレートを組み立てる際に1回だけエスケープします。内容を削除したり、繰り返しデコードしたりしないでください。
data.contentimg 文字列(任意) コンテンツ画像または対応メディアのURL。拡張機能とデスクトップアプリでは、任意で有効にする次の設定: allowExternalGifs 設定は、メッセージ本文またはHTMLリンク内の最初の直接HTTP(S) GIFリンクを、空のフィールドに設定します。URLのパスは次で終わる必要があります: .gif (大文字・小文字を区別しない)。クエリパラメーターとフラグメントは保持されます。APIキーは不要で、次を保持します: chatmessage と既存の添付を保持し、次に従います: removeContentImage。任意の hideExternalGifUrl 設定で次が追加されます: meta.hideExternalGifUrl: true。ドックと注目表示オーバーレイは、画像を読み込んでから一致するGIFリンクだけを隠し、前後のテキストと元のペイロードは保持します。画像の読み込み失敗やタイムアウト時は添付領域を閉じ、リンクを残します。GIF専用オーバーレイは、画像データの取得に失敗すると直接画像表示を試みます。アニメーション時間がわからない場合は設定された表示時間を使い、読み込みが失敗・停止したらキューを進めます。次の値は追加しません: event またはソースの次の値を変更します: type。外部画像の内容はフィルタリングしません。ホストが埋め込みを禁止していると読み込めない場合があります。
data.membership 文字列 読みやすいメンバーシップ状態。例: MEMBERSHIP, new_sponsor, gift_recipient。各画面はバッジ、フィルター、お知らせに使います。
data.subtitle 文字列 補足説明(メンバー継続期間、ティアのアップグレード、ギフトの贈り主など)。オーバーレイで表示名の下に入れられるよう、短いプレーンテキストにしてください。
data.hasDonation 文字列 金銭または仮想ギフトの金額($5.00, 500 bits, 300 coins)。次の場合でも設定します: data.event は空欄にし、寄付オーバーレイで検出できるようにします。
data.meta 数値 | オブジェクト | 文字列(旧形式) 単一のカウンター(視聴者、フォロワー、登録者)には単純な整数を、詳細な文脈にはオブジェクトを使ってください。Twitch DOMの次のイベントなど、一部の古いイベントは community_highlightは文字列を持ちます。オブジェクトのプロパティを読む前に、イベント固有の形式を確認してください。新しい構造化情報はオブジェクトに格納します。
data.firsttime 真偽値 設定する値: true 初回チャットの検出とローカルデータベースが有効で、そのユーザー/ソースについて保存される最初のチャットメッセージである場合。ドックはこれを初回チャットの強調表示と初回の通知音フィルターに使用します。任意の初回バッジ設定を有効にすると、葉のバッジが次の先頭に追加されます: chatbadges.
data.lastactivity 数値 初回チャット検出とローカルデータベースが有効な場合の、そのユーザーについて前回保存したチャット活動のUnixタイムスタンプ(秒)。完全な新規ユーザーでは省略します。

オーバーレイ操作の通信は、取り込んだチャット・イベントとは別です。更新済みの受信側は次を使います: ssnControl のエンベロープには配信識別子が含まれます: id、注目表示 target、任意の返信チャンネルとスナップショットクライアントIDを使います。既存の注目表示本文は維持します。公開の注目表示操作はチャンネル7、Actionsは引き続きチャンネル6を使います。PollとMapの状態にはホストの次の値を含めます: epoch, revision および reset のマーカーを使います。Timer、Ticker、Spotifyが使う値: ssnState エポックとリビジョンが含まれます。これらのマーカーはホストの状態を表し、復元された投票/チャット履歴を表すものではありません。ソースは、キャプチャしたメッセージに制御エンベロープのフィールドを追加しないでください。受領の確認は、アクションの完了やOBSでの表示を保証しません。参照: 移行状況 に対応機能、返信の調整、再接続の制限を記載しています。

Phrase Guessが使うネイティブの値: {response: text} server2のチャット返信用リクエストと {action: "phraseGuessResponse", value: {type: "bot", chatname: name, chatmessage: text}} をドック専用のお知らせに使います。ホストはserver3の受信メッセージを有効にする必要があります。ホスト操作を無効にすると、これらの要求も引き続きブロックされます。ドックのお知らせは、次の値を持つ通常のボットチャット行として転送されます: textonly: trueへ送り、取り込みソースのチャット入力欄へは送りません。従来のAPIモードでは既存のコマンド形式を保持します。

Metaの規約

ダッシュボードや自動化の整合性を保つため、次を拡張するときはこれらの規約に従ってください: data.meta:

  • viewer_update, follower_update, subscriber_update、および likes_update 単純な整数を使用します: meta の値。 likes_update はプラットフォームの正式な合計です。受信側は加算せず、その値を表示値として設定してください。バックグラウンドスクリプトは視聴者数を次へ集計します: viewer_updates 次をキーとするオブジェクトを使用します: data.type.
  • giveaway_state は管理対象の表示向けにホストが生成する、メタデータのみのスナップショットです。 meta.giveaway バージョン2には次が含まれます: giveawayId、永続的な roundId/epoch、増加する generation を新しいラウンド間で保持し、 revision 同じラウンド内で、 status, open, draw, keyword, count, ticketCount、固定された config、最大120件のプレビュー entrants、最新20件の winners。各項目が公開する値: id, name, platform および tickets。当選者には次を追加します: drawnAt 、付与された points。Coin Flip Potは次を追加します: outcome。Number Huntは次を追加します: number 公開される値: low, high 、最近の guessesを含めますが、シークレットは含めません。受信側はプレゼント企画IDで絞り、古い世代・リビジョンを破棄します。これらは表示用サンプルであり、完全なチケット台帳や支払い指示ではありません。ウォレットキー、残高、予約は視聴者向けスナップショットに含めません。ホストは次へ公開します: giveaway のP2Pラベルと、有効なオーバーレイWebSocketフィードに送ります。OBSに表示されていることを意味しません。 ガイド.
  • meta.giveawayControlResult にEvent Flowのプレゼント企画アクションの結果を格納します(ok、任意の error, giveaway または simulated). meta.giveawayHandled に、参加・購入のフローアクションですでに処理したプレゼント企画IDを列挙し、自動チャットコマンドによる再課金を防ぎます。エディターが追加する値: meta.economyTest はプレゼント企画アクションのシミュレーション用であり、ソースプラットフォームのイベントや認証情報ではありません。
  • video_stats 構造化された次の値を使用します: meta オブジェクトは外部エンコーダー・サーバーの稼働状態用で、次を含めます: provider, label, online, bitrateKbps, rttMs, bufferMs、パケット損失・ドロップのカウンター、任意のコーデック詳細。
  • 寄付形式のイベントには説明用オブジェクトを含める場合があります。例: { amount, currency, supporter } をKickに使い、 { bits } をTwitchのCheerに使います。メンバーシップイベントはソース固有のメタデータを持ち、自動的に金銭的な寄付になるわけではありません。
  • 正規化したStripe、Ko-fi、Buy Me a Coffee、FourthwallのWebhookメッセージには、プロバイダー単位の次の値が含まれます: meta.webhookIdには、プロバイダーの安定したイベント識別子をコピーします。これにより、受信側ページで再試行や複数の通信経路による重複を抑止できます。
  • Twitchのレイドが渡す値: { fromId, fromLogin, viewers }。他のソースでは異なります。Whatnotが使う値: meta.numRaiders。一方、SharePlayでは任意の次の値を使います: meta.fromLogin/meta.viewers。レイドのメタデータを読む前に、ソース固有の行を確認してください。
  • Twitch EventSubの報酬交換が提供する値: meta.rewardId, cost, rewardTitle, redemptionId、従来の alias を準備済みメッセージとともに渡します。DOMの報酬カードや他のソースでは、フィールドが少ない、または異なる場合があります。
  • user_banned はモデレーションウィジェット向けのメタデータのみです。意図的に省略する値: chatname および chatmessage。使う項目: meta.username, meta.displayName, meta.avatarUrl、および meta.profileUrl.
  • ソース操作による削除同期に対応するチャット通信では、プラットフォーム固有のチャット識別子を次として提供してください: meta.messageId を使い、ドック内部の次の値には依存しないでください: data-mid の値。
  • ソースの削除が使う値: {delete: {type, id}} を既知のドックメッセージIDに使うか、 {delete: {type, meta: {messageId}}} をプラットフォーム固有のメッセージIDに使います。既知のIDなら一致するメッセージだけを削除します。対象ユーザーだけがわかる場合は、次を送信します: {delete: {type, userid}} または {delete: {type, chatname}} を使用して、そのプラットフォームでの対象ユーザーのメッセージを削除します。対象ユーザーの代わりにモデレーターの識別情報を使用しないでください。受信した削除に、任意のドックからプラットフォームへのモデレーション同期設定は必要ありません。
  • SSAppのソース識別メタデータが追加する場合がある値: meta.ssnAccountRole, meta.ssnSourceId、および meta.ssnSession ソースに通常以外のアカウントの役割が割り当てられている場合。
  • Event Flowでは、次を設定して強調表示を依頼できます: meta.featured = true をチャットペイロードに設定すると、ドック・注目表示オーバーレイで自動的にメッセージを注目表示します。
  • AI Event Overlay: アクション showAiEventOverlay は、トリガーとなったメッセージのコピーを、ラベル aievent-CONFIGURATION_IDに送信し、 meta.aiEventOverlay: {profile: "CONFIGURATION_ID"}を追加します。既存のメッセージフィールドとオブジェクト形式のメタデータは保持されます。スカラー値のメタデータは meta.valueとして保持されます。これは宛先を指定した配信であり、新しいプラットフォームイベントではありません。元のメッセージは変更されません。詳細: 設定ガイド.
  • 任意 meta.aiEventOverlay.variation は、保存されたオーバーレイ設定で承認済みの語句を完全一致で選択します。視聴者のテキストとメタデータは、生成後にテンプレートの各フィールドへ挿入されます。
  • AI Event Overlay の表示リクエストには、プロファイルとその専用の非公開表示トークンが必要です。設定と API キーは、ローカルの SSN ポップアップでのみ管理します。応答形式は {aiEventResponse: {target, value}} または {aiEventResponse: {target, error}}. 生成結果に含まれるフィールドは template, duration, warnings, 任意のメディアデータ URL の格納先は image/audio.
  • ポイントで支払うAIオーバーレイ報酬は aiEventPresentation (id, profile, expiresAt, result, message) を使用し、aiEventDelivered(配信ID)で受信を確認します。ポイントの引き落とし記録と返還額はホスト側に保持されます。
  • Event Flowでは、次を設定してドックのピン留めを依頼できます: meta.pinned = true。任意の meta.pinnedTarget はピン留め対象を、次が一致するドックに限定します: label.
  • Event Flowの感熱印刷結果は次に記録します: meta.thermalPrintResult (success 、任意の code/error)に格納し、チャットイベントと他のメタデータを保持します。メタデータが数値などのオブジェクト以外の場合、診断情報はアクション結果に残し、イベントは変更しません。
  • 任意で有効化するSSNステッカー報酬: event: "sticker" の送信先は次だけです: stickers のオーバーレイラベルへ、ロイヤルティポイントの引き落とし後に送ります。設定する値: platform および type を元のメッセージの次の値に設定します: type、次を保持します: chatnameで、次は空です: chatmessage, textonly: true、および contentimg には、同梱画像の相対パス、または配信者が承認したHTTPSメディアURLを格納します。 meta.sticker に含まれる値: id, pack, name, cost, duration (秒)、 motion, redemptionId、および expiresAt (Unix時刻、ミリ秒)。これはSSNの報酬であり、プラットフォームの寄付やネイティブのチャンネルポイントイベントではありません。参照先: ギャラリーと設定ガイド.
  • ステッカープレイヤーは、次の制御パケットを返します: {action: "stickerReceipt", meta: {sticker: {redemptionId, success}}} を、画像の読み込みが完了または失敗したときに送信元へ返します。接続済みの次の対象からの受領通知のみが使用されます: stickers のピアが、待機中の報酬交換を確定します。配信失敗や未確認の場合は返金します。この制御パケットはチャットイベントではありません。セッションごとに有効なステッカー表示を1つだけにすることをおすすめします。
  • AIステージオーバーレイのコマンドが使う形式: { action: "aiOverlay", target, meta } またはドックが操作する共同司会再生では、次を使います: { action: "cohostOverlay", target, meta }。次のようなコマンド詳細はすべて保持します: command, text, emotion, avatar、および tts 格納先: meta.
  • プラットフォームが複数のカウンターをまとめて提供する場合は、明確なキーを持つ構造化オブジェクトを優先してください(meta.viewer_count, meta.follower_count)を使い、文字列に複数の役割を持たせないでください。
  • コマースオーバーレイは、次の中のスナップショットオブジェクトを使ってください: meta (例: auction_update および commerce_update)を使い、場当たり的な最上位フィールドは避けてください。

プラットフォーム対応範囲

YouTube – 標準DOM取り込み

実装: sources/youtube.js

  • ライブチャットのタブを開いたままにしてください。そのセッションに表示されたメンバーシップ・ギフトカードを読み取るため、視聴者がチャンネル所有者やモデレーターである必要はありません。アカウントのアクセス権や選択したチャット表示によって、見える行が異なる場合があります。
  • 視聴者数とチャット活動のオーバーレイを視聴者数が表示される状態で開くと、視聴者数が自動的に要求されます。設定項目の 視聴者数を表示(Show viewer count) および アクティブなチャット参加者を追跡 でも収集が有効になります。
  • フォロワー通知と追加イベント向けを使うには、拡張機能設定でWebSocketモードを有効にします。
イベント 発生する条件 ペイロードの補足
sponsorship 明示的なチャット本文のないメンバー歓迎ヘッダー(新規メンバー、ギフトまとめ買いの到着)。構造化された歓迎カードや、各言語の「…へようこそ」の文も含みます。 membership 翻訳された「MEMBERSHIP」が設定されます。 subtitle に、検出できた場合は連続期間・ティアを格納します。 nameColor 許可されている場合はメンバーシップの緑色を使用します。
giftpurchase ギフトまとめ買いのバナー(ytd-sponsorships-live-chat-gift-purchase). membership は次になります: gift_giver; subtitle に判明しているギフト数を格納します。次はありません: hasDonation または donoValue.
giftredemption 受取人向けのギフト受け取りのお知らせ。 membership は「MEMBERSHIP」になります。 subtitle に「Gifted by …」を含めます。
resub 「…にアップグレードしました」を含むアップグレードバナー。 subtitle に新しいティアラベルを格納します。 membership は「MEMBERSHIP」のままです。
superchat, supersticker, jeweldonation Super Chat、Super Sticker、寄付のお知らせカード、Jewelsを使うYouTube Gift(yt-gift-message-view-model). hasDonation に値を格納します。 event でYouTubeの有料アイテム種類を識別します。YouTube Giftが使う値: N Jewels 存在する場合、または 1 YouTube Gift YouTubeが個数を非表示にしている場合。ギフト画像には次を使用します: contentimg、ギフトのラベルには次を使います: subtitle、最小限のギフト情報は次にも複製します: meta.youtubeGift.
jeweldonation ギフト効果 YouTubeがライブチャット上にアニメーション付きJewelギフトを表示したとき(ytls-gift-overlay-item-view-model). 専用のGIF・メディア送信先へ直接送ります。通常のギフト行を重複させずにアニメーションを再生できます。 contentimg にアニメーション素材を格納し、 meta.youtubeGift.animationUrl/animationDescription エフェクトの詳細を保持します。
reaction YouTubeのライブ絵文字ファウンテンに視聴者のリアクションが現れたとき。 専用のリアクション送信先へ直接送ります。匿名の絵文字と画像URLは次に保持します: chatmessage/contentimg 、次の配下: meta.reactionType/reactionImage。ライブで確認されている種類には❤、😄、🎉、😳、💯があります。
thankyou 寄付額はあるもののチャット本文がない場合の代替メッセージ。 保持する値: hasDonation を設定し、オーバーレイ用に「寄付ありがとうございます!」を自動で挿入します。
redirect YouTubeのリダイレクトバナーがライブチャットに表示されたとき(レイド通知に最も近いもの)。 DOMのみの取り込み元: yt-live-chat-banner-redirect-renderer。設定する値: event → redirect で、次を使います: membership をラベルに使い、オーバーレイが他のシステム通知と同様に描画できるようにします。
viewer_update Social Streamの視聴者エンドポイントを30秒ごとに取得します(利用枠エラー時はページのスクレイピングへ切り替え)。 meta はライブ視聴者数の整数で、次の集計に使います: viewer_updates をバックグラウンドスクリプトで処理します。

メンバーシップのブロックでは次も設定します: membership をモデレーター・メンバーのチャットに使う一方、 subtitle には月数またはティア名を格納します。 sourceName/sourceImg 一度だけ設定されます: getChannelInfo が成功した場合。標準DOMチャットには現在、次が含まれます: meta.messageId YouTubeがネイティブのライブチャットメッセージIDを公開している場合。ドックはこれを削除同期に使用します。

YouTube – WebSocket・Data API取り込み

実装: sources/websocket/youtube.html、共有ヘルパーの場所: shared/

  • 既定で使うOAuthスコープ: youtube.readonly および youtube.channel-memberships.creator。任意の書き込み権限で追加されるもの: youtube.force-ssl をチャット送信、モデレーション、BAN、配信詳細の編集に使います。YouTubeにはチャット専用の書き込みスコープがないため、Googleは広範なYouTube管理権限として表示する場合があります。
  • チャンネル統計には個別設定のスイッチが適用されます(showsubscount, showviewercount).
  • APIでは独自のバッジ画像を取得できません。代替バッジには、以下に示す絵文字アイコンを使います。
  • APIが次を明示的に報告したとき: authorDetails.isChatModerator: true、チャット、Super Chat、Super Sticker、YouTube Gift、メンバーシップギフトのペイロードには次を含めます: mod: true。モデレーター状態を推測したり、イベント間でキャッシュしたりしません。
  • 新しい登録者の通知が使う値: myRecentSubscribers API(5分ごとに取得)。注意:結果が遅れたり不完全だったりする場合があります。公開されている登録だけを識別できます。
  • YouTubeのリダイレクトバナーはData APIでは提供されないため、 redirect は標準DOMキャプチャでのみ利用できます。
イベント 発生する条件 ペイロードの補足
superchat Data APIの履歴または配信の定期取得によるSuper Chat項目。 hasDonation サイトの金額表記(通貨と値)を保持します。 event の場合 superchat。古いWebSocketビルドで使っていた値: event: "donation" をこの行に使っていたため、受信側では従来の別名として引き続き受け付けても構いません。
supersticker Super Sticker(代替メッセージテキストのみ。APIから画像は取得できません)。 hasDonation に金額を格納します。 chatmessage にデコード済みの説明文を格納します。
jeweldonation YouTube giftEvent メッセージを、視聴者がJewelsをギフトに交換したときに送ります。 hasDonation に格納する値: N Jewels、または 1 YouTube Gift YouTubeが個数を非表示にしている場合。 contentimg 公開されている場合はギフトアセットのURLを使用します。 subtitle にギフトラベルを格納します。 meta.youtubeGift に追加のギフト情報を格納します。
sponsorship 新しいメンバーの加入元: newSponsorEvent. membership は次になります: new_sponsor または new_member; meta に含まれるもの: originalEventType、期間、レベル情報。
resub メンバーシップの更新またはティアのアップグレード。 membership は次になります: renewed_member (更新)または upgraded_member (アップグレード); subtitle ティアを表示します。
giftpurchase API経由で購入したギフトのまとめ買い。 membership 設定する値: gift_giver; subtitle に個数・ティアを列挙します。次はありません: hasDonation または donoValue.
giftredemption ギフト受け取り通知。 membership gift_recipient。バッジの既定値は🎁です。 subtitle は贈られたティアを示します。
membermilestone マイルストーンチャット(memberMonth または displayMessage が存在する場合)。 membership member_milestone; subtitle 月数とティアを要約します。 meta に未加工のマイルストーン対応情報を格納します。
viewer_update 視聴者通知が有効な場合の配信統計(同時視聴者数)。 meta は整数の件数で、DOMスクリプトと一致させ、受信側が両方の流れを統合できるようにします。ドックで次を使うと、 &showviewercount 視聴者数の収集を70分間要求し、全体設定を恒久的に変更することなく、その要求を1時間ごとに更新します。
likes_update 公式の動画統計を定期取得。条件: プラットフォームのいいね合計を送信(Send platform like totals) が有効な場合です。 meta は現在の動画のいいね数を表す整数です。値が変わったときに加え、変わらない場合も定期的に送り、受信側の状態を新しく保ちます。全体設定の captureliketotals 設定でこれを有効にします。従来の captureyoutubelikes は互換性用の別名として残ります。ポップアップのドックごとの設定を有効にすると、 &showlikecount のオプションは、これらの全体取り込み設定も永続的に有効にします。一方、URLパラメーターを手動追加する場合は描画だけを制御します。表示オプションをオフにしても、全体の収集は無効になりません。
subscriber_update チャンネル統計(登録者数)の定期取得。条件: showsubscount が明示的に無効化されていない場合です。 meta は登録者合計です。UIがダッシュボードのカウンターを更新します。
view_update チャンネル統計(累計視聴回数)の定期取得。条件: showviewercount またはハイプモードが有効な場合です。 meta は視聴回数の整数です。
live_chat_ended 紐づけた配信のライブチャットが利用できなくなったとき。 meta.streamTitle 配信メタデータがキャッシュされている場合に設定されます。
user_banned userBannedEvent をライブチャットAPIまたはgRPCストリームから取得します。 モデレーションウィジェット用の、メタデータのみのイベント。 meta にユーザー名・表示名、チャンネルID、アバター・プロフィールURL、モデレーター、BAN・タイムアウトの期間、永久かどうかを含めます。
new_follower 新しい登録者の検出元: myRecentSubscribers API(5分ごとに取得)。 chatname は登録者のチャンネル名です。 chatmessage は、YouTubeソースページで登録通知メッセージを有効にしない限り空です。 meta に含まれるもの: channelId, title, subscribedAt、まとめたバーストでは次を追加します: grouped, count, others、および subscribers。注意:結果が遅れたり不完全だったりする場合があります。公開されている登録だけを識別できます。

APIからのチャット転送が使う形式: meta.plainText にプレーンテキストのメッセージを格納し、リッチな次の値も保持します: chatmessage の内容です。HTMLではなくテキストで、Unicode絵文字は含む場合があります。メンバーシップバッジの代替には絵文字を使います(⭐, 💝, 🏅など)を使い、DOM取り込みと一致させます。通常チャットのペイロードには次も含めます: meta.messageId これにより、ドックでの削除操作をYouTubeのモデレーションAPIに送り返せます。

YouTube登録者通知(new_follower)

Social Streamでは、次を使って新しいYouTube登録者を検出できます: myRecentSubscribers のAPIエンドポイント。Streamlabsの登録通知に似た仕組みです。

動作の仕組み:

  • YouTube APIで最近の登録者を5分ごとに取得します
  • 確認済みの登録者をlocalStorageで追跡し、新しい登録者を検出します
  • 送信する値: new_follower イベントに、登録者の名前、アバター、チャンネルIDを含めます
  • 登録通知メッセージは既定で無効です。有効にすると、次の現在の翻訳文字列を使います: alert-just-subscribed
  • 既定では新規登録者が3人を超えるまとまった更新を集約し、再接続時にオーバーレイやEvent Flowへ大量に流れないようにします
  • 拡張機能設定でWebSocketモードの有効化が必要です

制限事項(Social StreamではなくYouTube APIの制約です):

  • 配信までの時間は保証されません – SSNは5分ごとにポーリングしますが、APIの結果は遅延したり不完全だったりする場合があります。固定の4時間枠を前提にしないでください。
  • 公開の登録のみ – 登録チャンネル一覧を非公開にしている登録者は、アラートの対象になりません。YouTubeでは登録情報は既定で非公開です。
  • チャンネル所有者のみ – 登録者アラートを受信できるのは、自分が所有し、そのアカウントで認証したチャンネルのみです。
  • API利用枠の使用量 – ポーリング1回につきAPIを1単位消費します。5分間隔では、1日あたり約288単位を使用します(標準の1日あたりの割り当ては10,000単位)。

Event Flowエディターのトリガー: 使う項目: data.event === "new_follower" および data.type === "youtube"

YouTube WebSocket:イベント・メンバーシップ早見表

data.event data.membership 状況
sponsorshipnew_sponsor新しいメンバーの通知元: newSponsorEvent
sponsorshipnew_member新しいメンバーの通知元: processMembership
resubrenewed_memberメンバーシップ更新
resubupgraded_memberティアのアップグレード
giftpurchasegift_giverチャンネルへのメンバーシップギフト
giftredemptiongift_recipientメンバーシップギフトを受け取った
membermilestonemember_milestoneメンバーシップの継続記念チャット
superchat-Super Chat
supersticker-Super Sticker
user_banned-メタデータのみのBAN・タイムアウトイベント
new_follower-新しい登録者(定期取得。遅れる場合あり)

Twitch – 標準DOM取り込み

実装: sources/twitch.js

  • Twitchチャットを開いたままにしてください。メンバーシップやユーザー通知は、Twitchが表示した時点で取り込まれ、配信者・モデレーターのアカウントに限定されません。アカウント固有の機能には認証が必要な場合があります。
  • 視聴者数リクエストの送信先: https://api.socialstream.ninja/twitch/viewers を30秒ごとに行います。
  • フォロワー通知、レイド、完全なイベント対応向けを使うには、拡張機能設定でWebSocketモードを有効にします。
  • 視聴者が共有する連続視聴通知は既定で無効で、次の設定が必要です: Twitchの連続視聴を表示(Show Twitch Watch Streaks) 設定。
  • 任意で有効にする PluralMind 設定によって次が置き換わる場合があります: chatname, nameColor、プロキシ経由にした部分: chatmessage、代名詞のテキストバッジを追加する場合もあります。 username はTwitchのログイン名のままです。関連する削除には次が含まれます: delete.meta.pluralmind これにより、ドックはその安定したログイン名を使用します。
イベント 発生する条件 ペイロードの補足
reward チャンネルポイント交換カード(7TV報酬コンテナーを含む)。 chatmessage に交換テキストを格納します。 membership は変更されません。
giftpurchase 「ユーザーがチャンネルでX件のサブスクを贈っています」などのシステム行。 chatmessage はシステム行で、オーバーレイがギフトキャンペーンを強調できるようにします。
subscription_gift サブスクギフトの通知(「ユーザーが…にサブスクを贈りました」)。 強調表示フィルター向けのイベントとしてマークします。 membership は受信者のバッジラベルのままです。
viewer_update Social Streamの視聴者プロキシを30秒ごとに取得します(エラー時は0)。 meta は整数の視聴者数です。
hype_train Twitchの固定コミュニティハイライトが、ポップアウトチャットに有効なHype Trainを表示したとき。 メタデータのみのDOMによる代替。設定する値: meta.sourceMode 設定する値: dom。表示されているレベル、タイマー、次の値を使います: meta.progressPercent TwitchがEventSubのポイント合計を公開していない場合。
community_highlight Twitchの「Community Highlight」ウィジェット内の要素。 meta は自動化フック用に抽出したハイライトのテキストです。
knock チャットの上に表示されるStream Togetherのコラボ招待。 chatmessage に招待文を格納します。 chatname は、取得できればアラートのユーザーから導出します。
watch_streak 視聴者が共有を選んだ、Twitchチャットに表示される連続視聴の通知。 meta.streakCount に検出できた表示人数を格納します。 meta.milestoneId 利用可能な場合はDOM通知の識別子を使用します。

Bits・Cheersの格納先: hasDonation (例:「500 bits」)。ただし、 data.event は空のままです。寄付ウィジェットの表示には、そのフィールドを使用してください。サブスクの継続情報は次に表示されます: subtitle バッジが月数を公開している場合。

Twitch – EventSub・WebSocket

実装: sources/websocket/twitch.js 共有コアを使用します: providers/twitch/chatClient.js

  • OAuthスコープ: chat:read, chat:edit, user:write:chat, bits:read, moderator:read:followers, moderator:read:chatters, channel:read:subscriptions, channel:read:hype_train, channel:moderate, moderator:manage:banned_users, moderator:manage:chat_messages, channel:manage:broadcast, channel:read:redemptions, channel:read:ads, channel:manage:ads。配信者トークンで、サブスク登録者数・フォロワー数を取得できます。
  • EventSubによるイベント配信に加え、Helixで視聴者・フォロワー・サブスク登録者の合計を定期取得します。
  • WebSocketモードがリアルタイムで提供するもの: フォロワー通知、サブスクイベント、レイド、Cheer、Power-up、チャンネルポイント交換、Hype Trainメタデータ。
  • Shared Chatの行が使うTwitch IRCの値: source-room-id 設定先: sourceName/sourceImg 接続先チャンネルと異なる場合、元のチャンネルを含めます。
  • 視聴者が共有する連続視聴通知は既定で無効で、次の設定が必要です: Twitchの連続視聴を表示(Show Twitch Watch Streaks) 設定。
  • 任意で有効にする PluralMind 設定によって次が置き換わる場合があります: chatname, nameColor、プロキシ経由にした部分: chatmessage、代名詞のテキストバッジを追加する場合もあります。 username および userid はTwitchの識別情報を保持します。関連する削除には次が含まれます: delete.meta.pluralmind これにより、ドックはそれらの安定したフィールドを使用します。
イベント 発生する条件 ペイロードの補足
cheer EventSubのCheer通知 channel.bits.use. hasDonation 「N bits」。 meta.bits は数値です。 chatmessage 元のメッセージを保持します。識別されたCheer送信者には次が含まれます: chatimg.
powerup EventSubからの組み込み・カスタムPower-up通知 channel.bits.use. イベント専用ペイロードで、次は空です: chatmessage 、次はありません: hasDonationとなるため、通常のチャット行は作成されません。 meta.bits は数値で、 meta.powerUp Twitchのサブタイプ、タイトル/報酬ID、エフェクトの詳細、および提供されたメッセージ本文を、利用可能な場合に保持します。
new_subscriber channel.subscribe または次を持つUSERNOTICE: msg-id=sub. meta に含まれるもの: { userId, tier, isGift }。サブスク登録者合計が取得できれば、キャッシュした合計を増やします。視聴者合計は別に定期取得します。
resub channel.subscription.message またはUSERNOTICEの msg-id=resub. meta に連続月数と累計月数を格納します。 chatmessage に再サブスクのテキストを含めます。
subscription_gift channel.subscription.gift またはUSERNOTICEの msg-id=subgift. meta でギフト合計とティアを提供します。 chatmessage アクションを要約します。
reward channel.channel_points_custom_reward_redemption.add. meta に報酬ID、タイトル、コスト、プロンプト、ユーザー入力、交換ID・状態、旧別名を含めます。最上位の次の値はありません: reward オブジェクトをこのEventSubハンドラーが送信します。古い受信側では、次を表示する場合があります: channel_points を非推奨の別名として使います。
raid EventSub channel.raid またはUSERNOTICEの msg-id=raid. meta = { fromId, fromLogin, viewers }.
watch_streak 任意で有効化するTwitch IRC USERNOTICE。設定する値: msg-id=viewermilestone および msg-param-category=watch-streak. 視聴者を次に含めます: chatname、Twitchの通知文は chatmessage、および meta.streakCount/meta.milestoneId。その他の一般的なUSERNOTICE種類は引き続き無視します。
new_follower channel.follow EventSub通知。 自動で増加する値: follower_update; meta 記録する情報: { userId, followedAt }.
viewer_update Helix streams を30秒ごとに定期取得します。 meta は整数の視聴者数で、設定で視聴者統計を有効にしない限り送信しません。
follower_update Helixのフォロワー合計。フォローイベント後、または定期取得時に更新します。 meta は整数のフォロワー数です。
subscriber_update Helixのサブスク登録者合計(subscriptionスコープ付き配信者トークンが必要)。 meta は整数の登録者数です。
stream_online / stream_offline EventSub stream.online/stream.offline. meta.startedAt オンラインイベントに含まれます。オフラインでは空のオブジェクトを使用します。
ad_break / ad_request / ad_schedule 広告管理APIの応答(channel.ad_break.begin、手動の POST channels/ads, GET channels/ads). meta で、ダッシュボード向けに期間、依頼者、スケジュールのペイロードを詳しく示します。
hype_train EventSub channel.hype_train.begin, channel.hype_train.progress、および channel.hype_train.end v2通知。 メタデータのみのイベント:次はありません: chatname または chatmessage. meta.phase の場合 begin, progress、または end; meta にトレインID、レベル、進捗、目標、合計、支援者、時刻フィールド、共有トレインのフラグ、次の値を含めます: trainType。トレジャートレインは次で通知されます: meta.trainType Twitchがラベルを付けている場合。
user_banned EventSub channel.ban、またはIRCの CLEARCHAT を、EventSubのBANイベントが使えない場合の代替にします。 モデレーションウィジェット用の、メタデータのみのイベント。 meta にユーザー名・表示名、ユーザーID、アバター・プロフィールURL、モデレーター、理由、BAN・タイムアウトの期間、永久かどうかを含めます。

チャットペイロードは共有プロバイダーを再利用するため、 data.event は`/me`で設定します(action)と、従来の bits タグはEventSubのフロー以外でも適用されます。TwitchのGIFメッセージはGiphyのアセットを次に格納します: contentimg、次はそのままにします: chatmessage は空にし、Twitchの代替ラベルを次に保持します: meta.gifLabel。重複除外と削除処理はメッセージIDを使います。SSN経由で送ったメッセージは、ネイティブの次の値を使います: message_id をTwitchのIRCエコーから次に取得します: data.id.

Twitch Hype Trainのメタデータ

hype_train はメタデータのみで、次を含みません: chatname または chatmessage。ダッシュボードでは、次の値で既存のトレイン表示を更新してください: meta.id で更新し、進捗更新のたびにチャットへ追加しないでください。Meta Data Bar(meta.html)は、これらのイベントを上部の進捗バーとして表示します。

フィールド 入力するコマンド: 補足
type文字列常に twitch.
event文字列常に hype_train.
meta.phase文字列begin, progress、または end.
meta.id文字列安定したトレインID。1つの表示中トレインウィジェットを追加・更新するために使います。
meta.broadcasterUserId文字列Twitch配信者のユーザーID。
meta.broadcasterUserLogin文字列Twitch配信者のログイン名。
meta.broadcasterUserName文字列Twitch配信者の表示名。
meta.total数値 | nullTwitchがトレインについて報告する支援合計値。
meta.progress数値 | null現在のレベル目標に対する進捗。
meta.goal数値 | null現在のレベル目標。
meta.progressPercent数値 | nullTwitchがポップアウトの進捗バーだけを提供する場合の、DOMによる代替パーセント値。
meta.level数値 | null現在または終了時のトレインレベル。
meta.topContributions配列主な支援者。各項目に含まれる値: userId, userLogin, userName, type、数値の total.
meta.lastContributionオブジェクト | null直近の支援。次と同じ支援形式を使います: topContributions.
meta.sharedTrainParticipants配列Twitchが提供する場合の、共有トレイン参加者の未加工データ。
meta.startedAt文字列トレイン開始のISOタイムスタンプ。
meta.expiresAt文字列現在のトレインの期限を表すISOタイムスタンプ。
meta.endedAt文字列トレイン終了のISOタイムスタンプ。終了前は空です。
meta.cooldownEndsAt文字列クールダウン終了のISOタイムスタンプ。終了前は空です。
meta.isSharedTrain真偽値Twitchが共有トレインとしてマークした場合はtrue。
meta.trainType文字列通常は regular。Twitchが識別したトレジャートレインは、ここで通知されます。
meta.allTimeHighLevel数値 | nullTwitchが提供する場合の、過去最高のトレインレベル。
meta.allTimeHighTotal数値 | nullTwitchが提供する場合の、過去最高のトレイン合計。
meta.sourceMode文字列任意のソースマーカー。例: dom.
meta.eventSubType文字列元のEventSub種類: channel.hype_train.begin, channel.hype_train.progress, channel.hype_train.end、または dom.community_highlight.

Twitch EventSub:イベント早見表

data.event 状況
new_followerユーザーがチャンネルをフォローした
new_subscriber新規サブスクリプション
resubメッセージ付きの再サブスク
subscription_giftチャンネルへのサブスクギフト
cheerBitsによるCheer
powerup組み込み・カスタムPower-upが使用された
rewardチャンネルポイントの交換
raid受信レイド
viewer_update同時視聴者数
follower_updateフォロワー合計
subscriber_update登録者合計
stream_online配信が始まった
stream_offline配信が終了した
ad_break広告ブレイクが開始した
hype_trainHype Train・Treasure Trainの状態メタデータ
user_bannedユーザーがBANまたはタイムアウトされた

OBS Flow Actions

実装: actions.html OBS WebSocket v5のイベント経由で、 dock.html 代替としてのOBSブラウザソースイベント

  • Event Flowエディター・バックグラウンドと同じSocial StreamセッションでFlow Actionsオーバーレイを開くか、OBS内でドックを読み込んだままにしてください。
  • OBS 28以降でOBS WebSocket v5を設定してください。既定のURLは ws://127.0.0.1:4455.
  • これらはEvent Flowのシステムイベントです。次は含みません: chatname または chatmessage、追加のOBS情報は次の中に保持します: meta.
イベント 発生する条件 ペイロードの補足
stream_started OBSが配信出力の開始状態への移行を通知したとき。 type の場合 obs; event の場合 stream_started; meta.source の場合 obs-websocket または obs-browser-source; meta.outputState には未加工のOBS出力状態を含めることがあります。
stream_stopped OBSが配信出力の停止状態への移行を通知したとき。 type の場合 obs; event の場合 stream_stopped; meta.outputActive は次の場合があります: false.
recording_started OBSが録画開始を通知したとき。 type の場合 obs; meta.obsEvent でOBSイベントのソースを識別します。
recording_stopped OBSが録画停止を通知したとき。 type の場合 obs; meta.outputState には未加工のWebSocket状態を含めることがあります。
scene_changed OBSが配信中のアクティブシーンを変更したとき。 type の場合 obs; meta.sceneName にOBSが提供するシーン名を格納します。
media_ended OBSのメディア入力が再生を終了したとき。 type の場合 obs; meta.inputName および meta.inputUuid でメディア入力を識別します。
replay_buffer_saved OBSがリプレイバッファを保存したとき。 type の場合 obs; meta.savedReplayPath には保存されたリプレイのパスを含めることがあります。

Streamlabs Alert Box

実装: sources/streamlabs.js (アラートボックスのDOM)。任意のソケットブリッジ: sources/websocket/streamlabs.html

  • アラートを表示するため、Streamlabsのアラートボックスをタブまたはブラウザソースで開いたままにします。コンテンツスクリプトがアラートのDOMからメッセージ、画像、トークンを読み取ります。
  • 寄付形式のアラートが設定する値: hasDonation (例:「$10 USD」「100 bits」)と、任意の donoValue は米ドルです。
  • 推定されるイベント種類: follow, subscription, gift, cheer, donation, superchat, raid, redeem, merch, sponsor.
  • ソケットブリッジでは、StreamlabsのSocket APIトークンを貼り付けて接続します。アラートボックスのページなしでアラートを転送できます。
イベント 発生する条件 ペイロードの補足
donation 投げ銭、チャリティー、JustGiving、一般的な「寄付しました」アラート。 hasDonation 通貨の表記(「$36」や「$10 CAD」など)を保持します。 donoValue は米ドル額を取得できる場合だけ提供します。他の単位付き金額には共通の通貨換算を使います。
cheer TwitchのBits・Cheerアラート。 hasDonation は「100 bits」となり、 donoValue に米ドル額を格納します。
subscription サブスクリプション通知。 標準フィールドを設定します。 chatmessage はアラート行です。 meta.tokens にトークン化した値(name、amount、levelNameなど)を格納します。
gift 贈られたメンバーシップ・サブスク。 meta.tokens.amount にはギフト数を表示する場合があります。 meta.tokens.levelName にティアを格納できます。
follow フォロワー通知。 寄付フィールドなし。 chatname アラート名のトークンを反映します。
raid レイド通知。 meta.tokens.count に取得できるレイド人数を格納します。
redeem Cloudbotの交換アラート。 meta.tokens.product に交換アイテムを格納します。
merch グッズ購入アラート。 meta.tokens.product に購入した商品名を格納します。
superchat YouTubeまたは対応するアラート連携からのSuper Chat形式のアラート。 hasDonation に金額を格納します。受信側では、従来の次の値も引き続き受け付けられます: donation の別名です。
sponsor Streamlabsが通知するスポンサー・メンバー形式のアラート。 標準フィールド。本文に金額がなければ寄付にはなりません。

TikTok Live – DOM取り込みとTikFinityフィード

実装: sources/tiktok.js をTikTok本来のページに使い、 sources/tikfinity.js をTikFinityのアクティビティフィードウィジェット・iframeに使います。SSAppには、最も幅広いイベントを扱うネイティブTikTok連携もあります(SSAppのドキュメントを参照)。

  • 配信者のライブページで動きます。ギフト・いいね・フォローのバナーは、セッションが認証済みの場合だけ取得できます。
  • TikTokでは多くのイベントをDOM検出で取得します WebSocketモードを必要とせず、 – ギフト、フォロー、いいね、および任意で有効にした参加通知を、表示された行から取得します。
  • TikFinityのウィジェットページ: tikfinity.zerody.one/widget/activity-feed* も動作します。埋め込みアクティビティフィードのiframeは、チャット、フォロー、共有、ギフト、サブスク、任意の参加通知、宝箱について同じ標準TikTokペイロードフィールドを送信します。
  • 追加のAPI認証は不要です。
  • SSAppネイティブモード は引き続き、ページ/ウィジェットのキャプチャ経路に加えて次のイベントを追加します: question_new, emote, viewer_update、任意で有効にする集計値 likes_update.
イベント 発生する条件 ペイロードの補足
gift ギフトバナー行、または DivGiftMessage の項目です。 hasDonation を「N coins」に変換します(代替でギフト表を参照)。 membership 利用可能な場合はバッジのテキストを使用します。
joined 参加通知。全体設定の次の項目が条件です: 参加イベントを取り込む(Capture "joined" stream events) 設定が有効な場合。 共有通知は除外します。 chatname は、一部のシステム文字列では空の場合があります。
followed ソーシャルカードから解析したフォローメッセージ。 次を保証します: chatname が存在することを確認してから送信します。
shared TikFinityの共有行。 chatmessage は表示された共有テキストです。
subscribe TikFinityのサブスクリプション行。 membership の設定値: SUBSCRIBER.
envelope TikFinityの宝箱行。 meta.coins および meta.canOpen に宝箱の詳細を格納します。
liked TikTokのソーシャルカードから生成する、いいねのまとまりの要約。 chatname はTikTokが公開する場合に含めます。匿名・システムのいいねカードも送信する場合があります。TikTokは通常のバックグラウンド経路で送り、バックグラウンドはReactions Overlayへ1コピーを転送します。その後、次の場合だけメインのチャット・イベント処理へ進めます: capturelikeevent が有効な場合です。
likes_update SSAppがTikTok LIVEの正式な累計値を受信したとき。条件: captureliketotals が有効な場合です。 meta は現在の合計を表す整数です。SSAppは最初の値をすぐに送り、集中した更新をまとめて最大5秒に1回にし、最新値を約90秒ごとに再送し、配信終了時に0を送ります。これは視聴者固有の次のイベントとは別です: liked のイベントです。
true (真偽値) TikTokが細分類を提供しない、一般的なソーシャル・システム通知。 使う項目: chatmessage の内容で表示方法を決めます。真偽値の true は「システムイベント — 種類不明」を意味します。

membership はバッジのツールチップ(サブスクのティア)を反映します。アバターキャッシュが保持する値: chatimg はイベント間でも有効です。DOMでモデレーターの色が表示されない場合、スクリプトは次をクリアします: nameColor。TikFinityのギフト行は次も設定します: contentimg には、利用可能な場合にギフトアイコンを設定します。ネイティブDOMとTikFinityの連続ギフト更新には次が含まれます: meta.tiktokGiftStreakId, meta.tiktokGiftCount、および meta.tiktokGiftQuietMs これにより、オーバーレイで繰り返しの更新をまとめられます。従来の連続ギフトIDはページインスタンスごとに固有です。ギフトのメタデータには次が含まれる場合もあります: tiktokGiftMessageId (元のTikTokメッセージID)、 tiktokGiftSenderId, groupId, giftId, giftName, streakable、および repeatEnd。ネイティブIDは異なる取り込みウィンドウ間の同じギフトを識別します。0以外のグループIDを送信者ID・ギフトIDと組み合わせることで、連続ギフトの累計更新を識別します。SSAppのWebSocket取り込みでも、連続ギフト確定後に同じフィールドを提供します。その値は count は互換性のために保持されます。各ギフトの転送時に寄付の切り替え設定が確認されます。TikTokの寄付を無効にすると、次が削除されます: hasDonation および donoValue ギフトイベントとメタデータを保持します。TTSはこれらの識別情報を使用して更新をまとめ、完了済みの重複を最大10分間抑制します(上限付きキャッシュ)。TikTokのギフトは送信者、数量、ギフト名の順に読み上げます。古いペイロードでは既存の連続ギフトIDとメッセージ本文を使用し、ギフトのテキストだけから識別情報を推測することはありません。TikTokギフトの読み上げには、UI言語とは別に、選択したTTS/音声の言語を使用します。告知の動詞は英語、スペイン語、ポルトガル語、フランス語、ドイツ語、イタリア語、オランダ語に対応しています。その他の言語では、英語の動詞を加えず、送信者、数量、ギフト名を使用します。簡略TTSでも、この中立的な形式を維持します。ギフト名はプラットフォームから提供されたままです。ギフト一覧やチャットメッセージを自動翻訳したり、配信の言語を推測したりする機能ではありません。

連続ギフトの更新では、個数と寄付ラベルは累計です。1、2、3はギフト3個であり、6個ではありません。合計を計算する側は、その連続IDですでに確認した最大量からの増加分だけを加えてください。標準取り込みは旧ギフトクラスと現在の画像・個数行に対応し、どちらも次を保持します: event: "gift" および hasDonation。価格不明の場合はギフト数・名前を表示用に保持し、1ギフトあたり1コインの米ドル換算を使います。ソースが提供する donoValue が優先されます。表示されたギフトのメタデータから次が提供される場合があります: coinsPerGift または diamondsPerGift を優先し、必要な場合だけギフト表や既定値を使います。標準・TikFinityのコイン推定とSSAppネイティブのダイヤ推定は、それぞれ従来の別々の換算を使います。どちらも現金の受取額を保証しません。

Whatnot

実装: sources/whatnot.js

  • チャットが見える状態でWhatnotのライブ番組ページを開いてください。既存のWebSocket取り込みが、チャット、オークション・販売通知、支払い失敗、レイド、寄付、高速な視聴者更新を提供します。商品・プレゼント企画のスナップショットは、引き続き番組画面のDOMセクションに依存します。
  • 配信イベントを取り込む(Capture Stream Events) でWhatnotのシステムイベントとオークション・カタログのメタデータ更新を制御します。参加行には次も必要です: 参加イベントを取り込む(Capture "joined" stream events)。視聴者数には引き続き視聴者数・ハイプのスイッチが適用されます。
イベント 発生する条件 ペイロードの補足
viewer_update ライブ配信のWebSocket更新による視聴者数の変化。代替としてDOMを定期取得します。 meta は整数の視聴者数です。
donation WhatnotのWebSocketによる投げ銭とコミュニティブースト支援イベント。 hasDonation に整形した金額を格納します。WebSocket固有の文脈の格納先は meta.
raid 履歴のアクティビティ応答を含む、WhatnotのWebSocketレイドイベント。 meta.numRaiders はWhatnotが提供する場合に含めます。
joined 正規化した本文が次で始まるチャット行: joined、条件: 参加イベントを取り込む(Capture "joined" stream events) が有効な場合です。 参加通知には文字列のイベントラベルを使います(真偽値の次の形式ではありません: true).
auction_update ライブフッターのオークション状態(落札者・入札首位の文、タイトル、入札数、価格、タイマー、売却状態)が変わったとき。WebSocketのオークションライフサイクルパケットで更新が早まる場合があります。 メタデータのみのイベント。次はありません: chatname/chatmessage。データの格納先: meta (例: meta.title, meta.bids, meta.price, meta.timer, meta.status).
commerce_update カタログのセクション(商品、Surprise Sets、今後のプレゼント企画)が変わったとき。WebSocketのプレゼント企画・商品ライフサイクルパケットで更新が早まる場合があります。 セクション件数と項目配列を含む、メタデータのみのスナップショットの格納先: meta.products, meta.surpriseSets、および meta.upcomingGiveaways.
auction_started, new_bid, auction_ended, product_sold 対応するライブWebSocket通知を受信したとき。これらは個別のイベントで、既存の表示用スナップショットとは別です。 platform/type: "whatnot"、プレーンテキストの chatname, userid 提供されている場合。商品名の格納先: subtitle、プレーンテキストの chatmessage 付随する値: textonly: true。利用できる識別子とオークション情報の格納先: meta: productId, auctionId, orderId, transactionId, livestreamId, bidId, bids, auctionEndTime、および status。任意の price は通貨の主単位で表し、次を伴います: priceText および currency 提供されている場合。
payment_failed 支払い失敗のライブWebSocket通知を受信したとき。 取得できる同じ購入者・商品・識別子フィールドに加え、 meta.paymentStatus: "failed"。次だけの場合: product.purchaserUserId で購入者を識別できる場合、次を設定します: userid を販売・支払いイベントに設定し、購入者名は空にします。別のオークションや以前のオークションから購入者を推測しません。
payment_succeeded 支払い成功のライブWebSocket通知を受信したとき。 meta.paymentStatus: "succeeded"として、その通知が提供する購入者、商品、注文ID、その他の許可フィールドを含めます。これは独立した支払いイベントのままで、次のイベントを重ねて送信しません: purchase または寄付にはしません。以前の売上に情報があっても、不足するフィールドは空または省略のままにします。

オークション・コマース表示の更新は、引き続きDOMに基づくスナップショットです。Event Flowで個別のWebSocketイベントに一致させるには、次を使います: イベント種類(詳細)(Event Type (Advanced))で次を選びます: 独自イベントを選択して正確な名前を入力します。ラベルには次を使えます: **{username}**\n{subtitle} 選択したテキストの重みが含まれます。条件では次を比較できます: meta.paymentStatus 付随する値: failed。次の値: インポートできるWhatnotラベルの例 が利用可能です。既存の配信イベント取り込み設定も引き続き適用されます。

追加の任意フィールド: meta.catalogProductId (パケットの product.productId), meta.parentProductId (product.parentId), meta.transactionType (Whatnotの販売形式をそのまま保持)、および meta.placeOrderErrorReason (Whatnotが提供する注文・支払いエラーコード)。これらの商品参照はカタログや親の出品を表し、注文IDの代わりではありません。在庫数を購入数として扱いません。

支払い成功の自動化には、次を設定します: イベント種類(詳細)(Event Type (Advanced)) トリガーの設定先: 独自イベント: payment_succeededを選び、ソースをWhatnotに絞ります。既存の条件やテンプレートでは、そのイベントの次の値を使えます: userid, chatname, subtitle および meta.orderId を直接使います。通知に必要な詳細が含まれていれば、以前の購入を記憶している必要はありません。

オークションの終了や商品の売却済み表示は、支払い成功を確認するものではありません。これらの通知は、支払い済みの次のイベントとして送信しません: purchase イベントとして扱い、寄付額は設定しません。成功イベントは、次を受信した場合だけ送信します: payment_succeeded 通知を受信した場合です。取り込み処理は支払い完了を定期照会せず、販売から推測もしません。他の paymentStatus 値は、キャプチャされたパケットで明示的に提供された場合にのみ転送されます。存在しない識別子は省略されます。商品IDだけでは複数の販売を指す可能性があるため、通知の関連付けには提供された注文/オークションIDを使用してください。キャプチャは購入を記憶せず、支払い更新との照合も行いません。そのようなワークフローはEvent Flowで明示的に設定する必要があります。既存の2つのキャプチャブリッジから短時間に届く重複パケットは抑制されます。元の注文/支払いオブジェクトは転送されません。

eBay Live

MonetizationのeBay出品者接続には、設定済みのSSN eBayサービスと出品者のOAuth同意が必要です。以下のeBay Live取り込みとは独立しています。サンドボックスモードはサンドボックス用出品URLを使い、購入者を「eBay Sandbox buyer」と表示し、メッセージに「Sandbox test purchase:」を付けます。サンドボックス購入は同じ購入仕様を保ち、テスト中に有効なアラートやチャット操作を実行する場合があります。実装済みの支払い仕様が送信する値: event: "purchase"。付随する値: type および platform 設定する値: ebay。選択した商品と一致する支払い済み注文が必要です。 id は安定した不透明な注文行識別子です。 chatname は「eBay buyer」です。 chatmessage はプレーンテキストです(textonly: true), subtitle は商品名で、任意の次の値を伴います: contentimg はその画像です。 meta.ebayPurchase に含まれる値: itemId, itemName, quantity、公開の url。購入者の識別情報、配送情報、 hasDonation または donoValue を含みます。支払いを証明しないスクレイピングのオークション・在庫更新とは異なります。

実装: sources/ebay.js

  • 開くページのいずれか: /ebaylive/events/<id>/chat または /ebaylive/events/<id>/stream。どちらも同じライブオークションフィードを受信します。
  • 公開WebSocketフィードは、オークション、入札、落札者、時間延長、在庫変更を提供します。読み取り専用のGraphQLクエリは出品詳細を提供します。ネットワークデータを取得できない場合は、引き続きDOM取り込みを代替として使います。
  • 配信イベントを取り込む(Capture Stream Events) でメタデータスナップショットを制御します(auction_update, commerce_update)。視聴者カウンターには、引き続き視聴者数・ハイプのスイッチが適用されます。
イベント 発生する条件 ペイロードの補足
viewer_update 有効なイベントの視聴者数が変わったとき(ヘッダー人数、またはライブイベントのバッジによる代替)。 meta は整数の視聴者数です。
follower_update 出品者統計エンドポイントからフォロワー数が返ったとき。 meta は整数のフォロワー数です。ソースは出品者エンドポイントを60秒ごとに取得しますが、エンドポイントは最大5分間キャッシュ値を返す場合があります。
auction_update 有効なオークションのメタデータが変わったとき。 メタデータのみのイベント。ネットワーク取り込みが設定する値: meta.sourceMode → network で、title、price、bidder、winner、bids、timer、endingAtを提供します。 meta.ebay にはeventId、listingId、GraphQLの出品レコード(listing)、現在の公開ソケット出品情報(eventListing)、最新のオークション更新(update)。カテゴリ、画像、通貨、数量、ケースブレイク詳細、オークション結果、時刻フィールドを保持し、平坦化でプラットフォーム固有の情報を失わないようにします。GraphQLレコードは取得時のスナップショットで、ソケットの出品と更新にはより新しいライブ状態が含まれます。初期接続・再接続時の履歴は現在のスナップショットに統合し、過去の落札として送信しません。表示対象の出品をすべて削除すると、次を送信します: status: "idle" 付随する値: cardCount: 0 これにより、オークションをクリアします。DOMフォールバックでは、プレイヤーカードまたはイベントプレビューのフィールドを保持します。
commerce_update カタログ・ライブイベントのスナップショットのセクションが変わったとき。 メタデータのみのスナップショットの格納先: meta。ネットワークモードに含まれるもの: eventId, navigation.viewerCount および playerCards に現在表示中の出品を格納し、それぞれ同じ詳細形式の ebay オブジェクトをオークションのスナップショットとして使います。空のカード一覧で削除済み出品を消去します。DOMの代替処理には次も含まれる場合があります: liveEvents, livePreview, currentEvent および upcomingEvents.
reaction eBay Liveがハート・リアクションのアニメーションを描画したとき。 専用のリアクション送信先へ直接送ります。 meta.reactionType の場合 heart。eBayはこれらのDOMアニメーションにユーザーごとの名前を提供しません。

eBayのメタデータイベントが意図的に省略する値: chatname/chatmessage。受信側オーバーレイの描画元: data.event + data.meta のみです。

Kick – 標準DOM取り込み

実装: sources/kick.js

  • プロフィール画像やサブスクバッジの取得には、認証済みセッションが必要です。
  • チャットテキストの照合とバッジによる限定的なイベント検出。視聴者数はスイッチを有効にすれば引き続き取得できます。
イベント 発生する条件 ペイロードの補足
gift ステッカー画像と表示されたKick通貨額から検出するKICKsギフト。 hasDonation が持つ値: N KICKs (1 KICK が1個の場合)を表示金額が取得できるときに使います。 contentimg にギフト画像を格納します。既存のメッセージ本文は保持します。
reward 報酬交換(「…を交換しました」)。 chatmessage に交換テキストを格納します。
true (真偽値) ギフトや報酬のパターンに一致しない一般的なシステム通知。 使う項目: chatmessage の内容で表示方法を決めます。真偽値の true は「システムイベント — 種類不明」を意味します。
viewer_update KickのチャンネルAPIを30秒ごとに取得します(視聴者統計が有効な場合のみ)。 meta は整数の視聴者数です。サブスク、フォロー、投げ銭には以下のKickブリッジを使ってください。

Kick – WebSocket・ブリッジ

実装: sources/websocket/kick.js 共有ヘルパーの格納先: providers/kick/core.js

  • Social Stream Kickブリッジ経由のOAuth。現在のスコープ: user:read, channel:read, channel:write, channel:rewards:read, chat:write, events:subscribe, moderation:ban, moderation:chat_message:manage、および kicks:read。トークンは自動で更新されます。
  • KickのWebhook準備には数分かかる場合があります。UIにはチャンネルごとの有効なサブスクリプションが表示されます。
イベント 発生する条件 ペイロードの補足
message ブリッジのチャットペイロード。 meta.plainText にプレーンテキストのメッセージを格納します(絵文字を含む場合があります)。バッジはプラットフォーム情報とプロフィールキャッシュを統合します。スレッド返信で設定する値: initial, reply、および meta.reply 返信の詳細またはキャッシュされた親メッセージが利用可能な場合。
reward channel.reward.redemption.updatedに加え、報酬交換に見えるブリッジのチャット・システムペイロード。 meta に報酬・交換ID、タイトル、コスト、状態、ユーザー入力、交換者を含めます。
new_subscriber channel.subscription.new. membership をサブスク登録者ロールに割り当てます。 meta に{ subscriber, plan }を含めます。
resub channel.subscription.renewal. meta.duration (月数)と meta.plan を利用できます。 subtitle 継続状況を要約します。
subscription_gift channel.subscription.gifts. meta.totalGifted, meta.gifter。バッジの代替には💝アイコンを使います。
donation イベント種類の特徴から検出した支援・投げ銭イベント。KICKsギフトが使う値: gift を以下に示します。 hasDonation に整形した金額を格納します。 meta に{ amount, currency, supporter, message, giftName }を格納します。
gift kicks.gifted (KICKsギフト)で、DOMスクレイパーと一致します。 hasDonation が持つ値: N KICKs (1 KICK が1個の場合)。 contentimg に取得可能なギフト画像を格納します。構造化されたギフト詳細の格納先は引き続き meta.
raid 次のような旧ホスト形式ソケットペイロードへの互換処理: App\Events\StreamHostEvent. 現在のKick公式イベント一覧には、レイド・ホストのサブスクリプションはありません。互換性のある旧ペイロードを受信した場合、標準の次のイベントに変換します: raid。現在のKickの運用では、これに依存しないでください。
new_follower channel.followed. フォロワーアイコンはプロフィールのキャッシュから取得します。 follower_update はKickが累計値を提供すると発生します。
follower_update ブリッジはWebhookペイロード内でフォロワー数を提供します。 meta は整数の合計で、ダッシュボードのフォロワー目標に使います。
stream_online / stream_offline livestream.status.updated. meta にKickからの未加工の状態本文(is_live、titleなど)を格納します。
viewer_update livestream.status.updated Kickが同時視聴者数を含めている場合。 meta は整数の視聴者数です。送信する値: 0 をオフライン時に送って、古いカウンターを消去します。
user_banned moderation.banned をブリッジ・Webhook、またはKickのチャットソケットのBANイベントから取得します。 モデレーションウィジェット用の、メタデータのみのイベント。 meta にユーザー名・表示名、ユーザーID、アバター・プロフィールURL、モデレーター、理由、BAN・タイムアウトの期間、永久かどうかを含めます。

プロフィール検索が使うもの: profileCache; mapBadges はKickのバッジ素材と、取得可能なキャッシュ済みSVGを統合します。KickがKICKsで寄付を通知した場合、ブリッジは次へ変換します: hasDonation に加え、 meta.amount 付随する値: currency の代替値は「KICKs」です。チャットペイロードに含まれる値: meta.messageId ブリッジがネイティブのKickメッセージIDを公開している場合。これにより、削除同期で正しいメッセージを指定できます。返信ペイロードには次が含まれます: meta.reply 親の値: messageId, author、および text 分かる場合。元のメッセージがキャッシュされていなくても、提供された返信の詳細は利用できます。キャッシュされたコンテキストがないIDのみの返信では、引用が表示されない場合があります。

Kick WebSocket:イベント早見表

data.event 状況
new_followerユーザーがチャンネルをフォローした
new_subscriber新規サブスクリプション
resubサブスクリプション更新
subscription_gift贈られたサブスク
rewardチャンネル報酬の交換、または報酬形式のチャット・システムメッセージ
donation投げ銭・支援イベント
giftKICKsギフトイベント
raid互換性維持用の旧ホスト・レイド入力。現在のKick公式サブスクリプションではありません
follower_updateフォロワー合計
stream_online配信が始まった
stream_offline配信が終了した
user_bannedユーザーがBANまたはタイムアウトされた

VPZone - WebSocket

実装: sources/websocket/vpzone.js

  • 接続先: wss://chat.vpzone.tv/ws?channel=USERNAME。OAuthが要求する権限: profile:read, chat:read, chat:write, channel:read, channel:write、および chat:moderate。Bearerトークンを手動で指定することもできます。
  • 平坦なVPZoneフレームの例: type: "msg" を標準チャットペイロードに正規化します。
  • プラットフォーム側の delete_message / clear_chat フレームは一致する行をドックから削除します。任意のスイッチで、ドックの削除・ブロックをVPZoneへ同期できます(チャンネル所有者のみ)。
  • チャンネル所有者はページ内のStream Infoパネルで、ライブ配信のタイトルとカテゴリを更新できます(Twitchソースページと同じ方式)。
イベント 発生する条件 ペイロードの補足
message VPZone msg, message, new_message、または chat_message WebSocketフレーム。 chatname の取得元: username; chatmessage の取得元: body。サブスク登録者・所有者・モデレーター・VIPのフラグは次へコピーします: chatbadges、最上位の役割フラグ、 meta。ネイティブIDの格納先: data.id および meta.messageId.
viewer_update VPZone presence フレーム。設定する値: count または同等の視聴者フィールド。 meta はライブ視聴者数の整数で、次の集計に使います: viewer_updates.
new_subscriber VPZone subscribe / subscription のフレームです。 membership はサブスクリプションのフラグがある場合、Subscriberに設定します。
subscription_gift VPZone gift / gift_subscription のフレームです。 Twitch、Kick、Rumble、Veloraと同じサブスクギフトのイベント名を使います。 subtitle にギフト数を格納します(x5)または受取人。
message + hasDonation VPZone system フレーム。設定する値: metadata.kind: "pixels_cheer" (Pixelsの投げ銭)。 寄付情報を含むチャット行。 hasDonation は金額ラベルです(例: 100 Pixels), meta.pixels その整数。 event は空のままです。このチップは次から判定してください: hasDonation。Kickブリッジのサポートイベントでは、代わりに次を使います: event: "donation".
message 返信 VPZone msg フレームが持つ値: metadata.reply_to (メッセージID、投稿者、抜粋。サーバー側で非正規化)。 Kickの返信と同じ表示: initial に「投稿者: 抜粋」のラベルを格納し、 reply 元の返信テキスト、 meta.reply 構造化された対象。次の設定に従います: 「replying to」を除外 設定。
raid VPZone raid フレーム。設定する値: metadata.kind: "incoming". 送信したレイドのフレームは除外します。 meta.viewers に、提供される場合はレイド人数を格納します。
shoutout VPZone shoutout フレーム(!so コマンド)。 meta.targetUser は紹介されたチャンネル名です。
reward VPZone system フレーム。設定する値: metadata.kind: "channel_points_redeem". チャンネルポイントの交換。Twitch報酬と同じイベント名を使います。
stream_online / stream_offline VPZone system フレーム。設定する値: metadata.kind: "stream_started" / "stream_ended". チャンネル名に紐づけます(フレームには実行者情報がありません)。
new_follower VPZone follow のフレームです。 標準のフォロワーイベント形式に変換します。
joined VPZoneの参加・入室形式のWebSocketイベント。条件: 参加イベントを取り込む(Capture "joined" stream events) が有効な場合です。 チャット形式のシステムイベントに変換し、VPZoneの実行者メタデータを次に格納します: meta.

Joystick

実装: sources/joystick.js, sources/inject/joystick-ws.js、および sources/websocket/joystick.js

  • 通常のJoystick 2.0ウェブサイトソースは、ログイン済みの次のページで動きます: /u/<channel>/chat のページです。ページの次のデータを読み取ります: ChatChannel, WhisperChatChannel, EventLogChannel、および SystemEventChannel Action Cableフレームを使い、Electronや再接続時は表示済み行に切り替えます。
  • ウェブサイトのチャットメッセージは、YouTube、Twitch、Kickと同じ基本フィールドを使います。ネイティブの id, chatname, chatmessage, chatimg, chatbadges, nameColor, membership, mod, private, username/userid、および timestamp Joystickから提供される場合。ソケットでユーザー名の色が省略されている場合は、表示された行から同じ値を取得します: nameColor フィールドは、色対応のドックで使います。
  • ウェブサイト側のメッセージ編集は一致するドック行を置き換え、削除・ミュート・ブロックはネイティブIDまたはユーザー名で一致する行を削除します。
  • 別のWebSocketソースではJoystickのボット認証情報を使います(client_id + client_secret)。ウェブサイトのソースは、ログイン中のページセッションを使います。
  • 認証する場所: https://joystick.tv/api/oauth/authorize、続いて次の場所でトークンを交換・更新します: https://api.joystick.tv/api/oauth/token.
  • 接続先: wss://api.joystick.tv/cable に接続し、次を購読します: GatewayChannel.
  • 次のような補助エンドポイントでは、任意のOAuthトークン交換を使います: https://api.joystick.tv/api/users/stream-settings.
  • 別のボット認証ソースは次を送信しません: viewer_update。ログイン済みのウェブサイトソースは、以下の説明どおり、ページのソケットから視聴者数を受け取れれば送信します。
イベント 発生する条件 ペイロードの補足
message Joystick ChatMessage, BotMessage, new_message, bot_message, event_bot_message, pvp_message、ささやきメッセージ。 通常のチャットには次はありません: event。ネイティブIDは最上位の次の欄に格納します: id および meta.messageId。役割と非公開状態は、既存の最上位・バッジフィールドを使います。
new_follower Joystick StreamEvent タイプ: Followed. 標準のフォロワー形式を使い、Joystickの一致するボット行と重複を除外します。任意の meta.userId/meta.followedAt はJoystickが提供する場合だけ含めます。
new_subscriber / subscription_gift Joystickのイベント種類 NewSubscription / GiftedSubscription. Kick互換のサブスクリプションメタデータキーを使います: eventType, subscriber, gifter, totalGifted, duration、および plan.
donation Joystick StreamEvent タイプ Tipped / TipMenu. hasDonation に、取得可能なトークン数と単位を格納して共通の米ドル換算に使い、一致するJoystickボット行の重複を除外します。 meta 既存のKickサポートイベントのキーを使用します: eventType, supporter, amount, currency, message, giftName, giftType、および tier.
stream_online / stream_offline Joystick StreamEvent 次のようなタイプ: Started, StreamResuming, Ended, StreamEnding. 通信経路を考慮したオンライン・オフラインの自動化に使います。
user_enter / user_leave Joystick UserPresence タイプ enter_stream / leave_stream. 入室通知はイベントメッセージとして送信され、イベント非表示設定で抑止できます。この設定では、寄付以外の配信イベントも非表示になります。
viewer_update ログイン済みのウェブサイトソースが受信する値: ViewerCountUpdated 経由: EventLogChannel. 単純な整数を使います: metaで、YouTube、Twitch、Kickと一致します。視聴者数またはハイプモードが有効な場合のみ送信します。別のボット認証ソースは、引き続き視聴者数を受信しません。
follower_update / subscriber_update Joystickのフォロワー数・サブスク登録者数の更新イベント。 単純な整数を使います: metaで、Twitchカウンターの仕様と一致します。
無視する内部通知 ChatMessageReceived、デバイスの状態、投げ銭目標・PvP・サバソン状態などの未対応ウィジェット更新。 これらは通信またはページ状態の通知であり、Social Streamイベントではありません。存在しない次のイベントには変換しません: snake_case のイベント名ではありません。実際の ChatChannel/new_message の行が唯一のチャットペイロードとして残ります。

XP Sync

実装: sources/xpsync.js

  • チャット行は標準のペイロードフィールドを使い、次を設定します: type: "xpsync"。投稿者、メッセージ、アバター、画像・インラインSVGバッジ、名前の色、メンバーシップ、モデレーター・メンバー・ボットのフラグ、ネイティブメッセージUUIDを含みます。UUIDの格納先: id 利用可能な場合。
  • 返信はYouTube、Twitch、KickのDOMソースの規約に従います。返信接頭辞を無効にしていない限り、 initial に返信先ユーザーを格納し、 reply 接頭辞のないメッセージを保持し、 chatmessage 表示用の返信接頭辞が設定されます。
  • Sparksで強調された行は、XPSyncが通常のチャット行クラスやメッセージIDなしで描画していても取り込みます。表示された金額の提供先: hasDonation として N Sparks.
  • イベント取り込みが有効な場合、「just followed」「followed the channel」を含む行が送信するイベント: event: "new_follower".
  • 視聴者数が有効な場合、常設チャットドックが送信する値: event: "viewer_update" をXPSyncページがすでに読み込んだライブ動画の人数から取得し、XPSyncのライブページ更新で更新します。別のSSN認証情報は不要です。

Instagram – ライブREST取り込みとニュース受信箱

実装: sources/instagram.js および sources/instagramlive.js (同一のコピー)

  • ライブページ(/<user>/live/?broadcast_id=...)では、ライブチャットをInstagram独自のウェブAPIから取得します。セッションCookieを使い、同一オリジンで定期取得します: GET /api/v1/live/{broadcast_id}/get_comment/?last_comment_ts={ts} を約2秒ごとに行い、 POST /api/v1/live/{broadcast_id}/heartbeat_and_get_viewer_count/ を視聴者数が有効な場合に約5秒ごとに行います。3回連続で失敗した後(または次がない場合: broadcast_id が検出できない場合)、ソースは描画済みチャットDOMの解析に切り替えます。
  • アカウント自身のアクティビティフィードを次で定期取得します: POST /api/v1/news/inbox/ をInstagramのどのページでも約45秒ごとに行います。初回の取得は重複除外セットの初期化だけなので、過去の履歴を再送しません。記事の重複除外に使う値: tuuid.
  • 必要なAPIヘッダー(すべて固定または導出可能): X-IG-App-ID: 936619743392459, X-CSRFToken (Cookieから取得)、 X-ASBD-ID: 359341, X-Requested-With: XMLHttpRequest, Content-Type: application/x-www-form-urlencoded.
  • すべてのアクティビティフィードイベントが使う値: type: "instagram"。ライブチャットは引き続き type: "instagramlive"。いいねイベントは通常のバックグラウンド経路を使います。バックグラウンドが専用のReactions Overlayに1コピーを送り、次の場合だけメインのチャット・イベントフィードにも含めます: capturelikeevent が有効な場合で、TikTok・MeetMeと一致します。 hideevents と独自イベントフィルターで、すべての場所からブロックできます。受信箱イベントはログイン中のアカウントに属するため、他人のライブを視聴中は抑止します( /<user>/live/ のページとストーリーズビューアー内のライブが対象です。所有者はプロフィールごとに解決し、失敗時は再試行します)。自分のライブと、ライブ以外のすべてのページでは送信します。同時にアカウントの受信箱を取得するInstagramタブは1つだけで、ログイン中にのみ取得します。
イベント 発生する条件 ペイロードの補足
message (ライブ) 次の中の新しい項目: get_comment 応答(comments[]/system_comments[])、RESTが使えない場合はDOMの新しいチャット行を使います。 標準チャットペイロード、 type: "instagramlive"。RESTで取得する正確な値: user.username, user.profile_pic_url、一意の pk 重複排除に使用します。
viewer_update heartbeat_and_get_viewer_count 変更された値を通知します: viewer_count。視聴者数の取り込みまたはハイプモードが有効な場合です。 meta は整数の視聴者数です。定期取得を止める条件: broadcast_status は以前の次の値ではなくなりました: "live".
stream_online / stream_offline stream_online はRESTの配信セッション開始時に1回発生します。 stream_offline は、ハートビートが配信中ではない次の値を報告すると発生します: broadcast_status (視聴者数の取り込み、またはハイプモードが必要)。 TwitchとJoystickが使う共通の配信状態語彙に一致する、メタデータのみのイベント。
new_follower ニュース受信箱で、フォロー型の次の値を持つ記事: notif_name (または story_type 12)が表示されます。 chatname は新しいフォロワーです。 chatimg そのプロフィール画像、 chatmessage 受信トレイのテキスト(例:「x started following you.」)。
follow_request 1つの private_user_follow_request ストーリーが表示されます(非公開アカウントには直接フォローではなくリクエストが届きます)。 同じ形式の参照先: new_followerは区別して保持し、自動化でリクエストを承認したり、異なるあいさつをしたりできるようにします。
liked ニュース受信箱で、いいね型の次の値を持つ記事: notif_name (次を含む: comment_like)が表示されます。 TikTok・MeetMeと共通のいいね語彙。 chatname は実行者です。 chatmessage 受信トレイのテキスト(例:「x liked your photo.」)。
message (自分の投稿へのコメント) ニュース受信箱で、コメント型の次の値を持つ記事: notif_name が表示されたとき。 通常のチャット行(event: false), type: "instagram"; chatmessage にコメントの抜粋を含む受信箱のテキストを格納します。
notification その他のニュース受信箱の記事種類(メンション、タグ、ショッピングなど)。 汎用の分類先。 meta.notifName および meta.storyType 元のストーリー分類を保持します。

Facebook Live

実装: sources/facebook.js (DOMスクレイピング)と、任意のGraph APIブリッジ: sources/websocket/facebook.html

  • DOM取り込みは画面に描画されたFacebookコメントを読み取り、管理対象ページ用のGraph APIブリッジは動画コメントを読み取ります。どちらも次を使います: type: "facebook"、標準チャットフィールドを含み、次は含みません: event を通常のコメントに使います。APIブリッジには任意の次の値も含まれます: platform: "facebook".
  • APIブリッジが使う値: userid を取得可能な投稿者IDに使い、 timestamp を有効な作成日時のUnixミリ秒に使い、 contentimg をAPIが提供する添付画像のHTTP(S) URLに使います。画像だけのコメントでは、次が空の場合があります: chatmessage. textonly はメッセージ本文だけに適用します。trueなら未加工テキスト、falseならエスケープ済みHTMLです。
  • APIコメントの文脈が使う値: meta.messageId (ネイティブのコメントID)、 meta.permalink, meta.videoId、および meta.pageId。以前のAPIビルドで使っていた値: meta.commentId、重複した投稿者・時刻フィールドは metaに生の添付データを渡していました。新しいビルドでは代わりに標準の投稿者・時刻・メディアフィールドを使います。この変更で削除同期への対応が追加されるわけではありません。
  • 視聴者数は有効な場合だけ更新します。APIブリッジが読み取る同時数: live_views。累計動画再生数を代用したり、取得できない人数を0としたりしません。API取り込みでは、通常のコメント文からStars、メンバーシップ、ハイライト、返信を推測しません。
  • Starsは、Facebookが次を表示したときに、ライブチャットのDOMから取り込みます: N sent のマーカーを持ち、次を設定します: hasDonation および donoValue を100 Stars = 1米ドルで換算し、次は設定しません: data.event.
  • テストするには次を追加します: ssnreplay=1 をFacebook LiveのURLに追加すると、更新後にすでに表示されているチャット行も処理できます。
イベント 発生する条件 ペイロードの補足
viewer_update DOMではライブ視聴者バッジを定期取得し、APIブリッジでは有効な場合に同時ライブ視聴者数を定期取得します。 meta は他のソースと同じ整数の視聴者数です。値がない場合や解析できない場合は除外し、実際の0は有効とします。
hasDonation ライブチャットのDOMに表示されたFacebook Stars。 標準チャットペイロード。 hasDonation に表示されるStars額を格納します。例: 100 Stars、および donoValue に米ドル額を格納します。Starsでは次を設定しません: data.event.
highlightColor Facebookに表示される要素: HIGHLIGHTED のラベルです。 通常のチャットフィールドと次を使います: highlightColor。次はありません: data.event を設定します。Starsは引き続き次を使います: hasDonation.

Online Church

実装: sources/onlinechurch.js

  • 公開チャットとメディアヘッダーをDOMスクレイピングします。
  • 視聴者数を更新する条件: 視聴者数を表示(Show viewer count) またはハイプモードが有効な場合です。
イベント 発生する条件 ペイロードの補足
message 新しい項目が現れる配下: #publicchat. 送信者名、アバター、バッジ、およびDOMにある場合は任意のメンバーシップラベルを含む標準チャットペイロード。
viewer_update メディアのヘッダーにある現在人数のバッジを10秒ごとに取得します。 meta は整数の視聴者数です。送信する値: 0 バッジが存在しないか読み取れない場合に、古いカウンターをクリアします。

SharePlay.tv

実装: sources/shareplay.js

  • SharePlayチャンネルページのライブチャットドロワーをDOMスクレイピングします。
  • スクレイパーの接続後に新しく挿入されたチャット行やカードだけを送信します。既存の履歴は意図的に無視します。
イベント 発生する条件 ペイロードの補足
message メインのチャットフィード内に新しいチャット行が表示されたとき。 投稿者、アバター、バッジ画像、HTMLのまま保持したエモートを含む標準チャットペイロード。スレッドの返信では次も設定します: initial, reply、および meta.reply 親の行がまだ存在する場合。
raid SharePlayがライブチャットフィードにBlitzカードを挿入したとき。 標準のレイドイベントに変換します。 meta.cardType の場合 "blitz"。任意で付ける値: meta.fromLogin および meta.viewers カードのテキストから取得できる場合。
shoutout SharePlayがチャットフィードに紹介・フォローカードを挿入したとき。 送信形式: data.event = "shoutout"。カードのバナー画像は次で転送します: contentimg。一方、 meta.cardType および meta.action カードのラベルやボタンのテキストを保持します。
viewer_update ヘッダーに表示された視聴者バッジを10秒ごとに取得します。 meta は整数の視聴者数で、次の場合のみ送信します: 視聴者数を表示(Show viewer count) またはハイプモードが有効な場合、次を送信します: 0 を、バッジが読めなくなった場合に使って古いカウンターを消去します。

Streamplace

実装: sources/streamplace.js

  • Reactで描画されたStreamplaceのライブページを読み取り、接続時に表示されているチャット履歴は除外します。
  • 転送形式のメッセージの例: Name (Discord): message を転送された送信者名に正規化します。
イベント 発生する条件 ペイロードの補足
message 接続後にStreamplaceの新しいチャット行が表示されたとき。 標準チャットペイロード。設定する値: nameColor, chatbadges、HTMLのまま保持したリンク、返信フィールド: initial, reply、および meta.reply 表示されている場合。
viewer_update 視聴者数の取り込みまたはハイプモードが有効な間に、ヘッダーの視聴者バッジが変化したとき。 meta は整数の視聴者数です。

WorldsWave

実装: sources/worldswave.js

  • WorldsWaveのライブページと、次のようなチャット専用URLに対応します: https://worldswave.com/kn_livecmd.php?cmd=viewStream&streamId=STREAM_ID&chatonly=1.
  • 安定した次の値を使います: data-ww-*/ww-chat-* のマークアップを利用できれば使い、チャット専用ページや古いレイアウト用に従来のkontacktセレクターも保持します。
  • 取り込みを開始した時点の既存履歴は無視します。新しいメッセージでテストしてください。
  • 視聴者数の取得に必要なもの: 視聴者数を表示(Show viewer count) またはハイプモードです。専用のギフト・投げ銭イベントと返信送信は未実装です。表示された行から次を通して寄付ラベルを取得できる場合はあります: data-ww-donation.
イベント 発生する条件 ペイロードの補足
message WorldsWaveの新しいチャット行が表示されたとき。 標準チャットペイロード。設定する値: type: "worldswave"、送信者名、アバター、任意のユーザーID、名前の色、バッジ、モデレーター状態、メンバーシップ、寄付額、添付、チャンネル識別情報。安定したWorldsWaveメッセージIDの格納先: meta.messageId で、同時に開かれたプレビュー・完全チャットのパネル間でも重複を除外します。テキスト専用モードが無効な場合、インラインのメッセージ画像はサニタイズした状態で保持します。
viewer_update 視聴者数の取り込みまたはハイプモードが有効な間に、表示中のライブ視聴者合計が変わったとき。 meta は整数の視聴者数です。安定した data-ww-viewer-count の値が優先されます。次のような従来の省略形式の値: 1.2K を代替として正規化します。

FLEX TV

実装: sources/flextv.js

  • 描画されたチャットパネルの読み取り元: https://www.flextv.co.kr/channels/*/live のページです。
  • チャットパネルを表示しておく必要があります。ソース接続時の既存チャット履歴は除外されるため、新しいチャット行でテストしてください。
  • このソースでは、視聴者数、寄付、返信経路はまだ文書化されていません。
イベント 発生する条件 ペイロードの補足
message 新しく表示されたFLEX TVの .chat-item の行がライブチャットフィードに表示されます。 標準チャットペイロード。設定する値: type: "flextv", chatname, chatmessage, nameColor、バッジ画像は chatbadges、FLEXメンバーの詳細は meta 次によって公開されている場合: data-member.

Seal Team Sloth

実装: sources/sealteamsloth.js

  • 描画されたポップアウトチャットの読み取り元: https://sealteamsloth.com/popout-chat/* のページです。
  • 視聴者数の取得に必要なもの: 視聴者数を表示(Show viewer count) またはハイプモード。
イベント 発生する条件 ペイロードの補足
message Seal Team Slothの新しいチャット行が表示されたとき。 標準チャットペイロード。設定する値: type: "sealteamsloth"、送信者名、アバター、メッセージ内容。
viewer_update 視聴者数の取り込みまたはハイプモードが有効な間に、表示中のライブ視聴者合計が変わったとき。 meta は整数の視聴者数です。短縮表記の例: 1.2K を正規化します。

MeetMe - DOMとWebSocketの取り込み

実装: sources/meetme.js

  • MeetMeのライブチャットDOMを読み取る場所: app.meetme.com/live/view/... のページ、および次の内部: api.gateway.meetme-live.com/web-live/... のiframeです。
  • iframeのWebSocketが利用できる場合、 wss://video-live.meetme.com/ フレームはDOMの代替処理より先に解析し、より豊富なライブイベントを取り込みます。
  • hideevents 寄付以外のイベントを抑制します。MeetMeのギフトとダイヤモンドの寄付では、引き続き寄付フィールドが設定されます。 capturejoinedevent で参加・再参加通知を有効にします。実行者固有の liked イベントは共通のバックグラウンド経路を使い、次で制御します: capturelikeevent。集計値: reaction の効果は、引き続きReactions Overlayを明示的な送信先にします。
  • 視聴者数は表示中のMeetMeヘッダーを優先し、DOMの人数を取得できない場合だけWebSocket合計を使います。変化時に送信し、次の条件では最新の人数を約30秒ごとに再送します: showviewercount/hypemode が有効な場合です。フォロワー合計は変化時だけで、更新間隔は約60秒に制限します。
イベント 発生する条件 ペイロードの補足
message 新規 SNSChatMessage WebSocketフレームが届いたとき、または新しい ChatMessage_* DOM行が現れる場所: ChatHistoryContainer_*. 送信者名、アバター、メッセージのHTML・テキスト、バッジの画像・テキストを含む標準チャットペイロード。DOM行の詳細は平坦な meta のキー。含まれるもの: messageId, roomId, level, levelColor, badgeLabels, badgeSrcs, badgeClasses, isBouncer, isTopStreamer, isBestOfTheWeek, rank、および rowClassName。WebSocketペイロードが設定する値: meta.source = "websocket".
joined / rejoined / left SNSChatParticipant WebSocketの作成、更新、削除フレームが届いたとき、またはMeetMeがDOMに次を表示したとき: join-cell の行。参加/再参加の通知には次が必要です: 参加イベントを取り込む(Capture "joined" stream events). MeetMeが公開している場合、実行者名・アバター付きのチャット形式システム通知を送信します。 meta.isNewViewer, meta.viewerLevelId, meta.isBouncer、および meta.isSubscriber 参加者の状態を保持します。
new_follower MeetMeがDOMに表示するお気に入り・フォロー行の例: Favorited. 共通のフォロワーイベント語彙を使います。 chatname は実行者です。 chatimg は取得できたプロフィール写真で、平坦な meta.favoriteText/meta.targetName 元の行の詳細を保持します。
gift SNSGiftMessage WebSocketフレームが届いたとき、またはMeetMeがチャット行にギフト画像を表示したとき。 hasDonation に表示されるギフトラベルまたはダイヤ数を格納し、 contentimg に公開されているギフト画像を格納し、次のような平坦なキーを使います: meta.giftName, meta.giftCount, meta.amount、および meta.currency 構造化された詳細を保持します。 gift イベントは実際のギフトフレーム・行に限定します。寄付の描画判断には引き続き次を使ってください: hasDonation.
donation SNSDiamond WebSocketフレームがダイヤモンドのアクティビティを公開したとき。 専用のダイヤフレームは寄付イベントとして扱います。 hasDonation は共通の米ドル換算用にダイヤとして整形し、 meta.amount/meta.currency は自動化で使えるようフラットな構造を維持します。
liked / reaction SNSLike WebSocketフレームが届いたとき。 ユーザーを識別できるいいねも、同じ次の値を使います: liked の用語と一元化されたバックグラウンドのルーティングをTikTokと共用します。合計/匿名のいいね数は、リアクションの送信先にのみ次の形式で送られます: reactionで、平坦な meta.reactionType, meta.totalLikes、および meta.subscriberLikes。違いは匿名かどうかではなく、イベントの意味です: capturelikeevent が制御するのは、個別の次のイベントだけです: liked/like のイベントです。
follower_update SNSVideo WebSocketメタデータがフォロワー総数を公開したとき。 meta はフォロワー数の整数で、共通のカウンターイベント規約に一致します。
guest_update SNSVideoGuestBroadcast の作成・更新フレームを受信したとき。 ゲスト・ライブ共同司会の状態を表す、メタデータのみのイベント。平坦な meta のキーには次を含みます: status, position, totalGuests, isMuted, guestBroadcastId, videoViewerId、および broadcastId.
viewer_update 表示中のヘッダーの視聴者バッジが変わるか、 SNSVideo バッジが利用できない場合、WebSocketメタデータから視聴者総数を取得します。有効な間は、変化のない総数も約30秒ごとに繰り返し送信されます。 meta は整数の視聴者数で、視聴者数の取り込みまたはハイプモードが有効な場合のみ送信します。

Velora

実装: sources/velora.js および sources/websocket/velora.js

  • 標準モードは表示中のチャットDOMを読み取り、WebSocketモードはOAuthでVelora Events APIを使います。
  • 標準モードで対応するURLの例: https://velora.tv/*, https://velora.tv/dashboard/stream/popout?panels=chat%2Cactivity&channel=CHANNEL&layout=vertical、および https://velora.tv/dashboard/stream/popout/CHANNEL/obs-chat.
  • Voltsやチャンネルポイント形式のカードは、DOMまたはEvents APIで取得できる場合、イベントペイロードとして送信します。
イベント 発生する条件 ペイロードの補足
message Veloraの新しいチャット行が表示されるか、Events APIのチャットメッセージが届いたとき。 標準チャットペイロード。テキスト専用モードでなければ、バッジ、投稿者の色、リンク、エモートを保持します。
volts VeloraのVoltsカード、または channel.volts Events APIペイロードを受信したとき。 hasDonation に表示されたVolts額を格納します。DOM取り込みに含まれる値: meta.source = "dom".
channel_points Veloraのチャンネルポイント・交換カード、または channel.channel_points_redemption Events APIペイロードを受信したとき。 chatmessage に交換メッセージまたは報酬タイトルを格納します。 meta.rewardTitle で、取得可能な報酬を識別します。
subscription Veloraの活動行に、ユーザーがチャンネルメンバー・サブスク登録者になったことが表示されたとき。 membership に表示されるメンバーシップラベルを格納します。
viewer_update 視聴者数の取り込みまたはハイプモードが有効な間に、表示中の視聴者数が変わったとき。 meta は整数の視聴者数です。

Parti - プロフィール・ポップアウトチャット取り込み

実装: sources/parti.js

  • 対応するプロフィールURLの例: https://parti.com/USERNAME 、次のようなポップアウトURL: https://parti.com/popout-chat?id=USER_ID.
  • 視聴者数の取り込みまたはハイプモードが有効な場合、Partiのライブ配信ハートビートエンドポイントを使います。
イベント 発生する条件 ペイロードの補足
message Partiのチャット行がプロフィールまたはポップアウトチャットに表示されたとき。 標準チャットペイロード。 nameColor Partiで表示された投稿者の色を保持し、 chatmessage テキストのみモードが無効な場合、インラインコンテンツを保持します。
donation Partiの投げ銭行に、ユーザーが金額を送ったことが表示されたとき。 hasDonation に表示された金額を格納し、 meta.amount/meta.currency は解析できる場合に設定し、 meta.amountText 元の金額テキストを保持し、 donoValue は米ドルの投げ銭で設定します。
viewer_update Partiのハートビートがライブ視聴者数を返したとき。 meta は整数の視聴者数です。人数を水増ししないよう、ページはソースウィンドウごとに1つのハートビートトークンを再利用します。

CHZZK - ポップアウトチャット取り込み

実装: sources/chzzk.js

  • 対応するもの: https://chzzk.naver.com/live/*/chat および https://chzzk.naver.com/iframe/live/*/chat.
  • 視聴者数の取り込みまたはハイプモードが有効な場合、CHZZKのライブ状態取得エンドポイントを使います。
イベント 発生する条件 ペイロードの補足
message CHZZKのチャット行がポップアウトチャットに表示されたとき。 標準チャットペイロード。設定する値: type: "chzzk", nameColor、バッジ画像のURLは chatbadges、描画済みのエモートは chatmessage ただし、テキストのみモードが有効な場合は除きます。
のチャット。設定する値: hasDonation CHZZKのチーズ寄付行がチャットに表示されたとき。 hasDonation に表示されたチーズの金額を格納します。これらの行では次を設定しません: data.event.
viewer_update ライブ状態の定期取得が視聴者数を返したとき。 meta は整数の視聴者数です。

Rumble - 標準DOM取り込み

実装: sources/rumble.js

  • 認証済みのセッションCookieが必要です。これにより、 service.php 視聴者APIが応答したとき。
  • 描画されたRant行が提供する値: hasDonation。受信レイドのカードが提供する値: event: "raid"。このDOMソースは、APIブリッジの登録者・フォロワーのイベントフィードを送信しません。
イベント 発生する条件 ペイロードの補足
message Rumbleのチャット行がページまたはポップアップチャットに表示されたとき。 標準チャットペイロード。 chatmessage テキストのみモードが無効な場合、ページに表示されたRumbleエモートの画像HTMLを保持します。
viewer_update Rumbleの次のAPIを呼び出します: video.watching-now サービスを30秒ごとに使用します。 meta は整数の視聴者数です。使う値: credentials: 'include' を使用してセッションCookieを再利用します。
のチャット。設定する値: hasDonation表示されたRant行に価格が含まれるとき。hasDonation 表示された価格を保持します。寄付イベントのマーカーは追加されません。
raid受信レイドのカードがチャットに表示されたとき。表示されるレイド文と、任意のカード画像を次で使います: contentimg.

Rumble - WebSocket/API URL

実装: sources/websocket/rumble.js

  • 配信者自身のLive Stream API URLが必要です。取得先: https://rumble.com/account/livestream-api。Rumbleの説明では、このURLにはライブ配信キーが含まれ、別途認証は不要であり、信頼できる第三者にだけ共有すべきとされています。
  • 読み取り専用の通信です。公開されているRumble Live Stream APIのドキュメントには公式のチャット送信エンドポイントがないため、このソースはメッセージ・イベントをSocial Streamへ転送しますが、Rumbleへの返信は行いません。
  • livestreams[].chat は、選択した配信がライブ中のときだけ設定されます。使う値: ?streamId=... を使用すると、APIが複数の配信を公開している場合に特定の配信を固定できます。無効なIDは、別の配信へ暗黙に切り替わるのではなく、エラーになります。
  • ページでは次も解決します: https://rumble.com/chat/popup/<livestreams[].id> これにより、配信者の次のページを先に読み込まなくても、通常の挿入型ポップアップチャットを直接開けます: /live のページです。
イベント 発生する条件 ペイロードの補足
message 公式APIで次の値を解決した後、RumbleのSSEチャットストリームから新しい項目が届きます: livestreams[].id。代替として使う値: livestreams[].chat.recent_messages. 標準チャットペイロード。 meta.source の場合 rumble_sse SSEチャットストリームが利用でき、次からのアバターURLが含まれている場合: users[].image.1。それ以外の場合は、次へ切り替えます: live_stream_api アバターは含まれません。ポップアップのエモート一覧が利用可能な場合、 chatmessage Rumbleのショートコードエモートを画像HTMLとして描画し、 meta.plainText 元のショートコードのテキストを保持します。
donation 新しいRant項目が現れる場所: livestreams[].chat.recent_rants. hasDonation に米ドル形式の金額を格納します。 meta に含まれるもの: amount_cents, amount_dollars、および expiresOn.
new_follower 新しい項目が現れる場所: followers.recent_followers. システムイベント。設定する値: chatname フォロワーのユーザー名が設定され、タイムスタンプは次に格納されます: meta.followedOn.
new_subscriber 新しい項目が現れる場所: subscribers.recent_subscribers. membership の設定値: SUBSCRIBER; subtitle はRumbleが提供する場合、仕様上の米ドル額を反映します。
subscription_gift 新しい項目が現れる場所: gifted_subs.recent_gifted_subs. chatname はギフトの贈り主です。 hasDonation は次になります: N Gifted、および meta に含まれるもの: totalGifted, remainingGifts, giftType、および videoId.
follower_update 選択したフォロワーカウンターが変わるたび。 meta は整数のフォロワー数です。既定値: followers.num_followers。次の設定では: ?followerMode=totalで、次を使います: followers.num_followers_total Rumbleから提供される場合。
subscriber_update 次が起こるたび: subscribers.num_subscribers が変わったとき。 meta は整数の登録者数です。
stream_online / stream_offline 選択したライブ配信がライブとオフラインの間で切り替わったとき。 meta に、サニタイズした配信フィールドの一部を含めます(id, title, createdOn、カテゴリラベル、高評価・低評価、視聴者合計)。次のような機密値: stream_key は意図的に転送しません。
viewer_update 次が起こるたび: livestreams[].watching_now が、選択した配信で変わったとき。 meta は整数の同時視聴者数です。送信する値: 0 選択した配信がオフラインになった場合に、古いカウンターをクリアします。

この通信は、自分が所有・管理するチャンネル向けです。API URLにはライブ配信キーが含まれるため、オーバーレイ、ログ、スクリーンショット、共有ブラウザプロファイルに出さないでください。チャットのアバターは、公式APIが配信IDを解決した後、RumbleのSSEチャットストリームから取得します。アバター取得のためにRumbleページをスクレイピングすることはありません。

YouNow - DOM取り込み

実装: sources/younow.js

  • 描画されたライブチャットDOMを読み取り、標準チャットペイロードを送信します。設定する値: type: "younow".
  • 視聴者の活動行の例: is watching, I became a fan!、および invited N fans to this broadcast. には次のフラグを付けます: event: true これにより、イベントフィルターで振り分けられます。
イベント 発生する条件 ペイロードの補足
message 視聴者向けライブチャットに新しいチャット行が表示されたとき。 標準チャットペイロード。ファン・視聴者の活動行が設定する値: event: true.
viewer_update 表示中の視聴者パネルの人数が変わったとき。条件: showviewercount/hypemode が有効な場合です。 meta は整数の視聴者数です。送信する値: 0 カウンターが消えた場合。

Favorited Studio - DOM取り込み

実装: sources/favorited.js

  • 描画されたライブチャットDOMを読み取り、標準チャットペイロードを送信します。設定する値: type: "favorited".
イベント 発生する条件 ペイロードの補足
message 新しいチャット行が表示されたとき。 標準チャットペイロード。
viewer_update ライブ視聴者タブの人数が変わったとき。条件: showviewercount/hypemode が有効な場合です。 meta は次から読み取った整数の視聴者数です: content-live-viewers のタブです。

BEAM - DOM取り込み

実装: sources/beamstream.js

  • 描画されたライブチャットDOMを読み取り、標準チャットペイロードを送信します。設定する値: type: "beamstream".
イベント 発生する条件 ペイロードの補足
message 新しいチャット行が表示されたとき。 標準チャットペイロード。プレーンテキストの chatname、アバターURLは chatimg、画像URLまたはSVGバッジオブジェクトは chatbadges。Beamの取り込みページで隠されているフィールドは空のままです。Beam本来のプロフィールリンクは外部転送元として扱いません。 contentimg には、公開されている場合にインラインの動画・webm添付を含めることがあります。
viewer_update 視聴者カウンター要素が変わったとき。条件: showviewercount/hypemode が有効な場合です。 meta は整数の視聴者数で、チャットページに視聴者カウンターがある場合のみ送信します。

Castyr - DOM取り込み

実装: sources/castyr.js

  • 新しく描画されたチャット行の読み取り元: https://castyr.live/homebeta/popout-chat/* から、標準チャットペイロードを次の値付きで送信します: type: "castyr".
  • ソースを接続した時点の既存チャット履歴は無視します。
イベント 発生する条件 ペイロードの補足
message 新しい .chat-message の行が表示されます。 送信者名、描画済みのメッセージ内容、公開されている場合は名前の色を含む標準チャットペイロード。
viewer_update 表示中のアクティブチャット人数が変わったとき。条件: showviewercount/hypemode が有効な場合です。 meta はCastyrのタイトル付きアクティブチャット要素から読み取った整数です。

SOOP - プレイヤーDOM取り込み

実装: sources/sooplive.js。統一された次の機能に対応します: play.sooplive.com プレイヤーと従来の play.sooplive.co.kr のURLに対応します。従来のグローバルチャットレイアウトも、表示される場合は認識します。

公開チャットが送信する値: type/platform: "sooplive"、プレーンテキストの chatname/userid, nameColor、サニタイズ済みの chatmessage。既存の行、重複するメッセージID、翻訳コピー、非公開のささやきは除外します。エモートは安全な画像になり、テキスト専用モードでは代替テキストになります。

次の設定では: showviewercount または hypemode が有効な場合、 viewer_update が持つ整数値: meta をプレイヤーの次の欄から取得します: #nAllViewer。チャットだけのポップアウトでは、この人数が取得できない場合があります。現在のSOOPポップアウトは元のウィンドウに依存するため、SSAppが独立したポップアップを開くときは完全なプレイヤーを使います。

Gosh - チャンネルチャット取り込み

実装: sources/gosh.js。開く項目: https://gosh.com/USERNAME でチャットを表示するか、そのURLをSSAppの「その他のソースを追加(Add other source)」に貼り付けてください。チャットのポップアウトは不要です。

新しいチャット行が送信する値: type/platform: "gosh"、プレーンテキストの chatname, nameColor、サニタイズ済みの chatmessage。インライン画像とGIFは安全なHTTP(S) URLを保持します。次の設定では: textonlymode、画像は代替テキストまたは [image] 代替テキストがない場合。キャプチャした行にアバター、バッジ、寄付、メンバーシップがない場合、これらは空のままです。

仮想化されたチャットは、最新メッセージまでスクロールした状態にしてください。既存の履歴、再描画された行、投稿者のないシステム通知は除外します。描画インデックスは内部だけで使い、ネイティブのメッセージIDとして送信しません。フォロー、寄付、視聴者数、モデレーションのイベントを推測しません。

Livacha - チャットルーム取り込み

実装: sources/livacha.js。開く項目: https://livacha.com/chat/ROOM でチャットを表示するか、ルームのURLをSSAppの「その他のソースを追加(Add other source)」に貼り付けてください。

新しいチャット行が送信する値: type/platform: "livacha"、プレーンテキストの chatname, chatimg, nameColor、サニタイズ済みの chatmessage。相対指定のアバター・インライン画像URLは、絶対HTTP(S) URLに変換します。段落、改行、リストは1つのチャットメッセージにまとめます。次の設定では: textonlymode、画像は代替テキストまたは [image].

メッセージIDを内部で使い、編集や再配置された行の再取り込みを防ぎます。初期履歴と先頭に追加された古いメッセージは除外し、タイムスタンプとリアクションメニューは本文に含めません。寄付、メンバーシップ、モデレーション、視聴者数イベントは推測しません。

Stream.space - 実験的なDOM取り込み

実装: sources/streamspace.js。一致するのは次だけです: https://beta.stream.space/chat-popup.php?channel=USERNAME と、それに相当する https://stream.space ポップアップ。

新しく表示されたチャット行が送信する値: type: "streamspace", platform: "streamspace"、プレーンテキストの chatname/userid, chatmessage、アバター chatimg、画像形式のレベル chatbadges、および nameColor。インラインエモートは安全な画像として再構築し、次の場合は代替テキストにします: textonlymode が有効な場合です。既存の履歴、歓迎通知、返信プレビュー、重複するピン留めは除外します。

viewer_update が持つ整数値: meta 読み取り元: #popupViewersNum 条件: showviewercount または hypemode が有効な場合です。寄付、メンバーシップ、モデレーションイベントは推測しません。

実験的:確認時、ベータ版ポップアップはLoadingのままでした。SSAppではポップアップを読み込み、視聴者数の更新を取得できましたが、ライブチャットの配信と本番ポップアップは未検証です。サイトに表示されないメッセージをSSNで取り込むことはできません。

w.tvとPrime - DOMキャプチャ

実装: sources/wtv.js で https://w.tv/USERNAME/chat および sources/prime.js で https://prime.gs/USERNAME?chat_popout=1.

新しいチャット行が使う値: type/platform の wtv または prime、プレーンテキストの chatname, nameColor、サニタイズ済みの chatmessage。インラインエモートは安全な画像になり、テキスト専用モードでは代替テキストになります。Primeでは行の次の値も含めます: userid に対応し、ログイン済みのプロフィールリンクとログアウト時のユーザー名ラベルの両方を使えます。検証済みの行構造にないアバターやバッジは空欄にします。

初期履歴、ピン留めカード、返信プレビューは除外します。w.tvはチャットを仮想化しているため、取り込み中は最新メッセージの位置を表示してください。DOMのテストIDは描画インデックスであり、ネイティブのメッセージIDではありません。Primeは、初期メッセージより上に読み込まれた古い履歴と、無視したユーザーのプレースホルダーを除外します。

どちらのポップアップも検証済みの配信視聴者数を公開していないため、これらのアダプターは視聴者更新を送信せず、寄付・サブスク・モデレーションイベントを推測しません。

プラットフォーム間のイベント整合性

この表は、似た概念が各プラットフォームでどう対応するかを示します。新しいソースは、可能な限り先頭列の共通イベント名に合わせてください。

概念 YouTube WS Twitch WS Kick WS
新しいメンバー・サブスク sponsorship new_subscriber new_subscriber
更新・再サブスク resub resub resub
サブスクギフト giftpurchase subscription_gift subscription_gift
受け取ったギフト giftredemption - -
マイルストーン membermilestone - -
寄付・投げ銭 superchat, supersticker, jeweldonation 付随する値: hasDonation cheer (Bits) donation
新しいフォロワー new_follower (定期取得)* new_follower new_follower
視聴者数 viewer_update viewer_update viewer_update
フォロワー数 - follower_update follower_update
サブスク登録者数 subscriber_update subscriber_update -
配信状態 live_chat_ended stream_online/stream_offline stream_online/stream_offline
レイド - raid -
報酬の交換 - reward reward

整合性に関する補足

  • YouTubeが使う値: sponsorship を新規メンバーに使います。一方、TwitchとKickでは new_subscriber。複数プラットフォーム向けのトリガーを作る際は、両方を確認することを検討してください。
  • resub は統一されています を、3つのプラットフォームすべてで更新に使います。
  • ギフトイベントには違いがあります: YouTubeが使う値: giftpurchase/giftredemption。一方、TwitchとKickでは次を使います: subscription_gift.
  • 寄付の形式はプラットフォームによって異なります: YouTubeは有料イベントに固有の名前を使います。例: superchat, supersticker、および jeweldonation 付随する値: hasDonation。TwitchにはBits(cheer)。Kickには投げ銭(donation).
  • new_follower は現在統一されています を3つすべてで使います。ただしYouTubeは最近の登録者を定期取得するため、結果が遅れたり不完全だったりする場合があります。
  • いいねとリアクションは別の仕様です: 個別の liked/like イベントは、全体フィルターで除外されない限りReactions Overlayに届き、次の場合だけメイン処理経路へ入ります: capturelikeevent が有効な場合です。表示上またはプラットフォーム本来の reaction イベントは、生成元が決めた経路を保持します。集計された likes_update のカウンターは、次で別途制御します: captureliketotals.

対応範囲と互換性の制限

このリファレンスは実装済みのペイロードを説明するもので、すべてのプラットフォームがすべてのイベントを配信する保証ではありません。空の hasDonation がソースに設定されていても、寄付対応の証明にはなりません。受信内容は引き続き、DOMの表示、アカウント権限、取り込みスイッチ、APIの可用性で決まります。削除の転送はソースごとに異なるため、すべてでモデレーション同期できると考えないでください。

記録している不一致と未対応箇所

組み合わせ / 対象 確認された不一致 / 未対応 影響
Twitch:標準とWebSocketの比較 共通: reward, subscription_gift, viewer_update, hype_train、任意で有効化する watch_streak。Standardのみ: giftpurchase, knock, community_highlight。WebSocketのみ: new_subscriber, resub, cheer, powerup, raid, new_follower, follower_update, subscriber_update. channel_points は現在、Twitchの報酬交換用の非推奨の旧別名です。新しい連携では次を基準にしてください: reward.
Kick:標準とWebSocketの比較 標準モードが送信する軽量なマーカー(gift, reward、真偽値の true, viewer_update)。WebSocketでは、公式のフォロー、サブスク、ギフト、報酬交換、KICKs、モデレーション、配信状態イベントを追加します。従来の次の形式への互換処理も保持します: raid のペイロードですが、Kickは現在、公式のレイド・ホスト購読を提供していません。 WebSocketモードはより多機能です。標準モード専用のイベント名を使う自動化は、切り替え時に見直してください。Kickのレイドイベントを必須にしないでください。
YouTube:標準とWebSocketの比較 共通: superchat, supersticker, jeweldonation, sponsorship, resub, giftpurchase, giftredemption, viewer_update。Standardのみ: thankyou, redirect。WebSocketのみ: membermilestone, new_follower, subscriber_update, view_update, likes_update (任意で有効化)。 基本のメンバー・イベント名は両方でそろっています。Super Chat、Super Sticker、Jewelsが使う値: hasDonation。一方、メンバーシップギフトの購入・受け取りではそうしません。
すべての画面 多くのソースが設定する値: hasDonation 次を設定せずに: data.event. これは正しい動作です。寄付の表示判断に使う値: hasDonation。付随する値: data.event はシステム/イベントの意味付け用に予約されています。

ソース固有の別名と旧名称

これらの対応関係は、記載されたソース・文脈に固有であり、全体の置き換えではありません。受信側の別名対応はページによって異なります。現在のTikTok DOM・TikFinityソースは、引き続き次を送信します: followed。Veloraが使う値: subscription および channel_points、Streamlabsが使う値は subscription。一致するすべてのイベントを改名するのではなく、現在のソース仕様と関連する旧形式の別名を受け付けてください。

別名 / 旧名称 標準の置き換え先 文脈
subscriptionnew_subscriberTwitch・Kickの新規サブスク
subgiftsubscription_giftTwitchのサブスクギフト
membershipsponsorshipYouTubeの新規メンバー(汎用)
new_membersponsorshipYouTubeの新規メンバー
new_membershipsponsorshipYouTubeの新規メンバー
newmembersponsorshipYouTubeの新規メンバー
new-membershipsponsorshipYouTube DOMスクレイパー(ハイフン形式)
upgraded_membershipresubYouTubeのティアアップグレード
upgraded-membershipresubYouTube DOMスクレイパー(ハイフン形式)
membership_upgraderesubYouTubeのティアアップグレード
membership_milestonemembermilestoneYouTubeのマイルストーンチャット
member_milestonemembermilestoneYouTubeのマイルストーンチャット(アンダースコア形式)
gift_membershipgiftpurchaseYouTubeのギフトまとめ買い
membership_giftgiftpurchaseYouTubeのギフトまとめ買い
giftmembershipsgiftpurchaseYouTubeのギフトまとめ買い(複数形)
gifted_membershipgiftredemptionYouTubeのギフト受け取り
gifted_membershipsgiftpurchaseYouTubeのギフトまとめ買い(複数形)
community_giftgiftpurchaseコミュニティギフトのまとめ買い
channel_pointsrewardTwitch WebSocketの報酬交換(旧別名)
followednew_follower現在のTikTok DOM・TikFinityの出力。TikTokの取り込みモードを組み合わせる場合は、両方の名前を受け付けてください。

このリファレンスの使い方

  • 新しいイベントを追加する場合は、既存の語彙を再利用してください(subscription_gift, viewer_updateなど)を可能な限り使ってください。どうしても異なる形式が必要なら、その理由とともにここへ記載します。
  • 次の項目は維持します: data.meta 予測しやすい構造にしてください。フラットなキーを優先し、文字列に異なる種類のデータを詰め込まず、必ず単位を含めます(currency, bits, duration).
  • ペイロードを変更したら、このページも更新してください。エージェント向けの指示は、共通の開発ルールが変わった場合だけ更新します。
  • ペイロードの変更は、送信元ソースと、受信するオーバーレイまたはEvent Flowトリガーの両方で検証してください。
  • 取り込みはソースの対応状況と設定によります。ドックや注目表示オーバーレイでイベント付き行を隠すには、次を追加します: &hideevents または &hideallevents。特定のイベントを隠すには次を使います: &filterevents=subscription_gift,new_follower,gifted.
  • YouTube、Twitch、Kickでは、次を有効にします: WebSocketモード で、各プラットフォーム固有のイベントを最も幅広く利用できます。YouTubeのギフト・寄付取り込み(ギフトやSuper Chatを含む)は標準・WebSocketの両方で使え、WebSocketではさらにイベント種類が増えます。正確な対応範囲はプラットフォーム、アカウントの役割、付与されたスコープによります。

ページの先頭へ

収益化オーバーレイ

NinjaBackerの投げ銭が使う値: platform: "ninjabacker", type: "ninjabacker", chatname、プレーンテキストの chatmessage, textonly: true、ソースの接頭辞を付けた id、整形済みの hasDonation、数値の donoValue。これらは通常の寄付形式の行で、次はありません: event で上書きします。 meta.ninjabacker にISO形式の次の値を格納します: currency 、通貨の主単位の amount。匿名の投げ銭は表示名Anonymousを使います。ソースはライブSSE(再送なし)、または明示的に有効にするSSN API上の署名付きWebhook受信機(最大7日間の配信待ち)を使います。確実な配信では安定した次の値を使います: ninjabacker:delivery:DELIVERY_ID IDを使います。どちらのモードも返金・異議申し立てによる取り消しは受信しません。受信認証情報や署名シークレットはイベントペイロードに含めません。呼び出し側が指定するcallbackIdは支払い識別子ではなく、転送しません。ダッシュボードのテスト投げ銭は寄付行から除外し、次を送信します: event: "monetization_test" 付随する値: meta.ninjabackerTest にidとat(Unix時刻、ミリ秒)を格納します。専用プレビューアラートにだけ使います。

event: "monetization_update" は次からのメタデータのみのスナップショットです: type/platform: "socialstream". meta.monetization.wishlist にはenabled、qr、position、rank、total、公開url、現在の商品(name、amount、currency、image、公開url)、またはnullを格納します。 meta.monetization.ninja にはenabled、qr、position、username、公開の投げ銭urlを格納します。非公開のTip IDは一切含みません。 meta.monetization.ebay にはenabled、qr、position、display(cycle/cheapest/first)、seconds、任意のお知らせ設定、公開itemsを格納します。各項目はid、name、amount、currency、image、url、auction、startingBid、endsAt、available、bought、updatedAtを持ちます。時刻はUnixミリ秒です。出品者の認証情報や購入者識別情報は含みません。

配信者が確認したウィッシュリスト購入には、次も含めます: meta.wishlistPurchase にはid、name、任意のsupporter、およびat(Unixミリ秒)が含まれます。これはホストによる確認であり、Amazonの支払い通知ではなく、金銭的な寄付として数えられません。オーバーレイではidで重複を排除し、古い購入通知を無視してください。

Shopifyの支払い済み注文

任意の署名付きShopify受信機が送信する値: platform/type: "shopify" および event: "purchase" 対象は次だけです: orders/paid 付随する値: financial_status: "paid"、正の合計値、 test: false、キャンセルされていないこと、署名付き本文の更新日時が現在のものであることを確認します。テスト、未払い、古い通知、キャンセル、返金通知では購入アクションを発生させません。ギフト目的であるとは推測しません。

chatname はAnonymousです。顧客フィールド、非公開メモ、注文URLは除外します。 chatmessage はプレーンテキストで、次を伴います: textonly: true; subtitle に公開商品タイトルを最大3件格納します。 meta.commerce に含まれる値: orderTotal および currency はショップの通貨で表し、次も含みます: quantity 有効な完全な個数が分かる場合。受信者と物理/デジタルの用途は未設定のままです。次は設定されません: hasDonation または donoValue を設定します。 id はShopifyの接頭辞を持ち、ストア・注文単位の安定した不透明なハッシュです。生の注文識別子ではありません。

購入は既存のアクティビティ、Multi-AlertsのPurchaseカテゴリ、Event Flowの経路を使います。商品紹介では既存の次の機能を使います: meta.monetization.commerce のカタログを使います。商品のインポートや紹介用ラベルをGiftにする操作では、購入・ギフトイベントは発生しません。 Shopifyの設定と配信の制限.

ギフトとコマース

使う項目: event: "gift" をギフトに使い、 giftcontribution をギフトへの有料支援に使い、 giftfunded を資金達成に使い、 purchase を商品販売に使います。これらの名前はプロバイダーや、現物・デジタルといった商品種類によらず共通です。従来の次の名前は用途を限定してください: giftpurchase イベントはメンバーシップギフト用です。Throneは以前この名前を誤用していましたが、現在は次を送信します: gift。既存のメンバーシップ生成元は変わりません。Throneの独自イベント名フィルターは、次へ切り替えてください: gift。寄付フィルターの変更は不要です。

hasDonation は有料サポートを示す互換性用の値として残り、 donoValue に、提供された、または見積もった米ドル額を格納します。ギフトと支援ではこれらのフィールドを保持します。資金達成では支援の二重計上を防ぐため両方を省略します。通常の商品販売は既定で省略し、eBayの仕様を保ちます。ストア、ウィッシュリストURL、現物商品からギフト目的を推測しないでください。購入者自身や他の受取人向けの購入は、ソースがクリエイターへのギフトと明示しない限り販売のままです。

任意の共有 meta.commerce のフィールド: recipient (creator、buyer、other)、 itemType (physical、digital、service)、 quantity (正の商品数)、 currency (ISO通貨)、 goalAmount (通貨の主単位による資金目標。新たな収入ではない)と orderTotal (判明している、通貨の主単位による支払い済み注文の合計。寄付収入ではなく商取引)。不明な情報は省略します。商品名の格納先: subtitle、画像の格納先: contentimg、支援者のテキストは chatmessage。既存のプロバイダーメタデータは引き続き利用できます。Throneは受取人と通貨、完了時にはgoalAmountも提供し、eBayは数量を提供します。どちらも商品種類を推測したり、受取人の非公開情報を公開したりしません。

アクティビティフィードは、支援者のテキストがなくてもこれらのイベントを表示します。Multi-Alertsはギフトと支援に寄付の表示形式を使い、金額を持たない独立したGift Fully Funded通知も含みます。購入には別のPurchaseカテゴリがあり、既定で有効です。設定する値: purchasestyle, purchasesound, purchaseaccent、および disablepurchases のURL設定を使います。購入アラートは寄付合計を変更しません。

Event FlowはEvent TypeとOther Eventトリガーで、これらのイベント名を提供します。Donationトリガーは引き続き次を調べます: hasDonation。Gift Subトリガーはメンバーシップの意味を保持します。Compare Propertyには次のようなネストしたパスを指定できます: meta.commerce.recipient。アクションテンプレートで使える値: {meta.commerce.quantity} および {meta.commerce.currency}に加え、既存の {donation}, {subtitle}、および {meta}。ネストしたパスでは大文字・小文字を区別し、値がない場合は空にし、プロトタイプの探索は禁止します。

クリエイターコマースのWebhookと商品紹介オーバーレイ

Ko-fiの公開Donation支払いは次を保持します: hasDonation 、米ドル換算の次の値を付けます: donoValue。サブスクリプションの支払いが使う値: new_subscriber または resub。ティアの格納先: membership。Shop OrderとCommissionが使う値: purchase 寄付金額は含まれません。非公開のKo-fiイベントは引き続き除外されます。フォーム形式でエンコードされたJSONは一度だけデコードされ、名前とメッセージはプレーンテキストです。

Buy Me a Coffee donation.created 金銭的なサポートの情報を保持します。 extra_purchase.created および commission_order.created は次になります: purchase. wishlist_payment.created は次になります: giftcontribution その支払い金額のみを使用します。 meta.commerce.completed 新たな金額付きの行を出力せず、プロバイダーの完了フラグを記録します。 membership.started は次になります: new_subscriber ティアの格納先: membershipとなり、次の値を誤用しなくなりました: hasDonation をティア名に使います。サブスクリプション開始時の金額は、独立した支払い済み請求として扱いません。テスト、返金済み、失敗、未対応の更新・ライフサイクルイベントでは有料アラートを生成しません。非公開の支援者メモは省略します。

FourthwallはORDER_PLACED(purchase)、GIFT_PURCHASE(gift、受取人が他者)、DONATION(通常の寄付行)、SUBSCRIPTION_PURCHASED(new_subscriber)。既存の注文合計では次を保持します: hasDonation を後方互換性のために使い、次の印を付けます: meta.commerce.legacyDonationValue: true。これは新しい商品販売の既定ルールに対する明示的な例外です。ギフトカード適用の注文は、寄付額を含まない購入アラートを送信します。注文合計から新たな請求額を確実に推測できず、ギフト購入はすでに計上済みのためです。請求先の名前やメールアドレスを公開の識別情報に使いません。ダッシュボードのテストイベントや注文更新で有料アラートは生成しません。

これらのアダプターは、既存の転送、ボット操作、Event Flow、宛先経路を保持し、次を使います: meta.webhookId による重複除外を使います。公開名、プレーンテキストのメッセージ、判明している商品名を次で提供します: subtitle、ISOの meta.commerce.currency を、該当する場合は数値の寄付額と併せて含めます。返金の会計処理や新しい受信認証は追加しません。プロバイダーの既存の設定済みWebhook経路を使ってください。

meta.monetization.commerce 格納先: monetization_update にはenabled、qr、position、display(first/cycle)、seconds、公開items配列を格納します。各項目はname、url、image、任意のamount(不明ならnull)、currency、purpose(shop/gift/support/membership)を持ちます。これらは配信者が入力した紹介情報であり、支払い証拠ではありません。追加・編集で寄付・購入イベントは発生しません。汎用オーバーレイが使う値: mode=commerce; view=both|showcase|card|alerts はプロモーションとアクティビティを分離します。任意のURLパラメーターstyle、scale、cardevery、cardfor、onlytypeで表示を制御します。既存のプロバイダーモードでも、viewとスケジュールの制御を使用できます。参照: 設定ガイド.

Throneのギフトイベント

任意のMonetization連携は、署名付きThroneイベントを次の値で転送します: platform および type 設定する値: throne。3つとも、安定した配信識別子を使います: id、プレーンテキストの chatname, chatmessage 付随する値: textonly: true、商品名の格納先: subtitle、任意のHTTPSサムネイルは contentimg.

イベント意味寄付額 / 順位
gift購入されたギフトhasDonation 、米ドルの donoValue。ギフト順位を+1:
giftcontributionギフトへの支援支援額のみ。順位は上げません
giftfunded共同購入ギフトの達成不要 hasDonation または donoValueで以前の支援の二重計上を避け、ギフト順位を+1します:

meta.throne に含まれる値: itemName, creator (公開ユーザー名)、 completed, currency 、通貨の主単位の amount。対象: giftfundedでは、金額は目標を表し、新たな収入ではありません。匿名のギフト送信者は引き続き Anonymous。完了したコミュニティギフトが使う値: Community。非公開の支払い・配送フィールドは一切転送しません。

monetization_update スナップショットにはさらに次が含まれます: meta.monetization.throne: enabled, username, url, qr, position, rank、および gifts。これらのスナップショットにはWebhook URLや受信認証情報は含まれません。

配信者の音声コマンド(デスクトップのプレビュー版)

Event Flowの この言葉を話したとき… トリガーは、SSAppから信頼されたローカルマイクのコマンドを受け取ります。その内部アクションコンテキストでは次を使用します: chatname: "Host", type: "hostvoice"、認識したフレーズの格納先: chatmessage、および textonly: true。これはプラットフォームからの受信イベントでも、新しいチャットの通信方式でもありません。チャット経由でこれらのフィールドを送っても、音声トリガーは起動しません。

更新済みのデスクトップ版、マイクの明示的な開始、テストモード後のアクション有効化が必要です。参照先: プレビューの設定と検証状況.

商品表示の操作

既存の monetization_update スナップショットには次が含まれる場合があります: meta.monetization.commerce.live:保存済みスケジュールならnull、または {mode: "show" | "hide", url?: "https://...", until: 0 | epochMilliseconds}。Showは保存済み商品URLと完全一致で照合し、商品がなければカードを表示しません。untilが正の値なら期限後に保存済みスケジュールへ戻り、0なら変更またはSSNの再起動まで続きます。Hideは商品紹介を隠すだけで、有料アクティビティのアラートは抑止しません。

commerce.viewerURL は公開された読み取り専用ショップURL、または空文字列です。ある場合、紹介用QRコードはそこへリンクします。SSNのセッションや公開キーは含みません。商品は引き続き次に保持します: commerce.items。表示操作、インポート、公開によって寄付・購入イベントは発生しません。参照先: 商品操作 をEvent FlowとリモートAPIで使います。

Event Flowの commerceControl アクションは、直接またはChromeからの応答を最大8秒待ちます。通常のイベントペイロードではイベントを保持し、次を追加します: meta.commerceControlResult: {success: true, commerce: controlState} または {success: false, error: "..."}。既存の値が数値、配列、その他のオブジェクト以外の形式の場合: metaの場合はメタデータを変更せず、診断情報を次として返します: commerceControlResult を代わりにアクション結果へ格納します。操作が失敗すると、元の支払いイベントは抑止せず、その連鎖の後続アクションを止めます。タイムアウトは操作が適用されなかった証明ではありません。Nextなどの相対操作を再試行する前に状態を確認してください。成功はローカルの選択・非表示・スケジュール状態を確認するもので、OBSでの表示や公開ページとの同期は確認しません。

名前付きのStream Deck・APIワークフロー

対象の 名前付きワークフロートリガー は、次を含む内部Event Flowメッセージを作成します: type: "api", event: "workflow_trigger", chatname: "Stream Deck / API"、空の chatmessage、および textonly: true。その meta.workflow オブジェクトにはトリガー名と、呼び出し側が指定するJSONの次の値を含めます: data オブジェクトです。次のようなテンプレートで値を読み取ります: {meta.workflow.data.minutes}。そのトリガーに明示的に一致する、保存済みで有効なフローだけを評価します。これは受信する視聴者・チャットイベントではなく、チャットとして配信しません。これらのフィールドをチャットにコピーしても、名前付きトリガーは起動しません。

NinjaChatter視聴者機能の試験導入

実験的なペアリング済み拡張機能コネクターは、表示専用の行を次の値付きで送信します: type: socialstreamchat, platform: ninjachatter、および textonly: true. meta.ninjachatter が持つ値: origin: audience、説明用の provider、公開の room IDを使います。これらの行はプラットフォームへの返信、ボット、Event Flowトリガー、ポイント処理を通りません。プロバイダーが表示されていても、認証済みという意味ではありません。従来のNinjaChatterソース取り込みに含まれる値: meta.ninjachatter.room をルームごとの重複抑止に使います。

Cheerは独立した認証付きの要求・結果経路を使い、特別なチャットコマンドは使いません。固定プリセットが送信する既存のActionsオーバーレイイベント: show_text メッセージを3秒間表示します。受信は通信として受け付けたことを示し、OBSでの表示確認ではありません。視聴者のペイロードから任意のアクションを選ぶことはできません。NinjaChatterでは試験機能は既定で無効です。Electronは、新しい非公開ペアリングの境界を検証できるまで既存の転送を維持します。

コマースの枠ボードと最近の売上

既存の monetization_update イベント(type/platform: socialstream)には次も含まれます: meta.monetization.boards。その board に含まれる値: title, style (spots/teams)、 columns (1–20), visible、最大120件の spots。各枠には文字列の次の値があります: id、プレーンテキストの label, status (available/claimed/revealed)と result (プレーンテキスト。公開するまで空欄)。確保や公開は配信者が入力する表示状態であり、購入の証明やランダムな割り当てではありません。

boards.sales に最近の記録を最大100件格納します: id, title、任意の amount (不明な場合はnull)、 currency, quantity, source、および at (記録時点のUnix時刻、ミリ秒)。 automatic で収集を有効にし、 salesVisible で表示と次を制御します: revision は変更時に増加します。自動収集で受け付けるのは次だけです: purchase イベントをShopify、eBay出品者、Fourthwall、Ko-fi、Buy Me a Coffeeから受信します。非公開・テストイベントは除外します。オークションのメタデータ、投げ銭、ギフト、枠の確保を購入として扱いません。自動記録は注文合計、出品価格、寄付額を商品価格に代用しません。手動記録が使う値: source: "Host confirmed".

状態はこのインストール環境の非公開収益化ストレージに保持します。公開スナップショットには配信重複除外ID、購入者識別情報、シークレットを含めません。明示的に表示する売上は、削除用のイベントIDを保持します。返金分は配信者による削除が必要です。重複購入IDは別に最大2,000件記憶し、表示履歴の消去後も残します。既存の getCommerceState 応答には次が含まれます: commerce.boards; commerceControl は、次のガイドにあるボード・売上コマンドを受け付けます: ボードガイド。手動編集は更新した状態を配信しますが、購入イベント、寄付合計、有料報酬は作成しません。ホストのスナップショットが35秒間届かないと、オーバーレイは非表示になります。

出品者向け手順の追加: commerce.boards.board.id でボードの世代を識別します。手動の saleAdd が提供する場合のある値: boardId および spotId を使用して、販売の記録と枠の確保を一括で行います。最近の履歴に残っている、関連付け済みの重複した販売は拒否されます。 saleRemove 付随する値: reopenSpot: true ボードの世代がまだ一致している場合に限り、その枠を解放します。公開される販売情報には、これらの操作用の関連付けフィールドは含まれません。任意の platform を手動売上に設定すると、フィルタリング用のソースを保持します。一方、 source: "Host confirmed" で確認方法を識別します。 amount は項目の合計で、次を含みます: quantity。eBayの支払い済み注文アダプターの meta.ebayPurchase.quantity は保持されます。

salesSettings.auctionSource でWhatnotまたはeBay Liveの商品ヘルパーを有効にします。制御応答の commerce.auction には、最後に取り込んだ次のイベントのsource、title、priceText、status、atだけを格納します: auction_update、またはnullです。5分で期限切れになり、ソース変更、アイドル状態のスナップショット、再起動時に消去します。ヘルパーは操作担当者専用で、永続保存も視聴者への配信への追加も行いません。入札者・落札者の識別情報は破棄します。ソーススクリプトとオークションイベントのペイロードは変わりません。下書きをコピーしても、支払いの確認や売上の作成は行いません。