OmniScout Docs
Browser & Computer automation

ブラウザ自動化

@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つの原則があります:

  1. ナビゲーションや大きなDOM変更のたびに再取得します — ページが変わるとrefは無効になります。
  2. 操作可能な一覧が欲しい場合は**--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 title

navigateは--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 Entercmd+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 30000

waitは--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-key

navigateは読み込み直後に課題を解決する--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")'。

On this page