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:readchat:write が選択されていることを確認
    • Client IDAccess 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:readchat:write が選択されていることを確認
    • Client IDAccess 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

    デフォルトでは、requireMentiontrue です。無効化してすべてのメッセージに応答するには、次のようにします。

    {
      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:readchat:write のスコープがあることを確認します
    • トークン更新を使用している場合は、clientSecretrefreshToken が設定されていることを確認します
    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

    アカウント設定

    usernamestring

    bot ユーザー名。

    accessTokenstring

    chat:readchat:write を持つ OAuth アクセストークン。

    clientIdstring

    Twitch 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:readchat:write のみを要求します。
    • 行き詰まった場合: 他のプロセスがセッションを所有していないことを確認してから、Gateway を再起動します。

    制限

    • メッセージあたり 500 文字(単語境界で自動分割)。
    • Markdown は分割前に削除されます。
    • レート制限なし(Twitch の組み込みレート制限を使用)。

    関連