單一計數器(觀眾、追蹤者、訂閱者)使用純整數,更豐富的脈絡使用物件。部分較舊的事件,例如 Twitch DOM community_highlight,攜帶字串。在讀取物件屬性前檢查特定事件的資料結構;新增的結構化詳情應放在物件中。
data.timestamp
數值(可選)
Unix milliseconds. Sources convert supplied event times before sending the message; SSN supplies receipt time when no valid timestamp is available. Structured event times in meta also use Unix milliseconds, with missing or invalid times omitted or null. Duration fields keep their documented units.
商業疊加畫面應使用位於以下位置的快照物件: meta (例如 auction_update 和 commerce_update),並避免臨時新增頂層欄位。
Network auction events from Whatnot and eBay include meta.captureId, an opaque page/connection marker. A change means consumers should review capture continuity. It is not an auction ID or proof of payment; it is reported with the next auction event.
來自 API 的聊天轉送使用 meta.plainText 用於純文字訊息,與豐富文字 chatmessage 內容。它是文字而非 HTML,仍可包含 Unicode 表情。會員徽章改用表情作為備援(⭐, 💝, 🏅, etc.) to remain consistent with DOM capture. Chat, paid support, and membership payloads include the native ID in meta.messageId when available, for deletion sync and pending bot reply cancellation.
YouTube 訂閱者提醒(new_follower)
Social Stream 現在可以使用以下方式偵測新的 YouTube 訂閱者: myRecentSubscribers API 端點。其運作方式類似於 Streamlabs 訂閱者提醒。
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 提醒框
Socket alerts identify Streamlabs with meta.platform: "streamlabs". The alert kind stays in type 和 event; meta.sourcePlatform identifies the upstream service when supplied.
Fan Club level: TikTok chat messages include meta.teamMemberLevel when an explicit Team level or numeric Fan Club badge level is available. It is a non-negative integer; 0 is an explicitly supplied zero, while an absent field means unknown. It excludes user-grade/gifter ranks and levels inferred from badge image filenames. Standard capture reads the numeric Fan Club badge metadata attached to each rendered chat message. The TikFinity activity-feed widget does not supply this field. For minimum-level filtering, use Compare Property → TikTok Team Level together with a TikTok source condition; messages with unknown levels do not match. The older meta.memberLevel field has capture-dependent meaning and should not be used for an exact Fan Club threshold.
其他選用欄位包括 meta.catalogProductId (封包的 product.productId), meta.parentProductId (product.parentId), meta.transactionType (Whatnot 的銷售類型,保持不變),以及 meta.placeOrderErrorReason (Whatnot's supplied order/payment error code). These product references describe the catalog or parent listing; they do not replace an order ID. Stock quantity is not treated as purchased quantity. When product.breakInfo supplies them, meta.breakId, meta.breakSpotId,以及 meta.breakFormat preserve the platform values, including numeric IDs. Missing fields are omitted; titles are not used to infer spot identity or random team assignments.
meta 是整數型追蹤者數量。來源每 60 秒輪詢一次賣家端點;該端點仍可能傳回最長快取 5 分鐘的值。
auction_update
目前拍賣中繼資料變化時。
僅含中繼資料的事件。網路擷取會設定 meta.sourceMode 為 network 並提供 title、price、bidder、winner、bids、timer 和 endingAt。 meta.ebay 包含 eventId、listingId、GraphQL 商品記錄(listing)、目前的公開 socket 商品資訊(eventListing),以及最新的拍賣更新(update). These preserve category, images, currencies, quantities, case-break details, auction results and timing fields without flattening away platform detail. The GraphQL record is a fetched snapshot; the socket listing and update carry newer live state. Auction start, will-start, and end updates accept both the original and V2 event names; the original name remains in meta.ebay.update.typename. A sold result identifies the auction winner, not confirmed payment. Initial/reconnect history is folded into the current snapshot rather than emitted as old wins. Removing all presented listings emits status: "idle" 帶有 cardCount: 0 以清除拍賣。DOM 備援保留播放器卡片或活動預覽欄位。
meta includes reward/redemption id, title, cost, status, user input, and redeemer. Structured redemptions are shown once per redemption id during capture; rejected updates and redemptions from before capture started are ignored. New redemptions that arrive already accepted are supported when their original redemption time is supplied.
new_subscriber
channel.subscription.new.
membership 指派給訂閱者角色; meta 包含 { subscriber, plan }。
Forwards Lumni's chat and event rows with type: "lumni". Text-only mode converts HTML message bodies to plain text; donation display amounts stay in hasDonation, with optional numeric USD donoValue.
The Hide events setting suppresses event rows. joined also requires Capture "joined" stream events. Viewer updates require the viewer-count or hype setting.
Dock replies use the connected account's key to send plain-text messages of up to 300 characters. Disconnect stops polling and sending; Forget key removes the saved key for the selected server.
Connects with Socket.IO to the Hou.la event channel (https://api.hou.la/events, path /ws) using an event key (hle_) the creator generates in the Hou.la Studio. Open the page with the Social Stream Ninja extension or in SSApp. Messages use the normal Social Stream settings and destinations.
The event-key page is read-only. Neither mode synchronizes deletions; remove deleted messages from the dock manually. Message formatting follows the Text-only setting. Standard capture forwards new chat rows, excluding existing history, pending comments and visible deletion notices; use the event-key page for donation values, gifts, follows and viewer counts.
事件
觸發時機
承載資料說明
message
A new standard chat row, or a Hou.la comment event (an approved live comment).
chatname 和 chatimg identify the commenter; event-key capture also supplies userid. chatmessage is plain text when textonly is enabled, otherwise escaped HTML. mod 和 bot are set when available. Event-key capture adds hasDonation (100 coins) and numeric USD donoValue, estimated at $0.015 per coin, for paid comments; event stays blank.
gift
Hou.la gift event (a virtual gift sent during the live).
chatmessage is the gift name with its quantity (Dragon x3), hasDonation the coin total (150 coins), donoValue the numeric USD estimate at $0.015 per coin, and contentimg the gift image. meta 帶有 giftId, giftSlug, quantity, coins. Recent replays are dropped using the live and transaction ID.
new_follower
Hou.la follow event (a new follower during the live).
chatname / chatimg identify the follower.
viewer_update
Viewer count stamped on Hou.la event envelopes. While connected, the last known count is repeated every 30 seconds.
meta is the viewer integer. Sent only with capture enabled and either viewer counts or hype mode enabled. No count is sent before Hou.la supplies one.
實作: sources/instagram.js 和 sources/instagramlive.js (identical copies), plus the optional Graph API bridge at sources/websocket/instagram.html
The API bridge polls Graph API comments for one chosen media item. A live video emits type: "instagramlive" and a post or Reel emits type: "instagram"; platform carries the same value. Comments are plain text (textonly: true) with an empty chatimg, userid when the API returns the author ID, and timestamp in Unix milliseconds when valid. meta.messageId is the native comment ID and meta.mediaId the media it belongs to. Comments that already exist when capture starts are shown on the page as history and not forwarded; hidden comments are skipped.
在直播頁面上(/<user>/live/?broadcast_id=...),直播聊天來自 Instagram 自己的 Web 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.
開啟 https://razo.tv/watch/USERNAME. In the desktop app, paste that URL into 新增其他來源(Add other source) and activate it. The signed-in dashboard chat popout and complete Chat overlay link from Creator Studio also work as source URLs.
Captures ordinary Razo chat, including loaded history, once per native message ID during the page session. Messages received while capture is off are skipped.
Chat uses type: "razo" 和 platform: "razo", with display name, username, name color, image badges and message text or emotes. Text-only mode uses emote alt text.
Visible “Message removed” updates remove the corresponding captured message. Paid cards, activity notices, private staff/bot notices and imported multichat rows are excluded; use Razo for those features.
Cloud API capture emits plain-text chat and tip rows with type: "chaturbate". Tips carry hasDonation in tokens and numeric meta.tokens; they do not set a USD override. Anonymous tips use "Anonymous" and omit the sender identity. Media purchases use event: "purchase", the media name in subtitle,以及 meta.mediaId 和 meta.mediaType. meta.messageId preserves the native event ID; id is scoped to the broadcaster in meta.channel. Private messages and initial history are excluded. A tip amount does not identify a tip-menu purchase.
When Breaks has saved state, monetization_update 包含 meta.monetization.breaks. It is null without an active break; otherwise version 1 contains revision, id, title, stage, visible, layout, columns, accent, showBuyers, showPrices, availableOnly, currency, highlight, highlightAt, and up to 120 spots. Spots expose only id, label, buyer, asking price, status, revealed result, description, and image. Buyer names and asking prices are omitted as empty/null when their display options are off. Notes, payment status, paid amounts, costs, stock, stock records, undo, and history are never included. These are host-managed assignments, not platform payment events. Event Flow Breaks results expose only the revision, active ID, and stage. Run a break.
Local Event Flow triggers break_started 和 break_finished fire after a private workspace stage change commits. They use type 和 platformsocialstream, chatname: "Breaks", and the public break title in chatmessage 帶有 textonly: true. They are sent directly to the host's Event Flow engine, not broadcast as chat rows. They contain no buyer, order, payment, packing or stock fields. Repeatedly saving the same stage does not fire another event; changing away and back can.
Event Flow 在 Event Type 和 Other Event 觸發條件中提供這些事件名稱。贊助觸發條件仍檢查 hasDonation;Gift Sub 觸發條件保留會員語意。Compare Property 接受巢狀路徑,例如 meta.commerce.recipient。動作範本接受 {meta.commerce.quantity} 和 {meta.commerce.currency},以及現有的 {donation}, {subtitle},以及 {meta}。巢狀路徑區分大小寫,缺失值顯示為空,並禁止遍歷原型。
Patreon new pledges
Standard Patreon chat uses a patreon:chat:-prefixed message ID scoped to the chat, so separate messages with identical text remain distinct when duplicate filtering is enabled. When viewer counts are enabled and the page exposes its online-viewer counter, the source emits viewer_update with a numeric meta count.
The signed Patreon receiver maps members:pledge:create 為 type/platform: "patreon" 和 event: "new_subscriber". It requires a campaign/member identity and a current pledge_relationship_start on or after the connection was enabled. Free trials, gifted memberships, declined/former memberships and other event types are excluded.
membership 和 subtitle contain the tier when available; chatname is the supplied name or Anonymous. chatmessage 是純文字(textonly: true), with a labelled pledge amount only when both amount and campaign currency are supplied. No hasDonation 或 donoValue is set: a new pledge is not a payment receipt. Emails, addresses, notes, raw member IDs and account URLs are excluded.
The stable patreon:-prefixed event ID is derived from campaign, member and pledge-chain start, preserving separate pledges with identical text. Delivery retries reuse that ID. Pending events and retry records are retained for seven days; workflows with irreversible external actions should also guard by event ID against interruption between processing and acknowledgment. Connect Patreon alerts.