라이브 이벤트 참고 문서

이 페이지는 주요 플랫폼에서 Social Stream Ninja가 전송하는 표준 이벤트 페이로드를 문서화합니다. 새 소스를 연결하거나 통합 문제를 해결하거나 UI 라벨을 맞출 때 공통 기준으로 사용하세요. 소비자 중심의 더 간단한 표는 다음을 참조하세요: 이벤트 및 알림 호환성.

중요: 사용 가능한 이벤트는 소스, 권한, 캡처 설정에 따라 달라집니다. 도크 또는 강조 메시지 오버레이에서 이벤트로 표시된 행을 숨기려면 다음을 추가하세요: &hideevents 또는 &hideallevents. 선택한 이벤트를 숨기려면 다음을 사용하세요: &filterevents=subscription_gift,new_follower,gifted. 이 필터는 다음을 가진 유료 행도 숨길 수 있습니다: event; 이벤트 표식이 없는 일반 후원 행은 이벤트 필터와 일치하지 않습니다. 다른 메시지 필터는 계속 적용됩니다.
캡처 방식 선택: YouTube, Twitch, Kick의 경우, WebSocket 모드 는 일반적으로 더 폭넓은 이벤트를 지원합니다. 표준 DOM 캡처는 페이지에 실제로 렌더링된 행과 카드를 읽습니다. YouTube Super Chat, Super Sticker, Jewel 선물은 두 모드 모두 캡처 경로가 있습니다. 다른 선물, 팁, 멤버십 이벤트는 소스마다 다릅니다. 지원 경로와 필수 설정은 플랫폼 표를 참조하세요.
자동화를 만들고 있나요? 다음을 확인하세요: Event Flow 가이드 에서 이 이벤트 페이로드를 사용자 지정 트리거, 알림, 작업 흐름에 사용하는 방법을 알아보세요. 가이드에는 다음이 포함되어 있습니다: 템플릿 변수 참고 문서 를 텍스트 서식에 사용합니다.
페이로드 구조: 후원형 채팅 행은 다음을 사용해야 합니다: 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(Data API 브리지) 멤버십 가입, 갱신, 선물 개별 구독자 알림* + 합계 Super Chat 및 Super Sticker 시청자, 구독자, 조회 수 합계(폴링)
Twitch – DOM 캡처 선물 묶음 문구 및 선물 수신 알림 - 다음으로 표시된 비트: hasDonation 시청자 수, 보상 카드, 커뮤니티 강조 카드
Twitch – EventSub/WebSocket 즉시 구독, 재구독, 선물 즉시 팔로우 + 팔로워 합계 응원, Power-up, 채널 포인트 보상 사용 시청자/구독자/팔로워 합계, 방송 상태, 광고 알림
TikTok Live - 팔로우 카드(TikTok이 표시하는 경우) 코인 합계로 환산한 선물 시청자 수, 입장 알림, 좋아요 폭풍
YouNow - 팬 및 시청자 활동 - 실시간 시청자 패널의 시청자 수
Favorited Studio - - - 실시간 시청자 탭의 시청자 수
Whatnot - - - 시청자 수, 입장 알림, 실시간 경매 메타데이터, 상품, 경품 추첨 스냅샷
eBay Live - - - 시청자 수, 팔로워 수, 라이브 이벤트 카드 스냅샷, 경매 하단 메타데이터(제공되는 경우), 반응 하트, 예정된 이벤트 메타데이터
Streamlabs Alert Box 구독, 선물, 스폰서, 팔로우 응원/비트, 후원(통화 포함) 응원/비트, 후원(hasDonation) 알림 상자가 열려 있는 동안. 다음으로도 사용 가능: sources/websocket/streamlabs.html 소켓 토큰
OBS Flow Actions - - - 다음 조건에서 Event Flow용 OBS 출력, 장면, 리플레이 버퍼, 미디어 종료 이벤트: actions.html 가 OBS WebSocket에 연결되어 있습니다:
Kick – DOM - - - 시청자 수와 기본 보상/선물 시스템 알림. 더 풍부한 알림에는 Kick 브리지를 사용하세요
Kick – WebSocket/브리지 새 구독, 갱신, 선물 팔로우 알림 + 팔로워 합계 후원/팁 이벤트(금액 + 통화) 방송 상태, 보상 사용, 프로필 메타데이터
Facebook Live - - DOM에 표시되는 Stars 채팅 행, Stars, 시청자 수 폴링
Rumble – DOM 캡처 - - 표시된 Rant 가격 채팅, 들어오는 레이드, 시청자 수 폴링
Rumble – WebSocket/API URL 새 구독 및 구독 선물 팔로우 알림 + 팔로워 합계 Rant/팁(금액 + 통화) 시청자 합계, 구독자 합계, 라이브 상태, 채팅 피드
Streamplace - - - 시청자 수 및 채팅 이름, 색상, 배지, 답장, 링크
WorldsWave - - 있는 경우 후원 라벨 렌더링된 실시간 채팅 및 선택적으로 활성화하는 시청자 수 업데이트
CHZZK - - 표시된 치즈 후원 행 채팅 행, 배지 이미지, 이모티콘, 시청자 수 폴링
BEAM - - - 채팅 전용 페이지에 시청자 카운터가 있으면 채팅 행과 시청자 수 폴링
Seal Team Sloth - - - 렌더링된 팝아웃 채팅 행 및 viewer_update 시청자 수가 활성화된 경우 폴링합니다
Castyr - - - 렌더링된 팝아웃 채팅 행 및 선택적으로 활성화하는 시청자 수 업데이트
RPLAY - - - 로그인된 /live/chat/box/ 팝아웃: type: "rplay" 채팅, 아바타, 등급 배지 이미지, 이모티콘을 제공합니다. 코인 팁은 금액/단위를 다음에 유지합니다: hasDonation 를 공통 USD 환산에 사용하며 후원 이벤트는 없습니다. 선택적으로 활성화하는 viewer_update 폴링은 정수형 다음을 사용합니다: meta 를 RPLAY 공개 스트림 엔드포인트에서 가져옵니다. 릴레이된 Twitch 행은 제외됩니다.
FLEX TV - - - 이름, 작성자 색상, 배지 이미지, 회원 메타데이터가 포함된 렌더링된 채팅 행

*YouTube 구독자 알림은 폴링되며 지연되거나 불완전할 수 있습니다. API 참고 문서는 고정된 4시간 내 전달을 보장하지 않습니다. 참고: 공식 구독 API 제한.

필드 개요

data 는 여기서 메시지 객체를 뜻하며 추가할 별도 래퍼가 아닙니다. 채팅 행과 메타데이터 전용 이벤트는 구조가 다릅니다. 카운터 및 상태 스냅샷은 다음을 생략할 수 있습니다: chatname/chatmessage. 플랫폼 표에서, 메시지 는 일반 채팅 행을 설명하며 문자 그대로의 다음이 아닙니다: event: "message".

필드 구조 사용법
data.type 문자열 오버레이, 필터, Event Flow가 사용하는 소스 식별자. Instagram은 실시간 채팅을 다음으로 유지합니다: instagramlive 및 라이브가 아닌 댓글을 다음으로 유지합니다: instagram. 참고: 소스 유형 가이드 에서 변형, 일반 소스, 발신 라우팅을 확인하세요.
data.chatname 문자열 메시지 처리 및 오버레이 이외의 출력에서 사용하는 소스 제공 표시 이름입니다. 설정한 사용자 표시 이름 별칭은 복사된 도크 및 오버레이 전송 페이로드에서만 이 값을 바꿀 수 있습니다.
data.username 문자열 사용 가능한 경우 소스 사용자 이름입니다. 별칭이 적용된 도크 또는 오버레이 페이로드는 원래 값을 보존하기 위해 이 필드를 추가할 수 있습니다: chatname 를 사용자 동작에 사용하며 표준 메시지는 바뀌지 않습니다.
data.userid 문자열 플랫폼별 사용자 식별자. 사용자 동작은 다음보다 이 값을 우선합니다: username 그리고 chatname.
data.platform문자열(선택 사항)일부 통합은 다음과 함께 이를 포함합니다: type. 여러 소스 어댑터는 이를 생략합니다. 사용: type 를 소스 라우팅에 사용합니다.
data.id문자열 | 숫자(선택 사항)메시지 또는 이벤트 식별자. 의미는 소스와 전송 방식에 따라 달라지므로 항상 플랫폼 고유 관리 ID라고 가정하지 마세요. 사용: meta.messageId 는 어댑터가 삭제 동기화용으로 제공하는 경우.
data.donoValue숫자(선택 사항)소스가 제공하는 숫자형 USD 환산값으로 추정값도 포함합니다. 유효한 값(0 포함)은 currency.js 변환보다 우선합니다. 없으면 소비자는 hasDonation과 소스 맥락으로 USD를 추정합니다. 원래 금액과 단위는 hasDonation과 기존 제공자 메타데이터에 유지합니다.
data.chatbadges배열 | 문자열(선택 사항)배지 이미지 URL 또는 배지 객체(type: "img" 포함: src, type: "svg" 포함: html, 또는 type: "text" 포함: text). 릴레이는 텍스트 배지의 원래 라벨을 선택적 필드에 유지합니다: rawText 및 이스케이프된 다음을 생성합니다: text 를 이전 오버레이용으로 제공합니다. 이후 릴레이 과정에서는 다음을 다시 생성하세요: text 출처: rawText; 다음은 이스케이프하지 마세요: text 를 다시 처리하지 마세요. 현재 렌더러는 다음을 표시합니다: rawText 가 있으면 문자 그대로 표시하고, 없으면 기존 인코딩 텍스트 처리를 유지하세요. 이는 표현 방식 필드이며 HTML 렌더링 권한이 아닙니다. 이전 소스는 배열 대신 단일 HTML 문자열을 보낼 수 있습니다. 배지를 표시하는 오버레이는 두 형식을 모두 받고, 발신자가 이전 확장 프로그램이어도 배지 HTML과 URL을 로컬에서 안전하게 정리합니다. 유효하지 않은 배지가 채팅 또는 멤버십 메시지 표시를 막아서는 안 됩니다.
data.event 문자열 | 불리언 시스템 활동의 식별자(예: viewer_update, subscription_gift, giftpurchase). 일반 채팅에서는 비워 두거나 false로 유지해야 오버레이가 시스템 알림과 대화 텍스트를 구분할 수 있습니다.
data.chatmessage 문자열 메시지 본문. 안전하게 정리된/렌더링 가능한 HTML은 다음일 때만 포함할 수 있습니다: data.textonly 가 false인 경우.
data.textonly 불리언 다음에만 적용됩니다: data.chatmessage. true 는 다음을 렌더링하라는 뜻입니다: chatmessage 를 일반 텍스트로 취급하고 문자 그대로의 태그와 엔터티처럼 보이는 텍스트를 보존하세요. 해당 본문을 디코딩하거나 HTML 정리하거나 서식 태그를 추가하지 마세요. 이벤트 스타일은 표시 요소에 적용하세요. false 의 의미: chatmessage 에는 안전하게 정리된/렌더링 가능한 HTML이 들어갈 수 있습니다. 플래그가 없는 이전 메시지는 그 HTML 동작을 유지합니다. 다른 일반 필드는 일반 텍스트이며 다음 같은 미디어 필드는 예외입니다: chatimg 그리고 contentimg. 일반 필드를 표시할 때는 다음을 사용하세요: textContent, 또는 HTML 템플릿을 구성할 때 한 번 이스케이프하세요. 내용을 제거하거나 반복해서 디코딩하지 마세요.
data.contentimg 문자열(선택 사항) 콘텐츠 이미지 또는 지원되는 미디어 URL. 확장 프로그램과 데스크톱 앱에서는 선택적으로 활성화하는 allowExternalGifs 설정은 메시지 텍스트 또는 HTML 링크의 첫 번째 직접 HTTP(S) GIF 링크로 빈 필드를 채웁니다. URL 경로는 다음으로 끝나야 합니다: .gif (대소문자 구분 없음); 쿼리 매개변수와 프래그먼트는 유지됩니다. API 키가 필요하지 않으며 다음을 보존합니다: chatmessage 및 기존 첨부 파일을 유지하며 다음을 따릅니다: removeContentImage. 선택적 hideExternalGifUrl 설정은 다음을 추가합니다: meta.hideExternalGifUrl: true; 도크와 강조 메시지 오버레이는 이미지가 로드된 뒤에만 해당 GIF 링크를 숨기며 주변 텍스트와 원래 페이로드는 유지합니다. 이미지 로드가 실패하거나 시간이 초과되면 첨부 컨테이너를 접고 링크를 계속 표시합니다. GIF 전용 오버레이는 이미지 바이트를 가져오지 못하면 직접 이미지 표시를 시도하며, 애니메이션 타이밍을 알 수 없으면 설정된 표시 시간을 사용합니다. 로드가 실패하거나 멈추면 대기열의 다음으로 넘어갑니다. 다음을 추가하지는 않습니다: event 또는 소스의 다음을 변경하세요: type. 외부 이미지는 콘텐츠 필터링되지 않으며 호스트가 임베딩을 차단하면 로드되지 않을 수 있습니다.
data.membership 문자열 다음과 같은 읽기 쉬운 멤버십 상태: MEMBERSHIP, new_sponsor, gift_recipient. 각 화면은 배지, 필터, 공지에 이를 사용합니다.
data.subtitle 문자열 보충 설명(멤버십 기간, 등급 업그레이드, 선물한 사람 등). 오버레이가 표시 이름 아래에 넣을 수 있도록 짧은 일반 텍스트로 유지하세요.
data.hasDonation 문자열 금전 또는 가상 선물 금액($5.00, 500 bits, 300 coins). 다음 경우에도 채우세요: data.event 는 후원 오버레이가 감지할 수 있도록 비어 있습니다.
data.meta 숫자 | 객체 | 문자열(레거시) 단일 카운터(시청자, 팔로워, 구독자)에는 일반 정수를, 더 풍부한 맥락에는 객체를 사용하세요. Twitch DOM의 다음과 같은 일부 이전 이벤트는: community_highlight, 문자열을 담습니다. 객체 속성을 읽기 전에 이벤트별 구조를 확인하세요. 새 구조화 정보는 객체 안에 넣어야 합니다.
data.firsttime 불리언 설정값: true 는 첫 채팅 참여자 감지와 로컬 데이터베이스가 활성화되어 있고 해당 사용자/소스의 첫 저장된 채팅 메시지일 때 설정됩니다. 도크는 이를 첫 참여 강조 표시와 첫 참여 알림음 필터에 사용합니다. 선택적 첫 참여 배지 설정은 다음 앞에 잎사귀 배지를 붙입니다: chatbadges.
data.lastactivity 숫자 첫 채팅 참여자 감지와 로컬 데이터베이스가 활성화된 경우 해당 사용자의 이전 저장된 채팅 활동 시각을 나타내는 초 단위 Unix 타임스탬프입니다. 처음 보는 사용자에게는 생략합니다.

오버레이 제어 전송은 캡처된 채팅/이벤트와 별개입니다. 업데이트된 수신기는 다음을 사용합니다: ssnControl 전송 봉투에 전달 식별자를 포함합니다: id, 강조 표시 target, 선택적 답장 채널과 스냅샷 클라이언트 ID. 기존 강조 표시 본문은 그대로 유지됩니다. 공개 기능 제어는 채널 7을 사용하며 Actions는 채널 6을 유지합니다. Poll 및 Map 상태에는 호스트의 다음이 포함됩니다: epoch, revision 그리고 reset 표식을 사용합니다. Timer, Ticker, Spotify는 다음을 사용합니다: ssnState 에 epoch와 revision을 포함합니다. 이 표식은 호스트 상태를 설명하며 복원된 투표/채팅 기록이 아닙니다. 소스는 캡처된 메시지에 제어 봉투 필드를 추가해서는 안 됩니다. 수신 확인은 동작 완료나 OBS 표시를 입증하지 않습니다. 참고: 이전 상태 에서 지원 기능, 답장 협상, 재연결 제한을 확인하세요.

Phrase Guess는 기본 기능을 사용합니다: {response: text} 요청을 server2 채팅 답장에 사용하며 {action: "phraseGuessResponse", value: {type: "bot", chatname: name, chatmessage: text}} 는 도크 전용 공지에 사용합니다. 호스트는 수신 server3 메시지를 활성화해야 하며 호스트 제어를 끄면 이 요청도 차단됩니다. 도크 공지는 다음을 포함한 일반 봇 채팅 행으로 전달됩니다: textonly: true, 캡처 소스의 채팅 입력창으로 보내지 않습니다. 레거시 API 모드는 기존 명령 형식을 유지합니다.

메타 규칙

