На этой странице
Что такое 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 |
Необязательное отображаемое имя канала, комнаты или источника. | Стабильное значение, используемое триггером From Source. |
tid |
Идентификатор исходной вкладки или окна источника приложения для ответов и исключения источника. | Тип платформы. |
Настольное приложение 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 в триггере From Source для сообщений Shorts, а youtube для обычного чата прямого эфира YouTube.
Исходящее сопоставление тоже точное: Relay Chat рассматривает их как отдельные направления.
- Назначение
youtubeотправляет только в окна обычного чата прямого эфира YouTube. - Назначение
youtubeshortsотправляет только в окна чата прямого эфира YouTube Shorts. - Чтобы отправить в оба, добавьте по одному действию для каждого направления либо ретранслируйте всем платформам, исключая источник.
Другие общие команды YouTube могут намеренно считать оба типа одним семейством платформы. Это не меняет точное сопоставление Event Flow, описанное выше.
Устранение проблем старых версий
Старые версии объединяли оба направления ретрансляции, поэтому два действия могли дважды отправлять сообщение в каждое окно YouTube. Если это происходит, обновите Social Stream Ninja. Фильтр отражений предотвращает циклы ретрансляции, но не исправляет пересечение направлений в старых версиях.
Продолжите в Руководство по Event Flow или Руководство по настройке YouTube.
Instagram Live и обычные комментарии
Используйте instagramlive для чата эфира, захваченного источником Instagram Live или InstaFeed live. Используйте instagram для обычной ленты, публикаций или статичных комментариев.
- Поток чата прямого эфира: Из источника =
instagramlive. - Поток публикаций и комментариев: Из источника =
instagram. - Оба: используйте два триггера с одним общим действием либо триггер любого источника и фильтр с учётом типа.
Видимого бренда Instagram недостаточно для выбора типа; два варианта различаются контекстом содержимого.
Универсальные, собственные и безымянные источники
sources/generic.js — универсальный резервный DOM-захват. Он ищет типичные строки чата, имена, сообщения, аватары и поля ввода. Начинает с generic, затем обычно выводит тип в нижнем регистре из известной платформы или имени хоста страницы.
- Используйте для проверки возможности захвата обычного DOM-чата перед написанием специального источника.
- Не ожидайте надёжной поддержки событий, модерации, удаления, виртуализированных списков или закрытого shadow DOM.
- Тип, полученный из имени хоста, удобен, но не является постоянным публичным контрактом. Прежде чем строить фильтры, проверьте передаваемые данные.
- Если у источника нет устоявшегося имени платформы, выберите одно стабильное значение в нижнем регистре для
type. ИспользуйтеsourceNameдля читаемой человеком подписи комнаты или канала. - Если стабильной идентичности пока нет,
genericбезопаснее, чем менять тип в каждом сообщении. Внешние интеграции обычно используют намеренно выбранное значение, напримерexternal.
Когда пользователи, оверлеи или потоки начинают зависеть от нового типа, опишите его в Справочник событий вместо незаметного переименования.
Внедрение скриптов настольного приложения
Настольное приложение сохраняет у источника target, выбирает один или несколько sourceFile/sourceFiles, открывает окно источника и внедряет общие скрипты захвата этого проекта. Мост совместимости Chrome runtime передаёт сообщения и команды ответов между страницей и приложением.
- Цель и имя файла скрипта не обязаны совпадать с типом данных. Цель
youtubeshortsцель загружаетsources/youtube.js, который передаётyoutubeилиyoutubeshortsиз контекста страницы. - Цели Bilibili также сопоставляются общим или региональным скриптам, передавая
bilibili. sources/inject/*.js— помощники в контексте страницы для сокетов или переменных. Обёртка источника по-прежнему отвечает за канонические данные.- При внедрении нескольких скриптов не допускайте, чтобы каждый помощник объявлял одно исходящее направление своим. Идентичность захвата и возможность ответа — разные вопросы.
- Изменения захвата источников вносятся в файлы этого репозитория
sources/. Настольное приложение использует их; упакованная резервная копия не является источником истины.
Сопровождающие могут проследить настройку в файле настольного приложения index.html создание окна источника, затем main.js и preload.js для внедрения и связи.
Ответы и ретрансляция в источники
Идентичность входящих данных и возможность отправки связаны, но это разные контракты.
| Действие | Как выбирает | Частая ошибка |
|---|---|---|
| Ответ источнику | Использует tid для обращения к точной исходной вкладке или окну. |
Нет tidлибо этот режим захвата не умеет отправлять сообщения. |
| Ретрансляция на платформу | Запрашивает у открытых источников поддержку указанного направления отправки. | Для выбранного варианта нет подходящего открытого окна источника либо источник не умеет отправлять сообщения. |
| Ретрансляция всем, кроме источника | Отправляет всем подходящим источникам, исключая исходный tid. |
Источник не принимает автоматический ввод или отражённое сообщение захватывается повторно. |
- Параметр скрипта источника
getSourceответ сигнализирует о возможности исходящей маршрутизации. Общие команды YouTube могут объединять оба варианта, а Relay Chat добавляет точный контекст URL Shorts для сопоставления назначения. - Универсальный захват может находить вероятные поля ввода и переводить на них фокус, но это не гарантирует, что сайт примет автоматическую отправку.
- Режимы API/WebSocket могут отправлять сообщения через API платформы вместо ввода в видимую страницу.
- В настольном приложении Бот только для ответов, без захвата оставляет источник доступным для ответов и состояния, подавляя обычные захваченные сообщения.
- Проверьте поддержку ответов на одном окне источника перед созданием ретрансляции между платформами.
Где найти точные сведения
- Справочник событий: канонические поля и имена событий платформ.
- Руководство по Event Flow: триггеры, действия, шаблоны, обработка отражённых сообщений и тесты.
- Режимы отдельного приложения: поведение окон источников и режимов подключения.
- Поддерживаемые сайты: названия платформ и требования настройки.
- Универсальные и собственные источники: резервный и внешний захват.
- Окна источников настольного приложения: внутреннее устройство целей, скриптов, мостов и режима только ответов.
- Добавление источника: контракты источников, помощники внедрения, манифесты и документация.
При диагностике изучите одно исходное сообщение данных и запишите его type, event, sourceName, и tid. Обычно это помогает разделить сопоставление входящих данных, исходящую маршрутизацию и повторный захват.