組み込みコマンド、自動化、API連携でSocial Stream Ninjaを制御
Social Stream Ninjaには、視聴者がチャットで使うか、APIから呼び出せる組み込みコマンドがあります。
| コマンド | 説明 | 有効にする方法 |
|---|---|---|
!joke |
ちょっとオタクっぽいダジャレをランダムに返信します | 拡張機能メニューのスイッチで有効化 |
hi |
チャットで「hi」と発言した人を自動で歓迎します | 拡張機能メニューのスイッチで有効化 |
!cycle |
有効にすると、視聴者がOBSシーンを変更できます | 拡張機能メニューのスイッチで有効化 |
補足: ボットコマンドは、自動応答が正しく設定され、対象プラットフォームで投稿する権限がある場合にだけ動作します。
自動応答を正しく動かすには:
自動応答時に表示される青いデバッグバーを非表示にするには、Chromeの起動時に --silent-debugger-extension-api フラグを指定します。
Social Stream Ninjaは、配信環境の各機能をプログラムから制御できるAPIを提供します。APIサーバーは設定へコマンドを送るだけでなく、集約したチャットサービスの受信メッセージを監視することもできます。
注目メッセージの操作、オーバーレイの消去、配信中の表示の変更ができます。
Stripe、Ko-Fi、Buy Me A Coffeeなどの外部サービスからイベントを受け取ります。
チャットメッセージをファイルへ書き出すか、Webhook(POST)で転送して独自の連携に使えます。
必要な設定(Global settings → Mechanics):
参照先: 完全なAPIドキュメント に詳細な設定ガイドとコードサンプルがあります。
https://io.socialstream.ninja/{sessionID}/{action}/{target}/{value}
Stream Deckや独自スクリプトからの簡単なコマンドに最適です。
wss://io.socialstream.ninja:443
自動再接続に対応した、リアルタイムの双方向通信向けです。
WebSocketモードを有効にせずP2P接続を維持したい場合は、Social Stream Ninja WebRTC SDKを使えます。Nodeとブラウザ用のサンプルが含まれています。その一例: Social Stream Ninjaリスナー.
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
| 操作 | 説明 | 例 |
|---|---|---|
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を試しましょう:
OBS内で少数の配信操作ボタンだけを使いたい場合はこちら: Social Stream操作ドック を確認し、次の手順に従います: OBS設定ガイド.
安全な環境ですべてのAPIコマンドを試せます
HTTP、WebSocket、SSEのコード例を入手
コマンドの応答をリアルタイムで確認
ランダムな内容のテストメッセージを生成
補足: 次の値は必ず置き換えてください: SESSIONID を、Social Stream Ninjaの実際のセッションIDに置き換えてください!
Social Stream Ninjaは、ネイティブHTTPアクションやBitfocus Companion連携など、複数の方法でStreamDeckと連携します。
StreamDeckの「Website」アクションで「GET request in background」を有効にすると、APIへ直接コマンドを送れます。
用意済みのアクション、リアルタイムの状態表示、動的コンテンツ用変数を備えたネイティブ連携。
Bitfocus Companionでは、WebSocketまたはHTTP APIを使ってSocial Stream Ninjaを幅広く制御できます。
| 操作 | 説明 | API方式 |
|---|---|---|
| 注目メッセージを消去 | 現在の注目メッセージをオーバーレイから削除します | WebSocket/HTTP |
| キューの次の項目 | 待機中の次のメッセージを表示します | WebSocket/HTTP |
| 自動表示を切り替え | メッセージの自動注目表示を有効・無効にします | WebSocket/HTTP |
| チャットメッセージを送信 | 接続中のすべてのプラットフォームへメッセージを送信します | WebSocket/HTTP |
featured_message - 現在の注目メッセージのテキストfeatured_username - 現在の注目メッセージのユーザー名queue_size - キュー内のメッセージ数Social Stream Ninjaは、AIによるチャット返信、モデレーションなど、配信を支援する幅広いAI連携を提供します。用途に合わせてローカルまたはクラウドのAIプロバイダーを選べます。
AIが視聴者と自動で交流し、質問に答えて会話を盛り上げるので、配信者はコンテンツに集中できます。
AIで有害な可能性のあるメッセージを検出し、設定に合わせて自動処理することで、チャットのモデレーションを補助します。ブロックしないモードと厳格なブロックモードから選べます。
検索拡張生成(RAG)では、AIが独自のナレッジベースを検索し、自分のコンテンツに合った正確な回答を作れます。
公開チャットボット、非公開の1対1ボット、検閲ボット、さらには見たり聞いたりできるマルチモーダルAI共同司会など、用途ごとにボットを動かせます。
Social Stream Ninjaは、完全にローカルのブラウザ・ランタイムモデルからホスト型APIまで、複数のAIプロバイダーに対応します:
Ollama専用APIを通じ、自分のコンピューターで動く無料・プライバシー重視の自己ホスト型AIモデル。
自分のアセットホストにモデルファイルをミラーして、ブラウザでGemma 4を動かします。SSNのlargefilesホストには、現在Gemmaのアセットは含まれていません。
自分でホストしたモデルファイルを使い、ブラウザでQwen 3.5を動かして、ローカルかつ非公開の応答を生成します。
最新のチャットモデルやリアルタイム音声モデルを含むOpenAI API。
現在のGemini 2.5テキストモデルやライブマルチモーダルなどのGoogle Geminiモデル。
会話向けに最適化された、効率的で費用対効果の高いAIモデル。
一時的なクライアントシークレットを使うリアルタイム音声セッションを含む、xAI Grok API。
ClaudeやLlamaなど、さまざまなプロバイダーの企業向けAIモデル。
統一されたAPIインターフェースから複数のAIモデルを利用できます。
素早い会話応答向けの、低遅延なOpenAI互換チャット推論。
llama.cpp、LM Studio、vLLMなど、OpenAI互換のエンドポイントに接続できます。
補足: Ollamaは専用APIを使います。llama.cpp、LM Studio、vLLMなどのOpenAI互換サーバーでは、次を選んでください: 独自API.
Social Stream Ninjaは、ボットのメッセージや注目チャットを幅広い読み上げ機能でサポートします:
OSの音声合成を使う、無料の組み込み読み上げ。
プライバシーを重視する方向けの、WebGPU・CPUでローカル動作する無料の読み上げ。
小さなモデルをダウンロードしてローカルで音声を生成する、軽量なブラウザ型読み上げ。
自然な響きとカスタマイズ可能な音声を備えた、高品質な音声合成。
豊富な言語とカスタマイズ項目を備えた、高品質な音声。
音声と言語を選べる、Googleのプレビュー版ニューラル音声モデル。
自然な音声変換機能を備えた、AIによるテキスト読み上げ。
音声、モデル、任意の互換エンドポイントを選べるOpenAI音声合成。
補足: 読み上げには、適切なオーバーレイページをOBSで開いておく必要があります。音声の選択肢、遅延、料金やハードウェア要件はプロバイダーによって異なります。
Social Stream Ninjaには、用途に応じた複数のボットインスタンスがあります:
| ボットの種類 | URL | 説明 |
|---|---|---|
| メインチャットボット | /bot.html |
任意の読み上げと公開チャットへの返信に対応するメインボットのオーバーレイ |
| 非公開チャットインターフェース | /chatbot.html |
メインボットのRAGデータセットやチャット履歴を共有しない、専用の1対1ボットページ |
| 検閲ボット | (バックグラウンドで実行) | 受信メッセージのフィルタリング、修正、ブロックを自動で行います |
| AI共同司会 | /cohost.html |
画面を見て、音を聞き、やり取りできるマルチモーダルAI |
現在のメニューでAI連携を設定するには、次の手順に従ってください:
次の場所でプロバイダーを選びます: LLMサービスプロバイダーの設定(Configure LLM Service Provider) で、対応する欄を入力します:
組み込みの次の機能を使います: 選択したチャットボットをテスト ボタンで、配信前にプロバイダー、モデル、認証情報を確認します。
チャット内でのボットの動作をカスタマイズします:
ボットに追加したい機能をオンにします:
/bot.html。使う項目: clearBotOverlay で手動消去できます/bot.html, /chatbot.html、または /cohost.html を必要に応じてOBSまたはブラウザで開きます完全な設定手順と読み上げの詳しい説明は、次のガイドをご覧ください:
MIDIコントローラー、キーボードショートカット、MIDIプラグイン付きStreamDeckでSocial Stream Ninjaを制御します。
| CC番号 | 値 | 操作 | 補足 |
|---|---|---|---|
| 102 | 1 | チャットに「1」を送信 | クイックリアクション |
| 102 | 2 | チャットに「LUL」を送信 | エモートのリアクション |
| 102 | 3 | ジョークを言う | ボットの応答を呼び出します |
| 102 | 4 | オーバーレイを消去 | 注目メッセージを削除します |
ヒント: MIDI操作は実物のコントローラーに向いていますが、仮想MIDIデバイスからも実行できます。
キーボードショートカットで、よく使う機能に素早くアクセスできます。
ホットキーはメニュー設定で指定できます。ブラウザにフォーカスがある場合、またはアプリの使用中に、システム全体で使えます。
Social Stream Ninjaは、Webhook経由で外部サービスの寄付やイベントを受け取れます。主なサービスを以下に紹介します:
自分のStripeアカウントを通じて、クレジットカードの寄付を直接処理します。
https://io.socialstream.ninja/SESSIONID/stripecheckout.session.completed&server をドックのURLに追加します支援者からコーヒーの寄付を受け取ります。
https://io.socialstream.ninja/SESSIONID/kofi をWebhook URLとして使います&server をドックのURLに追加します人気のBuy Me A Coffeeプラットフォームで寄付を受け付けます。
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コードをカスタマイズして、独自のコマンドや機能を作成できます:
custom_sample.js を次のファイル名に: custom.jsこの方法では、複雑なカスタマイズやトリガーを作れます。
配信独自の見た目や機能に合わせて、チャットオーバーレイを一から自由に作成できます。Social Stream Ninjaは、そのための柔軟な土台を提供します。
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は同じホストサービスを使います。 設定、表示、コマンド値、復旧.