대시보드와 자동화의 일관성을 유지하려면 다음을 확장할 때 이 규칙을 따르세요: data.meta:

  • viewer_update, follower_update, subscriber_update, 그리고 likes_update 는 일반 정수를 사용합니다: meta 값. likes_update 는 신뢰할 수 있는 플랫폼 합계입니다. 소비자는 더하지 말고 표시 값을 설정해야 합니다. 백그라운드 스크립트는 시청자 수를 다음으로 집계합니다: viewer_updates 에 다음을 키로 하는 객체를 사용합니다: data.type.
  • giveaway_state 는 관리형 표시 화면용으로 호스트가 생성한 메타 전용 스냅샷입니다. meta.giveaway 버전 2에는 다음이 포함됩니다: giveawayId, 지속되는 roundId/epoch, 증가하는 generation 를 새 라운드에서도 유지하며, revision 를 라운드 안에서 유지하며, status, open, draw, keyword, count, ticketCount, 고정된 config, 최대 120개의 미리보기 entrants, 최근 20개의 winners. 항목은 다음을 제공합니다: id, name, platform 그리고 tickets; 당첨자에는 다음이 추가됩니다: drawnAt 및 지급된 points. Coin Flip Pot은 다음을 추가합니다: outcome; Number Hunt는 다음을 추가합니다: number 및 공개 low, high 및 최근 guesses, 비밀 값은 포함하지 않습니다. 소비자는 경품 추첨 ID로 필터링하고 이전 세대/리비전을 버립니다. 이는 표시용 샘플이며 전체 참가권 장부나 지급 지시가 아닙니다. 지갑 키, 잔액, 예약은 시청자 스냅샷에 포함되지 않습니다. 호스트는 다음으로 게시합니다: giveaway P2P 라벨 및 활성화된 오버레이 WebSocket 피드. 이것이 OBS에서 보인다는 뜻은 아닙니다. 가이드.
  • meta.giveawayControlResult 에는 Event Flow 경품 추첨 동작 결과가 들어 있습니다(ok, 선택적 error, giveaway 또는 simulated). meta.giveawayHandled 는 참가/구매 흐름 동작이 이미 처리한 경품 추첨 ID를 나열해 자동 채팅 명령이 다시 요금을 부과하지 않게 합니다. 편집기는 다음을 추가합니다: meta.economyTest 는 시뮬레이션된 경품 추첨 동작용이며 소스 플랫폼 이벤트나 인증 자격 증명이 아닙니다.
  • video_stats 는 구조화된 다음을 사용합니다: meta 객체는 외부 인코더/서버 상태용이며 다음을 포함합니다: provider, label, online, bitrateKbps, rttMs, bufferMs, 패킷 손실/삭제 카운터, 선택적 코덱 세부 정보.
  • 후원형 이벤트에는 설명 객체가 포함될 수 있습니다. 예: { amount, currency, supporter } 는 Kick용이며, { bits } 는 Twitch 응원용입니다. 멤버십 이벤트에는 소스별 메타데이터가 있으며 자동으로 금전 후원이 되지는 않습니다.
  • 정규화된 Stripe, Ko-fi, Buy Me a Coffee, Fourthwall 웹훅 메시지에는 제공자 범위의 다음이 포함됩니다: meta.webhookId, 제공자의 안정적인 이벤트 식별자에서 복사하여 하위 페이지가 재시도 및 혼합 전송 중복을 억제할 수 있게 합니다.
  • Twitch 레이드는 다음을 전달합니다: { fromId, fromLogin, viewers }. 다른 소스는 다릅니다. Whatnot은 다음을 사용합니다: meta.numRaiders, SharePlay는 선택적 다음을 사용합니다: meta.fromLogin/meta.viewers. 레이드 메타데이터를 읽기 전에 소스별 행을 확인하세요.
  • Twitch EventSub 보상 사용은 다음을 제공합니다: meta.rewardId, cost, rewardTitle, redemptionId, 기존의 alias 를 준비된 메시지와 함께 제공합니다. DOM 보상 카드와 다른 소스는 더 적거나 다른 필드를 제공할 수 있습니다.
  • user_banned 는 채팅 관리 위젯용 메타데이터 전용 이벤트입니다. 다음을 의도적으로 생략합니다: chatname 그리고 chatmessage; 사용: meta.username, meta.displayName, meta.avatarUrl, 그리고 meta.profileUrl.
  • 소스 제어 삭제 동기화를 지원하는 채팅 전송은 플랫폼 고유 채팅 식별자를 다음으로 제공해야 합니다: meta.messageId 를 사용하고 도크 내부의 다음에 의존하지 마세요: data-mid 값.
  • 소스 삭제는 다음을 사용합니다: {delete: {type, id}} 는 알려진 도크 메시지 ID에 사용하거나, {delete: {type, meta: {messageId}}} 는 플랫폼 고유 메시지 ID에 사용하세요. 알려진 ID는 일치하는 메시지만 제거합니다. 대상 사용자만 알면 다음을 보내세요: {delete: {type, userid}} 또는 {delete: {type, chatname}} 를 보내 해당 플랫폼에서 그 사용자의 메시지를 제거하세요. 대상 사용자 대신 관리자의 식별 정보를 사용하지 마세요. 수신 삭제에는 선택적 도크-플랫폼 관리 동기화 설정이 필요하지 않습니다.
  • SSApp 소스 식별 메타데이터에는 다음이 추가될 수 있습니다: meta.ssnAccountRole, meta.ssnSourceId, 그리고 meta.ssnSession 는 소스에 일반이 아닌 계정 역할이 지정된 경우.
  • Event Flow는 다음을 설정해 강조 표시를 요청할 수 있습니다: meta.featured = true 를 채팅 페이로드에 설정하면 도크/강조 메시지 오버레이에서 메시지가 자동 강조 표시됩니다.
  • AI Event Overlay: 동작 showAiEventOverlay 는 트리거가 된 메시지의 복사본을 라벨 aievent-CONFIGURATION_ID로 보내고 meta.aiEventOverlay: {profile: "CONFIGURATION_ID"}를 추가합니다. 기존 메시지 필드와 객체 형태의 메타데이터는 보존되며, 스칼라 메타데이터는 meta.value로 유지됩니다. 이는 대상을 지정한 전달이며 새로운 플랫폼 이벤트가 아닙니다. 원본 메시지는 변경되지 않습니다. 참고할 문서: 설정 가이드.
  • 선택 사항 meta.aiEventOverlay.variation 는 저장된 오버레이 설정에서 승인한 문구와 정확히 일치하는 항목을 선택합니다. 시청자 텍스트와 메타데이터는 생성 후 템플릿 필드에 채워집니다.
  • AI Event Overlay 표시 요청에는 프로필과 해당 프로필의 비공개 표시 토큰이 필요합니다. 설정과 API 키는 로컬 SSN 팝업에서만 관리합니다. 응답 형식은 {aiEventResponse: {target, value}} 또는 {aiEventResponse: {target, error}}. 생성 결과에 포함되는 필드는 template, duration, warnings, 선택적 미디어 데이터 URL이 저장되는 필드는 image/audio.
  • 포인트로 결제하는 AI 오버레이 보상은 aiEventPresentation (id, profile, expiresAt, result, message)을 사용하며 aiEventDelivered(전달 ID)로 수신을 확인합니다. 포인트 차감 기록과 환불 금액은 호스트에 보관됩니다.
  • Event Flow는 다음을 설정해 도크 고정을 요청할 수 있습니다: meta.pinned = true; 선택적 meta.pinnedTarget 는 해당 고정을 다음과 일치하는 도크로 제한합니다: label.
  • Event Flow 감열 인쇄는 결과를 다음 아래에 기록합니다: meta.thermalPrintResult (success 및 선택적 code/error), 채팅 이벤트와 다른 메타데이터를 보존합니다. 숫자 또는 객체가 아닌 메타데이터를 가진 이벤트에서는 진단이 동작 결과에 남고 이벤트는 바뀌지 않습니다.
  • 선택적으로 활성화하는 SSN 스티커 보상: event: "sticker" 는 다음에만 전송됩니다: stickers 오버레이 라벨로 참여 포인트 차감 후 보냅니다. 설정: platform 그리고 type 를 원래 메시지의 다음으로 설정합니다: type, 다음을 보존합니다: chatname, 비어 있는 chatmessage, textonly: true, 그리고 contentimg 에 패키지에 포함된 상대 이미지 경로나 진행자가 승인한 HTTPS 미디어 URL을 담습니다. meta.sticker 포함: id, pack, name, cost, duration (초), motion, redemptionId, 그리고 expiresAt (Unix 밀리초). 이는 SSN 보상이며 플랫폼 후원이나 기본 채널 포인트 이벤트가 아닙니다. 참고: 갤러리 및 설정 가이드.
  • 스티커 플레이어는 다음 제어 패킷을 반환합니다: {action: "stickerReceipt", meta: {sticker: {redemptionId, success}}} 를 이미지가 로드되거나 실패하면 발신자에게 보냅니다. 연결된 다음에서 온 수신 확인만: stickers 피어가 대기 중인 보상 사용을 확정할 수 있게 합니다. 전달이 실패하거나 확인되지 않으면 환불을 실행합니다. 이 제어 패킷은 채팅 이벤트가 아닙니다. 세션당 활성 스티커 표시 화면 하나를 권장합니다.
  • AI 무대 오버레이 명령은 다음을 사용합니다: { action: "aiOverlay", target, meta } 또는 도크가 제어하는 공동 진행자 재생은 다음을 사용합니다: { action: "cohostOverlay", target, meta }; 다음과 같은 모든 명령 세부 정보는 유지하세요: command, text, emotion, avatar, 그리고 tts 내부: meta.
  • 플랫폼이 여러 카운터를 함께 제공하면 명시적 키가 있는 구조화 객체를 권장합니다(meta.viewer_count, meta.follower_count), 문자열에 여러 의미를 덧씌우지 마세요.
  • 커머스 오버레이는 다음 아래의 스냅샷 객체를 사용해야 합니다: meta (예: auction_update 그리고 commerce_update), 임의의 최상위 필드는 사용하지 마세요.

플랫폼 지원 범위

YouTube – 표준 DOM 캡처

구현: sources/youtube.js

  • 실시간 채팅 탭을 열어 두세요. 캡처는 해당 세션에 렌더링된 멤버십 및 선물 카드를 읽으며 시청자가 채널 소유자나 관리자일 필요는 없습니다. 계정 접근 권한과 선택한 채팅 보기에 따라 보이는 행이 달라질 수 있습니다.
  • 시청자 수가 표시된 상태로 시청자 수 및 채팅 활동 오버레이를 열면 시청자 수를 자동으로 요청합니다. 설정 항목인 시청자 수 표시 그리고 활성 채팅 참여자 추적 도 데이터 수집을 활성화합니다.
  • 팔로워 알림 및 추가 이벤트용, 확장 프로그램 설정에서 WebSocket 모드를 활성화하세요.
이벤트 발생 시점 페이로드 참고 사항
sponsorship 명시적 채팅 텍스트가 없는 멤버십 환영 머리글(새 회원, 선물 묶음 수신)이며 구조화된 환영 카드나 현지화된 '…에 오신 것을 환영합니다' 텍스트를 포함합니다. membership 는 번역된 'MEMBERSHIP'으로 채워집니다; subtitle 에는 감지된 경우 연속 기간/등급이 들어 있습니다; nameColor 는 허용되는 경우 멤버십 초록색을 사용합니다.
giftpurchase 선물 묶음 구매 배너(ytd-sponsorships-live-chat-gift-purchase). membership 로 바뀝니다: gift_giver; subtitle 는 알려진 경우 선물 개수를 담습니다. 다음 없음: hasDonation 또는 donoValue.
giftredemption 수신자에게 표시되는 선물 사용 알림. membership 는 'MEMBERSHIP'이 됩니다; subtitle 에는 '선물한 사람: …'이 포함됩니다.
resub '…으로 업그레이드함'이 포함된 업그레이드 배너. subtitle 는 새 등급 라벨을 캡처합니다; membership 는 'MEMBERSHIP'으로 유지됩니다.
superchat, supersticker, jeweldonation Super Chat, Super Sticker, 후원 알림 카드, Jewels 기반 YouTube Gifts(yt-gift-message-view-model). hasDonation 는 값을 담습니다; event 는 YouTube 유료 항목 유형을 식별합니다. YouTube Gifts는 다음을 사용합니다: N Jewels 는 있는 경우, 또는 1 YouTube Gift 는 YouTube가 개수를 숨긴 경우입니다. 선물 이미지는 다음을 사용합니다: contentimg, 선물 라벨에는 다음을 사용합니다: subtitle, 최소한의 선물 세부 정보는 다음 아래에도 복사됩니다: meta.youtubeGift.
jeweldonation 선물 효과 YouTube가 실시간 채팅 위에 움직이는 Jewel 선물을 표시합니다(ytls-gift-overlay-item-view-model). 일반 선물 행을 중복 표시하지 않고 애니메이션을 재생하도록 전용 GIF/미디어 대상에 직접 보냅니다. contentimg 는 애니메이션 자산을 담고 meta.youtubeGift.animationUrl/animationDescription 는 효과 세부 정보를 보존합니다.
reaction YouTube 실시간 이모지 분수에 시청자 반응이 나타납니다. 전용 반응 대상으로 직접 보냅니다. 익명 이모지와 이미지 URL은 다음에 보존됩니다: chatmessage/contentimg 및 다음 아래에: meta.reactionType/reactionImage. 알려진 실시간 변형에는 ❤, 😄, 🎉, 😳, 💯가 있습니다.
thankyou 후원 금액은 있지만 채팅 텍스트가 제공되지 않았을 때의 대체 메시지. 유지: hasDonation 를 사용하고 오버레이에 '후원해 주셔서 감사합니다!'를 자동으로 넣습니다.
redirect YouTube 리디렉션 배너가 실시간 채팅에 나타납니다(레이드 알림에 가장 가까운 기능). 다음의 DOM 전용 캡처: yt-live-chat-banner-redirect-renderer. 설정: event 대상: redirect 및 다음을 사용합니다: membership 를 라벨로 사용해 오버레이가 다른 시스템 알림처럼 렌더링하게 합니다.
viewer_update 30초마다 Social Stream 시청자 엔드포인트를 폴링합니다(할당량 오류 시 페이지 스크래핑으로 대체). meta 는 실시간 시청자 수 정수이며 다음 집계에 반영됩니다: viewer_updates (백그라운드 스크립트).

멤버십 블록은 다음도 설정합니다: membership 는 관리자/회원 채팅에 사용하며, subtitle 는 개월 수 또는 등급 이름을 담습니다. sourceName/sourceImg 는 다음이 되면 채워집니다: getChannelInfo 가 성공하면 채워집니다. 표준 DOM 채팅에는 이제 다음이 포함됩니다: meta.messageId 는 YouTube가 플랫폼 고유 실시간 채팅 메시지 ID를 제공하는 경우이며 도크는 이를 삭제 동기화에 사용합니다.

YouTube – WebSocket/Data API 캡처

구현: sources/websocket/youtube.html, 공유 도우미는 다음 아래에: shared/

  • 기본 OAuth 범위: youtube.readonly 그리고 youtube.channel-memberships.creator. 선택적 쓰기 접근은 다음을 추가합니다: youtube.force-ssl 는 채팅 전송, 채팅 관리, 차단, 방송 세부 정보 수정에 사용합니다. YouTube에는 채팅 전용 쓰기 범위가 없으므로 Google이 이를 광범위한 YouTube 관리 권한으로 표시할 수 있습니다.
  • 채널 통계는 개별 설정 스위치를 따릅니다(showsubscount, showviewercount).
  • API는 사용자 지정 배지 이미지를 전달할 수 없습니다. 배지 대체 표시는 아래에 명시된 이모지 아이콘을 사용합니다.
  • API가 다음을 명시적으로 보고할 때: authorDetails.isChatModerator: true, 채팅, Super Chat, Super Sticker, YouTube Gift, 멤버십 선물 페이로드에는 다음이 포함됩니다: mod: true. 관리자 상태는 이벤트 사이에서 추론하거나 캐시하지 않습니다.
  • 새 구독자 알림은 다음을 사용합니다: myRecentSubscribers API(5분마다 폴링). 참고: 결과가 지연되거나 불완전할 수 있으며 공개적으로 보이는 구독만 식별할 수 있습니다.
  • YouTube 리디렉션 배너는 Data API에 제공되지 않으므로 redirect 는 표준 DOM 캡처에서만 계속 사용할 수 있습니다.
이벤트 발생 시점 페이로드 참고 사항
superchat Data API 기록 또는 스트림 폴링의 Super Chat 항목. hasDonation 는 사이트 금액(통화 + 값)을 보존합니다; event 값: superchat. 이전 WebSocket 빌드는 다음을 사용했습니다: event: "donation" 를 이 행에 사용하므로 소비자는 이를 이전 별칭으로 계속 받을 수 있습니다.
supersticker Super Sticker(메시지 텍스트 대체만 지원, API에서 이미지 제공 안 함). hasDonation 에는 금액이 들어 있습니다; chatmessage 에는 디코딩한 설명 텍스트가 들어 있습니다.
jeweldonation YouTube giftEvent 메시지를 시청자가 Jewels를 Gifts로 교환할 때 전송합니다. hasDonation 에 담는 값: N Jewels, 또는 1 YouTube Gift 는 YouTube가 개수를 숨긴 경우; contentimg 는 제공되는 경우 선물 자산 URL을 사용합니다; subtitle 는 선물 라벨을 담습니다; meta.youtubeGift 는 추가 선물 세부 정보를 담습니다.
sponsorship 다음을 통한 새 회원 가입: newSponsorEvent. membership 로 바뀝니다: new_sponsor 또는 new_member; meta 포함: originalEventType, 기간, 레벨 정보.
resub 회원 갱신 또는 등급 업그레이드. membership 로 바뀝니다: renewed_member (갱신) 또는 upgraded_member (업그레이드); subtitle 는 등급을 표시합니다.
giftpurchase API로 구매한 선물 묶음. membership 설정값: gift_giver; subtitle 는 개수/등급을 나열합니다. 다음 없음: hasDonation 또는 donoValue.
giftredemption 선물 사용 알림. membership gift_recipient; 배지 기본값은 🎁입니다; subtitle 는 선물된 등급을 나타냅니다.
membermilestone 마일스톤 채팅(memberMonth 또는 displayMessage 가 있는 경우). membership member_milestone; subtitle 는 개월 수 + 등급을 요약합니다; meta 는 원본 마일스톤 매핑을 캡처합니다.
viewer_update 시청자 보고가 활성화되면 방송 통계(동시 시청자)를 제공합니다. meta 는 정수형 개수이며 DOM 스크립트와 일치해 하위 소비자가 두 흐름을 병합할 수 있습니다. 다음을 사용하는 도크: &showviewercount 는 시청자 수 수집을 70분 동안 요청하고 전체 설정을 영구 변경하지 않은 채 매시간 갱신합니다.
likes_update 다음 조건에서 공식 동영상 통계 폴링: 플랫폼 좋아요 합계 보내기 가 활성화된 경우. meta 는 현재 동영상 좋아요 수 정수입니다. 수가 바뀌면 전송하며 변하지 않아도 주기적으로 전송해 소비자 상태를 최신으로 유지합니다. 전체 설정의 captureliketotals 설정이 이를 활성화합니다. 기존 captureyoutubelikes 는 호환성 별칭으로 유지됩니다. 팝업의 도크별 다음을 활성화하면: &showlikecount 옵션은 해당 전체 캡처 설정도 지속적으로 활성화하지만 URL 매개변수를 수동으로 추가하면 렌더링만 제어합니다. 표시 옵션을 꺼도 전체 수집은 비활성화되지 않습니다.
subscriber_update 다음 조건에서 채널 통계 폴링(구독자): showsubscount 가 명시적으로 비활성화되지 않은 경우. meta 는 전체 구독자 수이며 UI가 대시보드 카운터를 업데이트합니다.
view_update 다음 조건에서 채널 통계 폴링(누적 조회 수): showviewercount 또는 하이프 모드가 활성화된 경우. meta 는 정수형 조회 수입니다.
live_chat_ended 연결된 방송에서 실시간 채팅을 사용할 수 없게 됩니다. meta.streamTitle 는 스트림 메타데이터가 캐시된 경우 채워집니다.
user_banned userBannedEvent 를 실시간 채팅 API 또는 gRPC 스트림에서 가져옵니다. 채팅 관리 위젯용 메타데이터 전용 이벤트. meta 에는 사용자 이름/표시 이름, 채널 ID, 아바타/프로필 URL, 관리자, 차단/타임아웃 기간, 영구 여부가 포함됩니다.
new_follower 다음으로 감지한 새 구독자: myRecentSubscribers API(5분마다 폴링). chatname 는 구독자의 채널 이름입니다; chatmessage 는 YouTube 소스 페이지에서 구독자 알림 메시지를 활성화하지 않으면 비어 있습니다. meta 포함: channelId, title, subscribedAt, 묶인 연속 이벤트에는 다음이 추가됩니다: grouped, count, others, 그리고 subscribers. 참고: 결과가 지연되거나 불완전할 수 있으며 공개적으로 보이는 구독만 식별할 수 있습니다.

