コマンドとAPI

組み込みコマンド、自動化、API連携でSocial Stream Ninjaを制御

ボットコマンド

組み込みボットコマンド

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サーバーは設定へコマンドを送るだけでなく、集約したチャットサービスの受信メッセージを監視することもできます。

オーバーレイ管理

注目メッセージの操作、オーバーレイの消去、配信中の表示の変更ができます。

Webhook連携

Stripe、Ko-Fi、Buy Me A Coffeeなどの外部サービスからイベントを受け取ります。

メッセージの書き出し

チャットメッセージをファイルへ書き出すか、Webhook(POST)で転送して独自の連携に使えます。

必要な設定(Global settings → Mechanics):

  • 🎮 リモート操作(StreamDeck/Bitfocus): 有効化 「拡張機能のリモートAPI制御を有効化」(Enable remote API control of extension) (スイッチ1)— 接続先: チャンネル1
  • 📡 チャットリスナー(Python/Nodeアプリ): スイッチ1と次を有効化: 「チャットメッセージをAPIサーバーに送信」(Send chat messages to API server) (スイッチ3)— 接続先: チャンネル4

参照先: 完全なAPIドキュメント に詳細な設定ガイドとコードサンプルがあります。

APIエンドポイントと接続方法

HTTP GET/POST

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

Stream Deckや独自スクリプトからの簡単なコマンドに最適です。

WebSocket

wss://io.socialstream.ninja:443

自動再接続に対応した、リアルタイムの双方向通信向けです。

WebSocketモードを有効にせずP2P接続を維持したい場合は、Social Stream Ninja WebRTC SDKを使えます。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 メッセージIDで既存のドックメッセージをピン留めするか、メッセージオブジェクト全体をピン留めします。必要な項目: dock.html を同じセッションで開いておきます。 https://io.socialstream.ninja/SESSIONID/pin/null/MESSAGE_MID
unpin メッセージIDで既存のドックメッセージのピン留めを解除します。ラベル付きドックでは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 待機リスト・抽選から、1人以上の当選者をランダムに選びます https://io.socialstream.ninja/SESSIONID/selectwinner/null/1
downloadwaitlist 実行中のSocial Streamページ・アプリから、現在の待機リストをTSVファイルとしてダウンロードします 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の実際のセッションIDに置き換えてください!

StreamDeckとCompanion

StreamDeck連携

Social Stream Ninjaは、ネイティブHTTPアクションやBitfocus Companion連携など、複数の方法でStreamDeckと連携します。

HTTP/API方式

StreamDeckの「Website」アクションで「GET request in background」を有効にすると、APIへ直接コマンドを送れます。

Bitfocus Companion

用意済みのアクション、リアルタイムの状態表示、動的コンテンツ用変数を備えたネイティブ連携。

Companion連携

Bitfocus Companionでは、WebSocketまたはHTTP APIを使ってSocial Stream Ninjaを幅広く制御できます。

操作 説明 API方式
注目メッセージを消去 現在の注目メッセージをオーバーレイから削除します WebSocket/HTTP
キューの次の項目 待機中の次のメッセージを表示します WebSocket/HTTP
自動表示を切り替え メッセージの自動注目表示を有効・無効にします WebSocket/HTTP
チャットメッセージを送信 接続中のすべてのプラットフォームへメッセージを送信します WebSocket/HTTP

動的変数

  • featured_message - 現在の注目メッセージのテキスト
  • featured_username - 現在の注目メッセージのユーザー名
  • queue_size - キュー内のメッセージ数

AI連携

AIチャットボットモード

Social Stream Ninjaは、AIによるチャット返信、モデレーションなど、配信を支援する幅広いAI連携を提供します。用途に合わせてローカルまたはクラウドのAIプロバイダーを選べます。

チャットへの自動返信

AIが視聴者と自動で交流し、質問に答えて会話を盛り上げるので、配信者はコンテンツに集中できます。

コンテンツのモデレーション

AIで有害な可能性のあるメッセージを検出し、設定に合わせて自動処理することで、チャットのモデレーションを補助します。ブロックしないモードと厳格なブロックモードから選べます。

RAG検索

検索拡張生成(RAG)では、AIが独自のナレッジベースを検索し、自分のコンテンツに合った正確な回答を作れます。

複数のボットインスタンス

公開チャットボット、非公開の1対1ボット、検閲ボット、さらには見たり聞いたりできるマルチモーダルAI共同司会など、用途ごとにボットを動かせます。

