マルチエージェントChromeオーケストレーター は何をしますか?
1~5の並列Claude Codeエージェントを起動し、それぞれに独立したChromeブラウザを割り当てて、ブラウザタスクを同時に実行します。
使用するタイミング
- ウェブサイトのリストに対してコンタクトフォームを送信する
- 複数のプラットフォームで申請書を記入する
- 実際のブラウザ操作が必要なJSレンダリングページをスクレイピングする
- 逐次実行では遅すぎる反復的なブラウザタスク
アーキテクチャ
Business workspace (orchestrator)
├── active/multi-chrome-agent/
│ ├── chat.md # 共有調整ファイル
│ ├── launch_chrome.sh # ポート9223~9227にChromeインスタンスを生成
│ ├── kill_chrome.sh # すべてのChromeインスタンスを終了
│ ├── chrome-agent-1/ # エージェント1用ワークスペース
│ │ ├── .mcp.json # ポート9223のChrome DevTools
│ │ └── CLAUDE.md # エージェント動作指示
│ ├── chrome-agent-2/ # ポート9224
│ ├── chrome-agent-3/ # ポート9225
│ ├── chrome-agent-4/ # ポート9226
│ └── chrome-agent-5/ # ポート9227
ステップバイステップの調整手順
1. 必要なエージェント数を決定する
タスクを確認します。10件のコンタクトフォームがある場合は、3~5エージェントが適切です。3件の場合は、2~3エージェントを使用します。過剰にプロビジョニングしないでください。
2. Chromeインスタンスを起動する
bash /Users/nicksaraev/Business/active/multi-chrome-agent/launch_chrome.sh [COUNT]
これにより、COUNT個のChromeインスタンスがポート9223以降で生成されます。各インスタンスの「READY」確認を待ちます。
3. チャットファイルをリセットする
チャットファイルをクリアし、タスクの割り当てを記述します:
# Multi-Chrome Agent Chat
## Orchestrator
[2026-03-05 14:30] コンタクトフォーム送信のために3エージェントを起動中。
### Agent 1 Tasks
1. https://example1.com/contact にアクセス → 名前:「山田太郎」、メール:「[email protected]」、メッセージ:「こんにちは、興味があります...」を入力
2. https://example2.com/contact にアクセス → 同様のフォーム入力
### Agent 2 Tasks
1. https://example3.com/contact にアクセス → フォーム入力
2. https://example4.com/contact にアクセス → フォーム入力
### Agent 3 Tasks
1. https://example5.com/contact にアクセス → フォーム入力
2. https://example6.com/contact にアクセス → フォーム入力
## Agent 1
## Agent 2
## Agent 3
4. Claude Codeエージェントを起動する
各エージェントについて、新しいターミナルを開いて以下を実行します:
cd /Users/nicksaraev/Business/active/multi-chrome-agent/chrome-agent-N && claude
ここでNは1~5です。各エージェントは以下を行います:
- 自身のCLAUDE.md(ブラウザワーカー指示)を読み込む
- 自身のローカル.mcp.jsonを介してChromeインスタンスに接続する
- chat.mdを読み、自身のタスク割り当てを取得する
- タスクを実行し、ステータスをchat.mdに報告する
osascriptによるプログラム的な起動: Claude CodeはCLAUDECODE環境変数によってネストされたセッションをブロックします。既存のセッション内からエージェントをプログラム的に起動するには、osascriptとenv -uを使用してブロック環境変数を除去します:
for i in 1 2 3 4 5; do
osascript -e "tell application \"Terminal\" to do script \"cd /Users/nicksaraev/Business/active/multi-chrome-agent/chrome-agent-$i && env -u CLAUDECODE -u CLAUDE_CODE_ENTRYPOINT -u CLAUDE_AGENT_SDK_VERSION -u CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING -u CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS claude --dangerously-skip-permissions -p 'あなたはAgent $iです。/Users/nicksaraev/Business/active/multi-chrome-agent/chat.mdを読み、Agent $iに割り当てられたタスクを見つけて実行してください。Chrome DevTools MCPを使用してウェブサイトを閲覧し、リストを検索し、データを収集してください。結果はマークダウンテーブルとしてchat.mdのAgent $iセクションに書き込んでください。処理中は[WORKING]、完了時は[DONE]としてマークしてください。'\""
sleep 2
done
これにより、それぞれ独立したClaude Codeセッションと独自のChrome DevTools MCPを持つ個別のTerminal.appウィンドウが開きます。
手動フォールバック: osascriptが機能しない場合は、ユーザーにN個のターミナルタブを開くように指示します:
Tab 1: cd ~/Business/active/multi-chrome-agent/chrome-agent-1 && claude
Tab 2: cd ~/Business/active/multi-chrome-agent/chrome-agent-2 && claude
...
5. 進捗を監視する
定期的にチャットファイルを読み、エージェントのステータスを確認します:
cat /Users/nicksaraev/Business/active/multi-chrome-agent/chat.md
各エージェントからの[DONE]、[ERROR]、または[WORKING]タグを探します。
6. 後片付け
すべてのエージェントが[DONE]を報告したら:
bash /Users/nicksaraev/Business/active/multi-chrome-agent/kill_chrome.sh
チャットプロトコル
エージェントは共有のchat.mdファイルを介して通信します:
| タグ | 意味 |
|---|---|
[WORKING] | エージェントがタスクを処理中 |
[DONE] | エージェントが割り当てられた全タスクを完了 |
[ERROR] | エージェントが障害に遭遇(CAPTCHA、タイムアウトなど) |
[WAITING] | エージェントがアイドル状態で、新しいタスクを待機中 |
ポートマップ
| エージェント | Chromeポート | ワークスペース |
|---|---|---|
| 1 | 9223 | chrome-agent-1/ |
| 2 | 9224 | chrome-agent-2/ |
| 3 | 9225 | chrome-agent-3/ |
| 4 | 9226 | chrome-agent-4/ |
| 5 | 9227 | chrome-agent-5/ |
ポート9222はメイン(非並列)のChrome DevTools MCP用に予約されています。
エッジケース
- CAPTCHA: エージェントはchatに
[ERROR] CAPTCHA on https://...を報告します。オーケストレーターは再割り当てまたはスキップできます。 - レート制限: サイトがN回のリクエスト後にブロックする場合、URLをより多くのエージェントに分散して、各エージェントがサイトにアクセスする回数を減らします。
- ログイン必須: タスクを割り当てる前に各Chromeインスタンスで事前認証を行うか、タスクリストにログイン手順を含めます。
- 長時間実行タスク: エージェントは30秒ごとにchat.mdを確認します。オーケストレーターが中止する必要がある場合は、Orchestratorセクションに
[ABORT]を記述します。