AIがLinkedInのメッセージを送り、Amazonで注文し、Gmailに返信する。そのすべてを、あなたが何もしなくても動く。Browser Harnessはそれを実現する、592行だけのPythonパッケージです。

この記事でわかること:
– Browser Harnessが既存のブラウザ自動化フレームワークと何が違うのか
– 自己修復型設計の仕組みと利点
– セットアップ手順と無料クラウドブラウザの使い方
– Claude Codeとの連携方法

AIブラウザ自動化の「抽象化税」問題

Selenium、Playwright、Puppeteerはブラウザ自動化を長年支えてきたツールです。ただ、これらはすべて「人間が操作手順を記述する」前提で設計されています。DOMセレクタを指定し、待機条件を定義し、フレームワーク固有のAPIを覚える必要があります。

AIエージェントに使わせると、この複雑さが逆効果になります。エージェントはフレームワーク独自のAPIに縛られ、存在しない操作に当たるたびに詰まります。これを作者は「抽象化税」と呼んでいます。

Browser Harnessはその逆の発想で作られています。

Browser Harnessとは

browser-useチームが公開したOSSで、LLMに「ブラウザへの直接アクセス」だけを渡す設計です。ChromeをChrome DevTools Protocol(CDP)で操作するため、DOMセレクタもフレームワーク固有のルールも不要です。

コードベースは意図的に小さく保たれています。

  • run.py(36行): エントリポイント
  • helpers.py(195行): click()、type_text()、goto() など基本操作
  • daemon.py + admin.py(361行): CDPセッション管理

合計592行。エージェントが「これだけ読めばわかる」規模に収めてあります。

自己修復型の設計

Browser Harnessの最大の特徴は、LLMが実行中にツール自体を拡張できることです。

helpers.pyに必要な関数が存在しない場合、エージェントはそのファイルを読み、パターンを把握し、自分で新しい関数を書き込みます。ファイルアップロードが必要になったとき、次のような流れが起きます。

エージェント: upload_file() を呼ぼうとする
→ helpers.py に存在しないと気づく
→ helpers.py を読んでパターンを把握する
→ upload_file() をその場で書き込む
→ アップロードを完了する

従来のフレームワークなら「未実装のためエラー」で止まる場面が、ここでは自己解決します。よく使われる関数はコミュニティに還元でき、リポジトリ全体が育っていく構造です。

座標クリックとhttp_get()

Browser Harnessの click() はDOMセレクタではなく、ビューポート上のx/y座標で指定します。Input.dispatchMouseEvent を使って物理的なマウスクリックと同じ動作をするため、iframe、Shadow DOM、クロスオリジンの境界を問わずクリックできます。スクリーンショット関数も用意されており、エージェントは画面を見ながら座標を特定できます。

動的なインタラクションが不要な場面には http_get() が使えます。ブラウザを使わず純粋なHTTPリクエストで取得するため、公式ドキュメントによれば249ページを2.8秒で取得できたとされています(参考)。

スキルシステム

Browser Harnessはマークダウン形式の「スキルファイル」でドメイン知識を外部化しています。

50以上のドメインスキルがあり、GitHub、LinkedIn、Amazon、Spotifyなどのサイト別に操作手順と注意点がまとめられています。さらに16種類のインタラクションスキルとして、タブ操作、iframe、Shadow DOM、ドラッグ&ドロップ、ファイルダウンロードなどのガイドも用意されています。

エージェントはタスクに必要なファイルだけを読んで適用するため、コンテキストウィンドウを無駄に消費しません。スキルファイルはコード変更なしにコミュニティが追加できる仕組みです。

セットアップ手順

git clone https://github.com/browser-use/browser-harness
cd browser-harness
uv tool install -e .

ローカルのChromeをリモートデバッグモードで起動します。

google-chrome --remote-debugging-port=9222

Claude Codeからは --browser フラグ一つで連携できます。

claude "github.com/trendingのトップ5リポジトリをスクリーンショットで保存" --browser

無料クラウドブラウザ

Browser Useのクラウドサービスと連携すると、ローカルにChromeを用意せずに利用できます。無料枠では3セッションを同時実行でき、プロキシとCAPTCHA解決も含まれます。クレジットカード不要で、APIキーは cloud.browser-use.com/new-api-key から取得できます。

ローカルのChromeプロファイルをクラウドブラウザへ同期する機能もあり、GitHubやAmazonなどの認証セッションをそのまま引き継げます。

PlaywrightやSeleniumとの違い

Playwrightはテスト自動化に最適化されており、型定義やAPIの完成度が高い反面、LLMがその外側に出られません。Seleniumはさらに重く、SPA環境での安定性に課題があります。

browser-useの本家リポジトリはLLMとの高レベル統合を提供していますが、Browser Harnessはその「最も薄い実装」として別リポジトリで公開されています。フレームワークに縛られず、エージェントに直接ブラウザを渡したいだけという用途に向いています。

まとめ

Browser Harnessは「最薄のフレームワークが勝つ」という設計思想の実践です。592行のPythonでCDPに直結し、足りない機能はエージェントが書き足す。LLMが持つコード生成能力を拡張メカニズムとして使う発想は、ブラウザ自動化の向き合い方を変えうるものです。

Claude CodeやCodexと組み合わせて試せる環境がすぐに整うため、ブラウザ操作を自動化したい開発者にとって最初の選択肢として検討する価値があります。