対応AIプロバイダー

Social Stream Ninjaは、完全にローカルのブラウザ・ランタイムモデルからホスト型APIまで、複数のAIプロバイダーに対応します:

Ollama(ネイティブローカルAPI)

Ollama専用APIを通じ、自分のコンピューターで動く無料・プライバシー重視の自己ホスト型AIモデル。

Local Gemma 4

自分のアセットホストにモデルファイルをミラーして、ブラウザでGemma 4を動かします。SSNのlargefilesホストには、現在Gemmaのアセットは含まれていません。

Local Qwen 3.5

自分でホストしたモデルファイルを使い、ブラウザでQwen 3.5を動かして、ローカルかつ非公開の応答を生成します。

ChatGPT / OpenAI

最新のチャットモデルやリアルタイム音声モデルを含むOpenAI API。

Google Gemini

現在のGemini 2.5テキストモデルやライブマルチモーダルなどのGoogle Geminiモデル。

DeepSeek

会話向けに最適化された、効率的で費用対効果の高いAIモデル。

xAI(Grok)

一時的なクライアントシークレットを使うリアルタイム音声セッションを含む、xAI Grok API。

AWS Bedrock

ClaudeやLlamaなど、さまざまなプロバイダーの企業向けAIモデル。

OpenRouter

統一されたAPIインターフェースから複数のAIモデルを利用できます。

Groq

素早い会話応答向けの、低遅延なOpenAI互換チャット推論。

独自API(OpenAI互換)

llama.cpp、LM Studio、vLLMなど、OpenAI互換のエンドポイントに接続できます。

補足: Ollamaは専用APIを使います。llama.cpp、LM Studio、vLLMなどのOpenAI互換サーバーでは、次を選んでください: 独自API.

テキスト読み上げの連携

Social Stream Ninjaは、ボットのメッセージや注目チャットを幅広い読み上げ機能でサポートします:

システム読み上げ(System TTS)

OSの音声合成を使う、無料の組み込み読み上げ。

Kokoro

プライバシーを重視する方向けの、WebGPU・CPUでローカル動作する無料の読み上げ。

Kitten TTS

小さなモデルをダウンロードしてローカルで音声を生成する、軽量なブラウザ型読み上げ。

ElevenLabs

自然な響きとカスタマイズ可能な音声を備えた、高品質な音声合成。

Google Cloud TTS

豊富な言語とカスタマイズ項目を備えた、高品質な音声。

Gemini(プレビュー版TTS)

音声と言語を選べる、Googleのプレビュー版ニューラル音声モデル。

Speechify

自然な音声変換機能を備えた、AIによるテキスト読み上げ。

OpenAI TTS

音声、モデル、任意の互換エンドポイントを選べるOpenAI音声合成。

補足: 読み上げには、適切なオーバーレイページをOBSで開いておく必要があります。音声の選択肢、遅延、料金やハードウェア要件はプロバイダーによって異なります。

ボットのインスタンスとオーバーレイ

Social Stream Ninjaには、用途に応じた複数のボットインスタンスがあります:

ボットの種類 URL 説明
メインチャットボット /bot.html 任意の読み上げと公開チャットへの返信に対応するメインボットのオーバーレイ
非公開チャットインターフェース /chatbot.html メインボットのRAGデータセットやチャット履歴を共有しない、専用の1対1ボットページ
検閲ボット (バックグラウンドで実行) 受信メッセージのフィルタリング、修正、ブロックを自動で行います
AI共同司会 /cohost.html 画面を見て、音を聞き、やり取りできるマルチモーダルAI

AI連携の設定

現在のメニューでAI連携を設定するには、次の手順に従ってください:

1

LLMプロバイダーを選んで接続する

次の場所でプロバイダーを選びます: LLMサービスプロバイダーの設定(Configure LLM Service Provider) で、対応する欄を入力します:

  • Ollama: ローカルにインストールし、必要に応じてエンドポイントを設定します
  • Local Gemma / Local Qwen: ホストしたブラウザモデルのアセットと、任意のモデルフォルダー上書きを使います。QwenはSSN largefilesを利用できますが、Gemmaには自分でミラーしたフォルダーが必要です
  • ChatGPT、Gemini、DeepSeek、xAI、Groq、OpenRouter、Bedrock: APIキーと使いたいモデルを追加
  • 独自API: OpenAI互換のエンドポイント、モデルID、任意のAPIキーを入力します
