OpenClaw

OpenClaw Twitch チャンネル

メッセージング
簡単

IRC プロトコルを使用して OpenClaw を Twitch チャットに接続し、AI アシスタントが視聴者とリアルタイムでやり取りできるようにします。Twitch プラグインをインストールし、チャットスコープを持つ OAuth トークンを設定すれば、ボットがチャンネルに参加してメンションに応答し、ロールベースのアクセス制御で会話を管理できます。

基本情報
難易度簡単
カテゴリメッセージング
対応機能数2 / 6

Twitch 対応機能

テキストメッセージ

対応

メディア・ファイル

非対応

リアクション

非対応

スレッド

非対応

音声メッセージ

非対応

グループチャット

対応

Twitch 前提条件

  • ボットの ID として使用する Twitch アカウント
  • chat:read と chat:write スコープを持つ OAuth Access Token
  • Twitch Developer Console からの Client ID
  • OpenClaw Gateway がインストール・稼働済み
  • 'openclaw plugins install @openclaw/twitch' で Twitch プラグインがインストール済み

Twitch クイックセットアップ

1

Twitch プラグインをインストール

'openclaw plugins install @openclaw/twitch' を実行して Twitch サポートを追加します。ローカルパスからインストールする場合は 'openclaw plugins install ./extensions/twitch' を使用してください。

2

OAuth トークンと Client ID を取得

twitchtokengenerator.com にアクセスし、chat:read と chat:write スコープで 'Bot Token' を選択します。Access Token をコピーしてください。また、Twitch Developer Console(dev.twitch.tv/console)から Client ID を取得します。

3

設定と起動

~/.openclaw/openclaw.json に username、accessToken、clientId、対象チャンネルを含む Twitch チャンネル設定を追加します。'openclaw start' で Gateway を起動し、Twitch チャンネルでボットをメンションしてメッセージを送信し、動作を確認します。

Twitch 設定例

config.json
{
  "channels": {
    "twitch": {
      "enabled": true,
      "username": "mybotname",
      "accessToken": "oauth:abc123...",
      "clientId": "your-client-id",
      "channel": "targetchannel",
      "allowFrom": ["123456789"]
    }
  }
}

Twitch 詳細ドキュメント

アーキテクチャ概要

OpenClaw は IRC プロトコルを使用して Twitch チャットに接続します。Gateway は OAuth トークンで認証し、指定されたチャンネルに参加してメッセージを監視します。 視聴者がボットをトリガーするメッセージを送信すると(デフォルトでは @メンション)、Gateway はそのメッセージを AI エージェントに転送します。レスポンスは同じ Twitch チャンネルに送信され、Twitch の制限に準拠するため自動的に500文字ごとに分割されます。 各アカウントは一意のセッションキー(agent:<agentId>:twitch:<accountName>)にマッピングされるため、同じ Gateway 上で複数のアカウントが独立して動作できます。Twitch チャットでは Markdown がレンダリングされないため、送信前に自動的に除去されます。
返信は決定論的に、元の Twitch チャンネルにルーティングされます。
500文字を超えるメッセージは、単語の境界で自動的に分割されます。

認証情報の取得

接続には3つの認証情報が必要です:OAuth Access Token、Client ID、ボットのユーザー名です。 1. twitchtokengenerator.com にアクセスし、'Bot Token' を選択します。 2. chat:read と chat:write スコープでトークンを認可します。 3. 生成された Access Token('oauth:' で始まる)をコピーします。 4. Client ID については、Twitch Developer Console(dev.twitch.tv/console)にアクセスし、アプリケーションを登録して Client ID をコピーします。 Access Token は OPENCLAW_TWITCH_ACCESS_TOKEN 環境変数でも指定できます。環境変数と設定ファイルの両方が設定されている場合、設定ファイルが優先されます。
terminal
# Environment variable (default account only)
export OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
Access Token をバージョン管理にコミットしないでください。環境変数またはシークレットマネージャーを使用してください。
twitchtokengenerator.com のトークンは数時間で有効期限が切れます。長時間稼働するボットには自動更新を設定してください。

トークンの自動更新

