Twitch
IRC 연결을 통한 Twitch 채팅 지원입니다. OpenClaw는 Twitch 사용자(봇 계정)로 연결하여 채널에서 메시지를 수신하고 전송합니다.번들 plugin
Twitch는 현재 OpenClaw 릴리스에 번들 plugin으로 포함되어 있으므로 일반 패키지 빌드에서는 별도 설치가 필요하지 않습니다. 이전 빌드 또는 Twitch가 제외된 사용자 지정 설치를 사용하는 경우 수동으로 설치하세요. CLI를 통해 설치(npm 레지스트리):빠른 설정(초보자용)
- Twitch plugin을 사용할 수 있는지 확인합니다.
- 현재 패키지된 OpenClaw 릴리스에는 이미 번들로 포함되어 있습니다.
- 이전/사용자 지정 설치에서는 위 명령으로 수동 추가할 수 있습니다.
- 봇용 전용 Twitch 계정을 생성합니다(또는 기존 계정을 사용합니다).
- 자격 증명을 생성합니다: Twitch Token Generator
- Bot Token을 선택합니다
chat:read및chat:write스코프가 선택되었는지 확인합니다- Client ID 및 Access Token을 복사합니다
- Twitch 사용자 ID를 찾습니다: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/
- 토큰을 구성합니다.
- Env:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(기본 계정 전용) - 또는 config:
channels.twitch.accessToken - 둘 다 설정된 경우 config가 우선합니다(env 폴백은 기본 계정 전용).
- Env:
- gateway를 시작합니다.
allowFrom 또는 allowedRoles)를 추가하세요. requireMention의 기본값은 true입니다.
최소 구성:
개요
- Gateway가 소유하는 Twitch 채널입니다.
- 결정적 라우팅: 응답은 항상 Twitch로 다시 전송됩니다.
- 각 계정은 격리된 세션 키
agent:<agentId>:twitch:<accountName>에 매핑됩니다. username은 봇 계정(인증 주체)이고,channel은 참여할 채팅방입니다.
설정(상세)
자격 증명 생성
Twitch Token Generator를 사용하세요.- Bot Token을 선택합니다
chat:read및chat:write스코프가 선택되었는지 확인합니다- Client ID 및 Access Token을 복사합니다
봇 구성
Env var(기본 계정 전용):액세스 제어(권장)
allowFrom을 우선 사용하세요. 역할 기반 액세스를 원하면 대신 allowedRoles를 사용하세요.
사용 가능한 역할: "moderator", "owner", "vip", "subscriber", "all".
왜 사용자 ID인가요? 사용자 이름은 변경될 수 있어 사칭이 가능하지만, 사용자 ID는 영구적입니다.
Twitch 사용자 ID 찾기: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ (Twitch 사용자 이름을 ID로 변환)
토큰 갱신(선택 사항)
Twitch Token Generator에서 생성한 토큰은 자동 갱신할 수 없습니다. 만료되면 다시 생성하세요. 자동 토큰 갱신을 원하면 Twitch Developer Console에서 직접 Twitch 애플리케이션을 만들고 config에 다음을 추가하세요.다중 계정 지원
계정별 토큰을 사용하려면channels.twitch.accounts를 사용하세요. 공통 패턴은 gateway/configuration을 참조하세요.
예시(하나의 봇 계정을 두 채널에서 사용):
액세스 제어
역할 기반 제한
사용자 ID별 허용 목록(가장 안전함)
역할 기반 액세스(대안)
allowFrom은 강력한 허용 목록입니다. 설정하면 해당 사용자 ID만 허용됩니다.
역할 기반 액세스를 원하면 allowFrom은 설정하지 말고 대신 allowedRoles를 구성하세요.
@mention 요구 사항 비활성화
기본적으로requireMention은 true입니다. 비활성화하고 모든 메시지에 응답하려면 다음과 같이 설정하세요.
문제 해결
먼저 진단 명령을 실행하세요.봇이 메시지에 응답하지 않음
액세스 제어 확인: 사용자 ID가allowFrom에 포함되어 있는지 확인하거나, 테스트를 위해 일시적으로 allowFrom을 제거하고 allowedRoles: ["all"]로 설정하세요.
봇이 채널에 있는지 확인: 봇은 channel에 지정된 채널에 참여해야 합니다.
토큰 문제
“Failed to connect” 또는 인증 오류:accessToken이 OAuth 액세스 토큰 값인지 확인하세요(일반적으로oauth:접두사로 시작)- 토큰에
chat:read및chat:write스코프가 있는지 확인하세요 - 토큰 갱신을 사용하는 경우
clientSecret과refreshToken이 설정되었는지 확인하세요
토큰 갱신이 작동하지 않음
갱신 이벤트 로그 확인:clientSecret이 제공되었는지 확인하세요refreshToken이 제공되었는지 확인하세요
Config
계정 config:username- 봇 사용자 이름accessToken-chat:read및chat:write권한이 있는 OAuth 액세스 토큰clientId- Twitch Client ID(Token Generator 또는 자체 앱에서 획득)channel- 참여할 채널(필수)enabled- 이 계정 활성화(기본값:true)clientSecret- 선택 사항: 자동 토큰 갱신용refreshToken- 선택 사항: 자동 토큰 갱신용expiresIn- 토큰 만료 시간(초)obtainmentTimestamp- 토큰 획득 타임스탬프allowFrom- 사용자 ID 허용 목록allowedRoles- 역할 기반 액세스 제어("moderator" | "owner" | "vip" | "subscriber" | "all")requireMention- @mention 필요(기본값:true)
channels.twitch.enabled- 채널 시작 활성화/비활성화channels.twitch.username- 봇 사용자 이름(단순화된 단일 계정 config)channels.twitch.accessToken- OAuth 액세스 토큰(단순화된 단일 계정 config)channels.twitch.clientId- Twitch Client ID(단순화된 단일 계정 config)channels.twitch.channel- 참여할 채널(단순화된 단일 계정 config)channels.twitch.accounts.<accountName>- 다중 계정 config(위의 모든 계정 필드)
도구 작업
에이전트는 다음 작업으로twitch를 호출할 수 있습니다.
send- 채널에 메시지 보내기
안전 및 운영
- 토큰을 비밀번호처럼 취급하세요 - 토큰을 git에 커밋하지 마세요
- 장기 실행 봇에는 자동 토큰 갱신을 사용하세요
- 액세스 제어에는 사용자 이름 대신 사용자 ID 허용 목록을 사용하세요
- 토큰 갱신 이벤트와 연결 상태를 위해 로그를 모니터링하세요
- 토큰 스코프를 최소화하세요 -
chat:read및chat:write만 요청하세요 - 문제가 해결되지 않으면: 다른 프로세스가 세션을 소유하고 있지 않은지 확인한 후 gateway를 재시작하세요
제한
- 메시지당 500자(단어 경계 기준 자동 청킹)
- 청킹 전에 Markdown이 제거됩니다
- 속도 제한 없음(Twitch의 내장 rate limit 사용)