2

選択したチャットボットをテスト

組み込みの次の機能を使います: 選択したチャットボットをテスト ボタンで、配信前にプロバイダー、モデル、認証情報を確認します。

3

ボットの動作を設定する

チャット内でのボットの動作をカスタマイズします:

  • LLM AIチャットボットを有効化(Enable the LLM AI chat bot)
  • ボット名、トリガーワード、応答のレート制限を設定します
  • 返信をチャットに投稿するか、ボットオーバーレイページだけに送るかを選択
  • 口調、役割、モデレーションルールの独自指示を追加
4

任意の追加機能を有効にする

ボットに追加したい機能をオンにします:

  • ボット返信の読み上げを有効にしてプロバイダーを選択
  • 固定時間、メッセージの長さ、読み上げ終了後のいずれかによる自動非表示を、次のページ向けに選択します: /bot.html。使う項目: clearBotOverlay で手動消去できます
  • RAGを有効にして資料をアップロードし、知識に基づく回答を生成
  • 検閲ボットを有効にし、モデレーションまたは厳格なブロックモードを利用
  • 開く項目: /bot.html, /chatbot.html、または /cohost.html を必要に応じてOBSまたはブラウザで開きます

MIDIとホットキーによる操作

MIDI連携

MIDIコントローラー、キーボードショートカット、MIDIプラグイン付きStreamDeckでSocial Stream Ninjaを制御します。

設定要件

  1. 拡張機能設定でMIDI対応を有効にします
  2. 仮想MIDIループバックデバイス(loopMIDIなど)をインストールします
  3. MIDIコントローラーまたはStreamDeckのMIDIプラグインを設定します
CC番号 値 操作 補足
102 1 チャットに「1」を送信 クイックリアクション
102 2 チャットに「LUL」を送信 エモートのリアクション
102 3 ジョークを言う ボットの応答を呼び出します
102 4 オーバーレイを消去 注目メッセージを削除します

ヒント: MIDI操作は実物のコントローラーに向いていますが、仮想MIDIデバイスからも実行できます。

ホットキー対応

キーボードショートカットで、よく使う機能に素早くアクセスできます。

ホットキーはメニュー設定で指定できます。ブラウザにフォーカスがある場合、またはアプリの使用中に、システム全体で使えます。

Webhook連携

寄付サービス

Social Stream Ninjaは、Webhook経由で外部サービスの寄付やイベントを受け取れます。主なサービスを以下に紹介します:

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アカウントにログインします
  • 移動先: Webhook設定
  • 追加する項目: https://io.socialstream.ninja/SESSIONID/kofi をWebhook URLとして使います
  • 追加する項目: &server をドックのURLに追加します
  • 「Send Single Donation Test」ボタンでテストします
Buy Me A Coffee

Buy Me A Coffee

人気のBuy Me A Coffeeプラットフォームで寄付を受け付けます。

  • Buy Me A Coffeeアカウントにログインします
  • Webhook設定に移動します
  • 追加する項目: https://io.socialstream.ninja/SESSIONID/bmac をWebhook URLとして使います
  • 追加する項目: &server をドックのURLに追加してイベントを受信します
  • 寄付イベントとメンバーシップイベントの両方に対応しています

セキュリティ上の注意: セッションIDを知っている人はオーバーレイに偽の寄付を送れるため、IDは非公開にしてください。Webhook 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. custom.jsを読み込むには、dock.htmlをローカルで開きます

この方法では、複雑なカスタマイズやトリガーを作れます。

独自オーバーレイ

独自オーバーレイの作成

配信独自の見た目や機能に合わせて、チャットオーバーレイを一から自由に作成できます。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

タイマーページは意図的に機能を絞っています。タイマー1つ、任意の操作コントロール、警告状態、超過時間、いくつかの表示スタイルを扱います。

便利なアクションの例: 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の操作で専用のプレゼント企画の参加枠を管理します。抽選時には受付を自動で閉じます。New roundは以前の当選履歴を保持し、未払いの予約を除外します。Cancel and refundは未処理のチケット代金を返金します。有料チケット、Number Hunt、Coin Flip Pot、Event Flowは同じホストサービスを使います。 設定、表示、コマンド値、復旧.

配信をさらに進化させませんか?

これらのコマンドやAPIを使えば、自分ならではの参加型配信を作れます。