Twitch Token Generator のトークンは数時間で有効期限が切れます。本番環境のボットでは、ダウンタイムを回避するためにトークンの自動更新を設定してください。 1. Twitch Developer Console(dev.twitch.tv/console)でアプリケーションを登録します。 2. Client Secret を控え、OAuth Authorization Code フローを使用して Refresh Token を取得します。 3. アカウント設定に clientSecret と refreshToken を追加します。 ボットはトークンの有効期限が切れる前に自動的に更新し、監視用に更新イベントをログに記録します。
openclaw.json
{
  "channels": {
    "twitch": {
      "accessToken": "oauth:abc123...",
      "clientId": "your-client-id",
      "clientSecret": "your-client-secret",
      "refreshToken": "your-refresh-token"
    }
  }
}
自動更新を設定しない場合、トークンの有効期限が切れるたびに手動で置き換える必要があります。

ユーザー ID によるアクセス制御

Twitch のユーザー名は変更可能であるため、なりすましのリスクがあります。OpenClaw では、ユーザー名ではなく数値のユーザー ID を使用したアクセス制御を強く推奨しています。 allowFrom フィールドは、永続的な Twitch ユーザー ID の配列を受け付けます。このリストに含まれるユーザー ID を持つユーザーのみがボットとやり取りできます。それ以外のユーザーはサイレントに無視されます。 ユーザーの数値 ID は、Twitch API やtwitchinsights.net などのサードパーティツールで確認できます。
openclaw.json
{
  "channels": {
    "twitch": {
      "allowFrom": ["123456789", "987654321"]
    }
  }
}
ユーザー ID は永続的で、ユーザー名の変更の影響を受けません。セキュリティのため、常にユーザー名よりも ID を使用してください。

ロールベースのアクセス制御

明示的なユーザー ID 許可リストの代わりに(または併用して)、Twitch チャットのロールでアクセスを制限できます。allowedRoles フィールドはロール名の配列を受け付けます。 利用可能なロール: • moderator — チャンネルモデレーター • owner — チャンネル配信者 • vip — VIP ユーザー • subscriber — チャンネルサブスクライバー • all — チャンネル内の全ユーザー(注意して使用してください) allowedRoles を設定すると、少なくとも1つのロールに一致するユーザーのみがボットとやり取りできます。
openclaw.json
{
  "channels": {
    "twitch": {
      "allowedRoles": ["moderator", "vip"]
    }
  }
}
allowedRoles を ['all'] に設定すると、すべての視聴者がボットとやり取りできるようになり、トラフィックの多いチャンネルでは AI クォータを大量に消費する可能性があります。

メンション要件

デフォルトでは、ボットはチャットで明示的に @メンションされた場合にのみ応答します(requireMention: true)。これにより、アクティブなチャンネルでボットがすべてのメッセージに反応するのを防ぎます。 requireMention を false に設定するとこの動作を無効化でき、ボットは許可されたユーザーからのすべてのメッセージに応答するようになります。これは専用のボットチャンネルやトラフィックの少ない配信で便利です。
openclaw.json
{
  "channels": {
    "twitch": {
      "requireMention": false
    }
  }
}
トラフィックの多いチャンネルでは、すべてのチャットメッセージでボットが過負荷にならないよう、requireMention を有効のままにしてください。

マルチアカウント設定

OpenClaw は複数の Twitch ボットアカウントを同時に実行できます。各アカウントには独自の OAuth トークンが必要で、1つのチャンネルにマッピングされます。 accounts.<name> パターンを使用して複数のアカウントを設定します。各アカウントは独立したアクセス制御、メンション要件、トークン更新設定を持つことができます。
openclaw.json
{
  "channels": {
    "twitch": {
      "accounts": {
        "gaming-bot": {
          "username": "gamingbot",
          "accessToken": "oauth:token1...",
          "clientId": "client-id-1",
          "channel": "gamingchannel",
          "allowedRoles": ["subscriber"]
        },
        "mod-bot": {
          "username": "modbot",
          "accessToken": "oauth:token2...",
          "clientId": "client-id-2",
          "channel": "modchannel",
          "allowFrom": ["111222333"]
        }
      }
    }
  }
}

エージェントのツールアクション

