
【最新版】TwitchでOpenClawを使う方法(プラグイン導入・Botトークン設定)
2026年3月18日
Twitch
Twitch(プラグイン)
Twitch のチャットは IRC 接続でサポートされます。OpenClaw は Twitch ユーザー(ボットアカウント)として接続し、チャンネル内のメッセージを受信/送信します。
プラグインが必要
Twitch はプラグインとして提供されており、コアインストールには同梱されていません。
CLI(npm レジストリ)でインストール:
openclaw plugins install @openclaw/twitch
ローカルチェックアウト(git リポジトリから実行している場合):
openclaw plugins install ./extensions/twitch
詳細: Plugins
クイックセットアップ(初心者向け)
- ボット用の Twitch アカウントを用意します(専用アカウント推奨。既存アカウントでも可)。
- 認証情報を生成します: Twitch Token Generator
- Bot Token を選択
chat:readとchat:writeのスコープが選択されていることを確認- Client ID と Access Token をコピー
- 自分の Twitch user ID を見つけます: Convert Twitch username to user ID
- トークンを設定します:
- Env(デフォルトアカウントのみ):
OPENCLAW_TWITCH_ACCESS_TOKEN=... - または config:
channels.twitch.accessToken
両方が設定されている場合、config が優先されます(env はデフォルトアカウントのみのフォールバック)。
- Env(デフォルトアカウントのみ):
- Gateway を起動します。
⚠️ 重要: 不正なユーザーがボットをトリガーできないように、allowFrom または allowedRoles を必ず設定してください。requireMention はデフォルトで true です。
最小の config:
{
channels: {
twitch: {
enabled: true,
username: "openclaw", // BotのTwitchアカウント
accessToken: "oauth:abc123...", // OAuth Access Token(または OPENCLAW_TWITCH_ACCESS_TOKEN env var)
clientId: "xyz789...", // Token Generator の Client ID
channel: "vevisk", // 参加するTwitchチャンネル(必須)
allowFrom: ["123456789"], // (推奨)あなたのTwitch user ID のみ
},
},
}これは何?(What it is)
- Gateway が管理する Twitch チャネルです。
- 決定的ルーティング(deterministic routing):返信は常に Twitch に戻ります。
- 各アカウントは、分離されたセッションキー
agent:<agentId>:twitch:<accountName>に対応します。 usernameは認証するボットアカウント、channelは参加するチャットルーム(必須)です。
セットアップ(詳細)
認証情報を生成する
Twitch Token Generatorを使います。
- Bot Token を選択
chat:readとchat:writeのスコープが選択されていることを確認- Client ID と Access Token をコピー
手動のアプリ登録は不要です。トークンは数時間で期限切れになります。
ボットを設定する
Env var(デフォルトアカウントのみ):
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"], // (推奨)あなたのTwitch user ID のみ
},
},
}硬い allowlist(厳格に絞る)なら allowFrom を優先してください。 ロールベースで許可したい場合は allowedRoles を使います。
利用可能なロール:
"moderator""owner""vip""subscriber""all"
なぜ user ID? Twitch の username は変更できるため、なりすましが可能です。user ID は恒久的です。
Twitch user ID の取得: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/
トークン更新(任意)
Twitch Token Generator のトークンは自動更新できません(期限切れになったら再生成してください)。
自動更新を行いたい場合は Twitch Developer Console でアプリを作成し、次を設定します:
{
channels: {
twitch: {
clientSecret: "your_client_secret",
refreshToken: "your_refresh_token",
},
},
}ボットは有効期限の前にトークンを自動更新し、更新イベントをログに出します。
マルチアカウント
channels.twitch.accounts を使うと、アカウント(チャンネル)ごとにトークンを分けて設定できます。 共有パターンは gateway/configuration を参照してください。
例(1つのボットアカウントで2つのチャンネルに参加):
{
channels: {
twitch: {
accounts: {
channel1: {
username: "openclaw",
accessToken: "oauth:abc123...",
clientId: "xyz789...",
channel: "vevisk",
},
channel2: {
username: "openclaw",
accessToken: "oauth:def456...",
clientId: "uvw012...",
channel: "secondchannel",
},
},
},
},
}Note: 各アカウントは独自のトークンが必要です(チャンネルごとに1トークン)。
アクセス制御(詳細)
ロールベース制限
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator", "vip"],
},
},
},
},
}User ID の allowlist(最も安全)
{
channels: {
twitch: {
accounts: {
default: {
allowFrom: ["123456789", "987654321"],
},
},
},
},
}ロールベースアクセス(代替)
allowFrom は硬い allowlist です。設定されている場合、その user ID だけが許可されます。 ロールベースにしたい場合は、allowFrom を未設定にして allowedRoles を設定します。
{
channels: {
twitch: {
accounts: {
default: {
allowedRoles: ["moderator"],
},
},
},
},
}@メンション必須を無効化
デフォルトでは requireMention は true です。すべてのメッセージに反応させるには:
{
channels: {
twitch: {
accounts: {
default: {
requireMention: false,
},
},
},
},
}トラブルシューティング
まず診断コマンドを実行します:
openclaw doctor openclaw channels status --probe
ボットがメッセージに反応しない
- アクセス制御を確認: 自分の user ID が
allowFromに入っているか確認します。テストでは一時的にallowFromを外してallowedRoles: ["all"]を設定してもよいです。 - チャンネル参加を確認: ボットは
channelで指定したチャンネルに参加している必要があります。
トークン問題
"Failed to connect" や認証エラーの場合:
accessTokenが OAuth access token の値であることを確認(通常oauth:プレフィックスで始まる)- トークンに
chat:readとchat:writeが含まれることを確認 - トークン自動更新を使う場合、
clientSecretとrefreshTokenが設定されていることを確認
トークン更新が動かない
ログで refresh イベントを確認します:
Using env token source for mybot Access token refreshed for user 123456 (expires in 14400s)
もし token refresh disabled (no refresh token) が出る場合:
clientSecretが提供されていることrefreshTokenが提供されていること
設定(Config)
アカウント設定(Account config)
username:ボットの usernameaccessToken:chat:readとchat:writeを持つ OAuth access tokenclientId:Twitch Client ID(Token Generator または自作アプリ)channel:参加するチャンネル(必須)enabled:このアカウントを有効化(デフォルト:true)clientSecret:任意(自動トークン更新用)refreshToken:任意(自動トークン更新用)expiresIn:トークン有効期限(秒)obtainmentTimestamp:トークン取得時刻(timestamp)allowFrom:user ID allowlistallowedRoles:ロールベースのアクセス制御("moderator" | "owner" | "vip" | "subscriber" | "all")requireMention:@メンション必須(デフォルト:true)
プロバイダオプション(Provider options)
channels.twitch.enabled:チャネル起動の有効/無効channels.twitch.username:ボット username(単一アカウント簡易設定)channels.twitch.accessToken:OAuth access token(単一アカウント簡易設定)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"],
},
},
},
},
}ツールアクション(Tool actions)
エージェントは Twitch に対して次の action を呼び出せます:
send:チャンネルへメッセージ送信
例:
{
action: "twitch",
params: {
message: "Hello Twitch!",
to: "#mychannel",
},
}安全と運用(Safety & ops)
- トークンはパスワード同様に扱う:トークンを git にコミットしない
- 長期運用では 自動トークン更新 を使う
- アクセス制御は username ではなく user ID allowlist を推奨
- ログでトークン更新イベントと接続状況を監視
- スコープは最小限(
chat:readとchat:writeのみ) - 詰まったら:セッションを他プロセスが掴んでいないことを確認して Gateway を再起動
制限(Limits)
- 1メッセージ 500 文字(単語境界で自動分割)
- Markdown は分割前に取り除かれます
- OpenClaw 側に独自のレート制限はありません(Twitch 側のレート制限を使用)
参考
関連記事

AIエージェントのメモリスタックとは?2026年に重要度が上がる理由をやさしく解説
2026年4月8日
OpenClaw vs Hermes vs Claude、創業者はどれを選ぶべき?2026年版の実務比較
2026年4月8日