Типы источников

Для входящих фильтров используйте точное имя источника из данных, а перед отправкой ответов разберитесь с семейством назначения.

Что такое 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 Social Stream Ninja с соединёнными узлами триггера, фильтра и действия
From Source читает тип входящих данных; Relay Chat выбирает исходящие окна источников.

Продолжите в Руководство по 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/ . Настольное приложение использует их; упакованная резервная копия не является источником истины.
Источники настольного приложения Social Stream Ninja с режимами подключения
Каждый источник приложения хранит свою цель, URL, режим подключения и скрипт захвата.

Сопровождающие могут проследить настройку в файле настольного приложения index.html создание окна источника, затем main.js и preload.js для внедрения и связи.

Ответы и ретрансляция в источники

Идентичность входящих данных и возможность отправки связаны, но это разные контракты.

Действие Как выбирает Частая ошибка
Ответ источнику Использует tid для обращения к точной исходной вкладке или окну. Нет tidлибо этот режим захвата не умеет отправлять сообщения.
Ретрансляция на платформу Запрашивает у открытых источников поддержку указанного направления отправки. Для выбранного варианта нет подходящего открытого окна источника либо источник не умеет отправлять сообщения.
Ретрансляция всем, кроме источника Отправляет всем подходящим источникам, исключая исходный tid. Источник не принимает автоматический ввод или отражённое сообщение захватывается повторно.
  • Параметр скрипта источника getSource ответ сигнализирует о возможности исходящей маршрутизации. Общие команды YouTube могут объединять оба варианта, а Relay Chat добавляет точный контекст URL Shorts для сопоставления назначения.
  • Универсальный захват может находить вероятные поля ввода и переводить на них фокус, но это не гарантирует, что сайт примет автоматическую отправку.
  • Режимы API/WebSocket могут отправлять сообщения через API платформы вместо ввода в видимую страницу.
  • В настольном приложении Бот только для ответов, без захвата оставляет источник доступным для ответов и состояния, подавляя обычные захваченные сообщения.
  • Проверьте поддержку ответов на одном окне источника перед созданием ретрансляции между платформами.

Где найти точные сведения

При диагностике изучите одно исходное сообщение данных и запишите его type, event, sourceName, и tid. Обычно это помогает разделить сопоставление входящих данных, исходящую маршрутизацию и повторный захват.