AI エージェントは twitch ツールアクションを使用して、Twitch チャンネルにプロアクティブにメッセージを送信できます。これにより、ユーザーのトリガーなしに通知、アラート、スケジュール済みメッセージを送信できます。 このアクションにはメッセージと対象チャンネル(# プレフィックス付き)が必要です。
agent-action.json
{
  "action": "twitch",
  "params": {
    "message": "Hello Twitch!",
    "to": "#mychannel"
  }
}
ツールアクションは通常のチャットメッセージと同じレート制限が適用されます。

レート制限とメッセージの制約

Twitch はチャットメッセージに厳格なレート制限を適用しています。OpenClaw は Twitch の組み込みレート制限を使用しており、追加のレート制限レイヤーはありません。 標準(未認証)アカウント: • 30秒あたり20メッセージ(モデレーター/VIP 以外) • 30秒あたり100メッセージ(モデレーター/VIP/配信者) 認証済みボットアカウント: • 30秒あたり7,500メッセージ すべてのアカウントはチャンネルごとに1秒あたり1メッセージに制限されています。制限を超えたメッセージは Twitch によってサイレントに破棄されます。 メッセージの最大長は500文字です。それを超えるレスポンスは単語の境界で自動的に分割されます。
ボットがレート制限を超過した場合、Twitch はエラーなしにメッセージをサイレントに破棄します。トラフィックの多いチャンネルではボットのアクティビティを監視してください。

Twitch 設定リファレンス

enabled
Type: booleanDefault: true

Twitch チャンネルの有効化/無効化

username
Type: stringDefault: ""

ボットが使用する Twitch アカウント名

accessToken
Type: stringDefault: ""

chat:read と chat:write スコープを持つ OAuth トークン('oauth:' で始まる必要あり)

clientId
Type: stringDefault: ""

Twitch Developer Console からの Client ID

channel
Type: stringDefault: ""

参加する対象の Twitch チャンネル(必須)

clientSecret
Type: stringDefault: ""

トークン自動更新用の Client Secret

refreshToken
Type: stringDefault: ""

トークン自動更新用の Refresh Token

expiresIn
Type: numberDefault:

トークンの有効期限(秒)

obtainmentTimestamp
Type: numberDefault:

現在のトークンが取得された時刻のタイムスタンプ(ミリ秒)

allowFrom
Type: string[]Default: []

厳格なアクセス制限のための Twitch ユーザー ID 許可リスト

allowedRoles
Type: string[]Default: []

ロールベースのアクセス制御(moderator、owner、vip、subscriber、all)

requireMention
Type: booleanDefault: true

ボットが応答するために @メンションが必要かどうか

accounts.<id>.username
Type: stringDefault: ""

マルチアカウントモードにおける特定アカウントのボットユーザー名

accounts.<id>.accessToken
Type: stringDefault: ""

特定アカウントの OAuth トークン

accounts.<id>.channel
Type: stringDefault: ""

特定アカウントの対象チャンネル

Twitch よくある質問

Twitch トラブルシューティング

ボットが無応答 — メッセージに返信しない

allowFrom リストにユーザー ID が含まれていないか、ボットが @メンションを検出していない可能性があります。

Twitch ユーザー ID(ユーザー名ではなく)が allowFrom 配列に含まれていることを確認してください。テスト時は allowedRoles を ['all'] に設定してみてください。requireMention が true の場合、ボットを正しく @メンションしているか確認してください。
起動時に認証に失敗

OAuth トークンが無効、有効期限切れ、または必要なスコープが不足しています。

トークンが 'oauth:' で始まり、chat:read と chat:write スコープを持っていることを確認してください。twitchtokengenerator.com で新しいトークンを生成してください。Gateway のログで具体的なエラーメッセージを確認してください。
トークンの更新が機能しない

clientSecret または refreshToken が不足しているか、正しくありません。

設定に clientSecret と refreshToken の両方が指定されていることを確認してください。Client Secret は dev.twitch.tv/console で登録されたアプリケーションと一致する必要があります。トークン更新エラーの詳細はログを確認してください。
メッセージがサイレントに破棄される

ボットが Twitch のレート制限を超過しています。

メッセージの送信頻度を減らしてください。標準アカウントは30秒あたり20メッセージ(モデレーターは100)に制限されています。より高い制限のために認証済みボットステータスの申請を検討してください。ボットが過度に長いレスポンスを生成し、多数の分割メッセージになっていないか確認してください。
ボットは接続するがチャンネルに参加しない

チャンネル名が正しくないか、アカウントがチャンネルから BAN されている可能性があります。

チャンネル名が正しいことを確認してください(小文字、# プレフィックスなし)。Gateway のログで JOIN エラーを確認してください。ボットアカウントが対象チャンネルで BAN またはタイムアウトされていないことを確認してください。