Browser Use 入門:AI で Web ページを開き、ボタンをクリックし、情報を抽出する

"Browser Use 公式 quickstart は、Python 環境、browser-use のインストール、uvx browser-use install、.env の API key、最初の Agent フローを説明しています。"
uvx browser-use install が終わった後、本当に詰まりやすいのは task です。「サイトを開いて見て」とだけ書くと、agent は何を完了とみなせばよいかわかりません。何度も試すか、早めに終了してしまいます。
Browser Use は、AI が Chromium ブラウザを制御して Web 自動化を行うためのオープンソース Python ライブラリです。ローカル環境や self-hosted 環境で動かせ、Browser Use Cloud に依存しません。Browser Agent の概念をすでに理解しているなら、このチュートリアルではインストールから最初の成功 task まで、安全設定、結果の読み方、失敗時の確認ポイントを順に扱います。
Browser Use とは:一言でいうと
Browser Use は Python library for AI browser automation です。LLM Agent が人間のようにブラウザを操作し、ナビゲーション、クリック、入力、スクロール、データ抽出、スクリーンショットを実行できます。
位置づけはローカルまたは self-hosted 実行です。Browser Use Cloud には依存しません。オープンソースライブラリと Cloud Agent は API が異なります。このガイドではオープンソース版の入門に絞り、Cloud SDK の structured output、human-in-the-loop、live preview などは扱いません。
「Browser Agent とは何か」をまだ確認したい場合は、Browser Agent の概念記事(後日公開)から読むと入りやすいです。概念は理解済みなら、このガイドは「今どうやって動かすか」に答えます。
インストールと準備:uv から API key まで
2026-06-30 時点で、公式 README と quickstart のインストール手順は次のとおりです。
1. Python バージョン要件
Browser Use には Python 3.11 以上が必要です。公式 quickstart の例では Python 3.12 で venv を作成していますが、自分の環境に合わせて選べます。
2. uv をインストールする(推奨)
uv は Astral が開発しているモダンな Python パッケージマネージャーです。まだ入っていない場合は、次のようにインストールします。
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows(PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
3. プロジェクトを初期化して browser-use を入れる
# プロジェクトディレクトリを作成
mkdir my-browser-use
cd my-browser-use
# プロジェクトを初期化
uv init
# browser-use をインストール(core 依存を含む)
uv add "browser-use[core]"
# 依存関係を同期
uv sync
uv を使わない場合は、pip でもインストールできます。
pip install "browser-use[core]"
4. Chromium ブラウザ実行環境を入れる
Browser Use は内部で Playwright に依存しています。先に Chromium をインストールします。
uvx browser-use install
このコマンドにより Chromium がダウンロード、設定され、agent がブラウザインスタンスを起動できるようになります。
5. API key を設定する
Browser Use は task を理解し判断するために LLM へ接続します。公式 quickstart は、ブラウザ task 向けに設計された ChatBrowserUse を推奨しています。
プロジェクトルートに .env ファイルを作成します。
# .env
BROWSER_USE_API_KEY=your_api_key_here
OpenAI、Anthropic、Google Gemini、ローカル Ollama を使う場合は、対応する API key を設定します。
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GOOGLE_API_KEY=your_google_key
最初のスクリプトを書く:最小テンプレート
最小スクリプトに必要なのは、モジュールの import、Agent の作成、task の実行です。
from browser_use import Agent, Browser, ChatBrowserUse
import asyncio
async def main():
# ブラウザインスタンスを作成(デバッグ時は画面を表示)
browser = Browser(headless=False)
# LLM インスタンスを作成
llm = ChatBrowserUse()
# Agent を作成
agent = Agent(
task="quotes.toscrape.com を開き、1 画面下へスクロールし、'Next' ボタンをクリックして、2 ページ目のすべての quote 本文と作者を抽出してください",
llm=llm,
browser=browser
)
# task を実行(ステップ数を制限)
history = await agent.run(max_steps=20)
# ブラウザを閉じる
await browser.close()
if __name__ == "__main__":
asyncio.run(main())
このスクリプトでは、次のことをしています。
Browser(headless=False):ブラウザウィンドウを表示し、デバッグしやすくします。デバッグ後はheadless=Trueに変更できます。ChatBrowserUse():公式のブラウザ向けモデルを使います。ChatOpenAI(model="gpt-4o")など、別のモデルに切り替えることもできます。taskは具体的に書きます。「サイトを開いて見て」ではなく、「X URL に移動し、スクロールし、Y ボタンをクリックし、Z の内容を抽出する」と書きます。曖昧な task は agent のループや早期終了につながります。max_steps=20:agent が最大 20 ステップまで実行できるようにします。最初の task は 10〜20 ステップ程度にして、同じ動作で詰まり続けないようにします。
スクリプトを実行します。
uv run python main.py
agent を走らせ続けない:max_steps が安全線
max_steps は agent の実行ステップ数を制限します。公式のデフォルト値は 100 ですが、最初の task では 10〜20 に下げるのがおすすめです。
制限が必要な理由は次のとおりです。
- クリック失敗、ページ読み込みの遅さ、ポップアップの遮りなどで、agent が同じ動作を繰り返すことがあります。
- ステップ制限がないと、時間と token を消費し続けます。
- 最初の task の目的は「完璧に実行すること」ではなく「動くことを確認すること」です。ステップ数を絞ると、問題箇所を早く見つけられます。
設定の目安です。
# 最初の task:10〜20 ステップ
await agent.run(max_steps=20)
# 複雑な task:必要に応じて増やす。ただし初期段階では 50 を超えない
await agent.run(max_steps=50)
初心者向けの安全な起動設定
最初の task で主アカウントのログイン状態を使ったり、agent に任意のサイトへ自由に移動させたりしないでください。安全設定は次のとおりです。
1. headless=False のデバッグモード
browser = Browser(headless=False)
ブラウザウィンドウを表示すると、agent が何をしているか見えます。クリック失敗なのか、ページが止まっているのか、task の説明が曖昧なのかを判断しやすくなります。デバッグが終わったら headless=True に変更します。
2. allowed_domains で移動先を制限する
browser = Browser(
headless=False,
allowed_domains=["quotes.toscrape.com"]
)
allowed_domains は agent が他のドメインへ移動することを防ぎます。task が 1 つのサイトだけで完結するなら、この制限を付けておきましょう。
Browser Use は allowed_domains=["*.example.com"] のようなサブドメイン wildcard をサポートします。一方で、allowed_domains=["example.*"] のような TLD wildcard は認識されません。固定サイトだけを扱うなら、完全なドメインを書くのが最も安定します。
allowed_domains=["quotes.toscrape.com", "github.com"]
3. 独立 profile を使い、主 Chrome を再利用しない
browser = Browser(
headless=False,
user_data_dir="./browser_profile"
)
Agent は独立したブラウザ profile を作ります。主 Chrome のログイン状態、Cookie、機密データにはアクセスしません。この 1 本目のチュートリアルでは公開ページだけを使い、ログイン状態には触れません。
4. disable_security は使わない
disable_security はブラウザのセキュリティポリシーを無効化します。公式ドキュメントでも非推奨とされています。別のチュートリアルでこのパラメータを見かけても、ここでは使いません。
結果の読み方:「動いた」だけでは足りない
agent.run() は AgentHistoryList 型を返します。複数の helper メソッドで、結果と過程の両方を確認できます。
history = await agent.run(max_steps=20)
# 最終結果
result = history.final_result()
print("最終結果:", result)
# 抽出した内容
extracted = history.extracted_content()
print("抽出内容:", extracted)
# エラー一覧
errors = history.errors()
print("エラー:", errors)
# エラーがあったかどうか
if history.has_errors():
print("task 実行中にエラーが発生しました")
# アクセスした URL 一覧
urls = history.urls()
print("アクセスした URL:", urls)
# スクリーンショットのパス一覧
screenshots = history.screenshot_paths()
print("スクリーンショット:", screenshots)
# 実行した action 名
actions = history.action_names()
print("action:", actions)
# 総ステップ数
steps = history.number_of_steps()
print("実行ステップ数:", steps)
初心者がよくやるのは、ブラウザウィンドウが動いたことだけを見て成功と判断することです。final_result() が空なら、agent が早めに終了したか、task の説明が合っていない可能性があります。errors() に内容がある場合は、その具体的なエラーを見てから調整します。
最初の task:開く、クリックする、抽出する
最初の task には quotes.toscrape.com を使います。スクレイピング練習用の公開サイトで、ログイン不要、構造もシンプルです。
task 1:開いてスクロールする
agent = Agent(
task="quotes.toscrape.com を開き、1 画面下へスクロールしてください",
llm=ChatBrowserUse(),
browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=10)
print("アクセスした URL:", history.urls())
task 2:ボタンをクリックする
agent = Agent(
task="quotes.toscrape.com を開き、ページ下部の 'Next' ボタンをクリックしてください",
llm=ChatBrowserUse(),
browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=10)
print("成功したか:", history.is_successful())
task 3:内容を抽出する
agent = Agent(
task="quotes.toscrape.com を開き、1 ページ目にあるすべての quote 本文と作者を抽出してください",
llm=ChatBrowserUse(),
browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=15)
extracted = history.extracted_content()
print("抽出内容:", extracted)
task 4:組み合わせる
agent = Agent(
task="quotes.toscrape.com を開き、'Next' ボタンをクリックして、2 ページ目にあるすべての quote 本文と作者を抽出してください",
llm=ChatBrowserUse(),
browser=Browser(headless=False, allowed_domains=["quotes.toscrape.com"])
)
history = await agent.run(max_steps=20)
print("最終結果:", history.final_result())
print("エラー:", history.errors())
失敗したらどこを見るか:トラブルシューティングのチェックリスト
Agent が空の結果を返す、エラーを出す、止まる。そんなときは、次の順番で確認します。
1. クリック失敗
history.errors()に “click failed” や “element not found” があるか確認する- task にキーボード操作の fallback を入れる:「クリックに失敗したら、Tab でボタンに移動し、Enter を押す」
history.screenshot_paths()を確認し、要素が見えていたか判断する
2. 抽出内容が空
history.urls()でページが本当に開かれているか確認するhistory.screenshot_paths()でページ状態を見る- task が「すべての quote 本文と作者を抽出する」のように具体的か確認する。「内容を見て」だけでは足りません
3. ページが止まる
allowed_domainsが移動を止めていないか確認する- ネットワーク接続とページ読み込み時間を確認する
max_stepsを下げるか、task に timeout 処理を入れる:「ページが 10 秒以内に読み込まれない場合は、ホームに戻る」
4. 結果が不完全
max_stepsが早すぎて停止していないか確認するhistory.number_of_steps()で実際のステップ数を見る- task の説明を調整し、複数の小さな task に分ける
5. 全体的に失敗する
.envの API key が正しいか確認する- モデルが対応しているか確認する:ChatBrowserUse、OpenAI、Anthropic、Google Gemini、ローカル Ollama
- task の説明が抽象的すぎないか確認する。「サイトを開いて見て」ではなく具体的な action にする
Beta Agent と安定版:2 つの入口
2026-06-30 時点で、公式 README は 2 つの Agent import path を示しています。
安定版
from browser_use import Agent, Browser
これは安定版の入口です。以前から Browser Use を使っている場合は、この path を続けられます。
Beta 版(0.13)
from browser_use.beta import Agent, BrowserProfile, ChatBrowserUse
これは 0.13 beta agent です。Rust core と browser harness に支えられています。公式 README は、既存ユーザーは安定版を続けられ、新規ユーザーは beta を試せると説明しています。
どちらを使うか迷ったら、現在の公式 README を確認してください。このガイドは安定版の例を使っています。beta 版の API は異なる可能性があります。
オープンソース版 vs Cloud:境界を知る
このガイドでは、Browser Use のオープンソースライブラリをローカルで使います。
Browser Use Cloud はホスト型サービスで、API が異なります。
- Cloud SDK は現在 API v3 です
- Cloud は structured output、human-in-the-loop、live preview、persistent profiles などを提供します
- Cloud の Python/TypeScript SDK は、オープンソースライブラリの API と互換ではありません
Cloud を検討するタイミングです。
- production デプロイやホスト環境が必要
- stealth、CAPTCHA、proxy などの高度な能力が必要(このガイドでは扱いません)
- 複数アカウント、永続 profile、チーム運用が必要
このガイドはローカル入門に絞ります。Cloud の使い方や価格は後続記事で扱います。
次のステップ:さらに読む
このチュートリアルでは、Browser Use オープンソースライブラリのローカル入門を扱いました。インストール、API key、最小スクリプト、ページを開く、ボタンをクリックする、情報を抽出する、失敗を切り分ける、という流れです。
次に試すとよいものです。
- 公開済み:OpenClaw ブラウザ自動化実践ガイド、Computer-Use Agent:AI にコンピューターを操作させる、MCP プラグインガイド
- 後続テーマ:Playwright MCP を Claude、Codex、Cursor に接続する、Stagehand の工程化、Browser Use のツール選定、ログイン状態と認証、クラウド基盤、コンプライアンスとセキュリティ
- 公式ドキュメント:quickstart、prompting guide、browser config
まずは quotes.toscrape.com や GitHub の公開ページで最初の task を通し、その後にログイン状態や Cloud を検討しましょう。
Browser Use で最初の Web 自動化 Agent を動かす
依存関係のインストールから結果確認まで、公開 Web ページで open、click、extract を検証するための最小 Browser Use フローです。
⏱️ 目安時間: 30 分
- 1
ステップ 1: Python 環境を用意する
Python 3.11 以上が入っていることを確認します。公式 quickstart の例は Python 3.12 の仮想環境を使っていますが、実際のプロジェクトに合わせて選べます。 - 2
ステップ 2: browser-use をインストールする
uv でプロジェクトを初期化して browser-use[core] を入れるか、既存の Python 環境で pip install browser-use[core] を実行します。 - 3
ステップ 3: Chromium ランタイムをインストールする
uvx browser-use install を実行し、Browser Use が使う Chromium ランタイムをダウンロードして設定します。 - 4
ステップ 4: モデル API key を設定する
.env に BROWSER_USE_API_KEY、OPENAI_API_KEY、ANTHROPIC_API_KEY、GOOGLE_API_KEY など必要な key を入れます。実アカウントのパスワードを prompt に書かないでください。 - 5
ステップ 5: 最小 Agent スクリプトを書く
Browser、LLM、Agent を作成します。task は quotes.toscrape.com を開く、Next をクリックする、quote の本文と作者を抽出する、といった具体的な手順にします。 - 6
ステップ 6: 実行範囲を制限する
デバッグ中は headless=False にしてブラウザを見える状態にし、allowed_domains で Agent が指定ドメインだけにアクセスできるようにします。 - 7
ステップ 7: history を読んで結果を確認する
agent.run(max_steps=20) の後に final_result()、extracted_content()、errors()、urls()、screenshot_paths()、action_names() を確認し、task が本当に完了したか見ます。
FAQ
Browser Use とは何ですか?Playwright や Selenium と何が違いますか?
Browser Use のオープンソース版と Cloud はどう選べばいいですか?
Browser Use ではどのモデルを使うべきですか?
Browser Use に beta と安定版の Agent があるのはなぜですか?
Browser Use が指定サイトだけを開くように制限するには?
Browser Use の最終結果はどう取得しますか?
Browser Use でクリックに失敗したり抽出結果が空だったりするときは?
最初の Browser Use スクリプトで実アカウントにログインしてもいいですか?
6分で読めます · 公開日: 2026年9月4日 · 更新日: 2026年9月4日
ブラウザ自動化 Agent 実践ガイド: Playwright、browser-use、Computer Use
検索からこのページに来た場合は、前後の記事もあわせて読むと同じテーマの理解がかなり早く深まります。
前の記事
Browser Agent とは何か?AI がブラウザを自分で操作し始めた理由
Browser Agent の意味を、従来のクローラー、RPA、Selenium/Playwright スクリプト、Computer Use との違いまで整理します。五層スタック、使う場面・使わない場面、Browser Use / Stagehand / Playwright MCP / Browserbase の入口まで一気に把握できます。
第 1 / 3 記事
次の記事
Playwright MCP 実践ガイド:Claude、Codex、Cursor からブラウザを直接操作する
公式 Playwright MCP を使って Claude Code、Codex、Cursor にブラウザ自動化を接続する方法を解説します。@playwright/mcp@latest の設定、最初のクリック・スクリーンショット・console 確認、accessibility snapshot、profile、storage state、承認、browser_run_code_unsafe の安全境界まで扱います。
第 3 / 3 記事



コメント
GitHubアカウントでログインしてコメントできます