API 채팅 릴레이는 다음을 사용합니다: meta.plainText 에는 일반 텍스트 메시지를 담고 풍부한 다음과 함께 사용합니다: chatmessage 내용입니다. HTML이 아닌 텍스트이며 Unicode 이모지는 포함할 수 있습니다. 멤버십 배지는 이모지로 대체됩니다(⭐, 💝, 🏅, 등)을 사용해 DOM 캡처와 일관성을 유지합니다. 일반 채팅 페이로드에는 다음도 포함됩니다: meta.messageId 를 사용해 도크의 삭제 동작을 YouTube 관리 API로 다시 전달할 수 있습니다.

YouTube 구독자 알림(new_follower)

Social Stream은 이제 다음을 사용해 새 YouTube 구독자를 감지할 수 있습니다: myRecentSubscribers API 엔드포인트. Streamlabs 구독자 알림과 비슷하게 작동합니다.

작동 방식:

  • 5분마다 YouTube API에서 최근 구독자를 폴링합니다
  • 새 구독자를 감지하기 위해 이미 본 구독자를 localStorage에 기록합니다
  • 전송: new_follower 이벤트에 구독자의 이름, 아바타, 채널 ID를 포함합니다
  • 구독자 알림 메시지는 기본적으로 비활성화됩니다. 활성화하면 다음의 현재 번역 문자열을 사용합니다: alert-just-subscribed
  • 기본적으로 신규 구독자가 세 명을 초과하는 연속 수신을 묶어 재연결 시 오버레이나 Event Flow가 과도하게 실행되지 않게 합니다
  • 확장 프로그램 설정에서 WebSocket 모드를 활성화해야 합니다

제한 사항(Social Stream의 제한이 아닌 YouTube API 제한):

  • 보장된 전달 지연 시간 없음 – SSN은 5분마다 폴링하지만 API가 지연되거나 불완전한 결과를 반환할 수 있습니다. 고정된 4시간 범위에 의존하지 마세요.
  • 공개 구독만 – 구독 목록을 비공개로 설정한 구독자는 알림을 발생시키지 않습니다. YouTube에서 구독은 기본적으로 비공개입니다.
  • 채널 소유자만 – 본인이 소유하고 인증한 채널의 구독자 알림만 받을 수 있습니다.
  • API 할당량 사용량 – 폴링마다 API 1단위를 사용합니다. 5분 간격이면 하루 약 288단위를 사용합니다(기본 일일 할당량 10,000단위 중).

Event Flow 편집기 트리거: 사용: data.event === "new_follower" 그리고 data.type === "youtube"

YouTube WebSocket: 이벤트 및 멤버십 빠른 참고

data.event data.membership 상황
sponsorshipnew_sponsor다음을 통한 새 회원: newSponsorEvent
sponsorshipnew_member다음을 통한 새 회원: processMembership
resubrenewed_member멤버십 갱신
resubupgraded_member등급 업그레이드
giftpurchasegift_giver채널에 선물한 멤버십
giftredemptiongift_recipient멤버십 선물 받음
membermilestonemember_milestone멤버십 기념 채팅
superchat-Super Chat
supersticker-Super Sticker
user_banned-메타데이터 전용 차단/타임아웃 이벤트
new_follower-새 구독자(폴링, 지연될 수 있음)

Twitch – 표준 DOM 캡처

구현: sources/twitch.js

  • Twitch 채팅을 열어 두세요. 멤버십 및 사용자 알림은 Twitch가 렌더링할 때 캡처하며 방송자나 관리자 계정으로 제한되지 않습니다. 계정별 기능에는 인증이 필요할 수 있습니다.
  • 시청자 수 요청 대상: https://api.socialstream.ninja/twitch/viewers 30초마다.
  • 팔로워 알림, 레이드, 전체 이벤트 지원용, 확장 프로그램 설정에서 WebSocket 모드를 활성화하세요.
  • 시청자가 공유하는 연속 시청 알림은 기본적으로 꺼져 있으며 다음이 필요합니다: Twitch 연속 시청 표시 설정.
  • 선택적으로 활성화하는 PluralMind 설정은 다음을 바꿀 수 있습니다: chatname, nameColor, 프록시로 감싼 다음 부분: chatmessage, 대명사 텍스트 배지를 추가할 수 있습니다. username 는 Twitch 로그인 이름으로 유지되며 관련 삭제는 다음을 담습니다: delete.meta.pluralmind 를 사용해 도크가 안정적인 로그인 이름을 쓰게 합니다.
이벤트 발생 시점 페이로드 참고 사항
reward 채널 포인트 보상 사용 카드(7TV 보상 컨테이너 포함). chatmessage 에는 보상 사용 텍스트가 들어 있습니다; membership 는 변경하지 않습니다.
giftpurchase '사용자가 채널에서 구독 X개를 선물함' 같은 시스템 문구. chatmessage 는 시스템 문구로, 오버레이가 선물 제공 캠페인을 강조할 수 있게 합니다.
subscription_gift 구독 선물 알림('사용자가 …에게 구독을 선물했습니다'). 강조 표시 필터용으로 이벤트를 표시합니다; membership 는 수신자 배지 라벨로 유지됩니다.
viewer_update 30초마다 Social Stream 시청자 프록시에 요청합니다(오류 시 0 사용). meta 정수형 시청자 수.
hype_train Twitch 고정 커뮤니티 강조 표시가 팝아웃 채팅에 활성 하이프 열차를 보여줍니다. 메타데이터 전용 DOM 대체 방식이며 다음을 포함합니다: meta.sourceMode 설정값: dom. 표시된 레벨, 타이머 및 다음을 사용합니다: meta.progressPercent 는 Twitch가 EventSub 포인트 합계를 제공하지 않는 경우.
community_highlight Twitch의 'Community Highlight' 위젯 안에 있는 요소. meta 는 자동화 훅용으로 추출한 강조 텍스트입니다.
knock 채팅 위에 표시되는 Stream Together 협업 초대. chatmessage 에는 초대 텍스트가 들어 있습니다; chatname 는 사용 가능한 경우 알림 사용자에서 가져옵니다.
watch_streak 시청자가 선택적으로 공유해 Twitch 채팅에 렌더링되는 연속 시청 알림. meta.streakCount 에는 감지된 경우 표시된 개수가 들어 있습니다; meta.milestoneId 는 사용 가능한 경우 DOM 알림 식별자를 사용합니다.

Bits/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 모드는 실시간으로 다음을 제공합니다: 팔로워 알림, 구독 이벤트, 레이드, 응원, Power-up, 채널 포인트 보상 사용, 하이프 열차 메타데이터.
  • Shared Chat 행은 Twitch IRC의 다음을 사용합니다: source-room-id 를 채우기 위해 sourceName/sourceImg 에는 연결된 채널과 다를 경우 원래 채널을 넣습니다.
  • 시청자가 공유하는 연속 시청 알림은 기본적으로 꺼져 있으며 다음이 필요합니다: Twitch 연속 시청 표시 설정.
  • 선택적으로 활성화하는 PluralMind 설정은 다음을 바꿀 수 있습니다: chatname, nameColor, 프록시로 감싼 다음 부분: chatmessage, 대명사 텍스트 배지를 추가할 수 있습니다. username 그리고 userid 는 Twitch 식별 정보를 유지하며 관련 삭제는 다음을 담습니다: delete.meta.pluralmind 를 사용해 도크가 안정적인 해당 필드를 쓰게 합니다.
이벤트 발생 시점 페이로드 참고 사항
cheer EventSub의 응원 알림 channel.bits.use. hasDonation 'N bits'; meta.bits 숫자형; chatmessage 는 원본 메시지를 보존합니다. 식별된 응원자는 다음을 포함합니다: chatimg.
powerup EventSub의 기본 또는 사용자 지정 Power-up 알림 channel.bits.use. 다음이 비어 있는 이벤트 전용 페이로드: chatmessage 이며 다음 없음: hasDonation, 따라서 일반 채팅 행을 만들지 않습니다. meta.bits 는 숫자형이며 meta.powerUp 는 사용 가능한 경우 Twitch 하위 유형, 제목/보상 ID, 효과 세부 정보, 제공된 메시지 텍스트를 보존합니다.
new_subscriber channel.subscribe 또는 다음을 포함한 USERNOTICE: msg-id=sub. meta 포함: { userId, tier, isGift }; 캐시된 구독자 합계가 있으면 증가시킵니다. 시청자 합계는 별도로 폴링합니다.
resub channel.subscription.message 또는 USERNOTICE msg-id=resub. meta 는 연속 및 누적 개월 수를 담습니다; chatmessage 에는 재구독 텍스트가 포함됩니다.
subscription_gift channel.subscription.gift 또는 USERNOTICE msg-id=subgift. meta 는 선물 합계와 등급을 제공합니다; chatmessage 는 동작을 요약합니다.
reward channel.channel_points_custom_reward_redemption.add. meta 에는 보상 ID, 제목, 비용, 프롬프트, 사용자 입력, 사용 ID/상태, 이전 별칭이 포함됩니다. 최상위 다음은 없습니다: reward 객체는 이 EventSub 처리기에서 전송하지 않습니다. 이전 소비자는 여전히 다음을 표시할 수 있습니다: channel_points 를 폐기 예정 별칭으로 사용합니다.
raid EventSub channel.raid 또는 USERNOTICE msg-id=raid. meta = { fromId, fromLogin, viewers }.
watch_streak 선택적으로 활성화하는 Twitch IRC USERNOTICE, 포함: msg-id=viewermilestone 그리고 msg-param-category=watch-streak. 시청자를 다음에 포함합니다: chatname, Twitch 알림 텍스트는 다음에: chatmessage, 그리고 meta.streakCount/meta.milestoneId. 다른 일반 USERNOTICE 유형은 계속 무시합니다.
new_follower channel.follow EventSub 알림. 자동 증가: follower_update; meta 기록: { userId, followedAt }.
viewer_update Helix streams 30초마다 폴링합니다. meta 정수형 시청자 수이며 설정에서 시청자 통계를 활성화하지 않으면 보내지 않습니다.
follower_update 팔로우 이벤트 후 또는 주기적 폴링으로 가져오는 Helix 팔로워 합계. meta 정수형 팔로워 수.
subscriber_update Helix 구독자 합계(구독 범위를 가진 방송자 토큰 필요). meta 정수형 구독자 수.
stream_online / stream_offline EventSub stream.online/stream.offline. meta.startedAt 는 온라인 이벤트에 포함되며 오프라인은 빈 객체를 사용합니다.
ad_break / ad_request / ad_schedule 광고 관리자 API 응답(channel.ad_break.begin, 수동 POST channels/ads, GET channels/ads). meta 는 대시보드용 기간, 요청자, 일정 페이로드를 자세히 담습니다.
hype_train EventSub channel.hype_train.begin, channel.hype_train.progress, 그리고 channel.hype_train.end v2 알림. 메타데이터 전용 이벤트: 다음 없음: chatname 또는 chatmessage. meta.phase 값: begin, progress, 또는 end; meta 에는 열차 ID, 레벨, 진행량, 목표, 총량, 기여자, 타이밍 필드, 공유 열차 플래그 및 다음이 포함됩니다: trainType. 보물 열차는 다음을 통해 표시됩니다: meta.trainType 는 Twitch가 해당 라벨을 제공하는 경우.
user_banned EventSub channel.ban, 또는 IRC CLEARCHAT 는 EventSub 차단 이벤트를 사용할 수 없을 때의 대체 방식입니다. 채팅 관리 위젯용 메타데이터 전용 이벤트. meta 에는 사용자 이름/표시 이름, 사용자 ID, 아바타/프로필 URL, 관리자, 사유, 차단/타임아웃 기간, 영구 여부가 포함됩니다.

채팅 페이로드는 공유 제공자를 재사용하므로 data.event 는 `/me`에 대해 채워집니다(action) 및 기존 bits 태그를 EventSub 흐름 밖에서도 사용합니다. Twitch GIF 메시지는 Giphy 자산을 다음에 넣습니다: contentimg, 다음은 비워 두세요: chatmessage 는 비워 두고 Twitch의 대체 라벨을 다음에 보존합니다: meta.gifLabel. 중복 제거와 삭제 로직은 메시지 ID를 사용합니다. SSN으로 보낸 메시지는 플랫폼 고유의 다음을 사용합니다: message_id 를 다음의 Twitch IRC 반향에서 가져옵니다: data.id.

Twitch 하이프 열차 메타데이터

hype_train 는 메타데이터 전용이며 다음을 포함하지 않습니다: chatname 또는 chatmessage. 대시보드는 다음을 기준으로 기존 열차 표시를 업데이트해야 합니다: meta.id 로 업데이트하며 진행 업데이트마다 채팅으로 추가하지 마세요. 메타데이터 바(meta.html)는 이 이벤트들을 상단 진행 표시줄로 렌더링합니다.

필드 입력: 참고
type문자열항상 twitch.
event문자열항상 hype_train.
meta.phase문자열begin, progress, 또는 end.
meta.id문자열안정적인 열차 ID. 화면의 열차 위젯 하나를 삽입/업데이트할 때 사용하세요.
meta.broadcasterUserId문자열Twitch 방송자 사용자 ID.
meta.broadcasterUserLogin문자열Twitch 방송자 로그인 이름.
meta.broadcasterUserName문자열Twitch 방송자 표시 이름.
meta.total숫자 | nullTwitch가 해당 열차에 대해 보고한 총 후원 값.
meta.progress숫자 | null레벨 목표를 향한 현재 진행량.
meta.goal숫자 | null현재 레벨 목표.
meta.progressPercent숫자 | nullTwitch가 표시된 팝아웃 진행 표시줄만 제공할 때 사용하는 DOM 대체 백분율.
meta.level숫자 | null현재 또는 종료 시점의 열차 레벨.
meta.topContributions배열상위 기여자. 각 항목에는 다음이 포함됩니다: userId, userLogin, userName, type, 숫자형 total.
meta.lastContribution객체 | null가장 최근 기여이며 다음과 같은 기여 구조를 사용합니다: topContributions.
meta.sharedTrainParticipants배열제공되는 경우 Twitch의 원본 공유 열차 참여자 데이터.
meta.startedAt문자열열차 시작의 ISO 타임스탬프.
meta.expiresAt문자열현재 열차 만료의 ISO 타임스탬프.
meta.endedAt문자열열차 종료의 ISO 타임스탬프이며 종료 전에는 비어 있습니다.
meta.cooldownEndsAt문자열재사용 대기 종료의 ISO 타임스탬프이며 종료 전에는 비어 있습니다.
meta.isSharedTrain불리언Twitch가 열차를 공유로 표시하면 true입니다.
meta.trainType문자열일반적으로 regular; Twitch가 보물 열차로 표시하면 여기에 나타납니다.
meta.allTimeHighLevel숫자 | nullTwitch가 제공하는 경우 역대 최고 열차 레벨.
meta.allTimeHighTotal숫자 | nullTwitch가 제공하는 경우 역대 최고 열차 총량.
meta.sourceMode문자열다음과 같은 선택적 소스 표식: dom.
meta.eventSubType문자열원래 EventSub 유형: channel.hype_train.begin, channel.hype_train.progress, channel.hype_train.end, 또는 dom.community_highlight.

Twitch EventSub: 이벤트 빠른 참고

data.event 상황
new_follower사용자가 채널을 팔로우함
new_subscriber새 구독
resub메시지가 있는 재구독
subscription_gift채널에 선물된 구독
cheer비트 응원
powerup기본 또는 사용자 지정 Power-up 사용
reward채널 포인트 보상 사용
raid들어오는 레이드
viewer_update동시 시청자 수
follower_update전체 팔로워 수
subscriber_update전체 구독자 수
stream_online방송 시작
stream_offline방송 종료
ad_break광고 시간 시작
hype_trainHype Train/Treasure Train 상태 메타데이터
user_banned사용자가 차단되거나 타임아웃됨

OBS Flow Actions

구현: actions.html 를 OBS WebSocket v5 이벤트로 전달하며 다음을 포함합니다: dock.html 대체 수단으로 사용하는 OBS 브라우저 소스 이벤트

  • Event Flow 편집기/백그라운드와 같은 Social Stream 세션으로 Flow Actions 오버레이를 열어 두거나 OBS 내부에 도크를 로드해 두세요.
  • OBS 28+에서 OBS WebSocket v5를 설정하세요. 기본 URL: ws://127.0.0.1:4455.
  • 이들은 Event Flow 시스템 이벤트입니다. 다음은 포함하지 않습니다: chatname 또는 chatmessage, 추가 OBS 세부 정보는 다음 안에 유지됩니다: meta.
