Команды и API

Управляйте Social Stream Ninja с помощью встроенных команд, автоматизации и интеграции API

Команды бота

Встроенные команды бота

В Social Stream Ninja есть несколько встроенных команд, которыми зрители могут пользоваться в чате или которые вы можете запускать через API.

Команда Описание Как включить
!joke Отвечает случайной незатейливой шуткой для гиков Включается переключателем в меню расширения
hi Автоматически приветствует всех, кто пишет «hi» в чате Включается переключателем в меню расширения
!cycle При включении позволяет зрителям менять сцены OBS Включается переключателем в меню расширения

Примечание: Команды бота работают только при правильной настройке автоответчика и наличии у вас права отправлять сообщения на соответствующих платформах.

Настройка автоответов

Для правильной работы автоответчика:

  1. Убедитесь, что выполнен вход на платформу (YouTube, Twitch и т. д.)
  2. Убедитесь, что окно чата видно и не свёрнуто
  3. Сначала попробуйте вручную отправить тестовое сообщение, чтобы проверить разрешения
  4. Включите переключатели нужных команд в меню расширения

Если при срабатывании автоответов появляется синяя панель отладки, её можно скрыть, запустив Chrome с флагом --silent-debugger-extension-api .

Серверный API

Обзор

Social Stream Ninja предоставляет мощный API для программного управления всеми аспектами вашей трансляции. Сервер API может как отправлять команды вашей системе, так и получать входящие сообщения из объединённых сервисов чата.

Управление оверлеями

Управляйте выделенными сообщениями, очищайте оверлеи и меняйте отображение контента в трансляции.

Интеграция вебхуков

Получайте события от сторонних сервисов, например Stripe, Ko-Fi и Buy Me A Coffee.

Экспорт сообщений

Экспортируйте сообщения чата в файл или пересылайте их через вебхук (POST) для собственных интеграций.

Обязательные настройки (Global settings → Mechanics):

  • 🎮 Удалённое управление (StreamDeck/Bitfocus): Включить (Enable) «Включить удалённое управление расширением через API» (переключатель 1) — подключитесь к каналу 1
  • 📡 Приёмник чата (приложения Python/Node): Включите переключатель 1 + «Отправлять сообщения чата на сервер API» (переключатель 3) — подключитесь к каналу 4

См. полную документацию API с подробными руководствами по настройке и примерами кода.

Адреса API и способы подключения

HTTP GET/POST

https://io.socialstream.ninja/{sessionID}/{action}/{target}/{value}

Подходит для простых команд со Stream Deck или из собственных скриптов.

WebSocket

wss://io.socialstream.ninja:443

Для двусторонней связи в реальном времени с автоматическим переподключением.

Если вы предпочитаете прямое соединение между участниками без режима WebSocket, используйте WebRTC SDK Social Stream Ninja. В нём есть примеры для Node и браузера, например Приёмник Social Stream Ninja.

Server-Sent Events

https://io.socialstream.ninja/sse/{sessionID}

Для односторонних обновлений с сервера в реальном времени.

Система каналов

API использует систему каналов для маршрутизации сообщений:

	- Channel 1: Remote control commands (default for StreamDeck/Bitfocus)
	- Channel 2: Dock page output
	- Channel 3: Extension receives commands from Dock
	- Channel 4: Chat messages from Extension (use this to receive Twitch/YouTube chat!)
	- Channel 5: Waitlist/giveaway communication
	- Channels 6-9: Reserved for future use

Подключитесь к нужному каналу:

// To receive chat messages (listen on channel 4):
wss://io.socialstream.ninja/join/SESSION_ID/4

// To send commands (channel 1 default):
wss://io.socialstream.ninja/join/SESSION_ID

Основные команды API

