Developer and self-hosted
Twitch
Twitch チャットを IRC 接続経由でサポートします。OpenClaw は Twitch ユーザー(bot アカウント)として接続し、チャンネル内のメッセージを受信および送信します。
同梱 Plugin
Twitch を含まない古いビルドまたはカスタムインストールを使用している場合は、npm パッケージを直接インストールします。
npm registry
openclaw plugins install @openclaw/twitch
Local checkout
openclaw plugins install ./path/to/local/twitch-plugin
現在の公式リリースタグに追従するには、素のパッケージを使用します。再現可能なインストールが必要な場合にのみ、厳密な バージョンを固定してください。
詳細: Plugins
クイックセットアップ(初心者向け)
Ensure plugin is available
現在のパッケージ版 OpenClaw リリースには、すでに同梱されています。古いインストールやカスタムインストールでは、上記のコマンドで手動追加できます。
Create a Twitch bot account
bot 用の専用 Twitch アカウントを作成します(または既存のアカウントを使用します)。
Generate credentials
Twitch Token Generator を使用します。
- Bot Token を選択
- スコープ
chat:readとchat:writeが選択されていることを確認 - Client ID と Access Token をコピー
Find your Twitch user ID
https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ を使用して、ユーザー名を Twitch ユーザー ID に変換します。
Configure the token
- Env:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(デフォルトアカウントのみ) - または config:
channels.twitch.accessToken
両方が設定されている場合は、config が優先されます(env フォールバックはデフォルトアカウントのみ)。
Start the gateway
設定済みチャンネルで Gateway を起動します。
最小構成:
{
channels: {
twitch: {
enabled: true,
username: "openclaw", // Bot's Twitch account
accessToken: "oauth:abc123...", // OAuth Access Token (or use OPENCLAW_TWITCH_ACCESS_TOKEN env var)
clientId: "xyz789...", // Client ID from Token Generator
channel: "vevisk", // Which Twitch channel's chat to join (required)
allowFrom: ["123456789"], // (recommended) Your Twitch user ID only - get it from https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/
},
},
}
概要
- Gateway が所有する Twitch チャンネルです。
- 決定的ルーティング: 返信は常に Twitch に戻されます。
- 各アカウントは、分離されたセッションキー
agent:<agentId>:twitch:<accountName>に対応します。 usernameは bot のアカウント(認証する側)で、channelは参加するチャットルームです。
セットアップ(詳細)
認証情報を生成する
Twitch Token Generator を使用します。
- Bot Token を選択
- スコープ
chat:readとchat:writeが選択されていることを確認 - Client ID と Access Token をコピー
bot を設定する
Env var (default account only)
OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
Config
{
channels: {
twitch: {
enabled: true,
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
},
}
env と config の両方が設定されている場合は、config が優先されます。
アクセス制御(推奨)
{
channels: {
twitch: {
allowFrom: ["123456789"], // (recommended) Your Twitch user ID only
},
},
}
厳格な許可リストには allowFrom を推奨します。ロールベースのアクセスを使用したい場合は、代わりに allowedRoles を使用します。
利用可能なロール: "moderator"、"owner"、"vip"、"subscriber"、"all"。
トークン更新(任意)
Twitch Token Generator のトークンは自動更新できません。期限切れになったら再生成してください。
自動トークン更新を行うには、Twitch Developer Console で独自の Twitch アプリケーションを作成し、config に追加します。
{
channels: {
twitch: {
clientSecret: "your_client_secret",
refreshToken: "your_refresh_token",
},
},
}
bot は期限切れ前にトークンを自動更新し、更新イベントをログに記録します。
マルチアカウントサポート
アカウントごとのトークンには channels.twitch.accounts を使用します。共有パターンについては 設定 を参照してください。
例(1 つの bot アカウントを 2 つのチャンネルで使用):
{
channels: {
twitch: {
accounts: {
channel1: {
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
channel2: {
username: "openclaw",
accessToken: "oauth:def456...",
clientId: "uvw012...",
channel: "secondchannel",
},
},
},
},
}
アクセス制御
User ID allowlist (most secure)
{
channels: {
twitch: {
accounts: {
default: {
allowFrom: ["123456789", "987654321"],
},
},
},
},
}
Role-based
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator", "vip"],
},
},
},
},
}
allowFrom は厳格な許可リストです。設定されている場合、それらのユーザー ID のみが許可されます。ロールベースのアクセスを使用したい場合は、allowFrom を未設定のままにして、代わりに allowedRoles を設定してください。
Disable @mention requirement
デフォルトでは、requireMention は true です。無効化してすべてのメッセージに応答するには、次のようにします。
{
channels: {
twitch: {
accounts: {
default: {
requireMention: false,
},
},
},
},
}
トラブルシューティング
まず、診断コマンドを実行します。
openclaw doctor
openclaw channels status --probe
Bot does not respond to messages
- アクセス制御を確認: ユーザー ID が
allowFromに含まれていることを確認するか、テストのために一時的にallowFromを削除してallowedRoles: ["all"]を設定します。 - bot がチャンネル内にいることを確認: bot は
channelで指定されたチャンネルに参加している必要があります。
Token issues
「接続に失敗しました」または認証エラー:
accessTokenが OAuth アクセストークン値であることを確認します(通常はoauth:プレフィックスで始まります)- トークンに
chat:readとchat:writeのスコープがあることを確認します - トークン更新を使用している場合は、
clientSecretとrefreshTokenが設定されていることを確認します
Token refresh not working
更新イベントのログを確認します。
Using env token source for mybot
Access token refreshed for user 123456 (expires in 14400s)
「token refresh disabled (no refresh token)」が表示される場合:
clientSecretが提供されていることを確認しますrefreshTokenが提供されていることを確認します
Config
アカウント設定
usernamestringbot ユーザー名。
accessTokenstringchat:read と chat:write を持つ OAuth アクセストークン。
clientIdstringTwitch Client ID(Token Generator または自分のアプリから)。
channelstringrequired参加するチャンネル。
enabledbooleanこのアカウントを有効化します。
clientSecretstring任意: 自動トークン更新用。
refreshTokenstring任意: 自動トークン更新用。
expiresInnumberトークンの有効期限(秒)。
obtainmentTimestampnumberトークン取得タイムスタンプ。
allowFromstring[]ユーザー ID 許可リスト。
allowedRoles'Array<"moderator"requireMentionboolean@mention を必須にします。
プロバイダーオプション
channels.twitch.enabled- チャンネル起動を有効化/無効化channels.twitch.username- bot ユーザー名(簡易シングルアカウント設定)channels.twitch.accessToken- OAuth アクセストークン(簡易シングルアカウント設定)channels.twitch.clientId- Twitch Client ID(簡易シングルアカウント設定)channels.twitch.channel- 参加するチャンネル(簡易シングルアカウント設定)channels.twitch.accounts.<accountName>- マルチアカウント設定(上記のすべてのアカウントフィールド)
完全な例:
{
channels: {
twitch: {
enabled: true,
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
clientSecret: "secret123...",
refreshToken: "refresh456...",
allowFrom: ["123456789"],
allowedRoles: ["moderator", "vip"],
accounts: {
default: {
username: "mybot",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "your_channel",
enabled: true,
clientSecret: "secret123...",
refreshToken: "refresh456...",
expiresIn: 14400,
obtainmentTimestamp: 1706092800000,
allowFrom: ["123456789", "987654321"],
allowedRoles: ["moderator"],
},
},
},
},
}
ツールアクション
エージェントは、次のアクションで twitch を呼び出せます。
send- チャンネルにメッセージを送信
例:
{
action: "twitch",
params: {
message: "Hello Twitch!",
to: "#mychannel",
},
}
安全性と運用
- トークンをパスワードのように扱う — トークンを git にコミットしないでください。
- 自動トークン更新を使用する 長時間稼働する bot では有効です。
- ユーザー名ではなくユーザー ID 許可リストを使用する アクセス制御に使用します。
- ログを監視する トークン更新イベントと接続状態を確認します。
- トークンのスコープを最小限にする —
chat:readとchat:writeのみを要求します。 - 行き詰まった場合: 他のプロセスがセッションを所有していないことを確認してから、Gateway を再起動します。
制限
- メッセージあたり 500 文字(単語境界で自動分割)。
- Markdown は分割前に削除されます。
- レート制限なし(Twitch の組み込みレート制限を使用)。
関連
- チャンネルルーティング — メッセージのセッションルーティング
- チャンネル概要 — サポートされるすべてのチャンネル
- グループ — グループチャットの動作と mention ゲート
- ペアリング — DM 認証とペアリングフロー
- セキュリティ — アクセスモデルと強化