이벤트 발생 시점 페이로드 참고 사항
stream_started OBS가 방송 출력이 시작 상태에 도달했다고 보고합니다. type 값: obs; event 값: stream_started; meta.source 값: obs-websocket 또는 obs-browser-source; meta.outputState 에는 원본 OBS 출력 상태가 들어갈 수 있습니다.
stream_stopped OBS가 방송 출력이 중지 상태에 도달했다고 보고합니다. type 값: obs; event 값: stream_stopped; meta.outputActive 는 다음일 수 있습니다: false.
recording_started OBS가 녹화 시작을 보고합니다. type 값: obs; meta.obsEvent 는 OBS 이벤트 소스를 식별합니다.
recording_stopped OBS가 녹화 중지를 보고합니다. type 값: obs; meta.outputState 에는 원본 WebSocket 상태가 들어갈 수 있습니다.
scene_changed OBS가 활성 프로그램 장면을 변경합니다. type 값: obs; meta.sceneName 에는 OBS가 제공하는 경우 장면 이름이 들어 있습니다.
media_ended OBS 미디어 입력의 재생이 끝납니다. type 값: obs; meta.inputName 그리고 meta.inputUuid 는 미디어 입력을 식별합니다.
replay_buffer_saved OBS가 리플레이 버퍼를 저장합니다. type 값: obs; meta.savedReplayPath 에는 저장된 리플레이 경로가 들어갈 수 있습니다.

Streamlabs Alert Box

구현: 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 토큰을 붙여넣고 연결하세요. 알림 상자 페이지 없이 알림이 릴레이됩니다.
이벤트 발생 시점 페이로드 참고 사항
donation 팁, 자선 후원, JustGiving 또는 일반적인 '후원함' 알림. hasDonation 는 통화 텍스트(예: '$36' 또는 '$10 CAD')를 보존합니다; donoValue 는 USD 값을 알 수 있는 경우에만 제공됩니다. 다른 라벨 금액은 공통 통화 환산을 사용합니다.
cheer Twitch 비트/응원 알림. hasDonation 는 '100 bits'가 되고 donoValue 는 USD 값을 캡처합니다.
subscription 구독 알림. 표준 필드 설정; chatmessage 는 알림 문구입니다; meta.tokens 는 토큰화된 값(name, amount, levelName 등)을 담습니다.
gift 선물된 멤버십/구독. meta.tokens.amount 는 선물 개수를 표시할 수 있습니다; meta.tokens.levelName 에 등급을 담을 수 있습니다.
follow 팔로워 알림. 후원 필드 없음; chatname 는 알림 이름 토큰을 반영합니다.
raid 레이드 알림. meta.tokens.count 에는 있는 경우 레이드 참여자 수가 들어 있습니다.
redeem Cloudbot 보상 사용 알림. meta.tokens.product 는 사용한 보상 항목을 캡처합니다.
merch 굿즈 구매 알림. meta.tokens.product 에는 구매한 상품 이름이 들어 있습니다.
superchat YouTube 또는 지원되는 알림 통합의 Super Chat형 알림. hasDonation 는 금액을 담습니다. 소비자는 기존의 다음도 계속 받을 수 있습니다: donation 별칭.
sponsor Streamlabs가 제공하는 스폰서/회원형 알림. 표준 필드. 텍스트에 금액이 없으면 후원이 아닙니다.

TikTok Live – DOM 캡처 및 TikFinity 피드

구현: sources/tiktok.js 는 기본 TikTok 페이지용이며 sources/tikfinity.js 는 TikFinity 활동 피드 위젯/iframe용입니다. SSApp은 여전히 가장 넓은 이벤트 범위를 지원하는 기본 TikTok 통합을 제공합니다(SSApp 문서 참조).

  • 방송자의 라이브 페이지에서 작동합니다. 선물/좋아요/팔로우 배너는 세션이 인증된 경우에만 채워집니다.
  • TikTok은 DOM 감지로 다양한 이벤트를 제공합니다 WebSocket 모드를 요구하지 않고 – 선물, 팔로우, 좋아요, 선택적으로 활성화한 입장은 렌더링된 행에서 캡처합니다.
  • TikFinity 위젯 페이지 위치: tikfinity.zerody.one/widget/activity-feed* 도 작동합니다. 내장 활동 피드 iframe은 채팅, 팔로우, 공유, 선물, 구독, 선택적으로 활성화한 입장, 보물 상자에 같은 표준 TikTok 페이로드 필드를 전송합니다.
  • 추가 API 인증이 필요하지 않습니다.
  • SSApp 기본 모드 는 페이지/위젯 캡처 경로 외에도 다음 이벤트를 추가합니다: question_new, emote, viewer_update, 선택적으로 활성화하는 집계 likes_update.
이벤트 발생 시점 페이로드 참고 사항
gift 선물 배너 행 또는 DivGiftMessage 항목. hasDonation 는 'N coins'로 변환합니다(선물 조회 대체 방식 포함); membership 는 사용 가능한 경우 배지 텍스트를 사용합니다.
joined 전체 설정의 다음이 활성화된 경우 입장 알림: 'joined' 방송 이벤트 캡처 설정이 활성화된 경우. 공유 알림은 건너뜁니다; chatname 는 일부 시스템 문자열에서 비어 있을 수 있습니다.
followed 소셜 카드에서 파싱한 팔로우 메시지. 다음을 보장합니다: chatname 가 존재하는지 전송 전에 확인합니다.
shared TikFinity 공유 행. chatmessage 는 렌더링된 공유 텍스트입니다.
subscribe TikFinity 구독 행. membership 의 설정값: SUBSCRIBER.
envelope TikFinity 보물 상자 행. meta.coins 그리고 meta.canOpen 는 상자 세부 정보를 담습니다.
liked TikTok 소셜 카드가 실행하는 좋아요 폭풍 요약. chatname 는 TikTok이 제공하는 경우 포함됩니다. 익명/시스템 좋아요 카드도 전송될 수 있습니다. TikTok은 이를 일반 백그라운드 경로로 보냅니다. 백그라운드는 사본 하나를 Reactions Overlay로 라우팅한 뒤 다음 조건에서만 기본 채팅/이벤트 처리 경로를 계속 진행합니다: capturelikeevent 가 활성화된 경우.
likes_update SSApp은 다음 조건에서 신뢰할 수 있는 누적 TikTok LIVE 합계를 받습니다: captureliketotals 가 활성화된 경우. meta 는 현재 합계 정수입니다. SSApp은 첫 값을 즉시 보내고 연속 업데이트를 5초당 최대 한 번으로 합치며 약 90초마다 최신 값을 반복하고 방송 종료 시 0을 보냅니다. 이는 시청자별 다음과 별개입니다: liked 이벤트.
true (불리언) TikTok이 하위 유형을 제공하지 않는 일반 소셜/시스템 브로드캐스트. 사용: chatmessage 내용을 기준으로 표시를 결정합니다. 불리언 true 는 '시스템 이벤트 – 유형 알 수 없음'을 나타냅니다.

membership 는 배지 툴팁(구독자 등급)을 반영합니다. 아바타 캐싱은 다음을 유지합니다: chatimg 를 이벤트 사이에서도 유효하게 유지합니다. DOM이 관리자 색상을 숨기면 스크립트는 다음을 지웁니다: nameColor. TikFinity 선물 행은 다음도 설정합니다: contentimg 를 사용 가능한 선물 아이콘으로 설정합니다. 기본 DOM 및 TikFinity 연속 선물 업데이트에는 다음이 포함됩니다: meta.tiktokGiftStreakId, meta.tiktokGiftCount, 그리고 meta.tiktokGiftQuietMs 를 사용해 오버레이가 반복 업데이트를 합칠 수 있게 합니다. 기존 연속 선물 ID는 페이지 인스턴스별로 고유합니다. 선물 메타데이터에는 다음도 포함될 수 있습니다: tiktokGiftMessageId (원래 TikTok 메시지 ID), tiktokGiftSenderId, groupId, giftId, giftName, streakable, 그리고 repeatEnd. 플랫폼 고유 ID는 여러 캡처 창에 걸쳐 같은 선물을 식별합니다. 0이 아닌 그룹 ID와 발신자 및 선물 ID로 누적 연속 선물 업데이트를 식별합니다. SSApp WebSocket 캡처는 연속 선물이 확정된 뒤 같은 필드를 제공하며 다음을 포함합니다: count 는 호환성을 위해 유지됩니다. 선물을 전달할 때마다 후원 스위치를 확인하며 TikTok 후원을 끄면 다음이 제거됩니다: hasDonation 그리고 donoValue 를 유지하면서 선물 이벤트와 메타데이터도 보존합니다. 음성 읽기는 이 식별 정보로 업데이트를 합치고 최대 10분 동안 완료된 중복을 억제하며(크기가 제한된 캐시), TikTok 선물을 발신자, 수량, 선물 이름으로 읽습니다. 이전 페이로드는 기존 연속 선물 ID와 메시지 텍스트로 대체하며 선물 텍스트만으로 식별 정보를 추론하지 않습니다. TikTok 선물 음성은 UI 언어와 별개로 선택된 음성 읽기/음성 언어를 사용합니다. 알림 동사는 영어, 스페인어, 포르투갈어, 프랑스어, 독일어, 이탈리아어, 네덜란드어로 현지화됩니다. 다른 언어는 영어 동사 없이 발신자, 수량, 선물 이름만 사용합니다. 간단한 음성 읽기도 이 중립 형식을 유지합니다. 선물 이름은 플랫폼이 제공한 그대로 유지합니다. 선물 카탈로그나 채팅 메시지를 자동 번역하거나 방송 언어를 추론하지 않습니다.

이 연속 선물 업데이트에서 개수와 후원 라벨은 누적값입니다. 1, 2, 3은 선물 여섯 개가 아니라 세 개를 뜻합니다. 총액을 집계하는 소비자는 해당 연속 선물 ID에서 이미 본 최댓값보다 증가한 부분만 더해야 합니다. 표준 캡처는 기존 선물 클래스와 현재 이미지/개수 행을 지원하며 둘 다 다음을 유지합니다: event: "gift" 그리고 hasDonation. 가격을 알 수 없으면 표시를 위해 선물 개수/이름을 유지하고 선물당 코인 하나를 기준으로 USD를 추정합니다. 소스가 제공한 donoValue 가 우선합니다. 렌더링된 선물 메타데이터는 다음을 제공할 수 있습니다: coinsPerGift 또는 diamondsPerGift 를 선물 표나 기본값이 필요하기 전에 우선 사용합니다. 표준/TikFinity 코인 추정과 SSApp 기본 다이아몬드 추정은 각각 기존의 서로 다른 환산을 사용하며, 어느 쪽도 현금 지급액을 보장하지 않습니다.

Whatnot

구현: sources/whatnot.js

  • 채팅이 보이도록 Whatnot 라이브 방송 페이지를 여세요. 기존 WebSocket 캡처는 채팅, 경매/판매 알림, 결제 실패, 레이드, 후원, 빠른 시청자 업데이트를 제공합니다. 상품/경품 추첨 스냅샷은 여전히 방송 보기에 렌더링되는 DOM 섹션에 의존합니다.
  • 방송 이벤트 캡처 는 Whatnot 시스템 이벤트 및 경매/카탈로그 메타데이터 업데이트를 제어합니다. 입장 행에는 다음도 필요합니다: 'joined' 방송 이벤트 캡처; 시청자 수는 계속 시청자/하이프 스위치를 따릅니다.
이벤트 발생 시점 페이로드 참고 사항
viewer_update WebSocket 라이브 방송 업데이트의 시청자 수 변경이며 DOM 폴링을 대체 수단으로 사용합니다. meta 는 정수형 시청자 수입니다.
donation Whatnot WebSocket 팁 및 커뮤니티 부스트 기여 이벤트. hasDonation 에는 형식이 지정된 금액이 들어 있으며 WebSocket 전용 맥락은 다음 아래에 유지됩니다: meta.
raid 이전 활동 응답을 포함한 Whatnot WebSocket 레이드 이벤트. meta.numRaiders 는 Whatnot이 제공하는 경우 포함됩니다.
joined 정규화된 본문이 다음으로 시작하는 채팅 행: joined, 다음인 경우: 'joined' 방송 이벤트 캡처 가 활성화된 경우. 입장 알림에 문자열 이벤트 라벨을 사용합니다(불리언이 아님: true).
auction_update 라이브 하단 경매 상태(낙찰자/낙찰 중 텍스트, 제목, 입찰, 가격, 타이머, 판매 완료 상태)가 바뀔 때. WebSocket 경매 수명 주기 패킷으로 더 빨리 감지되는 경우가 많습니다. 메타데이터 전용 이벤트. 다음 없음: chatname/chatmessage; 데이터 위치: meta (예: meta.title, meta.bids, meta.price, meta.timer, meta.status).
commerce_update 카탈로그 섹션(상품, Surprise Sets, 예정된 경품 추첨)이 바뀔 때. WebSocket 경품 추첨/상품 수명 주기 패킷으로 더 빨리 감지되는 경우가 많습니다. 다음 아래에 섹션별 개수와 항목 배열이 있는 메타데이터 전용 스냅샷: meta.products, meta.surpriseSets, 그리고 meta.upcomingGiveaways.
auction_started, new_bid, auction_ended, product_sold 해당 실시간 WebSocket 알림이 도착합니다. 이는 기존 표시 스냅샷과 별개인 개별 이벤트입니다. platform/type: "whatnot", 일반 텍스트 chatname, userid 는 제공된 경우이며 상품 이름은 다음에: subtitle, 일반 텍스트 chatmessage 포함: textonly: true. 사용 가능한 식별자와 경매 세부 정보는 다음 아래에 있습니다: meta: productId, auctionId, orderId, transactionId, livestreamId, bidId, bids, auctionEndTime, 그리고 status. 선택적 price 는 기본 통화 단위이며 다음을 포함합니다: priceText 그리고 currency 는 제공된 경우.
payment_failed 실시간 결제 실패 WebSocket 알림이 도착합니다. 동일하게 사용 가능한 구매자, 상품, 식별자 필드에 다음을 포함합니다: meta.paymentStatus: "failed". 다음만 있는 경우: product.purchaserUserId 가 구매자를 식별하면 다음을 채웁니다: userid 를 판매/결제 이벤트에 포함하며 구매자 이름은 비어 있습니다. 다른 경매나 이전 경매에서 구매자를 추론하지 않습니다.
payment_succeeded 실시간 결제 성공 WebSocket 알림이 도착합니다. meta.paymentStatus: "succeeded", 해당 알림이 제공한 구매자, 상품, 주문 ID, 기타 허용된 필드와 함께 전달됩니다. 이는 별도의 결제 이벤트로 유지되며 다음을 다시 발생시키지 않습니다: purchase 또는 후원이 아닙니다. 이전 판매가 제공했더라도 누락된 필드는 비우거나 생략합니다.

경매/커머스 표시 업데이트는 계속 DOM 기반 스냅샷입니다. Event Flow에서 개별 WebSocket 이벤트를 일치시키려면 다음을 사용하세요: 이벤트 유형(고급), 선택: 사용자 지정 이벤트, 정확한 이름을 입력하세요. 라벨에는 다음을 사용할 수 있습니다: **{username}**\n{subtitle} 에 선택한 텍스트 가중치를 적용합니다. 조건은 다음을 비교할 수 있습니다: meta.paymentStatus 포함: failed. 다음 항목: 가져올 수 있는 Whatnot 라벨 예시 를 사용할 수 있습니다. 기존 방송 이벤트 캡처 설정은 계속 적용됩니다.

추가 선택 필드: meta.catalogProductId (패킷의 product.productId), meta.parentProductId (product.parentId), meta.transactionType (Whatnot 판매 유형, 변경 없음), 그리고 meta.placeOrderErrorReason (Whatnot이 제공한 주문/결제 오류 코드). 이 상품 참조는 카탈로그 또는 상위 등록 상품을 설명하며 주문 ID를 대체하지 않습니다. 재고 수량을 구매 수량으로 취급하지 않습니다.

결제 성공 자동화에는 다음을 설정하세요: 이벤트 유형(고급) 트리거를 다음으로 설정하세요: 사용자 지정 이벤트: payment_succeeded, 소스를 Whatnot으로 필터링하세요. 기존 조건과 템플릿은 해당 이벤트의 다음을 사용할 수 있습니다: userid, chatname, subtitle 그리고 meta.orderId 를 직접 사용합니다. 알림에 필요한 세부 정보가 있으면 기억된 구매가 필요하지 않습니다.

경매가 끝나거나 상품이 판매됨으로 표시되어도 결제 성공이 확인되는 것은 아닙니다. 이 알림은 결제된 다음 이벤트로 전송되지 않습니다: purchase 이벤트이며 후원 금액을 설정하지 않습니다. 성공 이벤트는 다음을 수신한 경우에만 전송됩니다: payment_succeeded 알림에만 반응하며 캡처는 결제 완료를 폴링하거나 판매에서 추론하지 않습니다. 다른 paymentStatus 값은 캡처된 패킷이 명시적으로 제공한 경우에만 전달합니다. 없는 식별자는 생략합니다. 상품 ID 하나에 여러 판매가 포함될 수 있으므로 제공된 주문/경매 ID로 알림을 연결하세요. 캡처는 구매를 기억하거나 결제 업데이트를 일치시키지 않습니다. 그러한 작업 흐름은 Event Flow에서 명시적으로 설정해야 합니다. 두 기존 캡처 브리지에서 짧은 시간에 들어온 중복 패킷은 억제합니다. 원본 주문/결제 객체는 전달하지 않습니다.

eBay Live