Действие Описание Пример
sendChat Отправляет сообщение на все подключённые платформы чата https://io.socialstream.ninja/SESSIONID/sendChat/null/Hello everyone!
sendEncodedChat Отправляет сообщение с URL-кодированием на все платформы https://io.socialstream.ninja/SESSIONID/sendEncodedChat/null/Hello%20everyone%21
clearOverlay Убирает выделенное сообщение из оверлея https://io.socialstream.ninja/SESSIONID/clearOverlay
nextInQueue Показывает следующее сообщение в очереди https://io.socialstream.ninja/SESSIONID/nextInQueue
autoShow Переключает автоматическое выделение сообщений https://io.socialstream.ninja/SESSIONID/autoShow/toggle
blockUser Блокирует пользователя на определённой платформе https://io.socialstream.ninja/SESSIONID/blockUser/null/{"chatname":"username","type":"twitch"}
extContent Отправляет внешний контент как сообщение чата https://io.socialstream.ninja/SESSIONID/extContent/null/{"chatname":"User","chatmessage":"Hello"}
pin Закрепляет существующее сообщение док-панели по идентификатору или полный объект сообщения. Требуется страница dock.html открытая в том же сеансе. https://io.socialstream.ninja/SESSIONID/pin/null/MESSAGE_MID
unpin Открепляет существующее сообщение док-панели по идентификатору. Для док-панели с меткой используйте поле target или сегмент пути. https://io.socialstream.ninja/SESSIONID/unpin/null/MESSAGE_MID
nextPinned Выделяет первое закреплённое сообщение док-панели. https://io.socialstream.ninja/SESSIONID/nextPinned
removefromwaitlist Удаляет первую активную запись списка ожидания или активную запись с указанным номером в value https://io.socialstream.ninja/SESSIONID/removefromwaitlist/null/1
highlightwaitlist Выделяет первую активную запись списка ожидания или активную запись с указанным номером в value https://io.socialstream.ninja/SESSIONID/highlightwaitlist/null/1
stopentries / startentries Останавливает или возобновляет приём новых записей в список ожидания, не очищая существующий список. openentries и resumeentries — альтернативные имена для startentries. https://io.socialstream.ninja/SESSIONID/stopentries
selectwinner Выбирает одного или нескольких случайных победителей из списка ожидания или розыгрыша https://io.socialstream.ninja/SESSIONID/selectwinner/null/1
downloadwaitlist Скачивает текущий список ожидания как TSV-файл из работающей страницы или приложения Social Stream https://io.socialstream.ninja/SESSIONID/downloadwaitlist
drawmode Включает или выключает режим розыгрыша либо переключает его, если value равно toggle https://io.socialstream.ninja/SESSIONID/drawmode/null/toggle
waitlistmessage Задаёт заголовок списка ожидания или розыгрыша, показанный на странице списка ожидания https://io.socialstream.ninja/SESSIONID/waitlistmessage/null/Type%20!join%20to%20enter
resetwaitlist Очищает список ожидания и снова открывает запись https://io.socialstream.ninja/SESSIONID/resetwaitlist

Интерактивная песочница API

Попробуйте API в нашей интерактивной песочнице с удобным доступом ко всем командам и функциям:

Если нужен небольшой набор кнопок для управления эфиром в OBS, используйте Панель управления Social Stream и следуйте руководству по настройке OBS.

Проверить команды

Проверьте все команды API в безопасной среде

Создать код

Получите примеры кода для HTTP, WebSocket и SSE

Просмотреть результаты

Просматривайте ответы на свои команды в реальном времени

Создать проверки

Создавайте тестовые сообщения со случайным содержимым

Примечание: Не забудьте заменить SESSIONID на свой настоящий идентификатор сеанса Social Stream Ninja!

StreamDeck и Companion

Интеграция со StreamDeck

Social Stream Ninja интегрируется со StreamDeck несколькими способами: через встроенные HTTP-действия и Bitfocus Companion.

Способ HTTP/API

Используйте действие StreamDeck «Website» с включённым «GET request in background», чтобы отправлять команды прямо в API.

Bitfocus Companion

Встроенная интеграция с готовыми действиями, обратной связью в реальном времени и переменными для динамического контента.

Интеграция с Companion

Bitfocus Companion предоставляет широкие возможности управления Social Stream Ninja через WebSocket или HTTP API.

Действие Описание Способ API
Очистить выделенное сообщение Убирает текущее выделенное сообщение из оверлея WebSocket/HTTP
Следующее в очереди Показывает следующее сообщение из очереди WebSocket/HTTP
Переключить автоматический показ Включает или отключает автоматическое выделение сообщений WebSocket/HTTP
Отправить сообщение в чат Отправляет сообщение на все подключённые платформы WebSocket/HTTP

Динамические переменные

  • featured_message — текст текущего выделенного сообщения
  • featured_username — имя пользователя текущего выделенного сообщения
  • queue_size — количество сообщений в очереди

