本页内容
什么是 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。回传筛选器可防止中继循环,但不能修复旧版本中目标匹配重叠的问题。
继续参阅 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/文件中。桌面应用使用这些文件;其打包的备用副本不是权威来源。
维护者可在桌面应用的以下位置追踪设置: index.html 来源窗口创建,然后 main.js 和 preload.js 进行注入和桥接。
向来源回复和中继
传入标识与传出能力有关,但两者并不是同一约定。
| 操作 | 如何选择 | 常见故障 |
|---|---|---|
| 回复来源 | 使用 tid 以准确寻址原始标签页/窗口。 |
否 tid,或该捕获模式无法发送聊天。 |
| 中继到平台 | 询问已打开的来源是否支持该传出目标。 | 所选变体没有匹配的已打开来源窗口,或来源无法发送聊天。 |
| 中继到除来源外的所有平台 | 广播到可路由的来源,并排除原始的 tid. |
来源无法接受自动输入,或回传消息被再次捕获。 |
- 来源脚本的
getSource响应表明传出可路由性。共享 YouTube 控件可能将两个变体归为一组,而聊天中继会添加准确的 Shorts URL 上下文来匹配目标。 - 通用捕获可以查找并聚焦可能的输入框,但这不保证网站会接受自动发送。
- API/WebSocket 模式可能通过平台 API 发送,而不是在可见页面中输入。
- 在桌面应用中, 机器人仅回复(不捕获) 使来源仍可用于回复/状态,同时抑制其正常捕获的消息。
- 构建多平台中继前,先用一个来源窗口测试回复支持。