TwitchでOpenClawを使う(IRC接続)

【最新版】TwitchでOpenClawを使う方法(プラグイン導入・Botトークン設定)

Twitch

Twitch(プラグイン)

Twitch のチャットは IRC 接続でサポートされます。OpenClaw は Twitch ユーザー(ボットアカウント)として接続し、チャンネル内のメッセージを受信/送信します。

プラグインが必要

Twitch はプラグインとして提供されており、コアインストールには同梱されていません。

CLI(npm レジストリ)でインストール:

openclaw plugins install @openclaw/twitch

ローカルチェックアウト(git リポジトリから実行している場合):

openclaw plugins install ./extensions/twitch

詳細: Plugins

クイックセットアップ(初心者向け)

  1. ボット用の Twitch アカウントを用意します(専用アカウント推奨。既存アカウントでも可)。
  2. 認証情報を生成します: Twitch Token Generator
    • Bot Token を選択
    • chat:readchat:write のスコープが選択されていることを確認
    • Client IDAccess Token をコピー
  3. 自分の Twitch user ID を見つけます: Convert Twitch username to user ID
  4. トークンを設定します:
    • Env(デフォルトアカウントのみ):OPENCLAW_TWITCH_ACCESS_TOKEN=...
    • または config:channels.twitch.accessToken

    両方が設定されている場合、config が優先されます(env はデフォルトアカウントのみのフォールバック)。

  5. 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:readchat:write のスコープが選択されていることを確認
  • Client IDAccess 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"],
    },
   },
  },
 },
}

@メンション必須を無効化

デフォルトでは requireMentiontrue です。すべてのメッセージに反応させるには:

{
 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:readchat:write が含まれることを確認
  • トークン自動更新を使う場合、clientSecretrefreshToken が設定されていることを確認

トークン更新が動かない

ログで 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:ボットの username
  • accessTokenchat:readchat:write を持つ OAuth access token
  • clientId:Twitch Client ID(Token Generator または自作アプリ)
  • channel:参加するチャンネル(必須)
  • enabled:このアカウントを有効化(デフォルト:true)
  • clientSecret:任意(自動トークン更新用)
  • refreshToken:任意(自動トークン更新用)
  • expiresIn:トークン有効期限(秒)
  • obtainmentTimestamp:トークン取得時刻(timestamp)
  • allowFrom:user ID allowlist
  • allowedRoles:ロールベースのアクセス制御("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:readchat:write のみ)
  • 詰まったら:セッションを他プロセスが掴んでいないことを確認して Gateway を再起動

制限(Limits)

  • 1メッセージ 500 文字(単語境界で自動分割)
  • Markdown は分割前に取り除かれます
  • OpenClaw 側に独自のレート制限はありません(Twitch 側のレート制限を使用)

参考

BizClaw 導入支援

OpenClaw の構築を
まるごと代行します

Mac mini のセットアップから Slack・iMessage 連携まで、届いた日から使える状態でお届けします。

サービスを見る

関連記事

Read article
AIエージェントのメモリスタックとは?2026年に重要度が上がる理由をやさしく解説

AIエージェントのメモリスタックとは?2026年に重要度が上がる理由をやさしく解説

Read article
OpenClaw vs Hermes vs Claude、創業者はどれを選ぶべき?2026年版の実務比較

OpenClaw vs Hermes vs Claude、創業者はどれを選ぶべき?2026年版の実務比較

Read article
X公式MCPサーバーとは?AIエージェント運用で何が変わるのかを実務目線で解説

X公式MCPサーバーとは?AIエージェント運用で何が変わるのかを実務目線で解説