Monetization eBay 판매자 연결에는 설정된 SSN eBay 서비스와 판매자 OAuth 동의가 필요합니다. 아래의 eBay Live 캡처는 독립적입니다. 샌드박스 모드는 샌드박스 등록 상품 URL을 사용하고 구매자에 'eBay Sandbox buyer' 라벨을 붙이며 메시지 앞에 'Sandbox test purchase:'를 넣습니다. 샌드박스 구매는 동일한 구매 계약을 유지하며 테스트 중 활성화된 알림/채팅 동작을 실행할 수 있습니다. 구현된 결제 계약은 다음을 전송합니다: 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 캡처가 대체 수단으로 유지됩니다.
  • 방송 이벤트 캡처 는 메타데이터 스냅샷을 제어합니다(auction_update, commerce_update); 시청자 카운터는 여전히 시청자/하이프 스위치를 따릅니다.
이벤트 발생 시점 페이로드 참고 사항
viewer_update 활성 이벤트 시청자 수가 바뀔 때(머리글 수 또는 라이브 이벤트 표시의 대체값). meta 는 정수형 시청자 수입니다.
follower_update 판매자 통계 엔드포인트에서 판매자 팔로워 수가 반환될 때. meta 는 정수형 팔로워 수입니다. 소스는 판매자 엔드포인트를 60초마다 폴링하지만 엔드포인트는 최대 5분 동안 캐시된 값을 반환할 수 있습니다.
auction_update 활성 경매 메타데이터가 바뀔 때. 메타데이터 전용 이벤트. 네트워크 캡처는 다음을 설정합니다: meta.sourceMode 대상: network 를 사용하며 title, price, bidder, winner, bids, timer, endingAt을 제공합니다. meta.ebay 에는 eventId, listingId, GraphQL 등록 상품 레코드가 들어 있습니다(listing), 현재 공개 소켓 등록 상품(eventListing), 최신 경매 업데이트(update). 카테고리, 이미지, 통화, 수량, 케이스 브레이크 세부 정보, 경매 결과, 타이밍 필드를 유지해 플랫폼 고유 정보가 단순화되어 사라지지 않게 합니다. GraphQL 레코드는 가져온 시점의 스냅샷이며 소켓 등록 상품과 업데이트는 더 최신 실시간 상태를 담습니다. 초기/재연결 기록은 과거 낙찰로 전송하지 않고 현재 스냅샷에 반영합니다. 표시된 모든 등록 상품을 제거하면 다음이 발생합니다: status: "idle" 포함: cardCount: 0 를 전송해 경매를 지웁니다. DOM 대체 방식은 플레이어 카드 또는 이벤트 미리보기 필드를 유지합니다.
commerce_update 카탈로그/라이브 이벤트 스냅샷 섹션이 바뀔 때. 다음 아래의 메타데이터 전용 스냅샷: meta. 네트워크 모드에는 다음이 포함됩니다: eventId, navigation.viewerCount 그리고 playerCards 에는 현재 표시된 등록 상품을 담으며 각 항목은 같은 상세 구조를 가집니다: ebay 객체를 경매 스냅샷으로 사용합니다. 빈 카드 목록은 제거된 등록 상품을 지웁니다. DOM 대체 방식에는 다음도 포함될 수 있습니다: liveEvents, livePreview, currentEvent 그리고 upcomingEvents.
reaction eBay Live가 하트/반응 애니메이션을 렌더링할 때. 전용 반응 대상으로 직접 보냅니다. meta.reactionType 값: heart; eBay는 이 DOM 애니메이션에 사용자별 이름을 제공하지 않습니다.

eBay 메타데이터 이벤트는 다음을 의도적으로 생략합니다: chatname/chatmessage; 하위 오버레이는 다음에서 렌더링해야 합니다: data.event + data.meta 만.

Kick – 표준 DOM 캡처

구현: sources/kick.js

  • 프로필 이미지와 구독자 배지를 확인하려면 인증된 세션이 필요합니다.
  • 채팅 텍스트 일치와 배지를 통한 제한적 이벤트 감지입니다. 시청자 수는 스위치가 켜져 있으면 계속 작동합니다.
이벤트 발생 시점 페이로드 참고 사항
gift 스티커 이미지와 표시된 Kick 통화 금액으로 감지한 KICKs 선물. hasDonation 에 담는 값: N KICKs (1 KICK 는 하나일 때) 표시 금액을 알 수 있으면 사용합니다; contentimg 는 선물 이미지를 담습니다. 기존 메시지 텍스트는 보존됩니다.
reward 보상 사용('…을 사용했습니다'). chatmessage 에는 보상 사용 텍스트가 들어 있습니다.
true (불리언) 선물 또는 보상 패턴과 일치하지 않는 일반 시스템 알림. 사용: chatmessage 내용을 기준으로 표시를 결정합니다. 불리언 true 는 '시스템 이벤트 – 유형 알 수 없음'을 나타냅니다.
viewer_update 30초마다 Kick 채널 API를 폴링합니다(시청자 통계가 활성화된 경우에만). meta 정수형 시청자 수. 구독, 팔로우, 팁에는 아래 Kick 브리지를 사용하세요.

Kick – WebSocket/브리지

구현: sources/websocket/kick.js 및 다음 아래의 공유 도우미: providers/kick/core.js

  • Social Stream Kick 브리지를 통한 OAuth입니다. 현재 범위: user:read, channel:read, channel:write, channel:rewards:read, chat:write, events:subscribe, moderation:ban, moderation:chat_message:manage, 그리고 kicks:read. 토큰은 자동으로 갱신됩니다.
  • Kick 웹훅 프로비저닝에는 몇 분이 걸릴 수 있습니다. UI는 채널별 활성 구독을 나열합니다.
이벤트 발생 시점 페이로드 참고 사항
message 브리지 채팅 페이로드. meta.plainText 에는 일반 텍스트 메시지가 들어 있습니다(이모지는 포함 가능). 배지는 플랫폼 및 프로필 캐시를 합칩니다. 스레드 답장은 다음을 채웁니다: initial, reply, 그리고 meta.reply 는 답장 세부 정보나 캐시된 상위 메시지가 있는 경우.
reward channel.reward.redemption.updated, 보상 사용처럼 보이는 브리지 채팅/시스템 페이로드도 포함합니다. meta 에는 보상/사용 ID, 제목, 비용, 상태, 사용자 입력, 사용자가 포함됩니다.
new_subscriber channel.subscription.new. membership 는 구독자 역할로 지정됩니다; meta 에는 { subscriber, plan }이 포함됩니다.
resub channel.subscription.renewal. meta.duration (개월) 및 meta.plan 사용 가능; subtitle 는 연속 기간을 요약합니다.
subscription_gift channel.subscription.gifts. meta.totalGifted, meta.gifter; 배지가 없으면 💝 아이콘을 사용합니다.
donation 이벤트 유형 휴리스틱으로 감지한 후원/팁 이벤트. KICKs 선물은 다음을 사용합니다: gift 아래. hasDonation 는 형식이 지정된 금액을 담습니다; meta 에는 { amount, currency, supporter, message, giftName }이 들어 있습니다.
gift kicks.gifted (KICKs 선물), DOM 스크래퍼와 일치합니다. hasDonation 에 담는 값: N KICKs (1 KICK 는 하나일 때); contentimg 는 사용 가능한 경우 선물 이미지를 담습니다. 구조화된 선물 세부 정보는 다음 아래에 유지됩니다: meta.
raid 다음과 같은 기존 호스트 형태 소켓 페이로드의 호환 처리: App\Events\StreamHostEvent. Kick의 현재 공식 이벤트 목록에는 레이드/호스트 구독이 없습니다. 호환되는 레거시 페이로드가 들어오면 표준 이벤트로 매핑됩니다: raid; 현재 Kick 작업 흐름에서 이 기능에 의존하지 마세요.
new_follower channel.followed. 팔로워 아이콘은 프로필 캐시에서 가져옵니다; follower_update 는 Kick이 누적 합계를 제공할 때 발생합니다.
follower_update 브리지가 웹훅 페이로드에 팔로워 수를 제공합니다. meta 정수형 합계이며 대시보드의 팔로워 목표에 사용합니다.
stream_online / stream_offline livestream.status.updated. meta 에는 Kick의 원본 상태 본문(is_live, title 등)이 들어 있습니다.
viewer_update livestream.status.updated 는 Kick이 동시 시청자 합계를 포함하는 경우. meta 정수형 시청자 수. 전송: 0 를 오프라인 상태에서 보내 오래된 카운터를 지웁니다.
user_banned moderation.banned 를 브리지/웹훅 또는 Kick 채팅 소켓 차단 이벤트에서 가져옵니다. 채팅 관리 위젯용 메타데이터 전용 이벤트. meta 에는 사용자 이름/표시 이름, 사용자 ID, 아바타/프로필 URL, 관리자, 사유, 차단/타임아웃 기간, 영구 여부가 포함됩니다.

프로필 조회에는 다음을 사용합니다: profileCache; mapBadges 는 Kick 배지 자산을 사용 가능한 캐시된 SVG와 합칩니다. Kick이 KICKs로 후원을 보고하면 브리지는 다음으로 변환합니다: hasDonation 추가: meta.amount 포함: currency 는 'KICKs'로 대체됩니다. 채팅 페이로드에는 다음이 포함됩니다: meta.messageId 는 브리지가 플랫폼 고유 Kick 메시지 ID를 제공할 때 사용하며 삭제 동기화가 올바른 메시지를 대상으로 하게 합니다. 답장 페이로드에는 다음이 포함됩니다: meta.reply 및 상위 messageId, author, 그리고 text 는 알려진 경우입니다. 원래 메시지가 캐시되지 않았어도 제공된 답장 세부 정보는 사용할 수 있습니다. 캐시된 맥락 없이 ID만 있는 답장은 표시되는 인용문이 없을 수 있습니다.

Kick WebSocket: 이벤트 빠른 참고

data.event 상황
new_follower사용자가 채널을 팔로우함
new_subscriber새 구독
resub구독 갱신
subscription_gift선물된 구독
reward채널 보상 사용 또는 보상형 채팅/시스템 메시지
donation팁/후원 이벤트
giftKICKs 선물 이벤트
raid호환성 전용 레거시 호스트/레이드 입력이며 현재 공식 Kick 구독 이벤트가 아님
follower_update전체 팔로워 수
stream_online방송 시작
stream_offline방송 종료
user_banned사용자가 차단되거나 타임아웃됨

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 토큰을 수동으로 제공할 수도 있습니다.
  • 다음과 같은 평면 구조의 VPZone 프레임: type: "msg" 를 표준 채팅 페이로드로 정규화합니다.
  • 플랫폼 측 delete_message / clear_chat 프레임은 도크에서 일치하는 행을 제거합니다. 선택적 스위치로 도크 삭제와 차단을 VPZone에 다시 동기화합니다(채널 소유자만).
  • 채널 소유자에게는 라이브 방송 제목과 카테고리를 업데이트하는 페이지 내부 Stream Info 패널이 제공됩니다(Twitch 소스 페이지와 같은 방식).
이벤트 발생 시점 페이로드 참고 사항
message VPZone msg, message, new_message, 또는 chat_message WebSocket 프레임. chatname 의 출처: username; chatmessage 의 출처: body; 구독자/소유자/관리자/VIP 플래그는 다음으로 복사됩니다: chatbadges, 최상위 역할 플래그, meta. 플랫폼 고유 ID는 다음을 채웁니다: data.id 그리고 meta.messageId.
viewer_update VPZone presence 프레임, 포함: count 또는 같은 의미의 시청자 필드. meta 는 실시간 시청자 수 정수이며 다음 집계에 반영됩니다: viewer_updates.
new_subscriber VPZone subscribe / subscription 프레임. membership 는 구독 플래그가 있으면 Subscriber로 설정됩니다.
subscription_gift VPZone gift / gift_subscription 프레임. Twitch, Kick, Rumble, Velora와 같은 구독 선물 이벤트 이름을 사용합니다. subtitle 는 선물 개수를 담습니다(x5) 또는 수신자.
message + hasDonation VPZone system 프레임, 포함: metadata.kind: "pixels_cheer" (Pixels 팁). 후원 값이 있는 채팅 행; hasDonation 는 금액 라벨입니다(예: 100 Pixels), meta.pixels 정수값. event 는 비어 있으며 이 팁은 다음으로 감지하세요: hasDonation. Kick 브리지 후원 이벤트는 대신 다음을 사용합니다: event: "donation".
message 답장 VPZone msg 프레임에 포함: metadata.reply_to (메시지 ID, 작성자, 발췌문 — 서버에서 비정규화). Kick 답장처럼 렌더링됩니다: initial 에는 '작성자: 발췌문' 라벨이 들어 있으며, reply 원본 답장 텍스트, meta.reply 구조화된 대상입니다. 다음을 따릅니다: '답장 대상'을 제외합니다: 설정.
raid VPZone raid 프레임, 포함: metadata.kind: "incoming". 나가는 레이드 프레임은 건너뜁니다; meta.viewers 는 제공되는 경우 레이드 규모를 담습니다.
shoutout VPZone shoutout 프레임(!so 명령). meta.targetUser 는 홍보 대상 채널의 이름입니다.
reward VPZone system 프레임, 포함: metadata.kind: "channel_points_redeem". 채널 포인트 보상 사용이며 Twitch 보상과 같은 이벤트 이름을 사용합니다.
stream_online / stream_offline VPZone system 프레임, 포함: metadata.kind: "stream_started" / "stream_ended". 채널 이름에 귀속됩니다(프레임에는 행위자 정보가 없음).
new_follower VPZone follow 프레임. 표준 팔로워 이벤트 구조로 매핑됩니다.
joined 다음 조건에서 VPZone 입장/접속형 WebSocket 이벤트: 'joined' 방송 이벤트 캡처 가 활성화된 경우. VPZone 행위자 메타데이터를 다음 아래에 포함한 채팅형 시스템 이벤트로 매핑됩니다: meta.

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 필드를 색상 지원 도크에서 사용합니다.
  • 웹사이트에서 메시지를 수정하면 일치하는 도크 행을 교체합니다. 삭제, 음소거, 차단은 플랫폼 고유 ID 또는 사용자 이름으로 일치하는 행을 제거합니다.
  • 별도 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 토큰 교환은 다음과 같은 도우미 엔드포인트에 사용됩니다: https://api.joystick.tv/api/users/stream-settings.
  • 별도 봇 자격 증명 소스는 다음을 전송하지 않습니다: viewer_update. 로그인한 웹사이트 소스는 아래 설명처럼 페이지 소켓이 시청자 수를 제공하면 이를 전송합니다.
이벤트 발생 시점 페이로드 참고 사항
message Joystick ChatMessage, BotMessage, new_message, bot_message, event_bot_message, pvp_message, 귓속말. 일반 채팅에는 다음이 없습니다: event. 플랫폼 고유 ID는 최상위 필드에 들어갑니다: id 그리고 meta.messageId; 역할과 비공개 상태는 기존 최상위/배지 필드를 사용합니다.
new_follower Joystick StreamEvent 및 유형 Followed. 표준 팔로워 구조를 사용하며 Joystick의 일치하는 봇 행과 중복 제거합니다. 선택적 meta.userId/meta.followedAt 는 Joystick이 제공하는 경우에만 포함됩니다.
new_subscriber / subscription_gift Joystick 이벤트 유형 NewSubscription / GiftedSubscription. Kick 호환 구독 메타데이터 키를 사용합니다: eventType, subscriber, gifter, totalGifted, duration, 그리고 plan.
donation Joystick StreamEvent 유형 Tipped / TipMenu. hasDonation 는 사용 가능한 경우 공통 USD 환산을 위한 토큰 금액과 단위를 담으며 일치하는 Joystick 봇 행과 중복 제거합니다. meta 는 기존 Kick 후원 이벤트 키를 사용합니다: eventType, supporter, amount, currency, message, giftName, giftType, 그리고 tier.
stream_online / stream_offline Joystick StreamEvent 다음과 같은 유형: Started, StreamResuming, Ended, StreamEnding. 전송 방식을 고려하는 온라인/오프라인 자동화에 사용합니다.
user_enter / user_leave Joystick UserPresence 유형 enter_stream / leave_stream. 입장 알림은 이벤트 메시지로 전송되며 이벤트 숨기기 설정으로 숨길 수 있습니다. 이벤트 숨기기는 후원이 아닌 방송 이벤트도 숨깁니다.
viewer_update 로그인된 웹사이트 소스는 다음을 받습니다: ViewerCountUpdated 경로: EventLogChannel. 일반 정수를 사용합니다: meta, YouTube, Twitch, Kick과 일치합니다. 시청자 수 또는 하이프 모드가 활성화된 경우에만 전송됩니다. 별도 봇 자격 증명 소스는 여전히 시청자 수를 받지 않습니다.
follower_update / subscriber_update Joystick 팔로워/구독자 수 업데이트 이벤트. 일반 정수를 사용합니다: meta, Twitch 카운터 계약과 일치합니다.
무시되는 내부 알림 ChatMessageReceived, 장치 상태, 팁 목표/PvP/서브마라톤 상태처럼 매핑되지 않은 위젯 새로고침. 이는 Social Stream 이벤트가 아닌 전송 또는 페이지 상태 알림입니다. 임의로 만든 다음 이벤트로 변환하지 않습니다: snake_case 이벤트 이름을 만들지 않습니다. 실제 ChatChannel/new_message 행은 유일한 채팅 페이로드로 유지됩니다.

XP Sync

