agent-browser について
agent-browserは、inference.sh経由でPlaywrightを使う、AIエージェント向けのブラウザー自動化スキルです。セッションを管理し、要素参照による操作のほか、録画、スクリーンショット、ページ内スクリプト実行に対応します。
主な機能
- 01ページ移動と要素の確認
- 02@e参照による要素操作
- 03スクリーンショットと動画の記録
- 04ファイルのアップロードとドラッグ操作
- 05ページ内でのJavaScript実行
活用シーン
- 01フォームの入力と送信の自動化
- 02ページの検索と情報抽出
- 03デバッグ用のブラウザー操作記録
- 04プロキシ経由でのページテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ halt-catch-fire/ mutiny --skill agent-browserインストール後、Claude Code で/agent-browserを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/authentication.mdcommands.mdproxy-support.mdsession-management.mdsnapshot-refs.mdvideo-recording.mdtemplates/authenticated-session.shcapture-workflow.shform-automation.sh詳細
belt CLI スキルをインストール:
npx skills add belt-sh/cli
Agentic Browser
inference.sh 経由で AI エージェント向けのブラウザ自動化を実現します。内部では Playwright を使用し、要素を操作するためのシンプルな @e 参照システムを備えています。

クイックスタート
inference.sh CLI(
belt)が必要です。インストール手順
belt login
# Open a page and get interactive elements
belt app run agent-browser --function open --input '{"url": "https://example.com"}' --session new
コアワークフロー
すべてのブラウザ自動化は次のパターンに従います。
- 開く - URL に移動し、要素の
@e参照を取得します - 操作する - 参照を使ってクリック、入力、ドラッグなどを行います
- 再スナップショット - ナビゲーションや変更の後、最新の参照を取得します
- 閉じる - セッションを終了します(録画している場合は動画を返します)
# 1. Start session
RESULT=$(belt app run agent-browser --function open --session new --input '{
"url": "https://example.com/login"
}')
SESSION_ID=$(echo $RESULT | jq -r '.session_id')
# Elements: @e1 [input] "Email", @e2 [input] "Password", @e3 [button] "Sign In"
# 2. Fill and submit
belt app run agent-browser --function interact --session $SESSION_ID --input '{
"action": "fill", "ref": "@e1", "text": "[email protected]"
}'
belt app run agent-browser --function interact --session $SESSION_ID --input '{
"action": "fill", "ref": "@e2", "text": "password123"
}'
belt app run agent-browser --function interact --session $SESSION_ID --input '{
"action": "click", "ref": "@e3"
}'
# 3. Re-snapshot after navigation
belt app run agent-browser --function snapshot --session $SESSION_ID --input '{}'
# 4. Close when done
belt app run agent-browser --function close --session $SESSION_ID --input '{}'
関数
| 関数 | 説明 |
|---|---|
open | URL に移動し、ブラウザを設定します(ビューポート、プロキシ、動画録画) |
snapshot | DOM 変更後に @e 参照を使ってページの状態を再取得します |
interact | @e 参照を使ってアクションを実行します(クリック、入力、ドラッグ、アップロードなど) |
screenshot | ページのスクリーンショットを撮ります(ビューポートまたはページ全体) |
execute | ページ上で JavaScript コードを実行します |
close | セッションを閉じます。録画が有効な場合は動画を返します |
インタラクションアクション
| アクション | 説明 | 必須フィールド |
|---|---|---|
click | 要素をクリックします | ref |
dblclick | 要素をダブルクリックします | ref |
fill | テキストをクリアして入力します | ref、text |
type | テキストを入力します(クリアなし) | text |
press | キーを押します(Enter、Tab など) | text |
select | ドロップダウンのオプションを選択します | ref、text |
hover | 要素の上にカーソルを合わせます | ref |
check | チェックボックスをオンにします | ref |
uncheck | チェックボックスをオフにします | ref |
drag | ドラッグアンドドロップします | ref、target_ref |
upload | ファイルをアップロードします | ref、file_paths |
scroll | ページをスクロールします | direction(up/down/left/right)、scroll_amount |
back | 履歴を戻ります | - |
wait | ミリ秒単位で待機します | wait_ms |
goto | URL に移動します | url |
要素の参照
要素は @e 参照とともに返されます。
@e1 [a] "Home" href="/"
@e2 [input type="text"] placeholder="Search"
@e3 [button] "Submit"
@e4 [select] "Choose option"
@e5 [input type="checkbox"] name="agree"
重要: 参照はナビゲーション後に無効になります。次の後には必ず再スナップショットしてください。
- ナビゲーションするリンクやボタンのクリック
- フォームの送信
- 動的コンテンツの読み込み
機能
動画録画
デバッグやドキュメント用にブラウザセッションを録画します。
# Start with recording enabled (optionally show cursor indicator)
SESSION=$(belt app run agent-browser --function open --session new --input '{
"url": "https://example.com",
"record_video": true,
"show_cursor": true
}' | jq -r '.session_id')
# ... perform actions ...
# Close to get the video file
belt app run agent-browser --function close --session $SESSION --input '{}'
# Returns: {"success": true, "video": <File>}
カーソルインジケーター
スクリーンショットや動画に表示されるカーソルを表示します(デモに便利です)。
belt app run agent-browser --function open --session new --input '{
"url": "https://example.com",
"show_cursor": true,
"record_video": true
}'
カーソルは赤い点として表示され、マウスの動きに追従し、クリックのフィードバックを示します。
プロキシサポート
プロキシサーバーを通じてトラフィックをルーティングします。
belt app run agent-browser --function open --session new --input '{
"url": "https://example.com",
"proxy_url": "http://proxy.example.com:8080",
"proxy_username": "user",
"proxy_password": "pass"
}'
ファイルアップロード
ファイル入力にファイルをアップロードします。
belt app run agent-browser --function interact --session $SESSION --input '{
"action": "upload",
"ref": "@e5",
"file_paths": ["/path/to/file.pdf"]
}'
ドラッグアンドドロップ
要素をターゲットにドラッグします。
belt app run agent-browser --function interact --session $SESSION --input '{
"action": "drag",
"ref": "@e1",
"target_ref": "@e2"
}'
JavaScript の実行
カスタム JavaScript を実行します。
belt app run agent-browser --function execute --session $SESSION --input '{
"code": "document.querySelectorAll(\"h2\").length"
}'
# Returns: {"result": "5", "screenshot": <File>}
詳細ドキュメント
| リファレンス | 説明 |
|---|---|
| references/commands.md | すべてのオプションを含む関数の完全なリファレンス |
| references/snapshot-refs.md | 参照のライフサイクル、無効化のルール、トラブルシューティング |
| references/session-management.md | セッションの永続化、並列セッション |
| references/authentication.md | ログインフロー、OAuth、2FA の処理 |
| references/video-recording.md | デバッグ用の録画ワークフロー |
| references/proxy-support.md | プロキシ設定、地理的テスト |
すぐに使えるテンプレート
| テンプレート | 説明 |
|---|---|
| templates/form-automation.sh | バリデーション付きのフォーム入力 |
| templates/authenticated-session.sh | 一度ログインし、セッションを再利用 |
| templates/capture-workflow.sh | スクリーンショット付きのコンテンツ抽出 |
例
フォームの送信
SESSION=$(belt app run agent-browser --function open --session new --input '{
"url": "https://example.com/contact"
}' | jq -r '.session_id')
# Get elements: @e1 [input] "Name", @e2 [input] "Email", @e3 [textarea], @e4 [button] "Send"
belt app run agent-browser --function interact --session $SESSION --input '{"action": "fill", "ref": "@e1", "text": "John Doe"}'
belt app run agent-browser --function interact --session $SESSION --input '{"action": "fill", "ref": "@e2", "text": "[email protected]"}'
belt app run agent-browser --function interact --session $SESSION --input '{"action": "fill", "ref": "@e3", "text": "Hello!"}'
belt app run agent-browser --function interact --session $SESSION --input '{"action": "click", "ref": "@e4"}'
belt app run agent-browser --function snapshot --session $SESSION --input '{}'
belt app run agent-browser --function close --session $SESSION --input '{}'
検索と抽出
SESSION=$(belt app run agent-browser --function open --session new --input '{
"url": "https://google.com"
}' | jq -r '.session_id')
belt app run agent-browser --function interact --session $SESSION --input '{"action": "fill", "ref": "@e1", "text": "weather today"}'
belt app run agent-browser --function interact --session $SESSION --input '{"action": "press", "text": "Enter"}'
belt app run agent-browser --function interact --session $SESSION --input '{"action": "wait", "wait_ms": 2000}'
belt app run agent-browser --function snapshot --session $SESSION --input '{}'
belt app run agent-browser --function close --session $SESSION --input '{}'
動画付きスクリーンショット
SESSION=$(belt app run agent-browser --function open --session new --input '{
"url": "https://example.com",
"record_video": true
}' | jq -r '.session_id')
# Take full page screenshot
belt app run agent-browser --function screenshot --session $SESSION --input '{
"full_page": true
}'
# Close and get video
RESULT=$(belt app run agent-browser --function close --session $SESSION --input '{}')
echo $RESULT | jq '.video'
セッション
ブラウザーの状態はセッション内で保持されます。必ず次の手順に従ってください。
- 初回の呼び出しでは
--session newを指定します - 以降の呼び出しでは、返された
session_idを使用します - 完了したらセッションを終了します
関連スキル
# Web search (for research + browse)
npx skills add inference-sh/skills@web-search
# LLM models (analyze extracted content)
npx skills add inference-sh/skills@llm-models
ドキュメント
- inference.sh Sessions - セッション管理
- Multi-function Apps - 関数の仕組み
コメント
Markdown 対応