メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

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

同梱 Plugin

Twitch は現在の OpenClaw リリースでは同梱 Plugin として提供されるため、通常のパッケージビルドでは別途インストールは不要です。
Twitch を含まない古いビルドまたはカスタムインストールを使用している場合は、npm パッケージを直接インストールします。
openclaw plugins install @openclaw/twitch
現在の公式リリースタグに追従するには、素のパッケージを使用します。再現可能なインストールが必要な場合にのみ、厳密な バージョンを固定してください。 詳細: Plugins

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

1

Ensure plugin is available

現在のパッケージ版 OpenClaw リリースには、すでに同梱されています。古いインストールやカスタムインストールでは、上記のコマンドで手動追加できます。
2

Create a Twitch bot account

bot 用の専用 Twitch アカウントを作成します(または既存のアカウントを使用します)。
3

Generate credentials

Twitch Token Generator を使用します。
  • Bot Token を選択
  • スコープ chat:readchat:write が選択されていることを確認
  • Client IDAccess Token をコピー
4

Find your Twitch user ID

https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/ を使用して、ユーザー名を Twitch ユーザー ID に変換します。
5

Configure the token

  • Env: OPENCLAW_TWITCH_ACCESS_TOKEN=...(デフォルトアカウントのみ)
  • または config: channels.twitch.accessToken
両方が設定されている場合は、config が優先されます(env フォールバックはデフォルトアカウントのみ)。
6

Start the gateway

設定済みチャンネルで Gateway を起動します。
認可されていないユーザーが bot をトリガーできないように、アクセス制御(allowFrom または allowedRoles)を追加してください。requireMention のデフォルトは true です。
最小構成:
{
  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 を設定する

OPENCLAW_TWITCH_ACCESS_TOKEN=oauth:abc123...
env と config の両方が設定されている場合は、config が優先されます。

アクセス制御(推奨)

{
  channels: {
    twitch: {
      allowFrom: ["123456789"], // (recommended) Your Twitch user ID only
    },
  },
}
厳格な許可リストには allowFrom を推奨します。ロールベースのアクセスを使用したい場合は、代わりに allowedRoles を使用します。 利用可能なロール: "moderator""owner""vip""subscriber""all"
なぜユーザー ID なのか? ユーザー名は変更できるため、なりすましを許す可能性があります。ユーザー ID は永続的です。Twitch ユーザー ID を確認する: https://www.streamweasels.com/tools/convert-twitch-username-to-user-id/(Twitch ユーザー名を ID に変換)

トークン更新(任意)

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",
        },
      },
    },
  },
}
各アカウントには独自のトークンが必要です(チャンネルごとに 1 トークン)。

アクセス制御

{
  channels: {
    twitch: {
      accounts: {
        default: {
          allowFrom: ["123456789", "987654321"],
        },
      },
    },
  },
}

トラブルシューティング

まず、診断コマンドを実行します。
openclaw doctor
openclaw channels status --probe
  • アクセス制御を確認: ユーザー ID が allowFrom に含まれていることを確認するか、テストのために一時的に allowFrom を削除して allowedRoles: ["all"] を設定します。
  • bot がチャンネル内にいることを確認: bot は channel で指定されたチャンネルに参加している必要があります。
「接続に失敗しました」または認証エラー:
  • accessToken が OAuth アクセストークン値であることを確認します(通常は oauth: プレフィックスで始まります)
  • トークンに chat:readchat:write のスコープがあることを確認します
  • トークン更新を使用している場合は、clientSecretrefreshToken が設定されていることを確認します
更新イベントのログを確認します。
Using env token source for mybot
Access token refreshed for user 123456 (expires in 14400s)
「token refresh disabled (no refresh token)」が表示される場合:
  • clientSecret が提供されていることを確認します
  • refreshToken が提供されていることを確認します

Config

アカウント設定

username
string
bot ユーザー名。
accessToken
string
chat:readchat:write を持つ OAuth アクセストークン。
clientId
string
Twitch Client ID(Token Generator または自分のアプリから)。
channel
string
必須
参加するチャンネル。
enabled
boolean
デフォルト:"true"
このアカウントを有効化します。
clientSecret
string
任意: 自動トークン更新用。
refreshToken
string
任意: 自動トークン更新用。
expiresIn
number
トークンの有効期限(秒)。
obtainmentTimestamp
number
トークン取得タイムスタンプ。
allowFrom
string[]
ユーザー ID 許可リスト。
allowedRoles
Array<"moderator" | "owner" | "vip" | "subscriber" | "all">
ロールベースのアクセス制御。
requireMention
boolean
デフォルト:"true"
@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 の組み込みレート制限を使用)。

関連