เรียกดูข้อมูลอ้างอิง
การตั้งค่าการจับภาพ ตัวกรอง และรูปแบบเพย์โหลด
สำคัญ: อีเวนต์ที่ใช้ได้ขึ้นอยู่กับแหล่งข้อมูล สิทธิ์ และการตั้งค่าจับข้อมูล หากต้องการซ่อนแถวที่ระบุอีเวนต์ในแผงด็อกหรือโอเวอร์เลย์ Featured ให้เพิ่ม &hideevents หรือ &hideallevents หากต้องการซ่อนอีเวนต์ที่เลือก ใช้ &filterevents=subscription_gift,new_follower,gifted ตัวกรองเหล่านี้ซ่อนแถวที่มีการชำระเงินซึ่งมีค่าได้ด้วย event; แถวบริจาคปกติที่ไม่มีตัวระบุอีเวนต์จะไม่ตรงกับตัวกรองอีเวนต์ ตัวกรองข้อความอื่นยังมีผล
เลือกวิธีจับข้อมูล: สำหรับ YouTube, Twitch และ Kick, โหมด WebSocket โดยทั่วไปครอบคลุมอีเวนต์มากกว่า การจับ DOM มาตรฐานอ่านแถวและการ์ดที่แสดงจริงในหน้า YouTube Super Chats, Super Stickers และของขวัญ Jewel มีเส้นทางจับข้อมูลทั้งสองโหมด อีเวนต์ของขวัญ ทิป และสมาชิกอื่นแตกต่างตามแหล่ง ดูตารางแพลตฟอร์มสำหรับเส้นทางที่รองรับและการตั้งค่าที่จำเป็น
รูปแบบข้อมูล: แถวแชตแบบบริจาคควรใช้ hasDonation และตัวเลือกเพิ่มเติม donoValue อย่าตั้ง event: "donation" เพียงเพราะแถวแชต/ทิปปกติมีมูลค่า ใช้ชื่ออีเวนต์เฉพาะสำหรับการกระทำแพลตฟอร์มจริงหรือประเภทสินค้าแบบชำระเงินเท่านั้น เช่น superchat, supersticker, gift, หรือ jeweldonation ใช้ meta เฉพาะข้อมูลมีโครงสร้างเพิ่มเติมที่ผู้รับต้องใช้จริง และไม่มีช่องเดิมรองรับอยู่แล้ว
ฟีเจอร์ที่ใช้ได้โดยย่อ
ใช้ตารางนี้ดูประเภทแจ้งเตือนที่แต่ละวิธีจับข้อมูลส่งได้ในปัจจุบัน หมายเหตุข้อมูลแบบละเอียดอยู่ด้านล่าง
Multi-Stream Alert Box โดยเฉพาะจัดกลุ่มอีเวนต์สดเป็นหมวดแจ้งเตือนหลักหกหมวด: Follow, Subscription/Member, Donation, Bits/Cheers, Raid/Host, และ Purchase, พร้อมสองหมวดหมู่ที่เลือกเปิดใช้ได้ (Auction และ Hype Train) ที่เปิดผ่านพารามิเตอร์ URL โดยสร้างหมวดหมู่เหล่านั้นจากค่าที่มีอยู่ event, membership, subtitle, hasDonation, และ meta ช่องข้อมูลที่อธิบายที่นี่ ไม่ต้องมีรูปแบบข้อมูลแยก
*การแจ้งเตือนผู้ติดตาม YouTube ตรวจเป็นระยะและอาจล่าช้าหรือไม่ครบ เอกสารอ้างอิง API ไม่ได้รับประกันกรอบเวลาส่งสี่ชั่วโมงตายตัว ดู ข้อจำกัด API การติดตามอย่างเป็นทางการ .
ภาพรวมช่องข้อมูล
data ในที่นี้หมายถึงออบเจ็กต์ข้อความ ไม่ใช่ชั้นหุ้มเพิ่มเติมที่ต้องใส่ แถวแชตและอีเวนต์ที่มีเฉพาะเมทาดาทามีรูปแบบต่างกัน ตัวนับและภาพข้อมูลสถานะอาจไม่ใส่ chatname/chatmessage ในตารางแพลตฟอร์ม ข้อความ อธิบายแถวแชตปกติ ไม่ใช่ค่าตามตัวอักษร event: "message".
การรองรับแพลตฟอร์ม
YouTube – การจับ DOM มาตรฐาน
การใช้งานในโค้ด: sources/youtube.js
เปิดแท็บแชตสดทิ้งไว้ ระบบอ่านการ์ดสมาชิกและของขวัญที่แสดงในเซสชันนั้น ไม่ต้องให้ผู้ชมเป็นเจ้าของช่องหรือผู้ดูแล สิทธิ์บัญชีและมุมมองแชตที่เลือกอาจมีผลต่อแถวที่มองเห็น
เมื่อเปิดโอเวอร์เลย์จำนวนผู้ชมและกิจกรรมแชตโดยแสดงผู้ชม ระบบจะขอจำนวนผู้ชมโดยอัตโนมัติ การตั้งค่า แสดงจำนวนผู้ชม และ ติดตามผู้ที่กำลังร่วมแชต จะเปิดการเก็บข้อมูลด้วยเช่นกัน
สำหรับการแจ้งเตือนผู้ติดตามและอีเวนต์เพิ่มเติม , เปิดโหมด WebSocket ในการตั้งค่าส่วนขยาย
บล็อกสมาชิกตั้งค่าเพิ่มด้วย membership สำหรับแชตผู้ดูแล/สมาชิก ส่วน subtitle มีจำนวนเดือนหรือชื่อระดับ sourceName/sourceImg เติมค่าเมื่อ getChannelInfo สำเร็จ ขณะนี้แชต DOM มาตรฐานรวม meta.messageId เมื่อ YouTube ให้รหัสข้อความแชตสดดั้งเดิม ซึ่งแผงด็อกใช้ซิงก์การลบ
YouTube – การจับ Websocket/Data API
การใช้งานในโค้ด: sources/websocket/youtube.html, ตัวช่วยร่วมใน shared/
ค่าเริ่มต้นใช้ขอบเขต OAuth youtube.readonly และ youtube.channel-memberships.creator สิทธิ์เขียนเพิ่มเติมเพิ่ม youtube.force-ssl สำหรับส่งแชต ดูแลแชต แบน และแก้รายละเอียดสตรีม Google อาจแสดงเป็นสิทธิ์จัดการ YouTube แบบกว้าง เพราะ YouTube ไม่มีขอบเขตสิทธิ์เขียนเฉพาะแชต
สถิติช่องทำตามสวิตช์แต่ละการตั้งค่า (showsubscount, showviewercount).
API ไม่ส่งภาพตรากำหนดเอง ตราสำรองใช้ไอคอนอีโมจิตามที่ระบุด้านล่าง
เมื่อ API รายงานอย่างชัดเจนว่า authorDetails.isChatModerator: true, ข้อมูลแชต Super Chat, Super Sticker, YouTube Gift และของขวัญสมาชิกจะรวม mod: true ไม่มีการอนุมานหรือแคชสถานะผู้ดูแลข้ามอีเวนต์
การแจ้งเตือนผู้ติดตามใหม่ใช้ myRecentSubscribers API (ตรวจทุก 5 นาที) หมายเหตุ: ผลอาจล่าช้าหรือไม่ครบ ระบุได้เฉพาะการติดตามที่มองเห็นแบบสาธารณะ
Data API ไม่ให้แบนเนอร์เปลี่ยนเส้นทาง YouTube ดังนั้น redirect ยังมีเฉพาะการจับ DOM มาตรฐาน
การส่งต่อแชตจาก API ใช้ meta.plainText สำหรับข้อความธรรมดาควบคู่กับข้อมูลแบบสมบูรณ์ chatmessage เนื้อหา เป็นข้อความ ไม่ใช่ HTML และยังมีอีโมจิ Unicode ได้ ตราสมาชิกใช้สำรองเป็นอีโมจิ (⭐, 💝, 🏅, ฯลฯ) เพื่อให้สอดคล้องกับการจับ DOM ข้อมูลแชตปกติยังรวม meta.messageId เพื่อให้การลบจากแผงด็อกส่งกลับไปยัง YouTube moderation API ได้
การแจ้งเตือนผู้ติดตาม YouTube (new_follower)
ขณะนี้ Social Stream ตรวจพบผู้ติดตาม YouTube ใหม่ได้ด้วย myRecentSubscribers endpoint ของ API ทำงานคล้ายการแจ้งเตือนสมาชิก Streamlabs
วิธีทำงาน:
ตรวจ YouTube API ทุก 5 นาทีเพื่อหาผู้ติดตามล่าสุด
ติดตามผู้ติดตามที่เห็นใน localStorage เพื่อตรวจหาคนใหม่
ส่ง new_follower อีเวนต์พร้อมชื่อ อวาตาร์ และรหัสช่องของสมาชิก
ปิดข้อความแจ้งเตือนผู้ติดตามเป็นค่าเริ่มต้น เมื่อเปิดจะใช้ข้อความแปลปัจจุบันสำหรับ alert-just-subscribed
ค่าเริ่มต้นรวมกลุ่มเมื่อมีสมาชิกใหม่มากกว่าสามคนเข้ามารัว ๆ เพื่อไม่ให้การเชื่อมต่อใหม่ทำให้โอเวอร์เลย์หรือ Event Flow เต็มไปด้วยรายการ
ต้องเปิดโหมด WebSocket ในการตั้งค่าส่วนขยาย
ข้อจำกัด (เป็นข้อจำกัดของ YouTube API ไม่ใช่ Social Stream):
ไม่รับประกันระยะเวลาส่ง – SSN ตรวจทุกห้านาที แต่ API อาจคืนผลล่าช้าหรือไม่ครบ อย่าพึ่งกรอบเวลาสี่ชั่วโมงตายตัว
เฉพาะการติดตามสาธารณะ – ผู้ติดตามที่ตั้งรายชื่อการติดตามเป็นส่วนตัวจะไม่เรียกการแจ้งเตือน YouTube ตั้งการติดตามเป็นส่วนตัวตามค่าเริ่มต้น
เฉพาะเจ้าของช่อง – คุณรับการแจ้งเตือนผู้ติดตามได้เฉพาะช่องที่เป็นเจ้าของและยืนยันตัวตนแล้ว
การใช้โควตา API – การตรวจแต่ละครั้งใช้ API 1 หน่วย หากตรวจทุก 5 นาที จะใช้ประมาณ 288 หน่วยต่อวัน (จากโควตาเริ่มต้น 10,000 ต่อวัน)
ตัวเรียกในตัวแก้ไข Event Flow: ใช้ data.event === "new_follower" และ data.type === "youtube"
YouTube Websocket: เอกสารอ้างอิงอีเวนต์และสมาชิกฉบับย่อ
Twitch – การจับ DOM มาตรฐาน
การใช้งานในโค้ด: sources/twitch.js
เปิดแชต Twitch ทิ้งไว้ จับสมาชิกและประกาศผู้ใช้เมื่อ Twitch แสดง ไม่ได้จำกัดเฉพาะบัญชีเจ้าของช่องหรือผู้ดูแล ฟีเจอร์เฉพาะบัญชีอาจต้องยืนยันตัวตน
คำขอจำนวนผู้ชมเรียกไปยัง https://api.socialstream.ninja/twitch/viewers ทุก 30 วินาที
สำหรับการแจ้งเตือนผู้ติดตาม เรด และการรองรับอีเวนต์ครบถ้วน , เปิดโหมด WebSocket ในการตั้งค่าส่วนขยาย
ประกาศ Watch Streak ที่ผู้ชมแชร์ปิดอยู่ตามค่าเริ่มต้นและต้องใช้ แสดง Twitch Watch Streaks การตั้งค่า
ตัวเลือกที่เปิดใช้ได้ PluralMind การตั้งค่าอาจแทนที่ chatname, nameColor, และส่วนที่หุ้มด้วยพร็อกซีของ chatmessage, และอาจเพิ่มตราข้อความสรรพนาม username คงเป็นชื่อเข้าสู่ระบบ Twitch การลบที่เกี่ยวข้องมี delete.meta.pluralmind เพื่อให้แผงด็อกใช้ชื่อเข้าสู่ระบบที่คงที่นั้น
บิต/Cheers เติมค่าใน hasDonation (เช่น “500 bits”) แม้ว่า data.event คงว่าง ให้อิงช่องนั้นเมื่อแสดงวิดเจ็ตบริจาค ข้อมูลช่วงสมัครต่อเนื่องปรากฏใน subtitle เมื่อตราให้จำนวนเดือน
Twitch – EventSub/Websocket
การใช้งานในโค้ด: sources/websocket/twitch.js พร้อมแกนร่วม providers/twitch/chatClient.js
ขอบเขต OAuth: chat:read, chat:edit, user:write:chat, bits:read, moderator:read:followers, moderator:read:chatters, channel:read:subscriptions, channel:read:hype_train, channel:moderate, moderator:manage:banned_users, moderator:manage:chat_messages, channel:manage:broadcast, channel:read:redemptions, channel:read:ads, channel:manage:ads โทเค็นเจ้าของช่องปลดล็อกจำนวนผู้สมัครสมาชิก/ผู้ติดตาม
อีเวนต์ส่งผ่าน EventSub พร้อมตรวจ Helix เป็นระยะสำหรับยอดผู้ชม/ผู้ติดตาม/ผู้สมัครสมาชิก
โหมด WebSocket ให้ข้อมูลแบบเรียลไทม์ การแจ้งเตือนผู้ติดตาม อีเวนต์สมัครสมาชิก เรด cheers, Power-ups, การแลกแต้มช่อง และเมทาดาทา hype train
แถว Shared Chat ใช้ Twitch IRC source-room-id เพื่อเติมค่า sourceName/sourceImg พร้อมช่องต้นทางเมื่อแตกต่างจากช่องที่เชื่อมต่อ
ประกาศ Watch Streak ที่ผู้ชมแชร์ปิดอยู่ตามค่าเริ่มต้นและต้องใช้ แสดง Twitch Watch Streaks การตั้งค่า
ตัวเลือกที่เปิดใช้ได้ PluralMind การตั้งค่าอาจแทนที่ chatname, nameColor, และส่วนที่หุ้มด้วยพร็อกซีของ chatmessage, และอาจเพิ่มตราข้อความสรรพนาม username และ userid คงตัวตน Twitch การลบที่เกี่ยวข้องมี delete.meta.pluralmind เพื่อให้แผงด็อกใช้ช่องที่คงที่เหล่านั้น
ข้อมูลแชตใช้ผู้ให้บริการร่วม จึง data.event เติมค่าสำหรับ `/me` (action) และรูปแบบเดิม bits แท็กแม้อยู่นอกโฟลว์ EventSub ข้อความ GIF ของ Twitch ใส่ไฟล์ Giphy ใน contentimg, คงค่า chatmessage ว่างไว้ และคงป้ายสำรองของ Twitch ใน meta.gifLabel ตรรกะตัดรายการซ้ำและลบใช้รหัสข้อความ ข้อความที่ส่งผ่าน SSN ใช้ค่าดั้งเดิม message_id จากข้อความสะท้อน IRC ของ Twitch ใน data.id.
เมทาดาทา Twitch Hype Train
hype_train มีเฉพาะเมทาดาทาและไม่รวม chatname หรือ chatmessage แดชบอร์ดควรอัปเดตการแสดงขบวนเดิมตาม meta.id แทนการเพิ่มทุกอัปเดตความคืบหน้าเป็นแชต ส่วน Meta Data Bar (meta.html) แสดงอีเวนต์เหล่านี้เป็นแถบความคืบหน้าด้านบน
Twitch EventSub: เอกสารอ้างอิงอีเวนต์ฉบับย่อ
OBS Flow Actions
การใช้งานในโค้ด: actions.html ผ่านอีเวนต์ OBS WebSocket v5 พร้อม dock.html อีเวนต์แหล่งเบราว์เซอร์ OBS เป็นทางสำรอง
เปิดโอเวอร์เลย์ Flow Actions ด้วยเซสชัน Social Stream เดียวกับตัวแก้ไข Event Flow/ระบบเบื้องหลัง หรือโหลดแผงด็อกไว้ใน OBS
ตั้งค่า OBS WebSocket v5 บน OBS 28+ โดย URL เริ่มต้นคือ ws://127.0.0.1:4455.
เป็นอีเวนต์ระบบ Event Flow ไม่รวม chatname หรือ chatmessage, และรายละเอียด OBS เพิ่มเติมอยู่ภายใน meta.
กล่องแจ้งเตือน Streamlabs
การใช้งานในโค้ด: sources/streamlabs.js (DOM กล่องแจ้งเตือน); สะพานเชื่อมซ็อกเก็ตเพิ่มเติมที่ sources/websocket/streamlabs.html
เปิดกล่องแจ้งเตือน Streamlabs ไว้ในแท็บหรือแหล่งเบราว์เซอร์ให้การแจ้งเตือนแสดง สคริปต์เนื้อหาอ่าน DOM แจ้งเตือนเพื่อรับข้อความ/ภาพ/โทเค็น
การแจ้งเตือนแบบบริจาคตั้งค่า hasDonation (เช่น “$10 USD” หรือ “100 bits”) และตัวเลือกเพิ่มเติม donoValue เป็น USD
ประเภทอีเวนต์ที่อนุมาน: follow, subscription, gift, cheer, donation, superchat, raid, redeem, merch, sponsor.
สำหรับสะพานเชื่อมซ็อกเก็ต ให้วางโทเค็น Streamlabs Socket API แล้วเชื่อมต่อ การแจ้งเตือนส่งต่อได้โดยไม่ต้องเปิดหน้ากล่องแจ้งเตือน
TikTok Live – การจับ DOM และฟีด TikFinity
การใช้งานในโค้ด: sources/tiktok.js สำหรับหน้า TikTok ดั้งเดิมและ sources/tikfinity.js สำหรับวิดเจ็ตฟีดกิจกรรม/iframe ของ TikFinity SSApp ยังคงมีการรวม TikTok ดั้งเดิมเข้ากับการครอบคลุมเหตุการณ์ที่กว้างที่สุด (ดูเอกสาร SSApp) แชทมาตรฐานประกอบด้วย meta.messageId เมื่อเพจเปิดเผย ID ข้อความดั้งเดิม ข้อความที่แตกต่างกันซึ่งมีข้อความเหมือนกันจะคง ID ที่แตกต่างกันไว้
ทำงานบนหน้าถ่ายทอดสดของเจ้าของช่อง แบนเนอร์ของขวัญ/ไลก์/ติดตามแสดงข้อมูลเฉพาะเมื่อเซสชันยืนยันตัวตนแล้ว
TikTok ให้อีเวนต์จำนวนมากผ่านการตรวจ DOM โดยไม่ต้องใช้โหมด WebSocket – จับของขวัญ การติดตาม ไลก์ และการเข้าร่วมที่เลือกเปิดจากแถวที่แสดง
หน้าวิดเจ็ต TikFinity ที่ tikfinity.zerody.one/widget/activity-feed* ก็ทำงานได้เช่นกัน iframe ฟีดกิจกรรมที่ฝังส่งช่องข้อมูล TikTok มาตรฐานเดียวกันสำหรับแชต ติดตาม แชร์ ของขวัญ สมัครสมาชิก การเข้าร่วมที่เลือกเปิด และหีบสมบัติ
ไม่ต้องยืนยันตัวตน API เพิ่มเติม
โหมดดั้งเดิมของ SSApp ยังเพิ่มอีเวนต์นอกเหนือจากเส้นทางจับหน้า/วิดเจ็ต: question_new, emote, viewer_update, และค่าสรุปรวมที่เลือกเปิดใช้ likes_update.
membership สะท้อนข้อความ tooltip ของตรา (ระดับสมาชิก) การแคชอวาตาร์คง chatimg ให้ใช้ได้ระหว่างอีเวนต์ หาก DOM ซ่อนสีสำหรับผู้ดูแล สคริปต์ล้าง nameColor. การจับฟีดกิจกรรม TikFinity รองรับท่าเรือแบบเดิมและแบบใหม่ widgets.tikfinity.com URL แหล่งที่มาของเบราว์เซอร์ ใหม่ stream_event ข้อความได้รับการแปลเป็นเพย์โหลดการแชท ของขวัญ ติดตาม แชร์ สมัครสมาชิก เข้าร่วม และซองจดหมายแบบเดียวกันที่อธิบายไว้ที่นี่ แถวของขวัญ TikFinity ก็ตั้งค่าเช่นกัน contentimg ไปที่ไอคอนของขวัญเมื่อมี สำหรับของขวัญที่มีลายเส้นอย่างชัดเจนด้วย repeatEnd ธง TikFinity จะส่งเฉพาะสตรีคที่เสร็จสมบูรณ์และจำนวนสุดท้ายเท่านั้น การอัปเดตการนับระหว่างกลางจะไม่ถูกส่งต่อ ของขวัญที่ไม่ต่อเนื่องและเพย์โหลดเก่าๆ ที่ไม่มีธงนั้นจะดำเนินต่อไปในทันที การอัปเดตต่อเนื่องของขวัญ DOM แบบเนทีฟและแถวของขวัญ TikFinity รวมอยู่ด้วย meta.tiktokGiftStreakId, meta.tiktokGiftCount, และ meta.tiktokGiftQuietMs เพื่อให้โอเวอร์เลย์รวมอัปเดตซ้ำได้ รหัสคอมโบแบบเดิมไม่ซ้ำภายในอินสแตนซ์หน้า เมทาดาทาของขวัญอาจรวม tiktokGiftMessageId (รหัสข้อความ TikTok ต้นฉบับ), tiktokGiftSenderId, groupId, giftId, giftName, streakable, และ repeatEnd รหัสดั้งเดิมระบุของขวัญเดียวกันข้ามหน้าต่างจับข้อมูล รหัสกลุ่มที่ไม่เป็นศูนย์ร่วมกับรหัสผู้ส่งและของขวัญใช้ระบุการอัปเดตคอมโบสะสม การจับ SSApp WebSocket ให้ช่องเดียวกันหลังคอมโบจบ พร้อม count คงไว้เพื่อความเข้ากันได้ ตรวจสวิตช์บริจาคเมื่อส่งต่อของขวัญแต่ละรายการ การปิดบริจาค TikTok นำออก hasDonation และ donoValue โดยคงอีเวนต์ของขวัญและเมทาดาทา TTS ใช้ตัวตนเหล่านี้รวมอัปเดตและระงับรายการสำเร็จซ้ำนานสูงสุดสิบนาที (แคชจำกัดขนาด) และอ่านของขวัญ TikTok เป็นผู้ส่ง จำนวน และชื่อของขวัญ ข้อมูลเก่าใช้รหัสคอมโบและข้อความเดิมเป็นทางสำรอง ไม่อนุมานตัวตนจากข้อความของขวัญอย่างเดียว เสียงพูดของขวัญ TikTok ใช้ภาษา TTS/เสียงที่เลือกแยกจากภาษา UI กริยาประกาศมีคำแปลภาษาอังกฤษ สเปน โปรตุเกส ฝรั่งเศส เยอรมัน อิตาลี และดัตช์ ภาษาอื่นใช้ผู้ส่ง จำนวน และชื่อของขวัญโดยไม่ใส่กริยาภาษาอังกฤษ TTS แบบเรียบง่ายคงรูปแบบกลางนี้ ชื่อของขวัญคงตามที่แพลตฟอร์มให้มา ไม่ได้แปลแค็ตตาล็อกของขวัญหรือข้อความแชตอัตโนมัติ และไม่อนุมานภาษาสตรีม
สำหรับการอัปเดตคอมโบเหล่านี้ จำนวนและป้ายบริจาคเป็นค่าสะสม: 1, 2, 3 หมายถึงสามของขวัญ ไม่ใช่หก ระบบรวมยอดควรบวกเฉพาะส่วนที่เพิ่มจากค่าสูงสุดที่เห็นแล้วสำหรับรหัสคอมโบนั้น การจับมาตรฐานรองรับทั้งคลาสของขวัญเดิมและแถวภาพ/จำนวนปัจจุบัน ทั้งคู่คง event: "gift" และ hasDonation ราคาที่ไม่ทราบจะคงจำนวน/ชื่อของขวัญไว้แสดง และประเมิน USD โดยใช้หนึ่งเหรียญต่อของขวัญหนึ่งชิ้น ค่าที่แหล่งข้อมูลให้มา donoValue มีลำดับความสำคัญก่อน เมทาดาทาของขวัญที่แสดงอาจให้ coinsPerGift หรือ diamondsPerGift ก่อนต้องใช้ตารางของขวัญหรือค่าเริ่มต้น การประเมินเหรียญแบบ Standard/TikFinity และการประเมินเพชรแบบดั้งเดิมของ SSApp ใช้การแปลงแยกตามเดิม ทั้งคู่ไม่ใช่ยอดเงินสดรับที่รับประกัน
Whatnot
การใช้งานในโค้ด: sources/whatnot.js
Use the Whatnot source in SSApp for public chat and auction events without video, or open the live show page for website capture. Both connect to the public auction feed. Website capture also reads rendered auction and catalog sections.
จับอีเวนต์สตรีม (Capture Stream Events) ควบคุมอีเวนต์ระบบ Whatnot และอัปเดตเมทาดาทาประมูล/แค็ตตาล็อก แถวเข้าร่วมยังต้องใช้ จับอีเวนต์สตรีม "joined" ; จำนวนผู้ชมยังทำตามสวิตช์ viewer/hype
การอัปเดตแสดงประมูล/การค้ายังคงเป็นภาพข้อมูลจาก DOM หากต้องการจับคู่อีเวนต์ websocket รายตัวใน Event Flow ให้ใช้ ประเภทอีเวนต์ (ขั้นสูง) , เลือก อีเวนต์กำหนดเอง , แล้วป้อนชื่อให้ตรงทุกตัว ป้ายกำกับใช้ **{username}**\n{subtitle} พร้อมน้ำหนักข้อความที่เลือก เงื่อนไขเปรียบเทียบได้กับ meta.paymentStatus พร้อม failed ส่วน ตัวอย่างป้าย Whatnot ที่นำเข้าได้ พร้อมใช้ การตั้งค่าจับอีเวนต์สตรีมเดิมยังมีผล
ช่องเพิ่มเติมที่เลือกใช้ได้ ได้แก่ meta.catalogProductId (ค่าของแพ็กเก็ต product.productId), meta.parentProductId (product.parentId), meta.transactionType (ประเภทการขายของ Whatnot โดยไม่เปลี่ยนแปลง) และ meta.placeOrderErrorReason (รหัสข้อผิดพลาดคำสั่งซื้อ/การชำระเงินที่ Whatnot ส่งมา) การอ้างอิงสินค้าเหล่านี้อธิบายแค็ตตาล็อกหรือประกาศขายหลัก ไม่ได้แทนรหัสคำสั่งซื้อ จำนวนสต็อกไม่ถือเป็นจำนวนที่ซื้อ
สำหรับระบบอัตโนมัติเมื่อชำระเงินสำเร็จ ให้ตั้ง ประเภทอีเวนต์ (ขั้นสูง) ตัวเรียกเป็น อีเวนต์กำหนดเอง : payment_succeeded, และกรองแหล่งข้อมูลเป็น Whatnot เงื่อนไขและเทมเพลตเดิมใช้ช่องของอีเวนต์นั้นได้คือ userid, chatname, subtitle และ meta.orderId โดยตรง ไม่ต้องจำรายการซื้อไว้หากการแจ้งเตือนมีรายละเอียดที่จำเป็น
การประมูลจบหรือสินค้าถูกทำเครื่องหมายว่าขายแล้วไม่ได้ยืนยันว่าชำระเงินสำเร็จ การแจ้งเตือนเหล่านี้จึงไม่ส่งเป็นรายการชำระแล้ว purchase อีเวนต์และไม่ตั้งยอดบริจาค อีเวนต์สำเร็จส่งเฉพาะเมื่อได้รับ payment_succeeded การแจ้งเตือน การจับข้อมูลไม่ตรวจการชำระเงินสำเร็จเป็นระยะหรืออนุมานจากการขาย ส่วนอื่น paymentStatus values are forwarded only when explicitly supplied in a captured packet. Missing identifiers are omitted; a product ID alone may cover multiple sales, so use a supplied order/auction ID to correlate notifications. Capture does not remember purchases or match payment updates; any such workflow must be explicitly configured in Event Flow. Repeated commerce notifications with the same native event timestamp/ID are suppressed across overlapping channels and reconnects, within a 2,000-event cache. Packets without a native event identity use a brief duplicate window. Raw order/payment objects are not forwarded.
eBay Live
การเชื่อมต่อผู้ขาย eBay ใน Monetization ต้องตั้งค่าบริการ SSN eBay และได้รับความยินยอม OAuth จากผู้ขาย การจับ eBay Live ด้านล่างทำงานแยกกัน โหมด Sandbox ใช้ URL ประกาศขาย sandbox ระบุผู้ซื้อว่า "eBay Sandbox buyer" และขึ้นต้นข้อความด้วย "Sandbox test purchase:" การซื้อ Sandbox คงรูปแบบการซื้อเดียวกันและเรียกการแจ้งเตือน/การกระทำแชตที่เปิดไว้ขณะทดสอบได้ ข้อกำหนดการชำระเงินที่ใช้จริงส่ง event: "purchase", พร้อม type และ platform ตั้งเป็น ebay ต้องเป็นคำสั่งซื้อที่ชำระแล้วและตรงกับสินค้าที่เลือก id เป็นตัวระบุบรรทัดคำสั่งซื้อแบบทึบที่คงที่; chatname เป็น "eBay buyer", chatmessage เป็นข้อความธรรมดา (textonly: true), subtitle เป็นชื่อสินค้าและตัวเลือกเพิ่มเติม contentimg เป็นภาพของรายการนั้น meta.ebayPurchase มี itemId, itemName, quantity, และค่าสาธารณะ url ไม่มีตัวตนผู้ซื้อ ข้อมูลจัดส่ง hasDonation หรือ donoValue รวมไว้ ต่างจากการอัปเดตประมูลหรือสต็อกที่ดึงจากหน้า ซึ่งไม่ยืนยันการชำระเงิน
การใช้งานในโค้ด: sources/ebay.js
เปิดอย่างใดอย่างหนึ่ง /ebaylive/events/<id>/chat หรือ /ebaylive/events/<id>/stream ทั้งคู่ได้รับฟีดประมูลสดเดียวกัน
ฟีด WebSocket สาธารณะให้ข้อมูลประมูล ราคาเสนอ ผู้ชนะ การต่อเวลา และการเปลี่ยนสต็อก ส่วนคำค้น GraphQL แบบอ่านอย่างเดียวให้รายละเอียดประกาศขาย การจับ DOM ยังคงเป็นทางสำรองเมื่อไม่มีข้อมูลเครือข่าย
จับอีเวนต์สตรีม (Capture Stream Events) ควบคุมภาพข้อมูลเมทาดาทา (auction_update, commerce_update); ตัวนับผู้ชมยังเคารพสวิตช์ viewer/hype
อีเวนต์เมทาดาทา eBay ตั้งใจไม่รวม chatname/chatmessage; โอเวอร์เลย์ปลายทางควรแสดงจาก data.event + data.meta เท่านั้น
Kick – การจับ DOM มาตรฐาน
การใช้งานในโค้ด: sources/kick.js. แชทประกอบด้วย meta.messageId เมื่อเพจเปิดเผย ID ข้อความดั้งเดิม
ต้องใช้เซสชันที่ยืนยันตัวตนเพื่อดึงภาพโปรไฟล์และตราสมาชิก
ตรวจอีเวนต์ได้จำกัดโดยจับคู่ข้อความแชตและตรา จำนวนผู้ชมยังทำงานเมื่อเปิดสวิตช์
Kick – Websocket/สะพานเชื่อม
การใช้งานในโค้ด: sources/websocket/kick.js พร้อมตัวช่วยร่วมใน providers/kick/core.js
OAuth ผ่านสะพานเชื่อม Social Stream Kick ขอบเขตปัจจุบันคือ user:read, channel:read, channel:write, channel:rewards:read, chat:write, events:subscribe, moderation:ban, moderation:chat_message:manage, และ kicks:read โทเค็นรีเฟรชอัตโนมัติ
การจัดเตรียม webhook ของ Kick อาจใช้เวลาหลายนาที UI แสดงรายการสมัครอีเวนต์ที่ใช้งานของแต่ละช่อง
การค้นโปรไฟล์ใช้ profileCache; mapBadges รวมไฟล์ตรา Kick กับ SVG ที่แคชไว้เมื่อมี เมื่อ Kick รายงานบริจาคเป็น KICKs สะพานเชื่อมแปลงเป็น hasDonation พร้อม meta.amount พร้อม currency ใช้ "KICKs" เป็นค่าสำรอง ข้อมูลแชตรวม meta.messageId เมื่อสะพานเชื่อมให้รหัสข้อความ Kick ดั้งเดิมเพื่อให้ซิงก์ลบตรงข้อความ ข้อมูลตอบกลับรวม meta.reply พร้อมค่าต้นทาง messageId, author, และ text เมื่อทราบ รายละเอียดตอบกลับที่ให้มายังใช้ได้แม้ข้อความต้นฉบับไม่อยู่ในแคช การตอบที่มีเฉพาะรหัสและไม่มีบริบทแคชอาจยังไม่มีข้อความอ้างอิงที่มองเห็น
Kick Websocket: เอกสารอ้างอิงอีเวนต์ฉบับย่อ
VPZone - WebSocket
การใช้งานในโค้ด: sources/websocket/vpzone.js
เชื่อมต่อกับ wss://chat.vpzone.tv/ws?channel=USERNAME; OAuth ขอ profile:read, chat:read, chat:write, channel:read, channel:write, และ chat:moderate ป้อน bearer token ด้วยตนเองได้เช่นกัน
เฟรม VPZone แบบแบน เช่น type: "msg" ปรับเป็นข้อมูลแชตมาตรฐาน
ฝั่งแพลตฟอร์ม delete_message / clear_chat frames remove the matching rows from the dock. Deletions carry meta.streamUsername to select the channel and meta.messageId when targeting a native message ID. Optional toggles sync dock deletes and blocks back to VPZone (channel owner only).
เจ้าของช่องมีแผง Stream Info ภายในหน้าเพื่ออัปเดตชื่อและหมวดหมู่สตรีมสด (รูปแบบเดียวกับหน้าแหล่ง Twitch)
Joystick
การใช้งานในโค้ด: sources/joystick.js, sources/inject/joystick-ws.js, และ sources/websocket/joystick.js
แหล่งเว็บไซต์ Joystick 2.0 ปกติทำงานบนหน้าที่เข้าสู่ระบบ /u/<channel>/chat หน้า โดยอ่านค่าของหน้า ChatChannel, WhisperChatChannel, EventLogChannel, และ SystemEventChannel เฟรม Action Cable พร้อมทางสำรองจากแถวที่แสดงสำหรับ Electron และกรณีเชื่อมต่อใหม่
ข้อความแชตเว็บไซต์ใช้ช่องหลักเดียวกับ YouTube, Twitch และ Kick: ค่าดั้งเดิม id, chatname, chatmessage, chatimg, chatbadges, nameColor, membership, mod, private, username/userid, และ timestamp เมื่อ Joystick ให้มา เมื่อซ็อกเก็ตไม่มีสีชื่อผู้ใช้ แถวที่แสดงจะให้ค่าเดียวกัน nameColor ช่องที่แผงด็อกซึ่งเปิดสีใช้งาน
การแก้ข้อความฝั่งเว็บไซต์แทนแถวแผงด็อกที่ตรงกัน การลบ ปิดเสียง และบล็อกจะนำแถวที่ตรงกันออกโดยใช้รหัสดั้งเดิมหรือชื่อผู้ใช้
แหล่ง WebSocket แยกใช้ข้อมูลรับรองบอต Joystick (client_id + client_secret); แหล่งเว็บไซต์ใช้เซสชันหน้าที่เข้าสู่ระบบอยู่
อนุญาตสิทธิ์ที่ https://joystick.tv/api/oauth/authorize, แล้วแลก/รีเฟรชโทเค็นที่ https://api.joystick.tv/api/oauth/token.
เชื่อมต่อกับ wss://api.joystick.tv/cable และสมัครรับ GatewayChannel.
การแลกโทเค็น OAuth เพิ่มเติมใช้สำหรับ endpoint ตัวช่วย เช่น https://api.joystick.tv/api/users/stream-settings.
แหล่งแยกที่ใช้ข้อมูลรับรองบอตไม่ส่ง viewer_update แหล่งเว็บไซต์ที่เข้าสู่ระบบส่งจำนวนผู้ชมเมื่อซ็อกเก็ตหน้าส่งข้อมูลมา ตามคำอธิบายด้านล่าง
XP Sync
การใช้งานในโค้ด: sources/xpsync.js
แถวแชตใช้ช่องข้อมูลมาตรฐานพร้อม type: "xpsync", รวมผู้เขียน ข้อความ อวาตาร์ ตราภาพและ SVG ในบรรทัด สีชื่อ สมาชิก แฟล็กผู้ดูแล/สมาชิก/บอต และ UUID ข้อความดั้งเดิมเป็น id เมื่อมี
การตอบกลับทำตามแนวทางแหล่ง DOM ของ YouTube, Twitch และ Kick: เว้นแต่ปิดคำนำหน้าตอบกลับ initial มีผู้ใช้ที่ตอบกลับถึง, reply คงข้อความที่ไม่มีคำนำหน้า และ chatmessage ได้รับคำนำหน้าตอบกลับที่มองเห็น
แถวไฮไลต์ Sparks ถูกจับแม้ XPSync แสดงโดยไม่มีคลาสแถวแชตปกติหรือรหัสข้อความ ยอดที่มองเห็นให้ผ่าน hasDonation เป็น N Sparks.
เมื่อเปิดการจับอีเวนต์ แถวที่มี “just followed” หรือ “followed the channel” ส่ง event: "new_follower".
เมื่อเปิดจำนวนผู้ชม แผงด็อกแชตถาวรส่ง event: "viewer_update" จากจำนวนวิดีโอสดที่หน้า XPSync โหลดอยู่แล้ว และรีเฟรชจากอัปเดตหน้าสดของ XPSync ไม่ต้องมีข้อมูลรับรอง SSN แยก
Instagram – การจับ Live REST และกล่องข่าวขาเข้า
การใช้งานในโค้ด: sources/instagram.js และ sources/instagramlive.js (สำเนาที่เหมือนกัน)
บนหน้าถ่ายทอดสด (/<user>/live/?broadcast_id=...), แชตสดมาจากเว็บ API ของ Instagram เอง โดยตรวจเป็นระยะจากต้นทางเดียวกันพร้อมคุกกี้เซสชัน: GET /api/v1/live/{broadcast_id}/get_comment/?last_comment_ts={ts} ทุกประมาณ 2 วินาที และ POST /api/v1/live/{broadcast_id}/heartbeat_and_get_viewer_count/ ทุกประมาณ 5 วินาทีเมื่อเปิดจำนวนผู้ชม หลังล้มเหลวต่อเนื่อง 3 ครั้ง (หรือเมื่อไม่มี broadcast_id ค้นพบได้) แหล่งข้อมูลกลับไปอ่าน DOM แชตที่แสดง
ตรวจฟีดกิจกรรมของบัญชีตัวเองผ่าน POST /api/v1/news/inbox/ ทุกประมาณ 45 วินาทีบนหน้า Instagram ใดก็ได้ การตรวจครั้งแรกใช้ตั้งชุดตัดซ้ำเท่านั้น จึงไม่เล่นประวัติย้อนหลัง เรื่องราวตัดซ้ำด้วย tuuid.
ส่วนหัว API ที่จำเป็น (ทั้งหมดคงที่/คำนวณหาได้): X-IG-App-ID: 936619743392459, X-CSRFToken (จากคุกกี้), X-ASBD-ID: 359341, X-Requested-With: XMLHttpRequest, Content-Type: application/x-www-form-urlencoded.
ทุกอีเวนต์ในฟีดกิจกรรมใช้ type: "instagram"; แชตสดยังเป็น type: "instagramlive" อีเวนต์ไลก์ใช้เส้นทางเบื้องหลังปกติ: ระบบเบื้องหลังส่งหนึ่งสำเนาไปยัง Reactions Overlay โดยเฉพาะ แล้วรวมในฟีดแชต/อีเวนต์หลักเฉพาะเมื่อ capturelikeevent เปิดอยู่ ตรงกับ TikTok และ MeetMe hideevents และตัวกรองอีเวนต์กำหนดเองบล็อกทุกที่ เนื่องจากอีเวนต์กล่องขาเข้าเป็นของบัญชีที่เข้าสู่ระบบ จึงระงับเมื่อดูถ่ายทอดสดของคนอื่น (ทั้ง /<user>/live/ หน้าและอยู่ในตัวดู stories การระบุเจ้าของทำแยกตามโปรไฟล์และลองใหม่เมื่อค้นไม่สำเร็จ) และส่งบนไลฟ์ของคุณเองกับทุกหน้าที่ไม่ใช่ไลฟ์ มีแท็บ Instagram ที่ใช้งานหนึ่งแท็บตรวจกล่องขาเข้าบัญชีในแต่ละครั้ง และตรวจเฉพาะเมื่อลงชื่อเข้าใช้
Facebook Live
การใช้งานในโค้ด: sources/facebook.js (ดึงข้อมูล DOM) และสะพานเชื่อม Graph API เพิ่มเติมที่ sources/websocket/facebook.html
การจับ DOM อ่านความคิดเห็น Facebook ที่แสดง ส่วนสะพานเชื่อม Graph API ของเพจที่จัดการอ่านความคิดเห็นวิดีโอ ทั้งคู่ใช้ type: "facebook", ช่องแชตมาตรฐาน และไม่มี event สำหรับความคิดเห็นปกติ สะพานเชื่อม API ยังมีช่องเพิ่มเติม platform: "facebook".
สะพานเชื่อม API ใช้ userid สำหรับรหัสผู้เขียนเมื่อมี, timestamp สำหรับเวลาสร้างที่ถูกต้องในมิลลิวินาที Unix และ contentimg สำหรับภาพแนบ HTTP(S) ที่ API ให้มา ความคิดเห็นที่มีเฉพาะภาพอาจมีค่าว่างใน chatmessage. textonly มีผลเฉพาะเนื้อหาข้อความ: ข้อความดิบเมื่อเป็น true และ HTML ที่ escape แล้วเมื่อเป็น false
บริบทความคิดเห็น API ใช้ meta.messageId (รหัสความคิดเห็นดั้งเดิม), meta.permalink, meta.videoId, และ meta.pageId รุ่น API ก่อนหน้าใช้ meta.commentId, ช่องผู้เขียน/เวลาที่ทำซ้ำไว้ใน meta, และส่งไฟล์แนบดิบไปไว้ที่นั่น รุ่นใหม่ใช้ช่องผู้เขียน/เวลา/สื่อมาตรฐานแทน โดยไม่ได้เพิ่มการซิงก์การลบ
จำนวนผู้ชมรีเฟรชเฉพาะเมื่อเปิดใช้ สะพานเชื่อม API อ่านค่าพร้อมกัน live_views; ไม่ใช้ยอดวิววิดีโอสะสมมาแทนหรือสร้างศูนย์เมื่อไม่มีจำนวน การจับ API ไม่อนุมาน Stars สมาชิก ไฮไลต์ หรือการตอบกลับจากข้อความความคิดเห็นปกติ
จับ Stars จาก DOM แชตสดที่แสดงเมื่อ Facebook แสดงองค์ประกอบที่มองเห็น N sent ตัวระบุ; โดยเติมค่าใน hasDonation และ donoValue ที่ 100 Stars = $1 USD โดยไม่ตั้ง data.event.
สำหรับทดสอบ ให้เพิ่ม ssnreplay=1 ลงใน URL Facebook Live เพื่อประมวลผลแถวแชตที่มองเห็นอยู่แล้วหลังรีเฟรช
Online Church
การใช้งานในโค้ด: sources/onlinechurch.js
พึ่งการดึง DOM จากแชตสาธารณะและส่วนหัวสื่อ
จำนวนผู้ชมรีเฟรชเฉพาะเมื่อ แสดงจำนวนผู้ชม หรือเปิดโหมด hype
SharePlay.tv
การใช้งานในโค้ด: sources/shareplay.js
การใช้งาน API สำหรับเดสก์ท็อป: ssn_app/resources/shareplay-client.js แหล่งข้อมูล SSApp แบบเนทีฟติดตามช่องของผู้ใช้ที่อนุญาตเอง โดยใช้ไคลเอนต์ OAuth สาธารณะที่ทีมงาน SharePlay จัดเตรียมให้
พึ่งการดึง DOM จากแถบแชตสดบนหน้าช่อง SharePlay
ส่งเฉพาะแถวแชตและการ์ดที่เพิ่มใหม่หลังตัวดึงข้อมูลเริ่มทำงาน โดยตั้งใจข้ามประวัติที่มีอยู่
แหล่งข้อมูล API สำหรับเดสก์ท็อปรับเหตุการณ์ EventSub ใหม่ โดยไม่ส่งข้อความระหว่างที่ขาดการเชื่อมต่อย้อนหลัง แชตเก็บ ID ข้อความของ SharePlay ใน id และ ID ผู้ส่งใน userid แต่ไม่มีรูปประจำตัวหรือป้าย อีโมตเป็นไปตามการตั้งค่า textonly; การตอบกลับจะเติมฟิลด์ตอบกลับที่มีอยู่เมื่อข้อความต้นทางอยู่ในแคชเซสชันขนาด 200 ข้อความ
API สำหรับเดสก์ท็อปแปลงเหตุการณ์ channel.blitz ที่เสร็จสมบูรณ์เป็น raid ส่วนการโปรโมตช่องในแชตแปลงเป็น shoutout, และ stream.viewers เป็น viewer_update เมื่อเปิดจำนวนผู้ชมหรือโหมด hype การโปรโมตช่องผ่าน API มีข้อความแชตที่ได้รับ แต่ไม่มีข้อมูลเมตาของแบนเนอร์หรือปุ่มบนการ์ด DOM เหตุการณ์แชต/Blitz จำลองจะเก็บ meta.is_synthetic: true; การอัปเดตจำนวนผู้ชมยังคงเก็บค่าจำนวนเต็มใน meta.
Streamplace
การใช้งานในโค้ด: sources/streamplace.js
อ่านหน้าถ่ายทอดสดของ Streamplace ที่แสดงด้วย React และข้ามประวัติแชตที่มองเห็นเมื่อเริ่มจับ
ข้อความแบบส่งต่อ เช่น Name (Discord): message ปรับเป็นชื่อผู้ส่งที่ส่งต่อมา
WorldsWave
การใช้งานในโค้ด: sources/worldswave.js
รองรับหน้าถ่ายทอดสด WorldsWave และ URL แชตอย่างเดียว เช่น https://worldswave.com/kn_livecmd.php?cmd=viewStream&streamId=STREAM_ID&chatonly=1.
ใช้ค่าคงที่ data-ww-*/ww-chat-* มาร์กอัปเมื่อมี พร้อมคงตัวเลือก kontackt เดิมสำหรับหน้าแชตอย่างเดียวและเลย์เอาต์เก่า
ข้ามประวัติแชตเดิมเมื่อเริ่มจับข้อมูล ให้ทดสอบด้วยข้อความใหม่
จำนวนผู้ชมต้องใช้ แสดงจำนวนผู้ชม หรือโหมด hype ยังไม่ได้ทำอีเวนต์ของขวัญ/ทิปเฉพาะและการส่งกลับ แถวที่แสดงอาจยังให้ป้ายบริจาคผ่าน data-ww-donation.
FLEX TV
การใช้งานในโค้ด: sources/flextv.js
อ่านแผงแชตที่แสดงบน https://www.flextv.co.kr/channels/*/live หน้า
ต้องมองเห็นแผงแชต ข้ามประวัติแชตเดิมเมื่อเชื่อมแหล่งข้อมูล จึงควรทดสอบด้วยแถวแชตใหม่
ยังไม่มีเอกสารเส้นทางจำนวนผู้ชม การบริจาค หรือการส่งกลับสำหรับแหล่งนี้
Seal Team Sloth
การใช้งานในโค้ด: sources/sealteamsloth.js
อ่านแชตป๊อปเอาต์ที่แสดงบน https://sealteamsloth.com/popout-chat/* หน้า
จำนวนผู้ชมต้องใช้ แสดงจำนวนผู้ชม หรือโหมด hype
MeetMe - การจับ DOM และ WebSocket
การใช้งานในโค้ด: sources/meetme.js
อ่าน DOM แชตสดที่แสดงของ MeetMe บน app.meetme.com/live/view/... หน้าและภายใน api.gateway.meetme-live.com/web-live/... iframe
เมื่อ iframe websocket ใช้ได้ wss://video-live.meetme.com/ เฟรมถูกอ่านก่อนทางสำรอง DOM เพื่อจับอีเวนต์สดที่มีรายละเอียดมากกว่า
hideevents ระงับอีเวนต์ที่ไม่ใช่บริจาค ของขวัญ MeetMe และการบริจาคเพชรยังเติมช่องบริจาค capturejoinedevent เปิดประกาศเข้าร่วม/กลับเข้าร่วม ค่าที่ระบุผู้กระทำ liked อีเวนต์ใช้การกำหนดเส้นทางเบื้องหลังร่วมที่ควบคุมด้วย capturelikeevent; ค่ารวม reaction เอฟเฟกต์ยังระบุเป้าหมายเป็น Reactions Overlay อย่างชัดเจน
จำนวนผู้ชมใช้ค่าที่มองเห็นในส่วนหัว MeetMe ก่อน และใช้ยอด websocket เป็นทางสำรองเฉพาะเมื่อไม่มีค่า DOM ส่งเมื่อเปลี่ยนและส่งค่าล่าสุดซ้ำประมาณทุก 30 วินาทีขณะ showviewercount/hypemode เปิดอยู่ ยอดผู้ติดตามส่งเฉพาะเมื่อเปลี่ยนและจำกัดอัตราประมาณ 60 วินาที
Velora
การใช้งานในโค้ด: sources/velora.js และ sources/websocket/velora.js
โหมดมาตรฐานอ่าน DOM แชตที่มองเห็น ส่วนโหมด WebSocket ใช้ Velora Events API พร้อม OAuth
URL โหมดมาตรฐานที่รองรับ ได้แก่ https://velora.tv/*, https://velora.tv/dashboard/stream/popout?panels=chat%2Cactivity&channel=CHANNEL&layout=vertical, และ https://velora.tv/dashboard/stream/popout/CHANNEL/obs-chat.
การ์ดแบบ Volts และแต้มช่องส่งเป็นข้อมูลอีเวนต์เมื่อ DOM หรือ Events API ให้ข้อมูล
Parti - การจับแชตโปรไฟล์ / ป๊อปเอาต์
การใช้งานในโค้ด: sources/parti.js
รองรับ URL โปรไฟล์ เช่น https://parti.com/USERNAME และ URL ป๊อปเอาต์ เช่น https://parti.com/popout-chat?id=USER_ID.
จำนวนผู้ชมใช้ endpoint heartbeat ของสตรีมสด Parti เมื่อเปิดการจับจำนวนผู้ชมหรือโหมด hype
CHZZK - การจับแชตป๊อปเอาต์
การใช้งานในโค้ด: sources/chzzk.js
รองรับ https://chzzk.naver.com/live/*/chat และ https://chzzk.naver.com/iframe/live/*/chat.
จำนวนผู้ชมใช้ endpoint ตรวจสถานะสดของ CHZZK เมื่อเปิดการจับจำนวนผู้ชมหรือโหมด hype
Rumble - การจับ DOM มาตรฐาน
การใช้งานในโค้ด: sources/rumble.js
ต้องใช้คุกกี้เซสชันที่ยืนยันตัวตนเพื่อให้ service.php API ผู้ชมตอบกลับ
แถว Rant ที่แสดงให้ค่า hasDonation; การ์ดเรดขาเข้าให้ event: "raid" แหล่ง DOM นี้ไม่ส่งฟีดอีเวนต์ผู้สมัครสมาชิก/ผู้ติดตามแบบสะพานเชื่อม API
Rumble - Websocket/URL ของ API
การใช้งานในโค้ด: sources/websocket/rumble.js
ต้องใช้ URL Live Stream API ของเจ้าของช่องจาก https://rumble.com/account/livestream-api เอกสาร Rumble ระบุว่า URL นี้มีคีย์ถ่ายทอดสด ไม่ต้องยืนยันตัวตนแยก และควรแชร์เฉพาะบุคคลภายนอกที่ไว้ใจ
ช่องทางรับส่งแบบอ่านอย่างเดียว เอกสาร Rumble Live Stream API สาธารณะไม่อธิบาย endpoint ส่งแชตอย่างเป็นทางการ แหล่งนี้จึงส่งต่อข้อความ/อีเวนต์เข้า Social Stream แต่ไม่ส่งแชตกลับ Rumble
livestreams[].chat มีค่าเฉพาะเมื่อสตรีมที่เลือกกำลังสด ใช้ ?streamId=... เพื่อเลือกตรึงสตรีมหนึ่งเมื่อ API ให้มากกว่าหนึ่ง ขณะนี้รหัสไม่ถูกต้องจะล้มเหลวแทนการสลับไปสตรีมอื่นเงียบ ๆ
หน้ายังหาค่าของ https://rumble.com/chat/popup/<livestreams[].id> เพื่อให้เปิดแชตป๊อปอัปปกติที่แทรกไว้ได้โดยตรง โดยไม่ต้องโหลดหน้าของเจ้าของช่องก่อน /live หน้า
ช่องทางนี้มีไว้สำหรับช่องที่คุณเป็นเจ้าของหรือจัดการ เนื่องจาก URL ของ API มีคีย์สตรีมสด อย่าเปิดเผยในโอเวอร์เลย์ ล็อก ภาพหน้าจอ หรือโปรไฟล์เบราว์เซอร์ที่แชร์ อวาตาร์แชตมาจากสตรีมแชต SSE ของ Rumble หลัง API อย่างเป็นทางการหาค่ารหัสสตรีมได้ ช่องทางนี้ไม่ได้ดึงหน้า Rumble เพื่อหาอวาตาร์
YouNow - การจับ DOM
การใช้งานในโค้ด: sources/younow.js
อ่าน DOM แชตสดที่แสดงและส่งข้อมูลแชตมาตรฐานพร้อม type: "younow".
บรรทัดกิจกรรมผู้ชม เช่น is watching, I became a fan!, และ invited N fans to this broadcast. ระบุด้วย event: true เพื่อให้ตัวกรองอีเวนต์กำหนดเส้นทางได้
Favorited Studio - การจับ DOM
การใช้งานในโค้ด: sources/favorited.js
อ่าน DOM แชตสดที่แสดงและส่งข้อมูลแชตมาตรฐานพร้อม type: "favorited".
BEAM - การจับ DOM
การใช้งานในโค้ด: sources/beamstream.js
อ่าน DOM แชตสดที่แสดงและส่งข้อมูลแชตมาตรฐานพร้อม type: "beamstream".
สตาร์วิออส
การใช้งานในโค้ด: sources/starvios.js
บันทึกแถวการแชทที่แสดงผลใหม่ https://starvios.com/popout/chat/USERNAME พร้อม type: "starvios"ชื่อผู้ส่งธรรมดา สีของชื่อ และข้อความหรืออิโมติคอนอินไลน์ตาม textonly.
แถวแชทที่ชำระเงินจะคงจำนวนเงินที่แสดงไว้ hasDonation (เช่น 100 Starvies). ไม่มีการแปลงหรือบริจาคเงินเป็น USD
แถวที่มีอยู่และแถวที่แสดงผลในช่วงระยะเวลาการชำระประวัติ 1.5 วินาทีเริ่มแรกจะถูกข้ามไป ไม่รวมการ์ดที่ปักหมุดแยกกัน การแสดงตัวอย่างการตอบกลับ และการแจ้งเตือนการสมัครสมาชิก/การจู่โจม หน้าต่างป๊อปอัพไม่มีจำนวนผู้ดูที่ได้รับการยืนยัน
ใช้มาตรฐาน focusChat ตอบกลับเมื่อมีอินพุตที่มองเห็นและแก้ไขได้ การส่งที่ได้รับการรับรองความถูกต้องยังคงไม่ได้รับการยืนยัน
RobotStreamer
เปิด https://robotstreamer.com/chat.html?c=CHANNEL_ID and keep Stream Chat selected for channel-only capture. Each new message, including messages grouped beneath the same author, uses platform/type: "robotstreamer", ข้อความธรรมดา chatname, userid, chatimg, chatbadges, และ nameColor. Message bodies preserve safe inline images; textonlymode uses literal text and image labels. Initial history and system notices are excluded. RobotStreamer deletions are not forwarded; remove moderated messages in the SSN dock if needed.
Castyr - การจับ DOM
การใช้งานในโค้ด: sources/castyr.js
อ่านแถวแชตใหม่ที่แสดงจาก https://castyr.live/homebeta/popout-chat/* และส่งข้อมูลแชตมาตรฐานพร้อม type: "castyr".
ข้ามประวัติแชตเดิมเมื่อเชื่อมแหล่งข้อมูล
SOOP - การจับ DOM ของตัวเล่น
การใช้งานในโค้ด: sources/sooplive.js รองรับรูปแบบรวม play.sooplive.com ตัวเล่นและรูปแบบเดิม play.sooplive.co.kr URL โดยยังรู้จักเลย์เอาต์แชตส่วนกลางแบบเดิมเมื่อมีการให้บริการ
แชตสาธารณะส่ง type/platform: "sooplive", ข้อความธรรมดา chatname/userid, nameColor, และค่าที่ผ่านการทำให้ปลอดภัย chatmessage ไม่รวมแถวเดิม รหัสข้อความซ้ำ สำเนาแปล และข้อความกระซิบส่วนตัว อีโมตกลายเป็นภาพที่ปลอดภัยหรือข้อความ alt ในโหมดข้อความอย่างเดียว
พร้อม showviewercount หรือ hypemode เปิดอยู่, viewer_update มีค่าจำนวนเต็ม meta จากค่าของตัวเล่น #nAllViewer หน้าต่างแชตอย่างเดียวอาจไม่แสดงจำนวนนี้ SSApp ใช้ตัวเล่นเต็มเมื่อเปิดป๊อปอัปแยก เพราะป๊อปอัป SOOP ปัจจุบันพึ่งหน้าที่เปิดมัน
Gosh - การจับแชตช่อง
การใช้งานในโค้ด: sources/gosh.js เปิด https://gosh.com/USERNAME โดยให้แชตมองเห็น หรือวาง URL นั้นใน Add other source ของ SSApp ไม่ต้องใช้แชตป๊อปเอาต์
แถวแชตใหม่ส่ง type/platform: "gosh", ข้อความธรรมดา chatname, nameColor, และค่าที่ผ่านการทำให้ปลอดภัย chatmessage ภาพและ GIF ในบรรทัดคง URL แบบ HTTP(S) ที่ปลอดภัย เมื่อใช้ textonlymode, ภาพกลายเป็นข้อความ alt หรือ [image] เมื่อไม่มีข้อความ alt อวาตาร์ ตรา การบริจาค และสมาชิกคงว่างเมื่อไม่มีในแถวที่จับ
เลื่อนแชตแบบแสดงเฉพาะส่วนไปที่ข้อความล่าสุด ไม่รวมประวัติเดิม แถวที่แสดงซ้ำ และประกาศระบบที่ไม่มีผู้เขียน ดัชนีการแสดงอยู่ภายในและไม่ส่งเป็นรหัสข้อความดั้งเดิม ไม่มีการอนุมานอีเวนต์ติดตาม บริจาค จำนวนผู้ชม หรือดูแลแชต
Livacha - การจับห้องแชต
การใช้งานในโค้ด: sources/livacha.js เปิด https://livacha.com/chat/ROOM โดยให้แชตมองเห็น หรือวาง URL ห้องใน Add other source ของ SSApp
แถวแชตใหม่ส่ง type/platform: "livacha", ข้อความธรรมดา chatname, chatimg, nameColor, และค่าที่ผ่านการทำให้ปลอดภัย chatmessage URL อวาตาร์และภาพในบรรทัดแบบสัมพัทธ์จะกลายเป็น URL HTTP(S) แบบเต็ม ย่อหน้า การขึ้นบรรทัด และรายการจะรวมเป็นข้อความแชตเดียว เมื่อใช้ textonlymode, ภาพกลายเป็นข้อความ alt หรือ [image].
ใช้รหัสข้อความภายในเพื่อหลีกเลี่ยงจับการแก้ไขและแถวที่ถูกสร้างใหม่ซ้ำ ข้ามประวัติเริ่มต้นและข้อความเก่าที่แทรกด้านบน เวลาและเมนูรีแอ็กชันอยู่นอกเนื้อหาที่จับ ไม่มีการอนุมานอีเวนต์บริจาค สมาชิก ดูแลแชต หรือจำนวนผู้ชม
Chatango - Group Chat
เปิด https://ROOM.chatango.com/, or a page with an embedded Chatango room. New rows emit standard chat with type/platform: "chatango", ข้อความธรรมดา chatname, nameColor, chatmessage, และ chatimg when available. Inline images use HTTP(S) URLs; text-only mode uses their alt text or [image]. Rows already displayed when capture attaches and older messages prepended while scrolling back are skipped.
Vaughn Live - การจับภาพแชทช่อง
การใช้งานในโค้ด: sources/vaughn.js เปิด https://vaughn.live/USERNAME โดยมองเห็นแชทได้ หรือวาง URL ของช่องลงในแอปเดสก์ท็อปเพื่อเพิ่มแหล่งที่มาอื่น
แต่ละเนื้อหาข้อความใหม่จะส่งเสียงแชทมาตรฐานด้วย type/platform: "vaughn", ข้อความธรรมดา chatname, chatmessageและอวตารของกลุ่ม chatimg, nameColorและรูปภาพ/SVG chatbadges เมื่อปรากฏ การแชทแบบกระชับจะอ่านชื่อที่อยู่หน้าข้อความ อิโมติคอนใช้ URL รูปภาพที่แสดง หรือใช้ทริกเกอร์/ข้อความแสดงแทนด้วย textonlymode.
รหัสข้อความและองค์ประกอบต่างๆ จะถูกติดตามภายในเพื่อหลีกเลี่ยงไม่ให้เกิดซ้ำเมื่อข้อความที่จัดกลุ่มมาถึง รหัสเปลี่ยนหลังจากการรับทราบ หรือแถวถูกแสดงผลอีกครั้ง ข้อความที่มีอยู่และประวัติที่แสดงผลในขณะที่มองเห็นการซ้อนทับการโหลดครั้งแรกจะถูกข้ามไป การประทับเวลา เครื่องมือข้อความ และการ์ดแสดงตัวอย่างลิงก์จะไม่รวมอยู่ในเนื้อหาข้อความ
Stream.space - การจับ DOM รุ่นทดลอง
การใช้งานในโค้ด: sources/streamspace.js จับคู่เฉพาะ https://beta.stream.space/chat-popup.php?channel=USERNAME และค่าที่เทียบเท่า https://stream.space ป๊อปอัป
แถวแชตใหม่ที่แสดงส่ง type: "streamspace", platform: "streamspace", ข้อความธรรมดา chatname/userid, chatmessage, อวาตาร์ chatimg, ระดับแบบภาพ chatbadges, และ nameColor อีโมตในบรรทัดจะสร้างใหม่เป็นภาพที่ปลอดภัย หรือข้อความ alt เมื่อ textonlymode เปิดอยู่ ไม่รวมประวัติเดิม ประกาศต้อนรับ ตัวอย่างตอบกลับ และรายการปักหมุดซ้ำ
viewer_update มีค่าจำนวนเต็ม meta อ่านจาก #popupViewersNum เมื่อ showviewercount หรือ hypemode เปิดอยู่ ไม่มีการอนุมานอีเวนต์บริจาค สมาชิก หรือดูแลแชต
รุ่นทดลอง: ป๊อปอัปเบตายังค้างที่ Loading ระหว่างตรวจสอบ SSApp โหลดป๊อปอัปและจับอัปเดตผู้ชมได้ แต่ยังไม่ยืนยันการส่งแชตสดและป๊อปอัปใช้งานจริง SSN จับข้อความที่เว็บไซต์ไม่แสดงไม่ได้
w.tv และ Prime - การจับ DOM
การใช้งานในโค้ด: sources/wtv.js บน https://w.tv/USERNAME/chat และ sources/prime.js บน https://prime.gs/USERNAME?chat_popout=1.
แถวแชตใหม่ใช้ type/platform ของ wtv หรือ prime, ข้อความธรรมดา chatname, nameColor, และค่าที่ผ่านการทำให้ปลอดภัย chatmessage อีโมตในบรรทัดกลายเป็นภาพที่ปลอดภัยหรือข้อความ alt ในโหมดข้อความอย่างเดียว Prime ยังรวมค่าของแถว userid และรองรับทั้งลิงก์โปรไฟล์เมื่อเข้าสู่ระบบและป้ายชื่อผู้ใช้เมื่อออกจากระบบ อวาตาร์และตราเว้นว่างเมื่อไม่มีในโครงสร้างแถวที่ตรวจยืนยันแล้ว
ไม่รวมประวัติเริ่มต้น การ์ดปักหมุด และตัวอย่างตอบกลับ w.tv ใช้แชตแบบแสดงเฉพาะส่วน ให้เลื่อนไปข้อความล่าสุดเพื่อจับข้อมูล test ID ใน DOM เป็นดัชนีการแสดง ไม่ใช่รหัสข้อความดั้งเดิม Prime ข้ามประวัติเก่าที่โหลดเหนือข้อความเริ่มต้นและตัวแทนผู้ใช้ที่ถูกละเว้น
ป๊อปอัปทั้งสองไม่มีจำนวนผู้ชมสตรีมที่ยืนยันได้ อะแดปเตอร์เหล่านี้จึงไม่ส่งอัปเดตผู้ชมหรืออนุมานอีเวนต์บริจาค สมัครสมาชิก หรือดูแลแชต
Goodgame, Pilled, Owncast, Picarto, and Piczel Viewer Counts
เปิดใช้ แสดงจำนวนผู้ชม หรือ ติดตามผู้ที่กำลังร่วมแชต (showviewercount หรือ hypemode) to collect viewer counts. Opening the Viewer Count & Chat Activity overlay with viewers displayed also requests them. Each source emits event: "viewer_update" with a nonnegative integer meta, refreshed every 30 seconds while capture is enabled. These are stream viewer counts; active chatters are counted separately. A reported zero is valid; failed requests do not produce a zero count.
Normal chat uses the source's type, chatname, chatmessage, และ textonly fields without a viewer event marker. Viewer updates contain type, event, and integer meta; the background combines them into viewer_updates for overlays.
ขอบเขตการรองรับและข้อจำกัดความเข้ากันได้
เอกสารนี้อธิบายข้อมูลที่ใช้งานจริง ไม่ได้รับประกันว่าทุกแพลตฟอร์มส่งทุกอีเวนต์ ค่าว่าง hasDonation การกำหนดค่าในแหล่งข้อมูลไม่ได้ยืนยันว่ารองรับการบริจาค การมองเห็น DOM สิทธิ์บัญชี สวิตช์จับข้อมูล และความพร้อม API ยังเป็นตัวกำหนดว่าจะได้รับอะไร การส่งต่อการลบเฉพาะแต่ละแหล่ง อย่าสมมติว่าซิงก์การดูแลแชตได้ทุกที่
ความไม่ตรงกันและช่องว่างที่ติดตาม
ชื่อเรียกแทนและชื่อเดิมเฉพาะแหล่งข้อมูล
การจับคู่เหล่านี้เฉพาะแหล่ง/บริบทที่ระบุ ไม่ใช่การแทนที่ทั่วระบบ การรองรับชื่อเรียกแทนของผู้รับข้อมูลต่างกันตามหน้า แหล่ง TikTok DOM และ TikFinity ปัจจุบันยังส่ง followed; Velora ใช้ subscription และ channel_points, และ Streamlabs ใช้ subscription ยอมรับข้อกำหนดของแหล่งข้อมูลปัจจุบันและชื่อเรียกเดิมที่เกี่ยวข้อง แทนการเปลี่ยนชื่อทุกอีเวนต์ที่ตรงกัน
การใช้เอกสารนี้
เมื่อเพิ่มอีเวนต์ใหม่ ให้ใช้คำศัพท์ที่มีอยู่ (subscription_gift, viewer_update, ฯลฯ) เมื่อทำได้ หากจำเป็นต้องแตกต่าง ให้บันทึกไว้ที่นี่พร้อมเหตุผล
คงค่า data.meta ให้คาดเดาได้: ควรใช้คีย์แบบแบน อย่ายัดข้อมูลหลายชนิดรวมในสตริง และระบุหน่วยเสมอ (currency, bits, duration).
อัปเดตหน้านี้พร้อมการเปลี่ยนข้อมูลที่รับส่ง อัปเดตคำแนะนำเอเจนต์เฉพาะเมื่อกฎพัฒนาร่วมเปลี่ยน
ตรวจการเปลี่ยนข้อมูลที่รับส่งทั้งกับแหล่งที่ส่ง และโอเวอร์เลย์หรือตัวเรียก Event Flow ที่รับ
การจับข้อมูลขึ้นอยู่กับการรองรับและการตั้งค่าของแหล่ง หากต้องการซ่อนแถวที่ระบุอีเวนต์ในแผงด็อกหรือโอเวอร์เลย์ Featured ให้เพิ่ม &hideevents หรือ &hideallevents หากต้องการซ่อนอีเวนต์ที่เลือก ใช้ &filterevents=subscription_gift,new_follower,gifted.
สำหรับ YouTube, Twitch และ Kick ให้เปิด โหมด WebSocket เพื่อการรองรับอีเวนต์เฉพาะแพลตฟอร์มที่กว้างที่สุด การจับของขวัญ/บริจาค YouTube (รวมของขวัญและ super chats) ใช้ได้ทั้งโหมด Standard และ WebSocket โดย WebSocket เพิ่มประเภทอีเวนต์อื่น การรองรับจริงยังต่างตามแพลตฟอร์ม บทบาทบัญชี และขอบเขตสิทธิ์ที่อนุญาต
กลับด้านบน
โอเวอร์เลย์สร้างรายได้ ทิป NinjaBacker ใช้ platform: "ninjabacker", type: "ninjabacker", chatname, ข้อความธรรมดา chatmessage, textonly: true, ค่าที่มีคำนำหน้าระบุแหล่งข้อมูล id, ค่าที่จัดรูปแบบแล้ว hasDonation, และค่าตัวเลข donoValue เป็นแถวแบบบริจาคปกติที่ไม่มี event ค่าที่ใช้แทน meta.ninjabacker มีค่า ISO currency และค่าในหน่วยหลัก amount ทิปนิรนามใช้ชื่อแสดง Anonymous แหล่งข้อมูลใช้ SSE สด (ไม่เล่นย้อนหลัง) หรือระบบรับ signed webhook บน SSN API ที่เลือกเปิดได้ (เข้าคิวส่งได้นานสูงสุดเจ็ดวัน) การส่งที่เชื่อถือได้ใช้ค่าคงที่ ninjabacker:delivery:DELIVERY_ID id ทั้งสองโหมดไม่รับรายการย้อนกลับจากคืนเงิน/ข้อพิพาท ข้อมูลรับรองตัวรับและ signing secret ไม่เข้าสู่ข้อมูลอีเวนต์ ค่า callbackId ที่ผู้เรียกควบคุมไม่ใช่ตัวตนการชำระเงินและไม่ส่งต่อ ทิปทดสอบจากแดชบอร์ดไม่รวมในแถวบริจาค โดยส่ง event: "monetization_test" พร้อม meta.ninjabackerTest ที่มี id และ at (มิลลิวินาที Unix) สำหรับการแจ้งเตือนตัวอย่างโดยเฉพาะเท่านั้น
event: "monetization_update" เป็นภาพข้อมูลที่มีเฉพาะเมทาดาทาจาก type/platform: "socialstream". meta.monetization.wishlist มี enabled, qr, position, rank, total, url สาธารณะ และ item ปัจจุบัน (name, amount, currency, image, url สาธารณะ) หรือ null meta.monetization.ninja มี enabled, qr, position, username และ url ให้ทิปสาธารณะ ไม่รวม Tip ID ส่วนตัวเด็ดขาด meta.monetization.ebay มี enabled, qr, position, display (cycle/cheapest/first), seconds, การตั้งค่าประกาศที่เลือกเปิดได้ และ items สาธารณะ แต่ละรายการมี id, name, amount, currency, image, url, auction, startingBid, endsAt, available, bought และ updatedAt เวลาเป็นมิลลิวินาที Unix ไม่รวมข้อมูลรับรองผู้ขายหรือตัวตนผู้ซื้อ
การซื้อจากรายการอยากได้ที่ผู้ดำเนินรายการยืนยันยังรวม meta.wishlistPurchase พร้อม id, name, supporter หากมี และ at (มิลลิวินาที Unix) เป็นการยืนยันของผู้ดำเนินรายการ ไม่ใช่การแจ้งเตือนชำระเงิน Amazon และไม่นับเป็นบริจาคเงิน โอเวอร์เลย์ควรตัดซ้ำตาม id และข้ามประกาศซื้อเก่า
คำสั่งซื้อ Shopify ที่ชำระแล้ว ตัวรับ Shopify ที่ลงลายเซ็นซึ่งเลือกเปิดใช้ได้ส่ง platform/type: "shopify" และ event: "purchase" เฉพาะสำหรับ orders/paid พร้อม financial_status: "paid", ยอดรวมบวก, test: false, ไม่มีการยกเลิก และมีเวลาการอัปเดตล่าสุดจากเนื้อหาที่ลงลายเซ็น การแจ้งเตือนทดสอบ ยังไม่ชำระ เก่า ยกเลิก และคืนเงินไม่ส่งการกระทำซื้อ ไม่มีการอนุมานเจตนาให้ของขวัญ
chatname เป็น Anonymous ไม่รวมช่องลูกค้า หมายเหตุส่วนตัว และ URL คำสั่งซื้อ chatmessage เป็นข้อความธรรมดาพร้อม textonly: true; subtitle เก็บชื่อสินค้าสาธารณะสูงสุดสามชื่อ meta.commerce มี orderTotal และ currency ในสกุลเงินร้านค้า พร้อม quantity เมื่อทราบจำนวนที่ถูกต้องครบถ้วน ผู้รับและจุดประสงค์สินค้าจริง/ดิจิทัลยังไม่ตั้ง ไม่มี hasDonation หรือ donoValue ถูกตั้งค่า id เป็นแฮชคงที่แบบทึบ จำกัดขอบเขตตามร้าน/คำสั่งซื้อพร้อมคำนำหน้า Shopify ไม่ใช่รหัสคำสั่งซื้อดิบ
การซื้อใช้เส้นทางกิจกรรม หมวด Purchase ใน multi-alerts และ Event Flow ที่มีอยู่ การโปรโมตสินค้าใช้ตัวเดิม meta.monetization.commerce แค็ตตาล็อก การนำเข้าสินค้าหรือตั้งป้ายโปรโมตเป็น Gift ไม่สร้างอีเวนต์ซื้อหรือของขวัญ การตั้งค่า Shopify และข้อจำกัดการส่ง .
ของขวัญและการค้า
ใช้ event: "gift" สำหรับของขวัญ, giftcontribution สำหรับการจ่ายเงินสมทบของขวัญ, giftfunded สำหรับการระดมทุนสำเร็จ และ purchase สำหรับการขายสินค้า ชื่อเหล่านี้ไม่ขึ้นกับผู้ให้บริการหรือเป็นสินค้าจริง/ดิจิทัล สงวนชื่อเดิม giftpurchase อีเวนต์สำหรับสมาชิกแบบของขวัญ Throne เคยใช้ชื่อนั้นผิดและขณะนี้ส่ง gift แหล่งสร้างอีเวนต์สมาชิกเดิมไม่เปลี่ยน ตัวกรองชื่ออีเวนต์ Throne กำหนดเองควรเปลี่ยนเป็น gift; ไม่ต้องเปลี่ยนตัวกรองการบริจาค
hasDonation ยังเป็นสัญญาณเพื่อความเข้ากันได้สำหรับการสนับสนุนที่ชำระเงิน พร้อม donoValue ที่เก็บมูลค่า USD ที่ให้มาหรือประเมิน ของขวัญและการร่วมสมทบคงช่องเหล่านั้นไว้ การระดมทุนสำเร็จไม่ใส่ทั้งคู่เพื่อไม่ให้นับเงินสมทบซ้ำ การขายสินค้าปกติไม่ใส่เป็นค่าเริ่มต้น โดยคงข้อกำหนด eBay อย่าอนุมานเจตนาให้ของขวัญจากร้านค้า URL รายการอยากได้ หรือสินค้าจริง การซื้อให้ผู้ซื้อเองหรือผู้รับอื่นยังเป็นการขาย เว้นแต่แหล่งระบุชัดว่าให้ของขวัญครีเอเตอร์
ค่าร่วมเพิ่มเติม meta.commerce ช่องข้อมูลคือ recipient (creator, buyer, other), itemType (physical, digital, service), quantity (จำนวนสินค้าบวก), currency (สกุลเงิน ISO), goalAmount (เป้าหมายระดมทุนในหน่วยหลัก ไม่ใช่รายได้ใหม่) และ orderTotal (ยอดรวมคำสั่งซื้อที่ชำระแล้วซึ่งทราบค่า ในหน่วยหลักของสกุลเงิน; เป็นการค้า ไม่ใช่รายได้บริจาค) ละรายละเอียดที่ไม่ทราบ เก็บชื่อสินค้าไว้ใน subtitle, ภาพใน contentimg, และข้อความผู้สนับสนุนใน chatmessage เมทาดาทาผู้ให้บริการเดิมยังใช้ได้ Throne ให้ผู้รับและสกุลเงิน พร้อม goalAmount เมื่อสำเร็จ ส่วน eBay ให้จำนวน ทั้งคู่ไม่เดาประเภทสินค้าหรือเปิดเผยข้อมูลส่วนตัวผู้รับ
ฟีดกิจกรรมแสดงอีเวนต์เหล่านี้แม้ไม่มีข้อความผู้สนับสนุน Multi-alerts ใช้รูปแบบบริจาคสำหรับของขวัญและการร่วมสมทบ รวมการแจ้งเตือน Gift Fully Funded แยกที่ไม่มีมูลค่าเงิน การซื้อมีหมวด Purchase แยก เปิดเป็นค่าเริ่มต้น พร้อม purchasestyle, purchasesound, purchaseaccent, และ disablepurchases ตัวควบคุม URL การแจ้งเตือนซื้อไม่เปลี่ยนยอดบริจาค
Event Flow มีชื่ออีเวนต์เหล่านี้ในตัวเรียก Event Type และ Other Event ตัวเรียก Donation ยังคงตรวจ hasDonation; ตัวเรียก Gift Sub คงความหมายสมาชิก Compare Property รับเส้นทางซ้อน เช่น meta.commerce.recipient เทมเพลตการกระทำรับ {meta.commerce.quantity} และ {meta.commerce.currency}, ควบคู่กับค่าที่มีอยู่ {donation}, {subtitle}, และ {meta} เส้นทางซ้อนแยกตัวพิมพ์ใหญ่เล็ก ค่าที่ขาดแสดงว่าง และห้ามไล่ผ่าน prototype
Webhook ร้านค้าครีเอเตอร์และโอเวอร์เลย์โปรโมต
การชำระ Donation สาธารณะของ Ko-fi คง hasDonation และได้รับค่า USD donoValue การชำระค่าสมัครสมาชิกใช้ new_subscriber หรือ resub, โดยระบุระดับใน membership Shop Order และ Commission ใช้ purchase โดยไม่มีค่าบริจาค ยังคงไม่รวมอีเวนต์ Ko-fi ส่วนตัว JSON ที่เข้ารหัสฟอร์มถอดรหัสหนึ่งครั้ง ชื่อและข้อความเป็นข้อความธรรมดา
Buy Me a Coffee donation.created คงการสนับสนุนทางเงิน; extra_purchase.created และ commission_order.created กลายเป็น purchase. wishlist_payment.created กลายเป็น giftcontribution โดยใช้เฉพาะยอดชำระนั้น; meta.commerce.completed บันทึกแฟล็กสำเร็จของผู้ให้บริการโดยไม่ส่งแถวเงินอีกครั้ง membership.started กลายเป็น new_subscriber พร้อมระดับใน membership, เลิกใช้ผิดวัตถุประสงค์สำหรับ hasDonation สำหรับชื่อระดับ ยอดตอนเริ่มสมัครสมาชิกไม่ถือเป็นการเรียกเก็บที่ชำระแล้วแยกอีกครั้ง อีเวนต์ทดสอบ คืนเงิน ล้มเหลว และการอัปเดต/วงจรสถานะที่ไม่รองรับไม่สร้างการแจ้งเตือนชำระเงิน ไม่รวมหมายเหตุผู้สนับสนุนที่ซ่อนไว้
Fourthwall รองรับ ORDER_PLACED (purchase), GIFT_PURCHASE (gift, recipient other), DONATION (แถวบริจาคปกติ) และ SUBSCRIPTION_PURCHASED (new_subscriber) ยอดคำสั่งซื้อเดิมยังคง hasDonation เพื่อความเข้ากันได้ย้อนหลัง โดยระบุว่า meta.commerce.legacyDonationValue: true; เป็นข้อยกเว้นชัดเจนจากค่าเริ่มต้นใหม่สำหรับการขายสินค้า คำสั่งซื้อที่ใช้บัตรของขวัญส่งการแจ้งเตือนซื้อโดยไม่มีค่าบริจาค เพราะอนุมานยอดเรียกเก็บใหม่จากยอดคำสั่งซื้อไม่ได้อย่างน่าเชื่อถือ และนับการซื้อของขวัญไปแล้ว ไม่ใช้ชื่อเรียกเก็บเงินและอีเมลเป็นตัวตนสาธารณะ อีเวนต์ทดสอบจากแดชบอร์ดและการอัปเดตคำสั่งซื้อไม่สร้างการแจ้งเตือนชำระเงิน
อะแดปเตอร์เหล่านี้คงการส่งต่อ การกระทำบอต Event Flow และการเลือกเส้นทางปลายทางเดิม พร้อม meta.webhookId การตัดรายการซ้ำ โดยให้ชื่อสาธารณะ ข้อความธรรมดา และชื่อสินค้าที่ทราบใน subtitle, และค่า ISO meta.commerce.currency ควบคู่กับค่าบริจาคแบบตัวเลขเมื่อเกี่ยวข้อง ไม่เพิ่มระบบบัญชีคืนเงินหรือการยืนยันตัวตนตัวรับใหม่ ให้ใช้เส้นทาง webhook เดิมที่ตั้งค่าของผู้ให้บริการ
meta.monetization.commerce ใน monetization_update มี enabled, qr, position, display (first/cycle), seconds และอาร์เรย์ items สาธารณะ แต่ละรายการมี name, url, image, amount หากทราบ (null เมื่อไม่ทราบ), currency และ purpose (shop/gift/support/membership) เป็นรายละเอียดโปรโมตที่ผู้ดำเนินรายการป้อน ไม่ใช่หลักฐานชำระเงิน การเพิ่มหรือแก้ไขรายการไม่ส่งอีเวนต์บริจาคหรือซื้อ โอเวอร์เลย์ทั่วไปใช้ mode=commerce; view=both|showcase|card|alerts แยกการโปรโมตจากกิจกรรม พารามิเตอร์ URL เพิ่มเติม style, scale, cardevery, cardfor และ onlytype ควบคุมการแสดงผล โหมดผู้ให้บริการเดิมยังรับตัวควบคุม view และกำหนดเวลา ดู คู่มือตั้งค่า .
อีเวนต์ของขวัญ Throne
การเชื่อมต่อ Monetization ที่เลือกเปิดใช้ส่งต่ออีเวนต์ Throne ที่ลงลายเซ็นพร้อม platform และ type ตั้งเป็น throne ทั้งสามใช้ค่าการส่งที่คงที่ id, ข้อความธรรมดา chatname, chatmessage พร้อม textonly: true, ชื่อสินค้าใน subtitle, และภาพย่อ HTTPS เพิ่มเติมใน contentimg.
meta.throne มี itemName, creator (ชื่อผู้ใช้สาธารณะ), completed, currency และค่าในหน่วยหลัก amount สำหรับ giftfunded, ยอดเงินอธิบายเป้าหมาย ไม่ใช่รายได้ใหม่ ผู้ให้ของขวัญนิรนามยังคงเป็น Anonymous; ของขวัญชุมชนที่สำเร็จใช้ Community ไม่ส่งต่อช่องข้อมูลชำระเงินและจัดส่งส่วนตัว
monetization_update ภาพข้อมูลมีเพิ่มด้วย meta.monetization.throne: enabled, username, url, qr, position, rank, และ gifts ภาพข้อมูลเหล่านี้ไม่มี URL ของ webhook หรือข้อมูลรับรองการรับฟัง
คำสั่งเสียงผู้ดำเนินรายการ (พรีวิวเดสก์ท็อป) ส่วน Event Flow เมื่อฉันพูดว่า... ตัวเรียกรับคำสั่งไมโครโฟนในเครื่องที่เชื่อถือได้จาก SSApp บริบทการกระทำภายในใช้ chatname: "Host", type: "hostvoice", วลีที่รู้จำได้ใน chatmessage, และ textonly: true ไม่ใช่อีเวนต์แพลตฟอร์มขาเข้าหรือช่องทางรับส่งแชตใหม่ การส่งช่องเหล่านี้ผ่านแชตไม่เรียกตัวเรียกเสียง
ต้องใช้แอปเดสก์ท็อปที่อัปเดต เริ่มไมโครโฟนอย่างชัดเจน และเปิดการกระทำหลังโหมด Test ดู การตั้งค่าพรีวิวและสถานะตรวจยืนยัน .
การควบคุมการแสดงสินค้า ที่มีอยู่ monetization_update ภาพข้อมูลอาจรวม meta.monetization.commerce.live: null เพื่อใช้กำหนดการที่บันทึกไว้ หรือ {mode: "show" | "hide", url?: "https://...", until: 0 | epochMilliseconds} Show จับคู่ URL สินค้าที่บันทึกไว้แบบตรงตัว หากไม่มีสินค้าจะไม่แสดงการ์ด ค่า until ที่เป็นบวกจะหมดอายุและกลับสู่กำหนดการที่บันทึกไว้ ค่าเป็นศูนย์คงอยู่จนเปลี่ยนหรือ SSN เริ่มใหม่ Hide ระงับการโปรโมต ไม่ใช่การแจ้งเตือนกิจกรรมที่ชำระเงิน
commerce.viewerURL เป็น URL ร้านค้าแบบอ่านอย่างเดียวที่เผยแพร่ หรือสตริงว่าง เมื่อมี QR โปรโมตจะลิงก์ไปที่นั่น ไม่มีเซสชัน SSN หรือคีย์เผยแพร่ สินค้ายังคงอยู่ใน commerce.items ส่วนควบคุมแสดงผล การนำเข้า หรือการเผยแพร่ไม่ส่งอีเวนต์บริจาค/ซื้อ ดู การควบคุมสินค้า สำหรับใช้กับ Event Flow และ API ระยะไกล
ส่วน Event Flow commerceControl การกระทำรอคำตอบโดยตรง/Chrome (สูงสุดแปดวินาที) สำหรับข้อมูลอีเวนต์ทั่วไป จะคงอีเวนต์และเพิ่ม meta.commerceControlResult: {success: true, commerce: controlState} หรือ {success: false, error: "..."} สำหรับค่าตัวเลข อาร์เรย์ หรือค่าอื่นที่ไม่ใช่ออบเจ็กต์ที่มีอยู่ใน meta, เมทาดาทาไม่เปลี่ยน และส่งข้อมูลวินิจฉัยกลับเป็น commerceControlResult ในผลการกระทำแทน การควบคุมที่ล้มเหลวหยุดการกระทำถัดไปในสายเดียวกันโดยไม่ระงับอีเวนต์ชำระเงินต้นฉบับ การหมดเวลาไม่ได้ยืนยันว่าการควบคุมไม่มีผล ตรวจสถานะก่อนลองคำสั่งแบบอ้างอิงค่าปัจจุบัน เช่น Next ซ้ำ ความสำเร็จยืนยันสถานะเลือก/ซ่อน/กำหนดเวลาในเครื่อง ไม่เคยยืนยันการมองเห็นใน OBS หรือการซิงก์หน้าสาธารณะ
ขั้นตอนงาน Stream Deck / API แบบมีชื่อ ส่วน ตัวเรียกขั้นตอนงานแบบมีชื่อ สร้างข้อความ Event Flow ภายในพร้อม type: "api", event: "workflow_trigger", chatname: "Stream Deck / API", ค่าว่างของ chatmessage, และ textonly: true ส่วนค่าของมัน meta.workflow ออบเจ็กต์มีชื่อตัวเรียกและ JSON ที่ผู้เรียกให้มา data ออบเจ็กต์ อ่านค่าผ่านเทมเพลต เช่น {meta.workflow.data.minutes} ประเมินเฉพาะโฟลว์ที่บันทึกและเปิดใช้ซึ่งตรงกับตัวเรียกนั้นอย่างชัดเจน ไม่ใช่อีเวนต์ผู้ชม/แชตขาเข้าและไม่เผยแพร่เป็นแชต การคัดลอกช่องเหล่านี้เข้าแชตไม่ทำให้ตัวเรียกที่ระบุชื่อทำงาน
รุ่นนำร่องผู้ชม NinjaChatter ตัวเชื่อมต่อส่วนขยายแบบจับคู่รุ่นทดลองส่งแถวสำหรับแสดงผลเท่านั้นพร้อม type: socialstreamchat, platform: ninjachatter, และ textonly: true. meta.ninjachatter มีค่า origin: audience, ข้อมูลเชิงบรรยาย provider, และค่าสาธารณะ room ID แถวเหล่านี้ข้ามการตอบแพลตฟอร์ม บอต ตัวเรียก Event Flow และแต้ม ผู้ให้บริการที่แสดงไม่ได้หมายถึงการอนุญาต การจับแหล่ง NinjaChatter แบบเดิมรวม meta.ninjachatter.room สำหรับตัดรายการซ้ำเฉพาะห้อง
Cheer ใช้เส้นทางรับสิทธิ์และผลลัพธ์แยกที่ยืนยันตัวตน ไม่ใช้คำสั่งแชตพิเศษ ค่าที่ตั้งไว้แบบคงที่ส่งอีเวนต์โอเวอร์เลย์ Actions เดิม show_text ข้อความนานสามวินาที การรับหมายถึงช่องทางยอมรับ ไม่ได้ยืนยันการแสดงใน OBS ข้อมูลผู้ชมไม่สามารถเลือกการกระทำตามอำเภอใจ รุ่นนำร่องปิดอยู่ตามค่าเริ่มต้นใน NinjaChatter ส่วน Electron คงรีเลย์เดิมจนกว่าจะยืนยันความพร้อมของขอบเขตจับคู่ส่วนตัวใหม่
กระดานช่องการค้าและการขายล่าสุด
ตัวเดิม monetization_update อีเวนต์ (type/platform: socialstream) ยังรวม meta.monetization.boards ส่วนค่าของมัน board มี title, style (spots/teams), columns (1–20), visible, และสูงสุด 120 รายการของ spots แต่ละช่องมีค่าสตริง id, ข้อความธรรมดา label, status (available/claimed/revealed) และ result (ข้อความธรรมดา ว่างจนกว่าจะเปิดเผย) การจองและเปิดเผยเป็นสถานะแสดงผลที่ผู้ดำเนินรายการป้อน ไม่ใช่หลักฐานซื้อหรือการจัดสรรแบบสุ่ม
boards.sales เก็บระเบียนล่าสุดสูงสุด 100 รายการ: id, title, ตัวเลือกเพิ่มเติม amount (null เมื่อไม่ทราบ), currency, quantity, source, และ at (มิลลิวินาที Unix เมื่อบันทึก) automatic เลือกเปิดการรวบรวม, salesVisible ควบคุมการแสดงและ revision เพิ่มเมื่อเปลี่ยน การรวบรวมอัตโนมัติรับเฉพาะ purchase อีเวนต์จาก Shopify, ผู้ขาย eBay, Fourthwall, Ko-fi และ Buy Me a Coffee ไม่รวมอีเวนต์ส่วนตัว/ทดสอบ ไม่ถือเมทาดาทาประมูล ทิป ของขวัญ หรือการจองช่องเป็นการซื้อ ระเบียนอัตโนมัติไม่ใช้ยอดคำสั่งซื้อ ราคาประกาศขาย หรือยอดบริจาคแทนราคาสินค้า ระเบียนที่ป้อนเองใช้ source: "Host confirmed".
สถานะคงอยู่ในพื้นที่เก็บข้อมูลสร้างรายได้ส่วนตัวของการติดตั้งนี้ ภาพข้อมูลสาธารณะไม่รวมรหัสตัดการส่งซ้ำ ตัวตนผู้ซื้อ และข้อมูลลับ การขายที่แสดงอย่างชัดเจนเก็บรหัสอีเวนต์ไว้เพื่อนำออก การคืนเงินต้องให้ผู้ดำเนินรายการนำออก รหัสซื้อซ้ำถูกจำแยกไว้ (สูงสุด 2,000) แม้ล้างประวัติที่แสดงแล้ว ส่วนเดิม getCommerceState คำตอบรวม commerce.boards; commerceControl รับคำสั่งกระดาน/การขายที่อธิบายไว้ใน คู่มือกระดาน การแก้ไขด้วยตนเองเผยแพร่สถานะที่อัปเดต แต่ไม่สร้างอีเวนต์ซื้อ ยอดบริจาค หรือรางวัลแบบเสียเงิน โอเวอร์เลย์ซ่อนเมื่อไม่มีภาพข้อมูลจากผู้ดำเนินรายการนาน 35 วินาที
ส่วนเพิ่มของขั้นตอนผู้ขาย: commerce.boards.board.id ระบุรุ่นของกระดาน การสั่งด้วยตนเอง saleAdd อาจให้ค่า boardId และ spotId เพื่อบันทึกการขายและจองช่องนั้นเป็นการทำงานเดียวกัน การขายเชื่อมโยงซ้ำที่ยังอยู่ในประวัติล่าสุดจะถูกปฏิเสธ saleRemove พร้อม reopenSpot: true คืนช่องนั้นให้ว่างเฉพาะเมื่อรุ่นกระดานยังตรงกัน รายการขายสาธารณะไม่ใส่ช่องเชื่อมโยงสำหรับผู้ดำเนินการเหล่านี้ ตัวเลือกเพิ่มเติม platform ในการขายที่ป้อนเองคงแหล่งข้อมูลไว้สำหรับกรอง ส่วน source: "Host confirmed" ระบุวิธียืนยัน amount เป็นยอดรวมของรายการ รวมค่า quantity ค่าของอะแดปเตอร์คำสั่งซื้อที่ชำระแล้วของ eBay meta.ebayPurchase.quantity คงไว้
salesSettings.auctionSource เลือกเปิดตัวช่วยสินค้า Whatnot หรือ eBay Live ค่าของคำตอบควบคุม commerce.auction มีเพียง source, title, priceText, status และ at จากข้อมูลล่าสุดที่จับได้ auction_update, หรือ null หมดอายุหลังห้านาที และล้างเมื่อเปลี่ยนแหล่งข้อมูล ได้รับภาพข้อมูลว่าง หรือเริ่มใหม่ ตัวช่วยมีให้เฉพาะผู้ดำเนินการ ไม่บันทึกถาวรและไม่รวมในการเผยแพร่ให้ผู้ชม โดยทิ้งตัวตนผู้เสนอราคา/ผู้ชนะ สคริปต์แหล่งข้อมูลและข้อมูลอีเวนต์ประมูลไม่เปลี่ยน การคัดลอกร่างไม่ได้ยืนยันการชำระเงินหรือสร้างรายการขาย