ควบคุม Social Stream Ninja ด้วยคำสั่งในตัว ระบบอัตโนมัติ และการเชื่อมต่อ API
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) สำหรับการเชื่อมต่อกำหนดเอง
การตั้งค่าที่จำเป็น (การตั้งค่าส่วนกลาง → กลไก):
ดู เอกสาร 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 |
ปักหมุดข้อความที่มีอยู่ในแผงด็อกด้วยรหัสข้อความ หรือปักหมุดออบเจ็กต์ข้อความเต็มรูปแบบ ต้องใช้ 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 ในพื้นที่ทดลองแบบโต้ตอบที่เข้าถึงคำสั่งและฟีเจอร์ทั้งหมดได้ง่าย:
หากต้องการชุดปุ่มควบคุมรายการสดขนาดเล็กใน OBS ให้ใช้ แผงด็อกควบคุม Social Stream และทำตาม คู่มือตั้งค่า OBS.
ลองคำสั่ง API ทั้งหมดในสภาพแวดล้อมที่ปลอดภัย
รับตัวอย่างโค้ดสำหรับ HTTP, WebSocket และ SSE
ดูผลตอบกลับจากคำสั่งแบบเรียลไทม์
สร้างข้อความทดสอบด้วยเนื้อหาสุ่ม
หมายเหตุ: อย่าลืมแทนที่ SESSIONID ด้วยรหัสเซสชันจริงจาก Social Stream Ninja!
Social Stream Ninja เชื่อมต่อกับ StreamDeck ได้หลายวิธี: การกระทำ HTTP โดยตรง และการเชื่อมต่อ Bitfocus Companion
ใช้การกระทำ "Website" ของ StreamDeck พร้อมเปิด "GET request in background" เพื่อส่งคำสั่งตรงไปยัง API
เชื่อมต่อโดยตรงพร้อมการกระทำสำเร็จรูป สถานะตอบกลับแบบเรียลไทม์ และตัวแปรสำหรับเนื้อหาที่เปลี่ยนแปลงได้
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 เชื่อมต่อ AI อย่างครบถ้วนเพื่อเสริมสตรีมด้วยคำตอบแชต การดูแลแชต และอื่น ๆ ที่ขับเคลื่อนด้วย AI เลือกผู้ให้บริการในเครื่องหรือคลาวด์ให้ตรงกับความต้องการ
ให้ AI พูดคุยกับผู้ชมโดยอัตโนมัติ ตอบคำถามและทำให้บทสนทนาคึกคัก แม้คุณกำลังจดจ่อกับเนื้อหา
ใช้ AI ช่วยดูแลแชต โดยระบุข้อความที่อาจเป็นอันตรายและจัดการอัตโนมัติตามที่คุณกำหนด เลือกระหว่างโหมดไม่บล็อกหรือบล็อกอย่างเข้มงวด
Retrieval-Augmented Generation ช่วยให้ AI ค้นหาฐานความรู้กำหนดเอง เพื่อให้คำตอบที่ถูกต้องและเฉพาะเจาะจงกับเนื้อหาของคุณ
ใช้บอตแต่ละตัวสำหรับงานต่างกัน: บอตแชตสาธารณะ บอตส่วนตัวตัวต่อตัว บอตเซ็นเซอร์ และแม้แต่ผู้ช่วยดำเนินรายการ AI หลายสื่อที่มองเห็นและได้ยิน
Social Stream Ninja รองรับผู้ให้บริการ AI หลายราย ตั้งแต่โมเดลในเบราว์เซอร์/รันไทม์ที่ทำงานในเครื่องทั้งหมด ไปจนถึง API ที่โฮสต์ไว้:
โมเดล AI ฟรีที่เน้นความเป็นส่วนตัวและโฮสต์เอง ทำงานบนคอมพิวเตอร์ของคุณผ่าน API ของ Ollama
เรียกใช้ Gemma 4 ในเบราว์เซอร์หลังทำสำเนาไฟล์โมเดลไปยังโฮสต์ไฟล์ของคุณเอง ขณะนี้โฮสต์ largefiles ของ SSN ไม่มีไฟล์ Gemma
เรียกใช้ Qwen 3.5 ในเบราว์เซอร์จากไฟล์โมเดลที่คุณโฮสต์เอง เพื่อสร้างคำตอบในเครื่องอย่างเป็นส่วนตัว
API ของ OpenAI รวมโมเดลแชตรุ่นใหม่และเสียงเรียลไทม์
โมเดล Google Gemini รวมตัวเลือกข้อความ Gemini 2.5 ปัจจุบันและตัวเลือกหลายสื่อแบบสด
โมเดล AI ที่มีประสิทธิภาพและคุ้มค่า ปรับให้เหมาะกับงานสนทนา
API ของ xAI Grok รวมเซสชันเสียงเรียลไทม์เมื่อใช้ client secret อายุสั้น
โมเดล AI ระดับองค์กรจากผู้ให้บริการหลายราย รวมถึง Claude และ Llama
เข้าถึงโมเดล AI หลายตัวผ่านอินเทอร์เฟซ API เดียว
การประมวลผลแชตที่เข้ากันได้กับ OpenAI และมีเวลาแฝงต่ำ เพื่อการตอบสนทนาอย่างรวดเร็ว
เชื่อมต่อกับ llama.cpp, LM Studio, vLLM หรือ endpoint อื่นที่เข้ากันได้กับ OpenAI
หมายเหตุ: Ollama ใช้ API เฉพาะของตัวเอง สำหรับ llama.cpp, LM Studio, vLLM หรือเซิร์ฟเวอร์อื่นที่เข้ากันได้กับ OpenAI ให้เลือก Custom API.
Social Stream Ninja รองรับ TTS อย่างครบถ้วนสำหรับข้อความบอตและเนื้อหาแชตที่นำมาแสดงเด่น:
TTS ฟรีในตัวที่ใช้ระบบสังเคราะห์เสียงของระบบปฏิบัติการ
TTS ฟรีที่ทำงานในเครื่องด้วย WebGPU/CPU สำหรับผู้ที่ใส่ใจความเป็นส่วนตัว
TTS น้ำหนักเบาในเบราว์เซอร์ที่ดาวน์โหลดโมเดลขนาดเล็กเพื่อสร้างเสียงในเครื่อง
การสังเคราะห์เสียงระดับพรีเมียมด้วยเสียงธรรมชาติที่ปรับแต่งได้
เสียงคุณภาพสูงพร้อมภาษาและตัวเลือกปรับแต่งหลากหลาย
โมเดลเสียงนิวรัลรุ่นพรีวิวของ Google ที่เลือกเสียงและภาษาได้
การแปลงข้อความเป็นเสียงพูดด้วย AI พร้อมความสามารถแปลงเสียงอย่างเป็นธรรมชาติ
การสังเคราะห์เสียง OpenAI ที่เลือกเสียง โมเดล และ endpoint ที่เข้ากันได้เพิ่มเติมได้
หมายเหตุ: ฟังก์ชัน TTS ต้องเปิดหน้าโอเวอร์เลย์ที่เหมาะสมใน OBS ผู้ให้บริการ TTS แต่ละรายมีตัวเลือกเสียง เวลาแฝง และราคาหรือข้อกำหนดฮาร์ดแวร์ต่างกัน
Social Stream Ninja มีบอตหลายตัวสำหรับการใช้งานต่างกัน:
| ประเภทบอต | URL | คำอธิบาย |
|---|---|---|
| แชตบอตหลัก | /bot.html |
โอเวอร์เลย์บอตหลักพร้อม TTS และคำตอบแชตสาธารณะเป็นตัวเลือกเพิ่มเติม |
| อินเทอร์เฟซแชตส่วนตัว | /chatbot.html |
หน้าบอตตัวต่อตัวโดยเฉพาะที่ไม่ใช้ชุดข้อมูล RAG หรือประวัติแชตร่วมกับบอตหลัก |
| บอตเซ็นเซอร์ | (ทำงานเบื้องหลัง) | กรอง ปรับข้อความให้เหมาะสม หรือบล็อกข้อความขาเข้าโดยอัตโนมัติ |
| ผู้ช่วยดำเนินรายการ AI | /cohost.html |
AI หลายสื่อที่มองเห็นหน้าจอ ได้ยินเสียง และโต้ตอบได้ |
ทำตามขั้นตอนเหล่านี้เพื่อตั้งค่าการเชื่อมต่อ AI ด้วยเมนูปัจจุบัน:
เลือกผู้ให้บริการใน ตั้งค่าผู้ให้บริการ LLM และกรอกช่องที่ตรงกัน:
ใช้ตัวที่มีในระบบ ทดสอบแชตบอตที่เลือก เพื่อยืนยันผู้ให้บริการ โมเดล และข้อมูลรับรองก่อนถ่ายทอดสด
ปรับพฤติกรรมของบอตในแชต:
เปิดฟีเจอร์เสริมบอตที่คุณต้องการ:
/bot.html; ใช้ clearBotOverlay สำหรับล้างด้วยตนเอง/bot.html, /chatbot.html, หรือ /cohost.html ใน OBS หรือเบราว์เซอร์ตามต้องการดูวิธีตั้งค่าครบถ้วนและรายละเอียด TTS เพิ่มเติมในคู่มือเหล่านี้:
ควบคุม Social Stream Ninja ด้วยคอนโทรลเลอร์ MIDI แป้นพิมพ์ลัด หรือ StreamDeck พร้อมปลั๊กอิน MIDI
| หมายเลข 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 เป็น URL ของ webhook&server ลงใน URL แผงด็อกรับบริจาคผ่านแพลตฟอร์มยอดนิยม Buy Me A Coffee
https://io.socialstream.ninja/SESSIONID/bmac เป็น URL ของ webhook&server ลงใน URL แผงด็อกเพื่อรับอีเวนต์หมายเหตุด้านความปลอดภัย: เก็บรหัสเซสชันเป็นความลับ เพราะผู้ที่มีรหัสสามารถส่งการบริจาคปลอมไปยังโอเวอร์เลย์ได้ ควรถือว่า URL ของ webhook เป็นข้อมูลอ่อนไหว
Social Stream Ninja ส่งข้อมูลไปยังบริการภายนอกได้ด้วย:
| บริการ | พารามิเตอร์ URL | คำอธิบาย |
|---|---|---|
| Singular Live | &singular=IDENTIFIER |
ส่งข้อความที่เลือกไปยัง Singular Live เพื่อแสดงในโอเวอร์เลย์ข้อความเด่น |
| H2R | &h2r=IDENTIFIER |
ส่งข้อความที่เลือกไปยังเซิร์ฟเวอร์ H2R ในเครื่อง |
| POST ทั่วไป | &postserver=URL |
ส่งข้อความที่เลือกไปยัง endpoint กำหนดเองผ่าน POST |
| PUT ทั่วไป | &putserver=URL |
ส่งข้อความที่เลือกไปยัง endpoint กำหนดเองผ่าน 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 พร้อมโทเค็น callback
{ "action": "gettimerstate", "get": "timer-state-1" }
ใช้หน้าพร้อม timer.html?session=YOUR_SESSION&server หากต้องการควบคุมโดยตรงผ่านเซิร์ฟเวอร์ API
startgiveaway, closegiveaway, drawgiveaway, resetgiveaway, และ getgiveawaystate จัดการกลุ่มผู้เข้าร่วมแจกของรางวัลโดยเฉพาะผ่านการควบคุม API/Stream Deck เดียวกัน Draw ปิดรับผู้เข้าร่วมโดยอัตโนมัติ New round เก็บประวัติผู้ชนะก่อนหน้าและไม่รับรายการจองที่ยังไม่ชำระเงิน Cancel and refund คืนเงินค่าตั๋วที่ค้างอยู่ ตั๋วแบบเสียเงิน Number Hunt, Coin Flip Pot และ Event Flow ใช้บริการผู้ดำเนินรายการเดียวกัน การตั้งค่า รูปแบบแสดงผล ค่าคำสั่ง และการกู้คืน.
คำสั่งและตัวเลือก API เหล่านี้ช่วยให้คุณสร้างประสบการณ์สตรีมที่มีเอกลักษณ์และโต้ตอบได้