概要
Vercel Labsが開発を主導するagent-browserは、AIエージェントのブラウザ操作自動化を目的とした専用CLIツールです。
対象のWebページを解析し、インタラクティブな要素に一意の参照ID(例:@e1)を付与したアクセシビリティツリーを生成します。
AIエージェントはこの参照IDを利用して、クリック、テキスト入力、情報取得などのアクションを直感的に実行します。
特徴
Playwright MCPを利用する従来の手法と比較して、LLMのコンテキストウィンドウの消費量を最大93%削減します。
CSSセレクタやXPathを排除し、参照IDによる確定的かつ安定した要素操作を実現します。
Rustによるネイティブコンパイルを採用し、コマンド解析とバックグラウンドプロセスとの通信を50ミリ秒未満の速度で完了します。
ネイティブバイナリの実行が困難な環境向けに、Node.js実装への自動フォールバック機能を備えます。
構造
システムコンテキスト図
| 要素名 | 説明 |
|---|---|
| User | ブラウザ操作の命令を発行するAIエージェントまたは開発者 |
| System | コマンドを受け取りブラウザの自動化を実行する対象ソフトウェア群 |
| External | 構築やテストの対象となる外部のWebアプリケーション |
コンテナ図
| 要素名 | 説明 |
|---|---|
| Client | ユーザーからの入力を受け付け、プロセス間通信を用いて命令を転送するフロントエンド層 |
| Daemon | バックグラウンドで常駐し、各種セッション状態とブラウザのライフサイクルを維持するプロセス |
| Browser | WebページのレンダリングとDOMへの実際の操作を担当するエンジン部分 |
コンポーネント図
| 要素名 | 説明 |
|---|---|
| Rust CLI | コマンドライン引数をパースし、高速なIPC通信を実現するネイティブ実行ファイル |
| Node js Fallback | ネイティブバイナリ非互換環境で動作を担保する代替実行モジュール |
| Node js Daemon | バックグラウンドで持続的に動作し、Playwrightインスタンスの管理を担当する常駐プログラム |
| Playwright | デーモンからの命令をブラウザエンジンに対する操作プロトコルへ変換するライブラリ |
| Chromium | 実際の描画処理およびアクセシビリティツリーの構築を行うデフォルトのブラウザコア |
情報
概念モデル
| 要素名 | 説明 |
|---|---|
| ClientEnvironment | ツール内部で管理する状態データ全体を包含する領域 |
| SessionState | 認証情報やCookieなどの接続コンテキストを保持する論理的なセッション情報 |
| PageContext | 特定時点での画面構造やDOMツリーに関する情報を集約する領域 |
| TreeSnapshot | 取得したアクセシビリティツリーの全体構造を表すデータ |
| InteractiveElement | スナップショット内に含まれる、操作可能な個々のUI部品を表すデータ |
| ExternalEngine | ツールの外部に存在する、実際の描画やプロトコル通信を担うシステム |
情報モデル
| 要素名 | 説明 |
|---|---|
| SessionState | 並行実行を分離するためのセッション名、保存状態の暗号化キー、有効期限日数を保持するクラス |
| TreeSnapshot | 実行結果の成否ステータスと、抽出されたツリーデータを文字列またはJSON形式で保持するクラス |
| InteractiveElement | AIが要素を指定するための参照ID、役割、およびアクセシブルネームを保持するクラス |
構築方法
agent-browserの導入には、パッケージマネージャーを利用したインストールと、ソースコードからのビルドの2つの方法があります。
前提環境の構築
いずれの導入方法でも、以下の環境が必要です。
- Node.jsバージョン22以降の準備
- npmまたはpnpmの利用設定
- Chromiumなどのブラウザエンジンが正常に起動するOS環境の構築
導入方法1: パッケージのインストール
npmを利用してグローバルにインストールします。依存するブラウザバイナリを同時に導入する場合は--with-depsオプションを付与します。
npm install -g @vercel/agent-browser
# またはブラウザバイナリも同時にインストールする場合
npm install -g @vercel/agent-browser --with-deps
インストール完了後、ヘルプコマンドを実行してパスの疎通とバージョン情報を確認します。
agent-browser --help
導入方法2: ソースコードからのビルド
GitHubリポジトリからソースコードをクローンし、ビルドスクリプトを実行してRust CLI層およびNode.jsフォールバック層の実行可能ファイルを生成します。
git clone https://github.com/vercel-labs/agent-browser.git
cd agent-browser
pnpm install
pnpm build
AIアシスタント環境への統合
利用するAIエージェントの仕様に合わせて、Agent Skills または MCP のいずれかの方法で統合します。
方法A: Agent Skillsとしての統合(Claude Code / OpenCodeなど)
AIエージェントがスキルディレクトリをサポートしている場合、公式リポジトリからスキル定義ファイル(SKILL.md)をダウンロードして配置します。
# 例: Claude Codeのスキルディレクトリに配置する場合
mkdir -p .claude/skills/agent-browser
curl -sL https://raw.githubusercontent.com/vercel-labs/agent-browser/main/skills/agent-browser/SKILL.md -o .claude/skills/agent-browser/SKILL.md
方法B: MCPサーバーとしての統合(Cursor / Clineなど)
MCPをサポートするクライアントを利用する場合は、設定ファイル(mcp.jsonやcline_mcp_settings.jsonなど)に以下のように追記してサーバーとして登録します。
{
"mcpServers": {
"agent-browser": {
"command": "npx",
"args": ["-y", "@vercel/agent-browser", "mcp"]
}
}
}
利用方法
agent-browserは、コマンドラインから直感的にブラウザを操作できます。
ウェブページのナビゲーション
- 対象URLを指定した
openコマンド実行によるページ読み込み - 別ドメインでの検証を並行して進める場合の
tab newコマンドによる新規タブ遷移 - 認証トークンを利用したバックドアアクセスを行う場合の
--headersオプション指定
アクセシビリティツリーの取得
- 画面状態を把握するための
snapshot -iコマンドによるインタラクティブ要素抽出 - 構造解析のみを目的とする場合の
-cオプション追加による空要素除外 - マウスホバーなどに反応する要素を含める場合の
-Cオプション付与による探索範囲拡張
要素に対する操作
- ツリーデータ内の参照IDを用いた
click @e1コマンドによるクリックアクション実行 - フォーム入力を行う場合の
fill @e2 "入力値"コマンドによるテキストボックス値設定 - 画面上のテキストデータを抽出する場合の
get text @e1コマンドによる文字列取得
JavaScriptの評価と実行
evalコマンドへのJavaScriptコード文字列渡しによるブラウザコンテキスト内直接実行- 複雑なスクリプトを安全に渡すためのヒアドキュメント形式と
--stdinオプションの組み合わせ - シェルのエスケープ問題を回避する目的でのBase64エンコードスクリプトと
-bオプション指定
スクリーンショットの撮影と視覚的検証
screenshotコマンド実行による現在の画面表示の画像ファイル出力- 画像を解析に用いるAIエージェント向けの
--annotateオプションによる参照IDオーバーレイ表示 - 記録を目的として動画を残す場合の
record startコマンドによるWebM形式キャプチャ開始
運用
agent-browserを安定して運用するためのセッション管理やトラブルシューティング機能が提供されています。
セッションの永続化と分離
- 複数タスク並列処理時の競合を避けるための
--session <名前>オプションによる独立ブラウザインスタンス起動 - 認証完了後のログイン状態を維持するための
state save <パス>コマンドによるCookieやローカルストレージ内容の暗号化保存 - 後続の自動化フローを開始する前の
state load <パス>コマンドによる保存済み状態復元
環境変数を利用した機密情報管理
AGENT_BROWSER_SESSION_NAME環境変数設定によるセッション保存時のデフォルト識別名定義AGENT_BROWSER_ENCRYPTION_KEYへの64文字16進数文字列登録によるAES-256-GCM暗号化適用AGENT_BROWSER_STATE_EXPIRE_DAYSへの数値指定による古いセッション状態ファイルの自動破棄日数管理
トラブルシューティングと解析機能
- エラー原因調査を行う目的での
consoleコマンド実行によるブラウザ内記録ログ出力 - キャッチされなかったJavaScript例外を確認するための
errorsコマンドによる詳細スタックトレース取得 - DOM構造と実際の表示位置を比較するための
highlight @e1コマンドによる指定要素強調表示
外部ブラウザとの連携接続
既存のユーザープロファイル情報を利用する場合、Chromeブラウザをリモートデバッグモードで手動起動し、agent-browserからアタッチします。
- Chromeをリモートデバッグモードで起動します(ポート9222の例)。
# macOSの例
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
--cdpオプションで対象ポート番号を指定し、起動済みブラウザにアタッチして操作を続行します。Windows環境におけるIPv6とIPv4のバインディング問題を回避するため、接続先ホスト指定には明示的に127.0.0.1を利用します。
agent-browser open https://example.com --cdp http://127.0.0.1:9222
■まとめ
agent-browserは、AIエージェント向けに特化したブラウザ自動化CLIツールであり、Markdown形式でのDOMアクセスや状態管理機能を備え、コンテキストウィンドウを大幅に節約できます。
ローカルテストや大規模言語モデルとの連携など、複雑なブラウザタスクを効率的に実行するための強力な選択肢となります。
この記事が少しでも参考になった、あるいは改善点などがあれば、ぜひリアクションやコメント、SNSでのシェアをいただけると励みになります!
参考リンク
- 公式ドキュメント
- GitHub
- 記事
- Vercel製 agent-browserの使い方 #AI - Qiita
- Complete Guide to agent-browser: Command-line Browser Automation Tool Exclusively for AI Agents - Apiyi.com Blog
- Self-Verifying AI Agents: Vercel's Agent-Browser in the Ralph Wiggum Loop | Pulumi Blog
- Agent-Browser: AI-First Browser Automation That Saves 93% of Your Context Window | by Rick Hightower - Medium
- Show HN: Webctl – Browser automation for agents based on CLI instead of MCP
- deepwiki vercel-labs/agent-browser
- LobeHub am-will-codex-skills-agent-browser
- agent-browser | Skills Marketplace - LobeHub