Интеграция ИИ

Режим ИИ-бота для чата

Social Stream Ninja предлагает широкую интеграцию ИИ для ответов в чате, модерации и других задач трансляции. Выбирайте локальных или облачных ИИ-провайдеров под свои потребности.

Автоматические ответы в чате

Пусть ИИ автоматически общается со зрителями, отвечает на вопросы и поддерживает разговор, пока вы заняты своим контентом.

Модерация контента

Используйте ИИ для модерации чата: он распознаёт потенциально вредные сообщения и автоматически обрабатывает их по вашим настройкам. Выберите режим без блокировки или со строгой блокировкой.

Поиск RAG

Генерация с дополнением поиском (RAG) позволяет ИИ искать в вашей базе знаний и давать точные ответы по вашему контенту.

Несколько экземпляров ботов

Запускайте разные экземпляры ботов для разных задач: публичный чат-бот, личный бот для общения один на один, бот-цензор и даже мультимодальный ИИ-соведущий, который видит и слышит.

Поддерживаемые ИИ-провайдеры

Social Stream Ninja поддерживает разных ИИ-провайдеров — от полностью локальных моделей в браузере или среде выполнения до облачных API:

Ollama (Native Local API)

Бесплатные ИИ-модели на вашем компьютере с собственным API Ollama, ориентированные на конфиденциальность.

Local Gemma 4

Запускайте Gemma 4 в браузере, предварительно скопировав файлы модели на свой сервер ресурсов; хост SSN largefiles пока не содержит файлов Gemma.

Local Qwen 3.5

Запускайте Qwen 3.5 в браузере из файлов модели на своём сервере для локальных конфиденциальных ответов.

ChatGPT / OpenAI

API OpenAI, включая современные модели чата и голосовые модели реального времени.

Google Gemini

Модели Google Gemini, включая актуальные текстовые модели Gemini 2.5 и мультимодальные варианты для работы в реальном времени.

DeepSeek

Эффективные и экономичные ИИ-модели, оптимизированные для диалоговых задач.

xAI (Grok)

API xAI Grok, включая голосовые сеансы реального времени с краткосрочными клиентскими секретами.

AWS Bedrock

ИИ-модели корпоративного уровня от разных провайдеров, включая Claude и Llama.

OpenRouter

Доступ к нескольким ИИ-моделям через единый интерфейс API.

Groq

Генерация ответов с малой задержкой через API, совместимый с OpenAI, для быстрых диалогов.

Собственный API (совместимый с OpenAI)

Подключайтесь к llama.cpp, LM Studio, vLLM или другому API, совместимому с OpenAI.

Примечание: Ollama использует собственный API. Для llama.cpp, LM Studio, vLLM и других серверов, совместимых с OpenAI, выберите Собственный API.

Интеграция озвучивания текста

Social Stream Ninja поддерживает разнообразные способы озвучивания сообщений ботов и выделенных сообщений чата:

Системное озвучивание

Бесплатное встроенное озвучивание с помощью синтезатора речи вашей операционной системы.

Kokoro

Бесплатное локальное озвучивание через WebGPU или CPU для пользователей, которым важна конфиденциальность.

Kitten TTS

Лёгкий браузерный синтезатор речи, который загружает небольшую модель для локального создания голоса.

ElevenLabs

Высококачественный синтез речи с естественными настраиваемыми голосами.

Google Cloud TTS

Высококачественные голоса с широким выбором языков и настроек.

Gemini (предварительная версия озвучивания)

Предварительные нейронные голосовые модели Google с выбором голоса и языка.

Speechify

Озвучивание текста с помощью ИИ и естественным преобразованием голоса.

OpenAI TTS

Синтез речи OpenAI с выбором голосов, моделей и необязательных совместимых адресов API.

Примечание: Для озвучивания соответствующая страница оверлея должна быть открыта в OBS. Провайдеры различаются голосами, задержкой, ценами и требованиями к оборудованию.

Экземпляры ботов и оверлеи

Social Stream Ninja предоставляет несколько экземпляров ботов для разных задач:

Тип бота URL Описание
Основной бот для чата /bot.html Оверлей основного бота с необязательным озвучиванием и ответами в публичном чате
Интерфейс личного чата /chatbot.html Отдельная страница бота для личного общения, которая не использует набор данных RAG и историю чата основного бота
Бот-цензор (работает в фоне) Автоматически фильтрует, очищает или блокирует входящие сообщения
ИИ-соведущий /cohost.html Мультимодальный ИИ, который может видеть экран, слышать звук и взаимодействовать

Настройка интеграции ИИ

Чтобы настроить интеграцию ИИ в текущем меню, выполните следующие действия:

1

Выберите и подключите провайдера языковой модели

Выберите провайдера в разделе Настроить провайдера языковой модели (Configure LLM Service Provider) и заполните соответствующие поля:

  • Ollama: Установите локально и при необходимости укажите адрес API
  • Local Gemma / Local Qwen: Используйте размещённые файлы браузерной модели и при необходимости переопределите папку модели; Qwen может использовать SSN largefiles, а для Gemma нужна ваша собственная копия папки
  • ChatGPT, Gemini, DeepSeek, xAI, Groq, OpenRouter, Bedrock: Добавьте свой API-ключ и предпочитаемую модель
  • Собственный API: Введите адрес API, совместимого с OpenAI, идентификатор модели и, при необходимости, API-ключ
2

Проверьте выбранного бота для чата

Используйте встроенную кнопку Проверить выбранного чат-бота для проверки провайдера, модели и ключей перед выходом в эфир.

3

Настройте поведение бота

Настройте поведение бота в чате:

  • Включить ИИ-бота для чата на основе языковой модели
  • Задайте имя бота, слова-триггеры и ограничение частоты ответов
  • Выберите, отправлять ли ответы обратно в чат или только на страницу оверлея бота
  • Добавьте инструкции по тону, роли и правилам модерации
4

Включите дополнительные возможности

Включите нужные дополнительные функции бота:

  • Включите озвучивание ответов бота и выберите провайдера
  • Выберите автоматическое скрытие по фиксированному времени, длине сообщения или завершению озвучивания для /bot.html; используйте clearBotOverlay для ручной очистки
  • Включите RAG и загрузите документы, чтобы ответы учитывали базу знаний
  • Включите бота-цензора для модерации или строгого режима блокировки
  • Открыть /bot.html, /chatbot.html, или /cohost.html в OBS или браузере по необходимости

Управление MIDI и сочетаниями клавиш

Интеграция MIDI

Управляйте Social Stream Ninja с помощью MIDI-контроллеров, сочетаний клавиш или StreamDeck с MIDI-плагинами.

Требования для настройки

  1. Включите поддержку MIDI в настройках расширения
  2. Установите виртуальное MIDI-устройство обратной петли (например, loopMIDI)
  3. Настройте MIDI-контроллер или MIDI-плагин StreamDeck
Номер CC Значение Действие Примечания
102 1 Отправить «1» в чат Быстрая реакция
102 2 Отправить «LUL» в чат Реакция эмоутом
102 3 Рассказать шутку Запускает ответ бота
102 4 Очистить оверлей Убирает выделенное сообщение

Совет: MIDI-управление лучше всего работает с физическими контроллерами, но может запускаться и через виртуальные MIDI-устройства.

Поддержка сочетаний клавиш

Используйте сочетания клавиш для быстрого доступа к основным функциям.

Сочетания клавиш настраиваются в меню и работают на уровне системы, когда браузер в фокусе или используется приложение.

Интеграция вебхуков

Сервисы пожертвований

Social Stream Ninja может получать пожертвования и события от сторонних сервисов через вебхуки; ниже приведены несколько популярных примеров:

Stripe

Stripe

Принимайте пожертвования с банковских карт напрямую через свою учётную запись Stripe.

  • Создайте платёжную ссылку на stripe.com
  • В панели Stripe перейдите в Developers → Webhooks
  • Добавьте конечную точку: https://io.socialstream.ninja/SESSIONID/stripe
  • Выберите событие checkout.session.completed
  • Добавить &server к URL док-панели
Ko-Fi

Ko-Fi

Получайте пожертвования на кофе от своих сторонников.

  • Войдите в свою учётную запись Ko-Fi
  • Откройте Настройки вебхуков
  • Добавить https://io.socialstream.ninja/SESSIONID/kofi в качестве URL вебхука
  • Добавить &server к URL док-панели
  • Проверьте кнопкой «Send Single Donation Test»
