来源类型

传入筛选器应使用载荷中准确的来源名称;向外发送聊天前,应了解目标系列。

什么是 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。这通常能区分传入匹配、传出路由和重复捕获问题。