來源類型

傳入篩選器應使用承載資料中準確的來源名稱;向外傳送聊天前,應了解目標系列。

什麼是 type?

type 是傳入 Social Stream 承載資料中的標準來源識別碼。疊加畫面、URL 篩選器、API 與 Event Flow 用它區分平台與來源變體。

{
  "type": "youtubeshorts",
  "chatname": "Ava",
  "chatmessage": "Hello from Shorts"
}
名稱 含義 不要與其混淆
type 傳入承載資料來源,例如 youtube 或 instagramlive. 顯示標籤、連線模式或事件名稱。
event 發生了什麼,例如 superchat, gift,或 viewer_update. 產生它的平台。
sourceName 選用的頻道、房間或來源顯示名稱。 來源觸發器使用的穩定值。
tid 原始分頁或桌面來源視窗 ID,用於回覆與排除來源。 平台類型。
桌面應用程式 target 儲存的分類,用於選擇 URL、模式與擷取指令碼。 保證每個發出的承載資料都具有相同字串。

重要: Event Flow 的 來自來源(From Source) 觸發器直接將設定值與下列欄位比較: message.type。使用承載資料中準確的小寫值。

常見與易混淆的類型

擷取或介面名稱 承載資料類型 為什麼可能令人意外
YouTube 直播聊天 youtube DOM、API 輪詢與 WebSocket/串流描述的是傳輸方式,不是不同類型。
YouTube Shorts 直播聊天 youtubeshorts 在傳入篩選器與 Event Flow 中繼目標中,它是獨立類型;共用 YouTube 控制項仍會在需要時將兩個變體視為同一系列。
Instagram Live/InstaFeed 直播 instagramlive Instagram 貼文與動態留言使用 instagram.
TikFinity tiktok TikFinity 是連接器;標準化後的平台仍為 TikTok。
X x,或舊版的 twitter ,搭配 Twitter 品牌選項 現有篩選器可能有意保留舊名稱。
Bilibili 地區選項 bilibili 桌面目標與指令碼可能寫作 bilibilicom 或 bilibilitv,同時將承載資料標準化。
OBS 系統事件 obs 它們不是聊天來源,但可以透過下列事件進入 Event Flow: scene_changed.

使用 事件參考 了解欄位契約,並參閱 支援的網站 了解公開的平台設定名稱。

YouTube Shorts 與 Event Flow

傳入比對是精確比對: 使用 youtubeshorts 用於 Shorts 訊息的來源觸發器,而 youtube 用於一般 YouTube 直播聊天。

傳出比對也是精確比對: 聊天中繼將它們視為獨立目標。

  • 目標 youtube 僅傳送至一般 YouTube 直播聊天視窗。
  • 目標 youtubeshorts 僅傳送至 YouTube Shorts 直播聊天視窗。
  • 若要同時傳送給兩者,請為各目標新增一個操作,或中繼至除來源外的所有平台。

其他 YouTube 通用控制項可能有意將兩個類型視為同一平台系列。這不會改變上方精確的 Event Flow 比對。

舊版本疑難排解

舊版本將兩個中繼目標歸在一起,因此兩個操作可能向每個 YouTube 視窗各傳送兩次。出現此情況時,請更新 Social Stream Ninja。回傳篩選器可防止中繼循環,但不能修復舊版本中目標比對重疊的問題。

Social Stream Ninja Event Flow 編輯器,顯示已連接的觸發器、篩選器與操作節點
來源觸發器讀取傳入承載資料類型;聊天中繼選擇傳出的來源視窗。

繼續參閱 Event Flow 指南 或 YouTube 設定指南.

Instagram 直播與 Instagram 留言的差異

使用 instagramlive 用於 Instagram Live 或 InstaFeed 直播來源擷取的直播間聊天。使用 instagram 用於非直播動態、貼文或靜態留言。

  • 直播聊天流程: 來源為 = instagramlive.
  • 貼文/留言流程: 來源為 = instagram.
  • 兩者: 使用兩個觸發器連接同一個共用操作,或使用任意來源觸發器並接上能識別類型的篩選器。