구현: sources/xpsync.js

  • 채팅 행은 표준 페이로드 필드와 다음을 사용합니다: type: "xpsync", 작성자, 메시지, 아바타, 이미지 및 인라인 SVG 배지, 이름 색상, 멤버십, 관리자/회원/봇 플래그, 플랫폼 고유 메시지 UUID를 다음으로 포함합니다: id 는 사용 가능한 경우.
  • 답장은 YouTube, Twitch, Kick DOM 소스 규칙을 따릅니다. 답장 접두사가 비활성화되지 않았다면, initial 에는 답장 대상 사용자가 들어 있으며, reply 는 접두사가 없는 메시지를 보존하며 chatmessage 에는 표시되는 답장 접두사가 들어갑니다.
  • XPSync가 일반 채팅 행 클래스나 메시지 ID 없이 렌더링하더라도 Sparks 강조 행은 캡처합니다. 표시된 금액은 다음을 통해 제공됩니다: hasDonation 형식: N Sparks.
  • 이벤트 캡처가 활성화되면 '방금 팔로우함' 또는 '채널을 팔로우함'을 포함한 행은 다음을 전송합니다: event: "new_follower".
  • 시청자 수가 활성화되면 상시 채팅 도크는 다음을 전송합니다: event: "viewer_update" 를 XPSync 페이지가 이미 로드한 라이브 동영상 수에서 가져오고 XPSync 라이브 페이지 업데이트로 새로고침합니다. 별도 SSN 자격 증명은 필요하지 않습니다.

Instagram – 실시간 REST 캡처 및 뉴스 받은편지함

구현: sources/instagram.js 그리고 sources/instagramlive.js (동일한 사본)

  • 라이브 페이지에서(/<user>/live/?broadcast_id=...), 실시간 채팅은 세션 쿠키를 사용해 동일 출처에서 폴링하는 Instagram 자체 웹 API에서 가져옵니다: 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/ 페이지와 스토리 뷰어의 라이브. 소유권은 프로필별로 확인하며 조회 실패 후 다시 시도합니다). 본인의 라이브와 모든 비라이브 페이지에서는 전송됩니다. 활성 Instagram 탭 하나가 한 번에 계정 받은편지함을 폴링하며 로그인된 경우에만 폴링합니다.
이벤트 발생 시점 페이로드 참고 사항
message (실시간) 다음의 새 항목: get_comment 응답(comments[]/system_comments[]), 또는 REST를 사용할 수 없으면 새 DOM 채팅 행을 사용합니다. 표준 채팅 페이로드, type: "instagramlive". REST는 정확한 다음을 제공합니다: user.username, user.profile_pic_url, 고유한 pk 를 중복 제거에 사용합니다.
viewer_update heartbeat_and_get_viewer_count 는 변경된 다음을 보고합니다: viewer_count, 시청자 수 캡처 또는 하이프 모드가 활성화된 경우. meta 정수형 시청자 수. 다음 조건에서 폴링을 중지합니다: broadcast_status 는 더 이상 다음이 아닙니다: "live".
stream_online / stream_offline stream_online 는 REST 방송 세션이 시작될 때 한 번 발생합니다; stream_offline 는 하트비트가 라이브가 아닌 다음을 보고할 때 발생합니다: broadcast_status (시청자 수 캡처 또는 하이프 모드 필요). Twitch와 Joystick에서 사용하는 공통 방송 상태 용어에 맞는 메타데이터 전용 이벤트.
new_follower 팔로우 유형의 뉴스 받은편지함 항목: notif_name (또는 story_type 12)가 표시됩니다. chatname 는 새 팔로워이며, chatimg 해당 사용자의 프로필 이미지, chatmessage 받은편지함 텍스트(예: 'x님이 회원님을 팔로우하기 시작했습니다.').
follow_request 다음 항목: private_user_follow_request 항목이 나타날 때(비공개 계정은 즉시 팔로우 대신 요청을 받음). 다음과 같은 구조: new_follower, 자동화가 요청을 승인하거나 다르게 인사할 수 있도록 구분합니다.
liked 좋아요 유형의 뉴스 받은편지함 항목: notif_name (포함: comment_like)가 표시됩니다. TikTok/MeetMe와 같은 좋아요 용어를 사용합니다. chatname 는 행위자이며, chatmessage 받은편지함 텍스트(예: 'x님이 사진을 좋아합니다.').
message (자신의 게시물에 달린 댓글) 댓글 유형의 뉴스 받은편지함 항목: notif_name 가 나타납니다. 일반 채팅 행(event: false), type: "instagram"; chatmessage 는 댓글 발췌문을 포함한 받은편지함 텍스트를 담습니다.
notification 기타 뉴스 받은편지함 항목 유형(멘션, 태그, 쇼핑 등). 일반 포괄 유형; meta.notifName 그리고 meta.storyType 는 원본 항목 분류를 보존합니다.

Facebook Live

구현: sources/facebook.js (DOM 스크래핑) 및 다음의 선택적 Graph API 브리지: sources/websocket/facebook.html

  • DOM 캡처는 렌더링된 Facebook 댓글을 읽고, 관리되는 페이지의 Graph API 브리지는 동영상 댓글을 읽습니다. 둘 다 다음을 사용합니다: type: "facebook", 표준 채팅 필드를 사용하며 다음은 없습니다: event 를 일반 댓글에 사용합니다. API 브리지는 선택적 다음도 포함합니다: platform: "facebook".
  • API 브리지는 다음을 사용합니다: userid 에는 사용 가능한 경우 작성자 ID를, timestamp 에는 Unix 밀리초 단위의 유효한 생성 시각을, 그리고 contentimg 에는 API가 제공한 HTTP(S) 첨부 이미지를 사용합니다. 이미지만 있는 댓글은 다음이 비어 있을 수 있습니다: chatmessage. textonly 는 메시지 본문에만 적용됩니다. true이면 원본 텍스트, false이면 이스케이프된 HTML입니다.
  • API 댓글 맥락에는 다음을 사용합니다: meta.messageId (플랫폼 고유 댓글 ID), meta.permalink, meta.videoId, 그리고 meta.pageId. 이전 API 빌드는 다음을 사용했습니다: meta.commentId, 중복된 작성자/시간 필드는 다음 아래에: meta, 원본 첨부 파일도 그곳에 전달했습니다. 새 빌드는 표준 작성자/시간/미디어 필드를 대신 사용합니다. 이 변경으로 삭제 동기화 지원이 추가되지는 않습니다.
  • 시청자 수는 활성화되었을 때만 새로고침됩니다. API 브리지는 동시 시청을 읽습니다: live_views; 누적 동영상 조회 수로 대체하거나 알 수 없는 수를 임의로 0으로 만들지 않습니다. API 캡처는 일반 댓글 텍스트에서 Stars, 멤버십, 강조 표시, 답장을 추론하지 않습니다.
  • Facebook이 다음을 화면에 표시할 때 렌더링된 실시간 채팅 DOM에서 Stars를 캡처합니다: N sent 표식을 사용하며 다음을 채웁니다: hasDonation 그리고 donoValue 를 Stars 100개 = $1 USD로 환산하며 다음은 설정하지 않습니다: data.event.
  • 테스트하려면 다음을 추가하세요: ssnreplay=1 를 Facebook Live URL에 추가하면 새로고침 후 이미 보이는 채팅 행도 처리합니다.
이벤트 발생 시점 페이로드 참고 사항
viewer_update DOM은 실시간 시청자 배지를 폴링하며 API 브리지는 활성화된 경우 동시 실시간 시청자 수를 폴링합니다. meta 다른 소스와 같은 정수형 시청자 수입니다. 누락되거나 파싱할 수 없는 수는 건너뛰며 실제 0은 유효합니다.
hasDonation 실시간 채팅 DOM에 렌더링된 Facebook Stars. 표준 채팅 페이로드; hasDonation 는 다음과 같은 화면에 표시된 Stars 금액을 담습니다: 100 Stars, 그리고 donoValue 는 USD 값을 담습니다. Stars는 다음을 설정하지 않습니다: data.event.
highlightColor Facebook이 다음을 화면에 렌더링합니다: HIGHLIGHTED 라벨. 일반 채팅 필드와 다음을 사용합니다: highlightColor; 다음 없음: data.event 가 설정됩니다. Stars는 여전히 다음을 사용합니다: hasDonation.

Online Church

구현: sources/onlinechurch.js

  • 공개 채팅 및 미디어 머리글의 DOM 스크래핑에 의존합니다.
  • 시청자 수는 다음 조건에서만 새로고침됩니다: 시청자 수 표시 또는 하이프 모드가 활성화된 경우.
이벤트 발생 시점 페이로드 참고 사항
message 새 항목이 다음 아래에 나타납니다: #publicchat. 발신자 이름, 아바타, 배지 및 DOM에 있는 경우 선택적 멤버십 라벨을 포함한 표준 채팅 페이로드.
viewer_update 미디어 머리글의 실시간 접속자 배지를 10초마다 폴링합니다. meta 정수형 시청자 수. 전송값: 0 를 배지가 없거나 읽을 수 없을 때 보내 오래된 카운터를 지웁니다.

SharePlay.tv

구현: sources/shareplay.js

  • SharePlay 채널 페이지의 실시간 채팅 패널 DOM 스크래핑에 의존합니다.
  • 스크래퍼 연결 후 새로 삽입된 채팅 행과 카드만 전송합니다. 기존 기록은 의도적으로 무시합니다.
이벤트 발생 시점 페이로드 참고 사항
message 기본 채팅 피드 안에 새 채팅 행이 나타납니다. 작성자, 아바타, 배지 이미지, HTML이 유지된 이모티콘이 있는 표준 채팅 페이로드. 스레드 답장은 다음도 채웁니다: initial, reply, 그리고 meta.reply 는 상위 행이 아직 있는 경우.
raid SharePlay가 실시간 채팅 피드에 Blitz 카드를 삽입합니다. 표준 레이드 이벤트로 매핑됩니다. meta.cardType 값: "blitz", 선택적 meta.fromLogin 그리고 meta.viewers 는 카드 텍스트가 제공하는 경우.
shoutout SharePlay가 채팅 피드에 홍보/팔로우 카드를 삽입합니다. 다음으로 전송됩니다: data.event = "shoutout". 카드 배너 이미지는 다음으로 전달됩니다: contentimg, 한편 meta.cardType 그리고 meta.action 는 카드 라벨/버튼 텍스트를 보존합니다.
viewer_update 머리글에 표시된 시청자 배지를 10초마다 폴링합니다. meta 정수형 시청자 수이며 다음 조건에서만 전송합니다: 시청자 수 표시 또는 하이프 모드가 활성화된 경우이며 다음을 보냅니다: 0 를 배지를 읽을 수 없게 되면 보내 오래된 카운터를 지웁니다.

Streamplace

구현: sources/streamplace.js

  • Streamplace의 React로 렌더링된 라이브 페이지를 읽으며 연결할 때 표시된 기존 채팅 기록은 건너뜁니다.
  • 다음과 같은 릴레이형 메시지: Name (Discord): message 를 릴레이된 발신자 이름으로 정규화합니다.
이벤트 발생 시점 페이로드 참고 사항
message 연결 후 새 Streamplace 채팅 행이 나타납니다. 표준 채팅 페이로드, 포함: nameColor, chatbadges, HTML이 유지된 링크, 답장 필드 initial, reply, 그리고 meta.reply 는 표시되는 경우.
viewer_update 시청자 수 캡처 또는 하이프 모드가 활성화된 동안 머리글 시청자 배지가 바뀝니다. meta 정수형 시청자 수.

WorldsWave

구현: sources/worldswave.js

  • WorldsWave 라이브 페이지와 다음 같은 채팅 전용 URL을 지원합니다: https://worldswave.com/kn_livecmd.php?cmd=viewStream&streamId=STREAM_ID&chatonly=1.
  • 안정적인 다음을 사용합니다: data-ww-*/ww-chat-* 마크업을 사용 가능한 경우 사용하며 채팅 전용 페이지와 이전 레이아웃에는 기존 kontackt 선택기를 유지합니다.
  • 캡처가 연결될 때 기존 채팅 기록은 건너뜁니다. 새 메시지로 테스트하세요.
  • 시청자 수에 필요한 항목: 시청자 수 표시 또는 하이프 모드가 필요합니다. 전용 선물/팁 이벤트와 답장은 구현되지 않았습니다. 렌더링된 행은 다음을 통해 후원 라벨을 제공할 수도 있습니다: data-ww-donation.
이벤트 발생 시점 페이로드 참고 사항
message 새로 렌더링된 WorldsWave 채팅 행이 나타납니다. 표준 채팅 페이로드, 포함: type: "worldswave", 발신자 이름, 아바타, 선택적 사용자 ID, 이름 색상, 배지, 관리자 상태, 멤버십, 후원 값, 첨부 파일, 채널 식별 정보. 안정적인 WorldsWave 메시지 ID는 다음으로 제공됩니다: meta.messageId 를 사용하며 동시에 열린 미리보기/전체 채팅 패널 사이에서 중복을 제거합니다. 텍스트 전용 모드가 꺼져 있어도 인라인 메시지 이미지는 안전하게 정리됩니다.
viewer_update 시청자 수 캡처 또는 하이프 모드가 활성화된 동안 표시된 실시간 시청자 합계가 바뀝니다. meta 는 정수형 시청자 수입니다. 안정적인 data-ww-viewer-count 값을 우선합니다. 다음 같은 이전 축약값은: 1.2K 를 대체 수단으로 정규화합니다.

FLEX TV

구현: sources/flextv.js

  • 다음에서 렌더링된 채팅 패널을 읽습니다: https://www.flextv.co.kr/channels/*/live 페이지.
  • 채팅 패널이 보여야 합니다. 소스가 연결될 때 기존 채팅 기록을 건너뛰므로 새 채팅 행으로 테스트하세요.
  • 이 소스에는 아직 시청자 수, 후원 또는 답장 경로가 문서화되어 있지 않습니다.
이벤트 발생 시점 페이로드 참고 사항
message 새로 표시된 FLEX TV .chat-item 행이 실시간 채팅 피드에 나타납니다. 표준 채팅 페이로드, 포함: type: "flextv", chatname, chatmessage, nameColor, 배지 이미지는 다음에: chatbadges, FLEX 회원 세부 정보는 다음 아래에: meta 는 다음에서 제공되는 경우: data-member.

Seal Team Sloth

구현: sources/sealteamsloth.js

  • 다음에서 렌더링된 팝아웃 채팅을 읽습니다: https://sealteamsloth.com/popout-chat/* 페이지.
  • 시청자 수에 필요한 항목: 시청자 수 표시 또는 하이프 모드.
이벤트 발생 시점 페이로드 참고 사항
message 새로 렌더링된 Seal Team Sloth 채팅 행이 나타납니다. 표준 채팅 페이로드, 포함: type: "sealteamsloth", 발신자 이름, 아바타, 메시지 내용.
viewer_update 시청자 수 캡처 또는 하이프 모드가 활성화된 동안 표시된 실시간 시청자 합계가 바뀝니다. meta 는 정수형 시청자 수이며 다음과 같은 축약값은: 1.2K 를 정규화합니다.

MeetMe - DOM 및 WebSocket 캡처

구현: sources/meetme.js

  • 다음에서 MeetMe의 렌더링된 실시간 채팅 DOM을 읽습니다: 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 머리글 수를 우선하며 DOM 수를 사용할 수 없을 때만 WebSocket 합계로 대체합니다. 수가 바뀌면 전송하고 다음 조건에서 약 30초마다 최신 수를 다시 보냅니다: showviewercount/hypemode 가 활성화된 경우입니다. 팔로워 합계는 변경되었을 때만 전송하며 대략 60초 간격으로 제한합니다.
이벤트 발생 시점 페이로드 참고 사항
message 신규 SNSChatMessage WebSocket 프레임이 도착하거나 새로운 ChatMessage_* DOM 행은 다음 아래에 나타납니다: ChatHistoryContainer_*. 발신자 이름, 아바타, 메시지 HTML/텍스트, 배지 이미지/텍스트가 있는 표준 채팅 페이로드. DOM 행 세부 정보는 평면 구조의 meta 키, 포함: messageId, roomId, level, levelColor, badgeLabels, badgeSrcs, badgeClasses, isBouncer, isTopStreamer, isBestOfTheWeek, rank, 그리고 rowClassName. WebSocket 페이로드는 다음을 설정합니다: meta.source = "websocket".
joined / rejoined / left SNSChatParticipant WebSocket 생성, 업데이트 또는 삭제 프레임이 도착하거나 MeetMe가 DOM에서 다음을 렌더링할 때: join-cell 행입니다. 입장/재입장 알림에는 다음이 필요합니다: 'joined' 방송 이벤트 캡처. MeetMe가 제공하는 경우 행위자 이름/아바타를 포함한 채팅형 시스템 알림을 전송합니다. meta.isNewViewer, meta.viewerLevelId, meta.isBouncer, 그리고 meta.isSubscriber 는 참여자 상태를 보존합니다.
new_follower MeetMe가 다음과 같은 DOM 즐겨찾기/팔로우 행을 렌더링합니다: Favorited. 공통 팔로워 이벤트 용어를 사용합니다. chatname 는 행위자이며, chatimg 는 사용 가능한 경우 감지된 프로필 사진이며, 평면 구조의 meta.favoriteText/meta.targetName 는 원래 행의 세부 정보를 보존합니다.
gift SNSGiftMessage WebSocket 프레임이 도착하거나 MeetMe가 채팅 행에 선물 이미지를 렌더링할 때. hasDonation 는 표시된 선물 라벨 또는 다이아몬드 값을 담으며, contentimg 는 제공되는 경우 선물 이미지를 담으며, 다음과 같은 평면 키는: meta.giftName, meta.giftCount, meta.amount, 그리고 meta.currency 는 구조화된 세부 정보를 보존합니다. 다음 항목: gift 이벤트는 실제 선물 프레임/행에만 사용합니다. 후원 렌더링은 계속 다음을 기준으로 해야 합니다: hasDonation.
donation SNSDiamond WebSocket 프레임이 다이아몬드 활동을 제공할 때. 전용 다이아몬드 프레임은 후원 이벤트로 취급합니다. hasDonation 는 공통 USD 환산을 위해 다이아몬드 형식으로 표시되며, meta.amount/meta.currency 는 자동화를 위해 평면 구조로 유지됩니다.
liked / reaction SNSLike WebSocket 프레임이 도착할 때. 행위자별 좋아요는 같은 다음을 사용합니다: liked 용어와 중앙화된 백그라운드 라우팅을 TikTok과 동일하게 사용합니다. 집계/익명 좋아요 합계는 반응 대상으로만 다음 형식으로 보냅니다: reaction, 평면 구조의 meta.reactionType, meta.totalLikes, 그리고 meta.subscriberLikes. 구분 기준은 익명 여부가 아니라 이벤트의 의미입니다: capturelikeevent 는 개별 다음 항목만 제어합니다: liked/like 이벤트.
follower_update SNSVideo WebSocket 메타데이터가 팔로워 합계를 제공할 때. meta 는 공통 카운터 이벤트 규칙에 맞는 팔로워 수 정수입니다.
guest_update SNSVideoGuestBroadcast 생성/업데이트 프레임이 도착할 때. 게스트/실시간 공동 진행자 상태용 메타데이터 전용 이벤트. 평면 구조의 meta 키에는 다음이 포함됩니다: status, position, totalGuests, isMuted, guestBroadcastId, videoViewerId, 그리고 broadcastId.
viewer_update 표시된 머리글 시청자 배지가 바뀌거나, SNSVideo WebSocket 메타데이터는 배지를 사용할 수 없을 때 시청자 합계를 제공합니다. 활성화된 동안 변경되지 않은 합계도 약 30초마다 반복합니다. meta 정수형 시청자 수이며 시청자 수 캡처 또는 하이프 모드가 활성화된 경우에만 전송합니다.

