Developer and self-hosted
Twitch
Twitch のチャット(IRC)インターフェースを Twurple クライアント経由で利用する Twitch チャット対応です。OpenClaw は Twitch ボットアカウントとしてサインインし、設定されたアカウントごとに 1 つのチャンネルへ参加し、そのチャンネルで返信します。
インストール
Twitch は公式 Plugin として提供され、コアインストールには含まれません。
npm レジストリ
openclaw plugins install @openclaw/twitchローカルチェックアウト
openclaw plugins install ./path/to/local/twitch-pluginplugins install は Plugin を登録して有効にします。openclaw onboard または openclaw channels add で Twitch を選択すると、必要に応じてインストールされます。現在のリリースを追従するにはバージョンなしのパッケージ名を使用し、再現可能なインストールが必要な場合にのみ正確なバージョンを固定してください。OpenClaw 2026.4.10 以降が必要です。
詳細:Plugin
クイックセットアップ
Plugin をインストールする
上記のインストールを参照してください。
Twitch ボットアカウントを作成する
ボット専用の 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/ を使用して、ユーザー名を Twitch ユーザー ID に変換します。
トークンを設定する
- 環境変数:
OPENCLAW_TWITCH_ACCESS_TOKEN=...(デフォルトアカウントのみ) - または設定:
channels.twitch.accessToken
両方が設定されている場合は設定が優先されます(環境変数はデフォルトアカウントのフォールバックとしてのみ使用されます)。
Gateway を起動する
openclaw gateway run最小設定:
{ channels: { twitch: { enabled: true, username: "openclaw", // ボットの Twitch アカウント(認証に使用) accessToken: "oauth:abc123...", // OAuth アクセストークン(または OPENCLAW_TWITCH_ACCESS_TOKEN 環境変数を使用) clientId: "xyz789...", // Token Generator から取得したクライアント ID channel: "yourchannel", // 参加する Twitch チャンネルのチャット(必須) allowFrom: ["123456789"], // (推奨)自分の Twitch ユーザー ID のみ }, },}概要
- Gateway が所有する Twitch チャンネルです。
- 決定的なルーティング:返信は常に、メッセージの送信元である Twitch チャンネルへ返されます。
- 参加した各チャンネルは、分離されたグループセッションキー
agent:<agentId>:twitch:group:<channel>に対応します。 usernameはボットのアカウント(認証するアカウント)、channelは参加するチャットルームです。各アカウントエントリは正確に 1 つのチャンネルへ参加します。- トークンは
oauth:プレフィックスの有無にかかわらず使用できます。OpenClaw はどちらの形式も正規化します(セットアップウィザードではoauth:形式を使用します)。
トークンの更新(任意)
Twitch Token Generator のトークンは OpenClaw では更新できません。期限が切れたら再生成してください(有効期間は数時間で、アプリの登録は不要です)。
自動更新を使用するには、Twitch Developer Console で独自のアプリを作成し、以下を追加します。
{ channels: { twitch: { clientSecret: "your_client_secret", refreshToken: "your_refresh_token", }, },}両方を設定すると、Plugin は期限切れ前にトークンを更新する認証プロバイダーを使用し、更新のたびにログを記録します。refreshToken がない場合は token refresh disabled (no refresh token) とログに記録され、clientSecret がない場合は静的な(更新されない)トークンへフォールバックします。
複数アカウント対応
アカウントごとの認証情報を含む channels.twitch.accounts を使用します。共通パターンについては設定を参照してください。
例(2 つのチャンネルで 1 つのボットアカウントを使用):
{ channels: { twitch: { accounts: { channel1: { username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "yourchannel", }, channel2: { username: "openclaw", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "secondchannel", }, }, }, },}アクセス制御
allowFrom は Twitch ユーザー ID の厳格な許可リストです。これを設定すると allowedRoles は無視されます。代わりにロールベースのアクセスを使用する場合は、allowFrom を設定しないでください。
利用可能なロール: "moderator"、"owner"、"vip"、"subscriber"、"all"。
ユーザー ID 許可リスト(最も安全)
{ channels: { twitch: { accounts: { default: { allowFrom: ["123456789", "987654321"], }, }, }, },}ロールベース
{ channels: { twitch: { accounts: { default: { allowedRoles: ["moderator", "vip"], }, }, }, },}@メンション要件を無効にする
デフォルトでは requireMention は true です。許可されたすべてのメッセージに応答するには、次のように設定します。
{ channels: { twitch: { accounts: { default: { requireMention: false, }, }, }, },}トラブルシューティング
最初に、診断コマンドを実行します。
openclaw doctoropenclaw channels status --probeボットがメッセージに応答しない
- アクセス制御を確認する: 自分のユーザー ID が
allowFromに含まれていることを確認するか、テストのため一時的にallowFromを削除してallowedRoles: ["all"]を設定します。 - メンションゲートを確認する:
requireMention: true(デフォルト)の場合、メッセージでボットのユーザー名を @メンションする必要があります。 - ボットがチャンネルに参加していることを確認する: ボットは
channelで指定されたチャンネルにのみ参加します。
トークンの問題
「接続に失敗しました」または認証エラーが発生する場合:
accessTokenが OAuth アクセストークンの値であることを確認する(oauth:プレフィックスは任意)- トークンに
chat:readとchat:writeのスコープがあることを確認する - トークン更新を使用している場合は、
clientSecretとrefreshTokenが設定されていることを確認する
トークン更新が機能しない
ログで更新イベントを確認します。
mybot に環境変数のトークンソースを使用ユーザー 123456 のアクセストークンを更新しました(14400 秒後に期限切れ)token refresh disabled (no refresh token) が表示される場合:
clientSecretが指定されていることを確認するrefreshTokenが指定されていることを確認する
設定
アカウント設定
usernamestringrequiredボットのユーザー名(認証するアカウント)。
accessTokenstringrequiredchat:read と chat:write を持つ OAuth アクセストークン(デフォルトアカウントでは設定または環境変数)。
clientIdstringrequiredTwitch クライアント ID(Token Generator または独自のアプリから取得)。スキーマ上は任意ですが、接続には必須です。
channelstringrequired参加するチャンネル。
enabledbooleandefault: trueこのアカウントを有効にします。
clientSecretstring任意:トークンの自動更新に使用します。
refreshTokenstring任意:トークンの自動更新に使用します。
expiresInnumberトークンの有効期限(秒単位、更新の追跡用)。
obtainmentTimestampnumberトークンを取得した時点のタイムスタンプ(更新の追跡用)。
allowFromstring[]ユーザー ID の許可リスト。設定するとロールは無視されます。
allowedRoles'Array<"moderator"requireMentionbooleandefault: trueボットを起動するために @メンションを必須にします。
responsePrefixstringこのアカウントの送信応答プレフィックスを上書きします。
プロバイダーオプション
channels.twitch.enabled- チャンネルの起動を有効化または無効化channels.twitch.username/accessToken/clientId/channel- 簡略化された単一アカウント設定(暗黙のdefaultアカウント。accounts.defaultより優先)channels.twitch.accounts.<accountName>- 複数アカウント設定(上記のすべてのアカウントフィールド)channels.twitch.defaultAccount- デフォルトにするアカウント名channels.twitch.markdown.tables- Markdown テーブルのレンダリングモード(off|bullets|code|block)
完全な例:
{ channels: { twitch: { enabled: true, username: "openclaw", accessToken: "oauth:abc123...", clientId: "xyz789...", channel: "yourchannel", clientSecret: "secret123...", refreshToken: "refresh456...", allowFrom: ["123456789"], accounts: { second: { username: "mybot", accessToken: "oauth:def456...", clientId: "uvw012...", channel: "your_channel", enabled: true, expiresIn: 14400, obtainmentTimestamp: 1706092800000, allowedRoles: ["moderator"], }, }, }, },}ツールアクション
エージェントは、メッセージツールの send アクションを通じて Twitch メッセージを送信できます。
{ channel: "twitch", action: "send", to: "#mychannel", message: "Hello Twitch!",}to は任意で、デフォルトではアカウントに設定された channel が使用されます。
安全性と運用
- トークンをパスワードと同様に扱う - トークンを Git にコミットしないでください。
- 長時間稼働するボットではトークンの自動更新を使用する。
- アクセス制御には、ユーザー名ではなくユーザー ID の許可リストを使用する。
- トークン更新イベントと接続状態を確認するためにログを監視する。
- トークンのスコープを最小限にする -
chat:readとchat:writeのみを要求してください。 - 問題が解決しない場合:ほかのプロセスがセッションを所有していないことを確認してから、Gateway を再起動します。
制限
- 1 メッセージあたり 500 文字。長い返信は単語の境界で分割されます。
- 送信前に Markdown は除去されます(Twitch チャットはプレーンテキストで、改行はスペースになります)。
- OpenClaw 自体はレート制限を追加しません。Twurple チャットクライアントが Twitch のレート制限を処理します。
関連項目
- チャンネルルーティング — メッセージのセッションルーティング
- チャンネル概要 — 対応しているすべてのチャンネル
- グループ — グループチャットの動作とメンションゲート
- ペアリング — DM 認証とペアリングフロー
- セキュリティ — アクセスモデルと強化策