1. Flow ActionsをOBSに接続する
OBS WebSocket v5はOBS 28以降に組み込まれています。Social Stream Ninjaはこれを使って、OBSのすべての操作やメディアイベントを扱います。
- OBSで開く項目: ツール → WebSocketサーバー設定.
- WebSocketサーバーを有効にします。既定のポートを維持します:
4455。必要に応じてパスワードを設定します。 - Social Stream Ninjaで次を開きます: Flow Actions セクションを開き、OBS WebSocketのURLと任意のパスワードを設定します。
- Flow ActionsのURLをコピーして開いたままにします。オーバーレイや音声のアクションには、OBSのブラウザーソースを推奨します。
- 使用するもの: OBS WebSocketテスター で、フローを作る前に接続を確認します。
https://socialstream.ninja/actions.html?session=YOUR_SESSION&obsws=ws://127.0.0.1:4455追加する項目:
&obspw=YOUR_PASSWORD はOBSで認証が必要な場合だけ指定します。次を追加します: &obsdebug=1 を追加すると、問題の診断中に小さな接続状態バッジが表示されます。
2つのOBS接続モード
| モード | 対応する機能 | 要件 |
|---|---|---|
| OBS WebSocket v5 | このガイド内のすべてのトリガーとアクション。 | OBS 28以降でWebSocketサーバーが有効になっており、Flow Actionsページが開いていること。 |
| OBS Browser Source API | シーン変更、配信の開始/停止、録画の開始/停止、リプレイバッファーの保存に使える代替接続。 | Advanced Access LevelでOBS内に読み込まれたFlow Actions。ソース、フィルター、テキスト、音量、メディア、再読み込み、メディア終了の機能にはWebSocketが必要です。 |
2. フローにOBSノードを追加する
- 開く項目: Event Flowエディター を開き、フローを作成または編集します。
- トリガーをキャンバスにドラッグします。
- 展開する項目: OBS Studio をActions一覧で選び、必要なOBSアクションをドラッグします。
- トリガーをアクションに接続し、OBSのシーン名/ソース名を正確に設定して保存し、フローを有効にします。
3. OBSトリガー
OBSが該当イベントを報告すると、これらがフローを開始します。次の形式で届きます: type: "obs"。OBS固有の詳細は次にあります: meta.
| トリガー | 発火するタイミング | 利用できるデータ |
|---|---|---|
| OBS配信開始(OBS Stream Started) | 配信が開始状態になったとき。 | meta.outputState, meta.outputActive |
| OBS配信停止(OBS Stream Stopped) | 配信が停止状態になったとき。 | meta.outputState, meta.outputActive |
| OBS録画開始(OBS Recording Started) | 録画が開始したとき。 | meta.outputState |
| OBS録画停止(OBS Recording Stopped) | 録画が停止したとき。 | meta.outputState |
| OBSシーン変更(OBS Scene Changed) | 現在のプログラムシーンが変更されたとき。 | meta.sceneName |
| OBSメディア終了(OBS Media Ended) WebSocket | メディア入力の再生が終了したとき。必要に応じて、Media Source Nameの完全一致で絞り込めます。 | meta.inputName, meta.inputUuid |
| OBSリプレイバッファー保存(OBS Replay Buffer Saved) | OBSがリプレイの保存を完了したとき。 | meta.savedReplayPath |
4. OBSアクション
| 操作 | 設定と動作 | 接続 |
|---|---|---|
| シーンを変更(Change Scene) | シーン名の完全一致で、現在のプログラムシーンを切り替えます。 | WebSocketまたは代替のBrowser Source API |
| ソースを切り替え(Toggle Source) | シーン項目を表示、非表示、または切り替えます。SceneとGroupは対象を指定する任意のフィールドです。 | WebSocket |
| テキストソースを設定(Set Text Source) | テンプレートのプレースホルダーを使ってText (GDI+)またはText (FreeType 2)を更新します。 | WebSocket |
| メディアソースを操作(Control Media Source) | 再生/再開、一時停止、再スタート、停止、次へ、前へ。 | WebSocket |
| ソース音量を設定(Set Source Volume) | 入力の値を次の範囲で設定します: -100 → +26 dB。 | WebSocket |
| ブラウザーソースを再読み込み(Refresh Browser Source) | キャッシュを使わずにブラウザーソースを再読み込みします。 | WebSocket |
| フィルターを切り替え(Toggle Filter) | 名前を指定したソースフィルターを有効化、無効化、または切り替えます。 | WebSocket |
| 音声のミュート/解除(Mute/Unmute Audio) | 入力をミュート、ミュート解除、または切り替えます。 | WebSocket |
| 録画開始(Start Recording) | OBSの録画を開始します。 | WebSocketまたは代替のBrowser Source API |
| 録画停止(Stop Recording) | OBSの録画を停止します。 | WebSocketまたは代替のBrowser Source API |
| 配信開始(Start Streaming) | 設定済みのOBS配信出力を開始します。 | WebSocketまたは代替のBrowser Source API |
| 配信停止(Stop Streaming) | OBSの配信出力を停止します。 | WebSocketまたは代替のBrowser Source API |
| リプレイバッファーを操作(Control Replay Buffer) | リプレイバッファーを開始、停止、または切り替えます。 | WebSocket |
| リプレイバッファーを保存(Save Replay Buffer) | 現在実行中のリプレイバッファーを保存します。 | WebSocketまたは代替のBrowser Source API |
Set Text Sourceとフロー変数
テキスト欄は、次のような通常のメッセージプレースホルダーに対応しています: {username}, {message}, {source}、および {donation}や、前のフローノードが追加した次のような値: {counterValue}, {counterTarget}、および {counterRemaining}.
{username}: now {counterValue}, need {counterTarget}
メディアソースの操作
再生/一時停止
再生 は一時停止中のメディアを再開します。 一時停止 は現在の再生位置を維持します。
再スタート/停止
再スタート は先頭から再生を開始します。 停止 は再生を終了し、入力をリセットします。
次へ/前へ
VLC Video Sourceなど、プレイリスト対応の入力を前後に移動します。単一ファイルのMedia Sourceでは、これらのアクションが無視される場合があります。
音量、ミュート、フィルター
ソース音量を設定(Set Source Volume) はOBSミキサーと同じdB単位を使用します: 0 dB はゲインを変更せず、負の値は音量を下げます。また、 -100 dB は実質的に無音です。ミュートは別の状態です。Toggle Filterが変更するのは既存フィルターの有効/無効だけで、フィルターの設定は編集しません。
リプレイバッファー
最初に次でリプレイバッファーを有効にします: OBSの設定 → 出力。使う項目: リプレイバッファーを操作(Control Replay Buffer) で開始/停止し、その後、 リプレイバッファーを保存(Save Replay Buffer) で直近のバッファー区間をディスクに保存します。
5. 便利なレシピ
OBSで配信中に1時間ごとにメッセージを送信する
Event Flowエディターで次を選択します: テンプレートから開始 → 中級 → OBSで配信中に1時間ごとにメッセージを送信。初期状態では無効で、1つのフローに3つの分岐が含まれています:
- OBS Stream Started → Set Gate State:ON
- Time Interval(3600秒)→ ON/OFF Switch → Send Message
- OBS Stream Stopped → Set Gate State:OFF
両方のSet Gate Stateアクションは、初期値がOFFの同じスイッチを指定済みです。次を編集します: メッセージを送信(Send Message) でチャットプラットフォーム(例ではTwitch)とメッセージを選びます。プラットフォームまたはAll Platformsを選択してください。Reply to SourceではOBSイベントやタイマーに返信できません。
Flow ActionsをOBSに接続するを選び、Social Streamと送信先のチャットを接続したまま、フローを保存して有効にします 配信を開始する前に。スイッチはOBSの開始イベントを待つため、配信中に読み込んでもONにはなりません。Social Streamを再起動した場合もOFFに戻ります。
実行タイミング: インターバルは独自のスケジュールで動くため、最初の通知は配信開始から1時間未満で届く場合があります。その後はスイッチがONの間、1時間ごとに繰り返します。頻度を変えるには、秒単位のTime Intervalの値を変更してください。
OBSでカウンターのテキストを表示する
配置するノード: テキストソースを設定(Set Text Source) をカウンター/チェックの経路の後に配置し、次を使用します:
{username}: now {counterValue}, need {counterTarget}
動画の終了後に処理を実行する
OBSメディア終了(OBS Media Ended) (フィルター条件: Intro Video) → シーンを変更(Change Scene) → Main.
チャットからメディアを再スタートする
メッセージの完全一致(Message Equals) !replayintro → 権限条件 → メディアソースを操作:再スタート.
アラートページを再読み込みする
メッセージの完全一致(Message Equals) !refreshalerts → モデレーター条件 → ブラウザーソースを再読み込み(Refresh Browser Source).
アラート中に音楽の音量を下げる
ソース音量を設定(Set Source Volume) → -24 dB → アラートアクション → Delay → 次の値に戻す: 0 dB.
リプレイのワークフロー
OBS配信開始(OBS Stream Started) → リプレイバッファーを操作:開始。別の信頼できるコマンドで次を実行します: リプレイバッファーを保存(Save Replay Buffer).
6. その他の組み込みOBS操作
Social Stream NinjaのStreaming Chatドックには、従来のOBSブラウザーソース操作もあります。これらはFlow ActionsのWebSocket接続を使いません。
| 選択肢 | 動作 | 要件 |
|---|---|---|
| 現在のOBSシーンの表示 | Streaming Chatドックに現在のシーンを表示します。 | 読み取り権限を持ち、OBS内に読み込まれたドック。 |
| ゲストは!cycleを使用できます | 次のOBSシーンに切り替えます。実行頻度は10秒に1回までです。 | ポップアップの設定を有効にし、Advancedアクセスを持つドックをOBS内に読み込みます。 |
| 権限のあるユーザーは!start/!stopを使用できます | 信頼できるチャットユーザーの操作で配信を開始または停止します。 | ポップアップの設定を有効にし、Full/Advancedの操作権限を持つドックをOBS内に読み込みます。 |
| リモートOBS操作パネル | シーンを表示します。対象のOBSドックで必要な操作権限が許可されていれば、シーンの切り替えや配信/録画の開始・停止もできます。 | OBS内で実行しているドックとペアリングされたStreaming Chatドック。 |
| OBS WebSocketテスター | Event Flowを使う前に、バージョン、接続、シーン、個別のリクエストを確認します。 | テスターを開く |
7. トラブルシューティング
| 問題 | 確認する項目: |
|---|---|
| 何も起きない | フローを保存して有効にしていること、Flow Actionsを開いていること、両方で同じセッションIDを使っていることを確認します。 |
| OBSに接続できない | WebSocketサーバーが有効で、URLが次の値であること: ws://127.0.0.1:4455で、パスワードが一致していることを確認します。ポート 4444 は旧v4の既定値です。 |
| シーン/ソース/フィルターが見つからない | OBSの名前を正確にコピーしてください。表示の切り替えでは、項目が入れ子になっている場合や現在のシーン以外にある場合、SceneまたはGroupを設定します。 |
| テキストが変わらない | Text (GDI+)またはText (FreeType 2)を使用し、入力名を確認して次を無効にします: ファイルから読み取り(Read from file). |
| Media Endedが発火しない | OBS WebSocket v5と実際のメディア入力を使用してください。ループ再生のメディアは終了状態になりません。 |
| 次へ/前へが動作しない | VLC Video Sourceなど、プレイリスト対応のソースを使用してください。 |
| リプレイの保存に失敗する | OBSの出力設定でリプレイバッファーを有効にし、保存する前に開始してください。 |
| シーンが変わるとアクションが止まる | 無効にする項目: 表示されていないときにソースをシャットダウンする(Shutdown source when not visible) をFlow Actionsのブラウザーソースでオフにするか、別の場所でページを開いたままにします。 |
GetVersion → シーン/入力を確認 → 個別のリクエストをテスト → Event Flow全体をテスト。