Velora

구현: sources/velora.js 그리고 sources/websocket/velora.js

  • 표준 모드는 표시된 채팅 DOM을 읽고 WebSocket 모드는 OAuth와 함께 Velora Events API를 사용합니다.
  • 지원되는 표준 모드 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.
  • DOM 또는 Events API가 제공하면 Volts 및 채널 포인트형 카드를 이벤트 페이로드로 전송합니다.
이벤트 발생 시점 페이로드 참고 사항
message 새 Velora 채팅 행이 나타나거나 Events API 채팅 메시지가 도착합니다. 텍스트 전용 모드가 아닐 때 배지, 작성자 색상, 링크, 이모티콘이 유지되는 표준 채팅 페이로드.
volts Velora Volts 카드 또는 channel.volts Events API 페이로드가 도착합니다. hasDonation 는 표시된 Volts 금액을 담습니다. DOM 캡처에는 다음이 포함됩니다: meta.source = "dom".
channel_points Velora 채널 포인트/보상 사용 카드 또는 channel.channel_points_redemption Events API 페이로드가 도착합니다. chatmessage 는 보상 사용 메시지 또는 보상 제목을 담습니다; meta.rewardTitle 는 사용 가능한 경우 보상을 식별합니다.
subscription 표시된 Velora 활동 행에는 사용자가 채널 회원/구독자가 되었다는 내용이 있습니다. membership 는 표시된 멤버십 라벨을 담습니다.
viewer_update 시청자 수 캡처 또는 하이프 모드가 활성화된 동안 표시된 시청자 수가 바뀝니다. meta 정수형 시청자 수.

Parti - 프로필 / 팝아웃 채팅 캡처

구현: sources/parti.js

  • 다음 같은 프로필 URL을 지원합니다: https://parti.com/USERNAME 및 다음 같은 팝아웃 URL: https://parti.com/popout-chat?id=USER_ID.
  • 시청자 수 캡처 또는 하이프 모드가 활성화되면 Parti 라이브 방송 하트비트 엔드포인트를 사용합니다.
이벤트 발생 시점 페이로드 참고 사항
message 프로필 또는 팝아웃 채팅 스트림에 Parti 채팅 행이 표시됩니다. 표준 채팅 페이로드; nameColor 는 Parti가 렌더링한 작성자 색상을 보존하며 chatmessage 는 텍스트 전용 모드가 아니면 인라인 콘텐츠를 보존합니다.
donation 표시된 Parti 팁 행에는 사용자가 특정 금액을 후원했다는 내용이 있습니다. hasDonation 는 표시된 금액을 담으며, meta.amount/meta.currency 는 파싱할 수 있으면 채워집니다, meta.amountText 는 원본 금액 텍스트를 보존하며 donoValue 는 USD 팁에 설정됩니다.
viewer_update Parti 하트비트가 실시간 시청자 수를 반환합니다. meta 는 정수형 시청자 수입니다. 수가 부풀려지지 않도록 페이지는 소스 창마다 하트비트 토큰 하나를 재사용합니다.

CHZZK - 팝아웃 채팅 캡처

구현: sources/chzzk.js

  • 지원: https://chzzk.naver.com/live/*/chat 그리고 https://chzzk.naver.com/iframe/live/*/chat.
  • 시청자 수 캡처 또는 하이프 모드가 활성화되면 CHZZK 라이브 상태 폴링 엔드포인트를 사용합니다.
이벤트 발생 시점 페이로드 참고 사항
message 팝아웃 채팅 스트림에 CHZZK 채팅 행이 표시됩니다. 표준 채팅 페이로드, 포함: type: "chzzk", nameColor, 배지 이미지 URL은 다음에: chatbadges, 렌더링된 이모티콘은 다음에: chatmessage 단, 텍스트 전용 모드에서는 제외합니다.
채팅, 포함: hasDonation 채팅에 CHZZK 치즈 후원 행이 표시됩니다. hasDonation 는 표시된 치즈 금액을 담습니다. 이 행은 다음을 설정하지 않습니다: data.event.
viewer_update 라이브 상태 폴링이 시청자 수를 반환합니다. meta 는 정수형 시청자 수입니다.

Rumble - 표준 DOM 캡처

구현: sources/rumble.js

  • 다음을 위해 인증된 세션 쿠키가 필요합니다: service.php 시청자 API가 응답할 때.
  • 렌더링된 Rant 행은 다음을 제공합니다: hasDonation; 들어오는 레이드 카드는 다음을 제공합니다: event: "raid". 이 DOM 소스는 API 브리지의 구독자/팔로워 이벤트 피드를 전송하지 않습니다.
이벤트 발생 시점 페이로드 참고 사항
message 페이지 또는 팝업 채팅에 Rumble 채팅 행이 표시됩니다. 표준 채팅 페이로드; chatmessage 는 텍스트 전용 모드가 아니면 페이지가 렌더링한 Rumble 이모티콘 이미지 HTML을 보존합니다.
viewer_update Rumble의 다음을 호출합니다: video.watching-now 서비스를 30초마다 폴링합니다. meta 정수형 시청자 수. 사용: credentials: 'include' 를 사용해 세션 쿠키를 재사용합니다.
채팅, 포함: hasDonation표시된 Rant 행에 가격이 포함됩니다.hasDonation 는 표시된 가격을 보존하며 후원 이벤트 표식을 추가하지 않습니다.
raid채팅에 들어오는 레이드 카드가 나타납니다.표시된 레이드 메시지와 선택적 카드 이미지를 다음에 사용합니다: contentimg.

Rumble - WebSocket/API URL

구현: sources/websocket/rumble.js

  • 다음의 크리에이터 소유 Live Stream API URL이 필요합니다: https://rumble.com/account/livestream-api. Rumble 문서에 따르면 이 URL에는 라이브 스트림 키가 포함되어 있고 별도 인증이 필요하지 않으므로 신뢰할 수 있는 제3자에게만 공유해야 합니다.
  • 읽기 전용 전송입니다. 공개 Rumble Live Stream API 문서에는 공식 채팅 전송 엔드포인트가 설명되어 있지 않으므로 이 소스는 메시지/이벤트를 Social Stream으로 릴레이하지만 Rumble로 채팅을 보내지는 않습니다.
  • livestreams[].chat 는 선택한 방송이 라이브일 때만 채워집니다. 사용: ?streamId=... 를 사용해 API가 여러 스트림을 제공할 때 특정 스트림을 고정하세요. 유효하지 않은 ID는 이제 다른 스트림으로 조용히 대체되지 않고 실패합니다.
  • 페이지는 다음도 확인합니다: https://rumble.com/chat/popup/<livestreams[].id> 를 지원하므로 방송자의 다음 페이지를 먼저 로드하지 않고도 일반적으로 주입되는 팝업 채팅을 바로 열 수 있습니다: /live 페이지.
이벤트 발생 시점 페이로드 참고 사항
message 공식 API가 다음을 확인한 뒤 Rumble SSE 채팅 스트림에서 새 항목이 도착합니다: livestreams[].id; 사용할 수 없으면 다음으로 대체합니다: livestreams[].chat.recent_messages. 표준 채팅 페이로드. meta.source 값: rumble_sse 는 SSE 채팅 스트림을 사용할 수 있을 때이며 다음의 아바타 URL을 포함합니다: users[].image.1; 그렇지 않으면 다음으로 대체합니다: live_stream_api 를 아바타 없이 제공합니다. 팝업 이모티콘 카탈로그를 사용할 수 있으면, chatmessage 는 Rumble 단축 코드 이모티콘을 이미지 HTML로 렌더링하고 meta.plainText 는 원래 단축 코드 텍스트를 보존합니다.
donation 새 Rant 항목이 다음에 나타납니다: livestreams[].chat.recent_rants. hasDonation 는 USD 형식의 금액을 담습니다; meta 포함: amount_cents, amount_dollars, 그리고 expiresOn.
new_follower 새 항목이 다음에 나타납니다: followers.recent_followers. 다음을 포함한 시스템 이벤트: chatname 를 팔로워 사용자 이름으로 설정하고 타임스탬프는 다음 아래에 둡니다: meta.followedOn.
new_subscriber 새 항목이 다음에 나타납니다: subscribers.recent_subscribers. membership 의 설정값: SUBSCRIBER; subtitle 는 Rumble이 제공하는 경우 문서화된 USD 금액을 반영합니다.
subscription_gift 새 항목이 다음에 나타납니다: gifted_subs.recent_gifted_subs. chatname 는 선물한 사람이며, hasDonation 로 바뀝니다: N Gifted, 그리고 meta 포함: totalGifted, remainingGifts, giftType, 그리고 videoId.
follower_update 선택한 팔로워 카운터가 바뀔 때마다. meta 정수형 팔로워 수. 기본값: followers.num_followers; 포함: ?followerMode=total, 사용: followers.num_followers_total 는 Rumble이 제공하는 경우.
subscriber_update 다음이 발생할 때마다: subscribers.num_subscribers 가 바뀔 때. meta 정수형 구독자 수.
stream_online / stream_offline 선택한 라이브 방송이 라이브와 오프라인 상태 사이에서 바뀔 때. meta 에는 안전하게 정리된 스트림 필드 일부가 들어 있습니다(id, title, createdOn, 카테고리 라벨, 좋아요/싫어요, 시청자 합계). 다음과 같은 민감한 값: stream_key 는 의도적으로 전달하지 않습니다.
viewer_update 다음이 발생할 때마다: livestreams[].watching_now 가 선택한 방송에서 바뀔 때. meta 정수형 동시 시청자 수. 전송: 0 를 선택한 방송이 오프라인이 되면 보내 오래된 카운터를 지웁니다.

이 전송 방식은 본인이 소유하거나 관리하는 채널을 위한 것입니다. API URL에 라이브 스트림 키가 포함되므로 오버레이, 로그, 스크린샷 또는 공유 브라우저 프로필에 노출하지 마세요. 공식 API가 스트림 ID를 확인하면 채팅 아바타는 Rumble SSE 채팅 스트림에서 가져옵니다. 아바타를 얻기 위해 Rumble 페이지를 스크래핑하지 않습니다.

YouNow - DOM 캡처

구현: sources/younow.js

  • 렌더링된 실시간 채팅 DOM을 읽고 다음을 포함한 표준 채팅 페이로드를 전송합니다: type: "younow".
  • 다음과 같은 시청자 활동 문구: is watching, I became a fan!, 그리고 invited N fans to this broadcast. 는 다음으로 표시됩니다: event: true 를 사용해 이벤트 필터가 라우팅할 수 있게 합니다.
이벤트 발생 시점 페이로드 참고 사항
message 실시간 시청자 채팅에 새 채팅 행이 나타납니다. 표준 채팅 페이로드. 팬/시청자 활동 행은 다음을 설정합니다: event: true.
viewer_update 다음 조건에서 표시된 시청자 패널 수가 바뀝니다: showviewercount/hypemode 가 활성화된 경우. meta 정수형 시청자 수. 전송: 0 는 카운터가 사라질 때.

Favorited Studio - DOM 캡처

구현: sources/favorited.js

  • 렌더링된 실시간 채팅 DOM을 읽고 다음을 포함한 표준 채팅 페이로드를 전송합니다: type: "favorited".
이벤트 발생 시점 페이로드 참고 사항
message 새 채팅 행이 나타납니다. 표준 채팅 페이로드.
viewer_update 다음 조건에서 실시간 시청자 탭의 수가 바뀝니다: showviewercount/hypemode 가 활성화된 경우. meta 다음에서 읽은 정수형 시청자 수: content-live-viewers 탭.

BEAM - DOM 캡처

구현: sources/beamstream.js

  • 렌더링된 실시간 채팅 DOM을 읽고 다음을 포함한 표준 채팅 페이로드를 전송합니다: type: "beamstream".
이벤트 발생 시점 페이로드 참고 사항
message 새 채팅 행이 나타납니다. 일반 텍스트 필드를 가진 표준 채팅 페이로드: chatname, 아바타 URL은 다음에: chatimg, 이미지 URL 또는 SVG 배지 객체는 다음에: chatbadges. Beam 캡처 페이지에서 숨겨진 필드는 비어 있습니다. Beam 자체 프로필 링크는 외부 릴레이 소스로 취급하지 않습니다. contentimg 에는 제공되는 경우 인라인 video/webm 첨부 파일이 들어갈 수 있습니다.
viewer_update 다음 조건에서 시청자 카운터 요소가 바뀝니다: showviewercount/hypemode 가 활성화된 경우. meta 정수형 시청자 수이며 채팅 페이지에 시청자 카운터가 있을 때만 전송합니다.

Castyr - DOM 캡처

구현: sources/castyr.js

  • 다음에서 새로 렌더링된 채팅 행을 읽습니다: https://castyr.live/homebeta/popout-chat/* 에서 다음을 포함한 표준 채팅 페이로드를 전송합니다: type: "castyr".
  • 소스가 연결될 때 기존 채팅 기록은 건너뜁니다.
이벤트 발생 시점 페이로드 참고 사항
message 새로운 .chat-message 행이 나타납니다. 발신자 이름, 렌더링된 메시지 내용, 제공되는 경우 이름 색상을 포함한 표준 채팅 페이로드.
viewer_update 다음 조건에서 표시된 활성 채팅 수가 바뀝니다: showviewercount/hypemode 가 활성화된 경우. meta 는 제목 속성이 있는 Castyr 활성 채팅 요소에서 읽은 정수형 개수입니다.

SOOP - 플레이어 DOM 캡처

구현: sources/sooplive.js. 통합된 다음을 지원합니다: play.sooplive.com 플레이어 및 기존 play.sooplive.co.kr URL을 지원합니다. 이전 전체 채팅 레이아웃도 제공되는 경우 계속 인식합니다.

공개 채팅은 다음을 전송합니다: type/platform: "sooplive", 일반 텍스트 chatname/userid, nameColor, 안전하게 정리된 chatmessage. 기존 행, 중복 메시지 ID, 번역 사본, 비공개 귓속말은 제외됩니다. 이모티콘은 안전한 이미지로 변환되며 텍스트 전용 모드에서는 대체 텍스트가 됩니다.

다음을 사용하면: showviewercount 또는 hypemode 활성화, viewer_update 는 정수형 값을 담습니다: meta 를 플레이어의 다음에서 가져옵니다: #nAllViewer. 채팅 전용 팝아웃에서는 이 수가 제공되지 않을 수 있습니다. 현재 SOOP 팝아웃은 이를 연 창에 의존하므로 SSApp은 분리된 팝업을 열 때 전체 플레이어를 사용합니다.

Gosh - 채널 채팅 캡처

구현: sources/gosh.js. 열기: https://gosh.com/USERNAME 를 채팅이 보이도록 열거나 SSApp의 Add other source에 해당 URL을 붙여넣으세요. 채팅 팝아웃은 필요하지 않습니다.

새 채팅 행은 다음을 전송합니다: type/platform: "gosh", 일반 텍스트 chatname, nameColor, 안전하게 정리된 chatmessage. 인라인 이미지와 GIF는 안전한 HTTP(S) URL을 유지합니다. 다음 설정에서는: textonlymode, 이미지는 대체 텍스트 또는 다음으로 바뀝니다: [image] 는 대체 텍스트가 없는 경우입니다. 캡처된 행에 아바타, 배지, 후원, 멤버십이 없으면 해당 필드는 비어 있습니다.

가상화된 채팅을 최신 메시지 위치로 스크롤해 두세요. 기존 기록, 다시 렌더링된 행, 작성자가 없는 시스템 알림은 제외됩니다. 렌더링 인덱스는 내부에만 유지하며 플랫폼 고유 메시지 ID로 전송하지 않습니다. 팔로우, 후원, 시청자 수, 채팅 관리 이벤트는 추론하지 않습니다.

Livacha - 채팅방 캡처

구현: sources/livacha.js. 열기: https://livacha.com/chat/ROOM 를 채팅이 보이도록 열거나 SSApp의 Add other source에 방 URL을 붙여넣으세요.

새 채팅 행은 다음을 전송합니다: type/platform: "livacha", 일반 텍스트 chatname, chatimg, nameColor, 안전하게 정리된 chatmessage. 상대 아바타 및 인라인 이미지 URL은 절대 HTTP(S) URL로 바뀝니다. 문단, 줄바꿈, 목록은 하나의 채팅 메시지로 평탄화됩니다. 다음 설정에서는: textonlymode, 이미지는 대체 텍스트 또는 다음으로 바뀝니다: [image].

수정되거나 다시 마운트된 행을 재캡처하지 않도록 메시지 ID를 내부적으로 사용합니다. 초기 기록과 앞에 추가된 이전 메시지는 건너뛰며 타임스탬프와 반응 메뉴는 캡처 본문에 포함되지 않습니다. 후원, 멤버십, 채팅 관리, 시청자 수 이벤트는 추론하지 않습니다.

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. 인라인 이모티콘은 안전한 이미지로 다시 구성되며 다음의 경우 대체 텍스트를 사용합니다: textonlymode 가 활성화된 경우입니다. 기존 기록, 환영 알림, 답장 미리보기, 고정 중복은 제외됩니다.

