ブラウザ自動化
@eN refでChromiumを操作します — 移動、クリック、入力、タブ、ネットワーク、ログイン、CAPTCHA。
omniscout browserはPatchright経由でローカルChromiumを操作します。基本ループは常に同じです:
omniscout browser navigate https://example.com # 1. open a page
omniscout browser snapshot --refs-only # 2. list @eN element refs
omniscout browser click '@e3' # 3. act on a ref
omniscout browser screenshot --out /tmp/out.png # 4. capture state@eN refモデル
snapshotはページのアクセシビリティツリーを安定した要素ref(@e1、@e2、…)付きで返します。すべての操作はrefを対象とします — CSSセレクターや座標の推測は使いません。2つの原則があります:
- ナビゲーションや大きなDOM変更のたびに再取得します — ページが変わるとrefは無効になります。
- 操作可能な一覧が欲しい場合は**
--refs-onlyを優先**します。階層が必要な場合に外します。
omniscout browser snapshot --refs-only
omniscout browser snapshot --overlay # draw @e labels on the page (debugging/demos)ナビゲーションと履歴
omniscout browser navigate https://example.com --wait-until domcontentloaded
omniscout browser open https://example.com # alias of navigate
omniscout browser back
omniscout browser forward
omniscout browser reload
omniscout browser get url # current URL
omniscout browser get title # page titlenavigateは--profile(永続ログインコンテキスト)、--session(タブグループ)、--new-tab、--headful/--headless、--auto-captcha、--wait-untilを受け付けます。プロファイルとセッションの違いはdaemonとセッションをご覧ください。
クリック、入力、選択
| 操作 | コマンド | 備考 |
|---|---|---|
| クリック | browser click '@e3' | --button、--clicks、--mod、またはビジョンエージェント向け--coord x yを指定できます |
| 入力(置換) | browser fill '@e5' "text" | 既存内容を置換します |
| タイプ(追記) | browser type '@e5' "text" | 追記します。キーストローク間の--delay-msを指定できます |
| ペースト | browser paste '@e5' "text" | カーソル位置にクリアせず挿入します |
| 選択 | browser select '@e5' "option" | ネイティブ<select>要素向けです |
| キー | browser key Enter | cmd+s、ctrl+cのような組み合わせです |
| ホバー | browser hover '@e7' | または--coord x yを指定します |
| アップロード | browser upload '@e9' file.pdf | <input type=file>にファイルを添付します |
| スクロール | browser scroll down | ページまたは要素を--amount付きでスクロールします |
| 状態確認 | browser is '@e3' visible | 表示、 enabled、checkedなどを確認します |
fillとtypeとpasteの違い:fillは先にクリアします(フォーム向け)、typeは人間のように追記します(チャット、エディター向け)、pasteは大きなテキストをカーソル位置に流し込みます(大きな本文向け)。
ページの読み取り
omniscout browser get text # visible body text
omniscout browser get html # page HTML (truncated ~500KB)
omniscout browser eval "document.title" # run JavaScript, return the value
omniscout browser extract-visible # visible text, optional --schema shaping待機
やみくもにsleepせず、実際に必要な条件を待ちます:
omniscout browser wait text "Order confirmed"
omniscout browser wait selector "#results"
omniscout browser wait networkidle
omniscout browser wait url "*checkout*"
omniscout browser wait --ms 2000 --timeout-ms 30000waitは--ref、--url(現在のURLに対する正規表現)、--idle、--mutation-quiet-ms(DOM変化が止まるまで待機)にも対応しています。
タブ
omniscout browser navigate https://a.com --session multi
omniscout browser navigate https://b.com --new-tab --session multi
omniscout browser tab list --session multi
omniscout browser tab switch 0 --session multi
omniscout browser tab close 1 --session multiネットワークとコンソールのキャプチャ
omniscout browser network start
omniscout browser navigate https://vercel.com/pricing
omniscout browser scroll down --amount 10
omniscout browser network stop
omniscout browser network list --filter "stripe|payment"
omniscout browser network detail 3 # full payload for one entry
omniscout browser network tail # only entries since last tail
omniscout browser console start
omniscout browser console tail # JS errors and console messages
omniscout browser console list
omniscout browser console stop自然言語アクション
あいまいな対象にはdaemonに解決させます:
omniscout browser observe "the search box" # find candidate refs
omniscout browser act "click the top story" # resolve + act
omniscout browser act "search box" --value "local-first agents"
omniscout browser act "submit" --dry-run # resolve without actingあとでsnapshotで検証します — actは便利ですがrefの方が確定的です。
スクリーンショット、PDF、マウス
omniscout browser screenshot --out /tmp/page.png
omniscout browser screenshot --full-page --out /tmp/full.png # top-to-bottom
omniscout browser screenshot --ref '@e3' --out /tmp/el.png # one element
omniscout browser screenshot --delay 2.5 --out /tmp/late.png # wait for animations
omniscout browser pdf --out /tmp/page.pdf --paper letter
omniscout browser mouse move 400 300
omniscout browser mouse scroll 400 300ログインとCAPTCHA
一部のサイトでは一度だけ人手のログインが必要です。ヘッドフルウィンドウを開いて認証し、別のシェルから完了を通知します — プロファイルがCookieを保持して再利用できます:
# Terminal A (blocks):
omniscout browser login https://github.com/login --profile work
# Terminal B (after you log in):
omniscout browser login --done
# Reuse later:
omniscout browser navigate https://github.com/notifications --profile work--success-pattern(URL正規表現)でログインを自動解決します。--timeout-msのデフォルトは5分です。CAPTCHAの場合:
omniscout browser captcha --detect-only # just report
omniscout browser captcha --solver 2captcha # none | 2captcha | capsolver | manual
export CAPTCHA_API_KEY=... # or --api-keynavigateは読み込み直後に課題を解決する--auto-captchaにも対応しています。
クリーンアップ
omniscout browser close # close the default session
omniscout browser close --all # close everythingエージェント向けヒント
- 操作の前に必ずsnapshotを取得します。ナビゲーションをまたいでrefを再利用しません。
- 実行の最後は必ず
browser close --allで終了し、次回がクリーンに始まるようにします。 - 1つのdaemonを共有する並列ワークフローは
--sessionで分離します。 --jsonではsnapshotをjqにパイプします:omniscout browser snapshot | jq '.refs[] | select(.role == "button")'。