Buy Me A Coffee

Buy Me A Coffee

Собирайте пожертвования через популярную платформу Buy Me A Coffee.

  • Войдите в свою учётную запись Buy Me A Coffee
  • Перейдите к настройкам вебхуков
  • Добавить https://io.socialstream.ninja/SESSIONID/bmac в качестве URL вебхука
  • Добавить &server к URL док-панели для получения событий
  • Поддерживаются пожертвования и события платных подписок

Примечание о безопасности: Держите идентификатор сеанса в секрете: любой, кто его знает, может отправить поддельное пожертвование в ваш оверлей. URL вебхука следует считать конфиденциальным.

Интеграция внешних сервисов

Social Stream Ninja также может отправлять данные сторонним сервисам:

Сервис Параметр URL Описание
Singular Live &singular=IDENTIFIER Отправляет выбранные сообщения в Singular Live для оверлея выделенных сообщений
H2R &h2r=IDENTIFIER Отправляет выбранные сообщения на локальный сервер H2R
Произвольный POST &postserver=URL Отправляет выбранные сообщения на собственный адрес через POST
Произвольный PUT &putserver=URL Отправляет выбранные сообщения на собственный адрес через PUT

Эти параметры нужно добавлять к URL док-панели.

Собственные скрипты

Собственный JavaScript

Вы можете создавать собственные команды и функции, изменяя JavaScript-код:

Использование custom.js

  1. Переименовать custom_sample.js на custom.js
  2. Измените файл, добавив нужные возможности
  3. Откройте файл dock.html локально, чтобы загрузился custom.js

Этот способ позволяет создавать сложные настройки и триггеры.

Собственные оверлеи

Создание собственных оверлеев

Вы можете с нуля создать собственные оверлеи чата под стиль и задачи трансляции. Social Stream Ninja предоставляет гибкую основу для дальнейшей разработки.

Начните с шаблона

Начните с нашего примера шаблона оверлея, чтобы разобраться в основах:

// View the sample overlay
https://socialstream.ninja/sampleoverlay?session=SESSIONID

Этот минимальный шаблон содержит только код, необходимый для работающего оверлея.

Открыть пример оверлея

Основные возможности для настройки

  • Переключает показ выделенных сообщений и всех сообщений
  • Настройте внешний вид с помощью CSS
  • Добавьте собственную анимацию новых сообщений
  • Реализуйте собственную фильтрацию сообщений
  • Добавьте интерактивные элементы с помощью JavaScript

Этапы реализации

  1. Скачайте пример HTML-файла оверлея
  2. Измените HTML под свой макет
  3. Настройте CSS для нужного оформления
  4. При необходимости измените JavaScript для собственного поведения
  5. Сохраните файл локально, чтобы использовать его в OBS как источник «Браузер»

API таймера

Дистанционное управление timer.html

Страница таймера намеренно решает узкую задачу: один таймер, необязательное управление оператора, состояния предупреждения, отсчёт сверх времени и несколько вариантов оформления.

Полезные действия включают starttimer, pausetimer, resettimer, timeradd, timersubtract, и settimer.

{
  "action": "settimer",
  "value": {
    "seconds": 300,
    "label": "Interview",
    "mode": "countdown",
    "style": "stage",
    "warnSeconds": 60,
    "dangerSeconds": 15
  }
}

Чтобы запросить текущее состояние таймера, используйте gettimerstate с токеном обратного вызова.

{ "action": "gettimerstate", "get": "timer-state-1" }

Используйте страницу с timer.html?session=YOUR_SESSION&server если хотите управлять им напрямую через сервер API.

Команды управляемых розыгрышей

startgiveaway, closegiveaway, drawgiveaway, resetgiveaway, и getgiveawaystate управляют отдельным набором участников розыгрыша через те же элементы API и Stream Deck. Проведение розыгрыша автоматически закрывает приём заявок. Новый раунд сохраняет историю прежних победителей и отклоняет неоплаченные бронирования. Отмена с возвратом возвращает незакрытые платежи за билеты. Платные билеты, Number Hunt, Coin Flip Pot и Event Flow используют одну службу ведущего. Настройка, варианты отображения, значения команд и восстановление.

Готовы вывести трансляцию на новый уровень?

Эти команды и возможности API позволяют создать уникальную интерактивную трансляцию.