僅憑可見的 Instagram 品牌不足以確定類型;需依內容脈絡區分兩者。

通用、自訂與未命名來源

sources/generic.js 是通用 DOM 擷取備援。它尋找常見聊天列、名稱、訊息、大頭貼與輸入欄位。它以下列類型開始: generic,然後通常從已知平台或頁面主機名稱衍生小寫類型。

  • 撰寫專用來源前,先用它驗證一般 DOM 聊天可被擷取。
  • 不要預期能可靠支援事件、審核、刪除、虛擬化清單或封閉的 shadow DOM。
  • 從主機名稱衍生的類型很方便,但並不是永久的公開契約。圍繞它建立篩選器前,請確認實際發出的承載資料。
  • 如果來源沒有既定平台名稱,請選擇一個穩定的小寫 type。使用 sourceName 用於面向使用者的房間或頻道標籤。
  • 如果尚無穩定識別, generic 比每則訊息都變更類型更安全。外部整合通常使用明確選定的值,例如 external.

使用者、疊加畫面或流程一旦依賴新類型,請將其記錄在 事件參考 ,不要悄悄將其重新命名。

桌面應用程式指令碼注入

桌面應用程式儲存來源的 target,選擇一個或多個 sourceFile/sourceFiles,開啟來源視窗,並注入本專案的共用擷取指令碼。Chrome 執行階段相容橋負責在頁面與應用程式之間傳遞擷取的訊息與回覆命令。

  • 目標與指令碼檔名不必與承載資料類型相符。 youtubeshorts 目標載入 sources/youtube.js,它發出 youtube 或 youtubeshorts ,來自頁面執行環境。
  • Bilibili 目標也類似地對應至共用/地區指令碼,同時發出 bilibili.
  • sources/inject/*.js 檔案是頁面執行環境中的通訊端或頁面變數助手。來源包裝器仍負責標準承載資料。
  • 注入多個指令碼時,不要讓每個助手都宣告相同的傳出目標。擷取識別與回覆能力是兩個不同方面。
  • 來源擷取變更應位於本存放庫的 sources/ 檔案中。桌面應用程式使用這些檔案;其封裝的備援副本不是權威來源。
Social Stream Ninja 桌面應用程式來源項目,顯示連線模式
每個桌面來源保留自己的目標、URL、連線模式與擷取指令碼。

維護者可在桌面應用程式的下列位置追蹤設定: index.html 來源視窗建立,然後 main.js 和 preload.js 進行注入與橋接。

向來源回覆與中繼

傳入識別與傳出能力有關,但兩者並不是同一契約。

操作 如何選擇 常見故障
回覆來源 使用 tid 以準確定址原始分頁/視窗。 否 tid,或該擷取模式無法傳送聊天。
中繼至平台 詢問已開啟的來源是否支援該傳出目標。 所選變體沒有相符的已開啟來源視窗,或來源無法傳送聊天。
中繼至除來源外的所有平台 廣播至可路由的來源,並排除原始的 tid. 來源無法接受自動輸入,或回傳訊息被再次擷取。
  • 來源指令碼的 getSource 回應表明傳出可路由性。共用 YouTube 控制項可能將兩個變體歸為一組,而聊天中繼會新增準確的 Shorts URL 脈絡來比對目標。
  • 通用擷取可以尋找並聚焦可能的輸入欄位,但這不保證網站會接受自動傳送。
  • API/WebSocket 模式可能透過平台 API 傳送,而不是在可見頁面中輸入。
  • 在桌面應用程式中, 機器人僅回覆(不擷取) 使來源仍可用於回覆/狀態,同時抑制其正常擷取的訊息。
  • 建立多平台中繼前,先用一個來源視窗測試回覆支援。

在哪裡尋找準確詳情

除錯時,檢查一個原始承載資料並記錄其 type, event, sourceName,以及 tid。這通常能區分傳入比對、傳出路由與重複擷取問題。