🐋

AIエージェント向けのブラウザ操作を可能にするagent-browserを試してみた

に公開

はじめに

皆さんはAIを使ってこんなことをやりたいな〜と思ったことはありませんか?

「Markdownで書かれたテストファイルに基づいて自動テストを行いたい」
「あるページの情報を自動で取得したい」

このようなブラウザ操作をAIに行わせるのに使用されているのがPlaywright MCP や ChromeDevTools といったMCPツールでしょう。
確かに使ってみればブラウザ操作を自動で行ってくれてすげえ!!!となるのですがコンテキストを圧迫してしまうという本質的な問題を抱えています。

こうした問題を解決してくれそうな Vercel の agent-browserというツールがXで話題だったので早速使用感をまとめてみました。Githubリポジトリ はこちら

agent-browserはPlaywright MCP と異なるアーキテクチャを採用しており、コンテキスト効率を大幅に改善しながらブラウザ操作を実現できるとのこと。実力はいかに。

agent-browserを導入してみる

公式ドキュメントに沿ってまずはインストールしてみます。今回は推奨されているnpmでやってみます。

npm install -g agent-browser
agent-browser install  # chromium ブラウザをインストール

agent-browser の基本的な使い方

早速agent-browserを使ってみます。ターミナルでagent-browser {コマンド}で実行できるようです。

agent-browser open

バックグランドで起動したPlaywrightがURLを開く。(最初は実際にブラウザが立ち上がるわけではないのでイケてる?となりました)

# example.com を開く
> agent-browser open example.com

# 出力結果
 Example Domain
  https://example.com

agent-browser snapshot

ブラウザ上の要素の階層構造であるアクセサビリティツリーを取得することが可能

# アクセサビリティツリーを取得
agent-browser snapshot

# 出力結果
document:
- heading "Example Domain" [ref=e1] [level=1]
- paragraph: This domain is for use in documentation examples without needing permission. Avoid use in operations.
- paragraph:
	- link "Learn more" [ref=e2]:
		- /url: https://iana.org/domains/example

agent-browser set credentials {ユーザー名} {パスワード}

Basic認証のダイアログにユーザー名とパスワードを入力する際に使用

agent-browser set credentials test@example.com password

agent-browser x Claude code

agent-browser をClaude codeと合わせて使用する方法も紹介します。

AGENTS.md / CLAUDE.md に 以下のようにagent-browserの操作を記載することでブラウザ操作を可能にしてくれます。

CLAUDE.md
## Browser Automation

Use `agent-browser` for web automation. Run `agent-browser --help` for all commands.

Core workflow:
1. `agent-browser open <url>` - Navigate to page
2. `agent-browser snapshot -i` - Get interactive elements with refs (@e1, @e2)
3. `agent-browser click @e1` / `fill @e2 "text"` - Interact using refs
4. Re-snapshot after page change

またClaude codeの場合、Claudeのスキル機能を使えばagent-browserのコマンドを登録できます。
SKILL.mdは公式ドキュメントからインストール可能です。

agent-browser の使用例

agent-browser を使用する一例として Markdownファイルで書かれたテストファイル を基にagent-browser がブラウザ操作を行い自動テストを行う みたいなことができそうですね。
例えばログイン画面に関するテスト(チェックリストみたいなイメージです)ファイル login.test.md を用意 → agent-browser がログイン操作を行うような流れです。

// 例
.
├── .github/
│   └── workflows/
│       └── e2e.yml
├── .claude/
│   └── slills/
│       └── agent-browser/
│           └── SKILL.md
├── tests/
│   ├── .tmp/
│   │   ├── login.test.result.md
│   │   └── logut.test.result.md
│   ├── login.test.md
│   ├── logout.test.md
│   └── test-result-template.md
└── CLAUDE.md

CIに組み込むなら以下のようにするイメージですね。

.github/workflows/e2e.yml
// .github/workflows/e2e.yml
jobs:
  e2e:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1

      - name: Install agent-browser
        run: npm install -g agent-browser

      - name: Install Playwright browsers
        run: agent-browser install --with-deps

      - name: Run E2E tests
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          claude -p "tests/login.test.md のテストを実行して" \
            --allowedTools "Bash,Read" \
            --max-turns 50

Discussion