내장 명령, 자동화, 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 같은 외부 서비스의 이벤트를 받으세요.
채팅 메시지를 파일로 내보내거나 웹훅(POST)으로 전달해 사용자 지정 통합에 활용하세요.
필수 설정(Global settings → Mechanics):
다음을 참조하세요: 전체 API 문서 에서 상세 설정 가이드와 코드 샘플을 확인하세요.
https://io.socialstream.ninja/{sessionID}/{action}/{target}/{value}
Stream Deck이나 사용자 지정 스크립트의 간단한 명령에 적합합니다.
wss://io.socialstream.ninja:443
자동 재연결을 지원하는 실시간 양방향 통신용입니다.
WebSocket 모드를 활성화하지 않고 피어 간 연결을 유지하려면 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 |
참가 대기열/추첨에서 무작위 당첨자 한 명 이상을 선택합니다 | 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가 사용자 지정 지식 베이스를 검색해 콘텐츠에 맞는 정확한 답변을 제공하게 합니다.
공개 챗봇, 비공개 일대일 봇, 검열 봇, 보고 들을 수 있는 멀티모달 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는 봇 메시지와 강조 채팅 콘텐츠에 다양한 음성 읽기 기능을 지원합니다:
운영체제의 음성 합성기를 사용하는 무료 내장 음성 읽기입니다.
개인정보 보호를 중시하는 사용자를 위해 WebGPU/CPU로 로컬에서 실행되는 무료 음성 읽기입니다.
작은 모델을 다운로드해 로컬에서 음성을 생성하는 가벼운 브라우저 기반 음성 읽기입니다.
자연스럽고 맞춤 설정할 수 있는 음성을 제공하는 프리미엄 음성 합성입니다.
다양한 언어와 맞춤 설정 옵션을 갖춘 고품질 음성입니다.
음성과 언어를 선택할 수 있는 Google의 미리보기 신경망 음성 모델입니다.
자연스러운 음성 변환 기능을 갖춘 AI 기반 음성 읽기입니다.
음성, 모델, 선택적 호환 엔드포인트를 선택할 수 있는 OpenAI 음성 합성입니다.
참고: 음성 읽기를 사용하려면 적절한 오버레이 페이지가 OBS에서 열려 있어야 합니다. 제공자마다 음성 옵션, 지연 시간, 요금 또는 하드웨어 요구 사항이 다릅니다.
Social Stream Ninja는 용도별로 여러 봇 인스턴스를 제공합니다:
| 봇 유형 | URL | 설명 |
|---|---|---|
| 기본 챗봇 | /bot.html |
선택적 음성 읽기와 공개 채팅 응답을 지원하는 기본 봇 오버레이 |
| 비공개 채팅 인터페이스 | /chatbot.html |
기본 봇의 RAG 데이터 세트나 채팅 기록을 공유하지 않는 전용 일대일 봇 페이지 |
| 검열 봇 | (백그라운드에서 실행) | 들어오는 메시지를 자동으로 필터링, 정리 또는 차단합니다 |
| AI 공동 진행자 | /cohost.html |
화면을 보고 오디오를 들으며 상호작용할 수 있는 멀티모달 AI |
현재 메뉴에서 AI 통합을 설정하려면 다음 단계를 따르세요:
다음에서 제공자를 선택하세요: LLM 서비스 제공자 설정 그리고 해당 필드를 입력하세요:
내장 기능 사용: 선택한 챗봇 테스트 버튼으로 생방송 전에 제공자, 모델, 자격 증명을 확인하세요.
채팅에서 봇이 동작하는 방식을 맞춤 설정하세요:
봇에 필요한 부가 기능을 켜세요:
/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는 웹훅으로 외부 서비스의 후원과 이벤트를 받을 수 있습니다. 널리 쓰이는 서비스 몇 가지는 다음과 같습니다:
Stripe 계정으로 신용카드 후원을 직접 처리하세요.
https://io.socialstream.ninja/SESSIONID/stripecheckout.session.completed&server 를 도크 URL에 추가하세요후원자에게 커피 후원을 받으세요.
https://io.socialstream.ninja/SESSIONID/kofi 를 웹훅 URL로 사용하세요&server 를 도크 URL에 추가하세요널리 사용되는 Buy Me A Coffee 플랫폼으로 후원을 받으세요.
https://io.socialstream.ninja/SESSIONID/bmac 를 웹훅 URL로 사용하세요&server 를 도크 URL에 추가해 이벤트를 받으세요보안 참고: 세션 ID를 가진 사람은 누구든 오버레이에 가짜 후원을 보낼 수 있으므로 비공개로 유지하세요. 웹훅 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타이머 페이지는 타이머 하나, 선택적 운영자 제어, 경고 상태, 초과 시간, 몇 가지 시각 스타일로 범위를 한정했습니다.
유용한 동작: 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는 같은 호스트 서비스를 사용합니다. 설정, 표시 방식, 명령 값, 복구.