viewer_update 는 정수형 값을 담습니다: meta 다음에서 읽음: #popupViewersNum 조건: showviewercount 또는 hypemode 가 활성화된 경우입니다. 후원, 멤버십, 채팅 관리 이벤트는 추론하지 않습니다.

실험적 기능: 점검 중 베타 팝업은 로딩 상태에 머물렀습니다. 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. 인라인 이모티콘은 안전한 이미지로 변환되며 텍스트 전용 모드에서는 대체 텍스트가 됩니다. Prime에는 해당 행의 다음도 포함됩니다: userid 를 사용하고 로그인된 프로필 링크와 로그아웃 상태의 사용자 이름 라벨을 모두 지원합니다. 검증된 행 구조에서 사용할 수 없는 아바타와 배지는 비워 둡니다.

초기 기록, 고정 카드, 답장 미리보기는 제외됩니다. w.tv는 채팅을 가상화하므로 캡처하려면 최신 메시지 위치로 스크롤을 유지하세요. DOM 테스트 ID는 플랫폼 고유 메시지 ID가 아니라 렌더링 인덱스입니다. Prime은 초기 메시지 위에 로드된 이전 기록과 무시한 사용자의 자리표시자를 건너뜁니다.

두 팝업 모두 검증된 방송 시청자 수를 제공하지 않으므로 이 어댑터들은 시청자 업데이트를 전송하거나 후원, 구독, 채팅 관리 이벤트를 추론하지 않습니다.

플랫폼 간 이벤트 일관성

이 표에서 비슷한 개념이 플랫폼 간에 어떻게 매핑되는지 확인하세요. 가능하면 새 소스는 첫 번째 열의 공통 이벤트 이름에 맞추세요.

개념 YouTube WS Twitch WS Kick WS
새 회원/구독자 sponsorship new_subscriber new_subscriber
갱신/재구독 resub resub resub
구독 선물 giftpurchase subscription_gift subscription_gift
선물 받음 giftredemption - -
마일스톤 membermilestone - -
후원/팁 superchat, supersticker, jeweldonation 포함: hasDonation cheer (비트) donation
새 팔로워 new_follower (폴링)* new_follower new_follower
시청자 수 viewer_update viewer_update viewer_update
팔로워 수 - follower_update follower_update
구독자 수 subscriber_update subscriber_update -
방송 상태 live_chat_ended stream_online/stream_offline stream_online/stream_offline
레이드 - raid -
보상 사용 - reward reward

일관성 참고 사항

  • YouTube는 다음을 사용합니다: sponsorship 는 새 회원에 사용하고 Twitch와 Kick은 다음을 사용합니다: new_subscriber. 플랫폼 간 트리거를 만들 때는 둘 다 확인하는 것이 좋습니다.
  • resub 는 일관됩니다 를 세 플랫폼 모두에서 갱신에 사용합니다.
  • 선물 이벤트는 다릅니다: YouTube는 다음을 사용합니다: giftpurchase/giftredemption, Twitch와 Kick은 다음을 사용합니다: subscription_gift.
  • 후원은 플랫폼마다 다릅니다: YouTube는 다음처럼 구체적인 유료 이벤트 이름을 사용합니다: superchat, supersticker, 그리고 jeweldonation 포함: hasDonation; Twitch에는 비트가 있습니다(cheer); Kick에는 팁이 있습니다(donation).
  • new_follower 는 이제 일관됩니다 를 세 플랫폼 모두에서 사용하지만 YouTube는 최근 구독자를 폴링하므로 결과가 지연되거나 불완전할 수 있습니다.
  • 좋아요와 반응은 별도의 계약입니다: 개별 liked/like 이벤트는 전체 필터로 걸러지지 않으면 Reactions Overlay에 도달하며 다음 조건에서만 기본 처리 경로에 들어갑니다: capturelikeevent 가 활성화된 경우입니다. 시각적 또는 플랫폼 기본 reaction 이벤트는 생성자가 정한 라우팅을 유지합니다. 집계 likes_update 카운터는 다음으로 별도 제어합니다: captureliketotals.

지원 범위 및 호환성 제한

이 문서는 구현된 페이로드를 설명하며 모든 플랫폼이 모든 이벤트를 전달한다는 보장은 아닙니다. 비어 있는 hasDonation 가 소스에 지정되어 있어도 후원 지원을 입증하지는 않습니다. DOM 표시 여부, 계정 권한, 캡처 스위치, API 사용 가능 여부가 실제 수신 내용을 결정합니다. 삭제 전달은 소스마다 다르므로 모든 소스에서 채팅 관리 동기화를 지원한다고 가정하지 마세요.

추적 중인 불일치 및 누락

쌍/영역 확인된 불일치 / 누락 영향
Twitch: 표준 방식과 WebSocket 비교 공통: reward, subscription_gift, viewer_update, hype_train, 선택적으로 활성화하는 watch_streak. Standard 전용: giftpurchase, knock, community_highlight. WebSocket 전용: new_subscriber, resub, cheer, powerup, raid, new_follower, follower_update, subscriber_update. channel_points 는 이제 Twitch 보상 사용의 폐기 예정 이전 별칭입니다. 새 통합은 다음을 기준으로 해야 합니다: reward.
Kick: 표준 방식과 WebSocket 비교 표준 방식은 가벼운 표식을 전송합니다(gift, reward, 불리언 true, viewer_update). WebSocket은 공식 팔로우, 구독, 선물, 보상 사용, KICKs, 채팅 관리, 라이브 상태 이벤트를 추가합니다. 기존의 다음에 대한 호환 처리를 유지합니다: raid 페이로드로 매핑하지만 Kick은 현재 공식 레이드/호스트 구독을 제공하지 않습니다. WebSocket 모드가 더 풍부합니다. 표준 전용 이벤트 이름을 사용하는 자동화는 전환 시 검토해야 합니다. Kick 레이드 이벤트를 필수로 요구하지 마세요.
YouTube: 표준 방식과 WebSocket 비교 공통: superchat, supersticker, jeweldonation, sponsorship, resub, giftpurchase, giftredemption, viewer_update. Standard 전용: thankyou, redirect. WebSocket 전용: membermilestone, new_follower, subscriber_update, view_update, likes_update (선택적 활성화). 주요 회원/이벤트 이름은 두 방식에서 일치합니다. Super Chat, Super Sticker, Jewels는 다음을 사용합니다: hasDonation, 반면 멤버십 선물 구매/사용은 그렇지 않습니다.
모든 화면 여러 소스가 다음을 채웁니다: hasDonation 다음을 설정하지 않고: data.event. 이는 올바른 동작입니다. 후원 렌더링은 다음을 기준으로 해야 합니다: hasDonation, 포함: data.event 는 시스템/이벤트 의미용으로 예약됩니다.

소스별 별칭 및 이전 이름

이 매핑은 전역 대체가 아니라 나열된 소스/맥락에 한정됩니다. 별칭 지원은 소비자 페이지마다 다릅니다. 현재 TikTok DOM 및 TikFinity 소스는 여전히 다음을 전송합니다: followed; Velora는 다음을 사용합니다: subscription 그리고 channel_points, Streamlabs는 다음을 사용합니다: subscription. 일치하는 모든 이벤트 이름을 바꾸기보다 현재 소스 계약과 관련 레거시 별칭을 수용하세요.

별칭 / 이전 이름 표준 대체 이름 맥락
subscriptionnew_subscriberTwitch/Kick 새 구독
subgiftsubscription_giftTwitch 구독 선물
membershipsponsorshipYouTube 새 회원(일반)
new_membersponsorshipYouTube 새 회원
new_membershipsponsorshipYouTube 새 회원
newmembersponsorshipYouTube 새 회원
new-membershipsponsorshipYouTube DOM 스크래퍼(하이픈 변형)
upgraded_membershipresubYouTube 등급 업그레이드
upgraded-membershipresubYouTube DOM 스크래퍼(하이픈 변형)
membership_upgraderesubYouTube 등급 업그레이드
membership_milestonemembermilestoneYouTube 마일스톤 채팅
member_milestonemembermilestoneYouTube 마일스톤 채팅(밑줄 변형)
gift_membershipgiftpurchaseYouTube 선물 묶음
membership_giftgiftpurchaseYouTube 선물 묶음
giftmembershipsgiftpurchaseYouTube 선물 묶음(복수형 변형)
gifted_membershipgiftredemptionYouTube 선물 수신
gifted_membershipsgiftpurchaseYouTube 선물 묶음(복수형 변형)
community_giftgiftpurchase커뮤니티 선물 묶음
channel_pointsrewardTwitch WebSocket 보상 사용(이전 별칭)
followednew_follower현재 TikTok DOM/TikFinity 출력입니다. TikTok 캡처 모드를 결합할 때 두 이름을 모두 수용하세요.

이 참고 문서 사용하기

  • 새 이벤트를 추가할 때는 기존 용어를 재사용하세요(subscription_gift, viewer_update, 등)을 가능하면 사용하세요. 차이가 불가피하면 이유와 함께 여기에 문서화하세요.
  • 유지: data.meta 를 예측 가능하게 유지하세요. 평면 키를 선호하고 문자열에 혼합 데이터를 넣지 않으며 항상 단위를 포함하세요(currency, bits, duration).
  • 페이로드를 변경할 때 이 페이지도 업데이트하세요. 에이전트 지침은 공통 개발 규칙이 바뀔 때만 업데이트하세요.
  • 페이로드 변경은 이를 보내는 소스와 받는 오버레이 또는 Event Flow 트리거 양쪽에서 검증하세요.
  • 캡처는 소스 지원과 설정에 따라 달라집니다. 도크 또는 강조 메시지 오버레이에서 이벤트로 표시된 행을 숨기려면 다음을 추가하세요: &hideevents 또는 &hideallevents. 선택한 이벤트를 숨기려면 다음을 사용하세요: &filterevents=subscription_gift,new_follower,gifted.
  • YouTube, Twitch, Kick에서는 다음을 활성화하세요: WebSocket 모드 를 사용하면 플랫폼별 이벤트를 가장 폭넓게 지원합니다. YouTube 선물/후원 캡처(선물과 Super Chat 포함)는 표준 및 WebSocket 모드 모두에서 제공하며 WebSocket은 추가 이벤트 유형을 지원합니다. 정확한 지원 범위는 플랫폼, 계정 역할, 부여된 범위에 따라 다릅니다.

맨 위로

수익화 오버레이

NinjaBacker 팁은 다음을 사용합니다: platform: "ninjabacker", type: "ninjabacker", chatname, 일반 텍스트 chatmessage, textonly: true, 소스 접두사가 있는 id, 형식이 지정된 hasDonation, 숫자형 donoValue. 다음이 없는 일반 후원형 행입니다: event 재정의. meta.ninjabacker 에는 ISO 형식의 다음이 들어 있습니다: currency 및 기본 통화 단위의 amount. 익명 팁은 표시 이름 Anonymous를 사용합니다. 소스는 실시간 SSE(재생 없음) 또는 선택적으로 활성화하는 SSN API의 서명된 웹훅 수신기(최대 7일 전달 대기열)를 사용합니다. 신뢰성 있는 전달에는 안정적인 다음을 사용합니다: ninjabacker:delivery:DELIVERY_ID ID. 어느 모드도 환불/분쟁 취소를 받지 않습니다. 수신기 자격 증명과 서명 비밀 키는 이벤트 페이로드에 들어가지 않습니다. 호출자가 정한 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 접두사가 붙은 스토어/주문 범위의 안정적인 불투명 해시이며 원본 주문 식별자가 아닙니다.

구매는 기존 활동, Multi-Alerts Purchase 카테고리, 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}. 중첩 경로는 대소문자를 구분하며 누락된 값은 빈 내용으로 표시됩니다. 프로토타입 탐색은 금지됩니다.

크리에이터 커머스 웹훅 및 홍보 오버레이

Ko-fi 공개 Donation 결제는 다음을 유지합니다: 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, 수신자는 other), DONATION(일반 후원 행), SUBSCRIPTION_PURCHASED(new_subscriber). 기존 주문 총액은 다음을 유지합니다: hasDonation 를 하위 호환성용으로 유지하며 다음으로 표시합니다: meta.commerce.legacyDonationValue: true; 이는 새 상품 판매 기본값의 명시적 예외입니다. 기프트 카드가 적용된 주문은 후원 값 없이 구매 알림을 보냅니다. 주문 총액에서 새 결제액을 신뢰성 있게 추론할 수 없으며 선물 구매는 이미 계산되었기 때문입니다. 청구 이름과 이메일 주소는 공개 식별 정보에 사용하지 않습니다. 대시보드 테스트 이벤트와 주문 업데이트는 유료 알림을 생성하지 않습니다.

이 어댑터들은 기존 릴레이, 봇 동작, Event Flow, 대상 라우팅을 유지하며 다음을 포함합니다: meta.webhookId 로 중복을 제거합니다. 공개 이름, 일반 텍스트 메시지, 알려진 상품 이름을 다음에 제공합니다: subtitle, ISO meta.commerce.currency 를 해당하는 경우 숫자형 후원 값과 함께 포함합니다. 환불 회계나 새 수신기 인증을 추가하지는 않습니다. 제공자의 기존 설정된 웹훅 경로를 사용하세요.

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 는 홍보와 활동을 분리합니다. 선택적 style, scale, cardevery, cardfor, onlytype URL 매개변수가 표시를 제어합니다. 기존 제공자 모드도 view와 일정 제어를 받습니다. 참고: 설정 가이드.

Throne 선물 이벤트

선택적으로 활성화하는 Monetization 통합은 다음을 포함한 서명된 Throne 이벤트를 전달합니다: platform 그리고 type 설정값: throne. 세 가지 모두 안정적인 전달 식별자를 사용합니다: id, 일반 텍스트 chatname, chatmessage 포함: textonly: true, 상품 이름은 다음에: subtitle, 선택적 HTTPS 썸네일은 다음에: contentimg.

이벤트의미후원 금액 / 순위
gift구매된 선물hasDonation 및 USD donoValue; +1 선물 순위
giftcontribution선물을 위한 기여기여 금액만 반영하며 순위는 오르지 않음
giftfunded공동 모금 선물 완료아니요 hasDonation 또는 donoValue, 이전 기여가 중복 계산되지 않게 합니다; +1 선물 순위

meta.throne 포함: itemName, creator (공개 사용자 이름), completed, currency 및 기본 통화 단위의 amount. 다음의 경우: giftfunded, 금액은 새 수입이 아니라 목표를 나타냅니다. 익명 선물 제공자는 다음으로 유지됩니다: Anonymous; 완료된 공동 선물은 다음을 사용합니다: Community. 비공개 결제 및 배송 필드는 전달하지 않습니다.

monetization_update 스냅샷에는 다음도 포함됩니다: meta.monetization.throne: enabled, username, url, qr, position, rank, 그리고 gifts. 이 스냅샷에는 웹훅 URL이나 수신 자격 증명이 없습니다.

진행자 음성 명령(데스크톱 미리보기)

Event Flow의 내가 다음과 같이 말하면... 트리거는 SSApp의 신뢰할 수 있는 로컬 마이크 명령을 받습니다. 내부 동작 맥락은 다음을 사용합니다: chatname: "Host", type: "hostvoice", 인식한 문구는 다음에: chatmessage, 그리고 textonly: true. 이는 수신 플랫폼 이벤트나 새 채팅 전송 방식이 아닙니다. 채팅으로 이 필드를 보내도 음성 트리거가 활성화되지 않습니다.

업데이트된 데스크톱 빌드, 명시적 마이크 시작, 테스트 모드 이후 동작 활성화가 필요합니다. 참고: 미리보기 설정 및 검증 상태.

상품 표시 제어

기존 monetization_update 스냅샷에는 다음이 포함될 수 있습니다: meta.monetization.commerce.live: 저장된 일정에는 null, 또는 {mode: "show" | "hide", url?: "https://...", until: 0 | epochMilliseconds}. Show는 저장된 정확한 상품 URL과 일치시킵니다. 상품이 없으면 카드가 표시되지 않습니다. until이 양수면 만료 후 저장된 일정으로 돌아가며, 0이면 변경하거나 SSN을 다시 시작할 때까지 지속됩니다. Hide는 홍보를 숨기며 유료 활동 알림은 숨기지 않습니다.

commerce.viewerURL 는 게시된 읽기 전용 상점 URL 또는 빈 문자열입니다. 있으면 홍보 QR 코드가 이곳으로 연결됩니다. SSN 세션이나 게시 키는 포함하지 않습니다. 상품은 다음에 유지됩니다: commerce.items. 표시 제어, 가져오기, 게시로는 후원/구매 이벤트가 발생하지 않습니다. 참고: 상품 제어 에서 Event Flow 및 원격 API 사용법을 확인하세요.

Event Flow의 commerceControl 동작은 직접/Chrome 응답을 최대 8초 기다립니다. 일반 이벤트 페이로드에서는 이벤트를 보존하고 다음을 추가합니다: 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 메시지를 3초 동안 표시합니다. 수신은 전송 수락을 뜻하며 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".

상태는 이 설치 환경의 비공개 수익화 저장소에 유지됩니다. 공개 스냅샷에는 전달 중복 제거 ID, 구매자 식별 정보, 비밀 값이 포함되지 않습니다. 명시적으로 표시된 판매에는 제거용 이벤트 ID가 유지됩니다. 환불은 진행자가 제거해야 합니다. 구매 중복 ID는 별도로 최대 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. 5분 후 만료되며 소스 변경, 유휴 스냅샷, 재시작 시 지워집니다. 도우미는 운영자 전용으로, 영구 저장되지 않고 시청자 브로드캐스트에도 포함되지 않습니다. 입찰자/낙찰자 식별 정보는 버립니다. 소스 스크립트와 경매 이벤트 페이로드는 바뀌지 않습니다. 초안을 복사해도 결제가 확인되거나 판매가 생성되지는 않습니다.