screen-control-operator-v3 について
screen-control-operator-v3は、ブラウザー操作や自動テスト向けのエージェントスキルです。CDPとアクセシビリティツリーでページを調べ、ワークフローの記録・再生や差し押さえ関連の定義済みスキルに対応します。
主な機能
- 01ブラウザーワークフローの記録と保存
- 02変数を使ったスキル再生
- 03分離したブラウザータスクの並列実行
- 04アクセシビリティツリーによるページ調査
- 05複数方式での要素検索リカバリー
- 06差し押さえ関連の定義済みスキル
活用シーン
- 01ブラウザー操作ワークフローの記録と再生
- 02差し押さえ関連サイトの並列検索
- 03DOM構造の調査とセレクターのデバッグ
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ breverdbidder/ life-os --skill screen-control-operator-v3インストール後、Claude Code で/screen-control-operator-v3を入力して読み込まれたか確認します。
詳細
Screen Control Operator V3
Claude Cowork の発表の3週間前に開発されました。現在は機能面で同等であり、さらに当社独自の強みも備えています。
Claude Cowork に対する主な優位点
| 機能 | Claude Cowork | Screen Control Operator V3 |
|---|---|---|
| ビジョン方式 | スクリーンショット | CDP + アクセシビリティツリー |
| 速度 | 1~5秒 | 50~200ms(10倍高速) |
| コスト | ビジョントークン($$$) | テキストトークンのみ($) |
| 信頼性 | OCR 約85% | セマンティッククエリ 100% |
| スキルの記録 | ✅ はい | ✅ はい |
| 並列実行 | ✅ はい | ✅ はい |
| ドメインスキル | 汎用 | 差し押さえ特化 |
| スマートルーター | 該当なし | 90%が無料枠 |
このスキルを使う場面
起動フレーズ:
- 「画面を操作して」
- 「ワークフローを記録して」
- 「このスキルを再生して」
- 「Lovable のプレビューを検証して」
- 「スクレイパーをテストして」
- 「DOM セレクターをデバッグして」
- 「ページ構造を調べて」
- 「BECA 検索を実行して」
- 「BCPAO を検索して」
- 「自律型ブラウザーテスト」
クイックスタート
from screen_control_operator_v3 import ScreenControlOperatorV3
operator = ScreenControlOperatorV3(headless=False)
operator.launch()
# Option 1: Record new skill
skill = operator.record_skill("My Workflow", domain="foreclosure")
operator.save_skill(skill, "my_workflow.json")
# Option 2: Play recorded skill
result = operator.play_skill_file("my_workflow.json",
variables={"case_number": "2025-CA-001234"})
# Option 3: Use pre-built foreclosure skills
result = operator.lookup_beca_case("2025-CA-001234")
result = operator.lookup_bcpao_property("12-34-56-78-90")
result = operator.search_acclaimweb_liens("SMITH JOHN")
# Option 4: Parallel execution
results = operator.execute_parallel([
{"skill": skill1, "variables": {"case": "001"}},
{"skill": skill2, "variables": {"case": "002"}},
{"skill": skill3, "variables": {"case": "003"}},
])
operator.close()
CLI コマンド
# Record new skill
python screen_control_operator_v3.py record \
--name "BECA Deep Search" \
--domain foreclosure \
--output skills/beca_deep.json \
--start-url "https://vmatrix1.brevardclerk.us/beca/"
# Play skill with variables
python screen_control_operator_v3.py play \
--skill skills/beca_deep.json \
--vars '{"case_number": "2025-CA-001234"}'
# Pre-built skills
python screen_control_operator_v3.py beca --case "2025-CA-001234"
python screen_control_operator_v3.py bcpao --parcel "12-34-56-78-90"
# Inspect page DOM (NOT screenshot)
python screen_control_operator_v3.py inspect \
--url "https://example.com" \
--output structure.json
事前構築済みの差し押さえスキル
| スキル ID | 名前 | 変数 | 説明 |
|---|---|---|---|
beca_lookup_001 | BECA Case Lookup | case_number | BECA を検索して、判決を抽出します |
bcpao_lookup_001 | BCPAO Property | parcel_id | 物件の詳細と写真を取得します |
acclaimweb_lien_001 | Lien Search | party_name | 登記済みの先取特権を検索します |
realforeclose_list_001 | Auction List | auction_date | オークションの日程を取得します |
スキルの記録(Cowork の機能)
記録の仕組み
- ブラウザーを起動し、開始ページに移動します
record_skill(name, domain)を呼び出します- ワークフローを手動で実行します
- Enter または Ctrl+C を押して停止します
- スキルには次の内容が記録されます:
- すべてのナビゲーションイベント
- すべてのクリックイベント(セレクターを含む)
- すべての入力イベント(値を含む)
- 成功基準(推定)
記録される内容
{
"skill_id": "abc123def456",
"name": "BECA Deep Search",
"domain": "foreclosure",
"actions": [
{
"action_type": "navigate",
"url": "https://vmatrix1.brevardclerk.us/beca/"
},
{
"action_type": "type",
"selector": "#caseNumber",
"value": "{{case_number}}",
"element_info": {"label": "Case Number", "role": "textbox"}
},
{
"action_type": "click",
"selector": "button[type='submit']",
"element_info": {"label": "Search", "role": "button"}
}
],
"variables": {"case_number": ""},
"success_criteria": [
{"type": "element_visible", "selector": ".case-details"}
]
}
並列実行(Cowork の機能)
分離されたブラウザーコンテキストで複数のスキルを同時に実行します:
executor = ParallelExecutor(max_parallel=5)
executor.launch()
tasks = [
{"skill": beca_skill, "variables": {"case": "2025-CA-001"}},
{"skill": beca_skill, "variables": {"case": "2025-CA-002"}},
{"skill": beca_skill, "variables": {"case": "2025-CA-003"}},
{"skill": beca_skill, "variables": {"case": "2025-CA-004"}},
{"skill": beca_skill, "variables": {"case": "2025-CA-005"}},
]
results = executor.execute_parallel(tasks)
# All 5 run simultaneously in separate contexts
DOM の検査(当社独自の強み)
スクリーンショットではなく、アクセシビリティツリーを使ってページ構造を取得します:
structure = operator.get_page_structure()
# Returns:
{
"url": "https://example.com",
"title": "Page Title",
"elements": [
{"tag": "BUTTON", "role": "button", "label": "Submit", "testid": "submit-btn"},
{"tag": "INPUT", "role": "textbox", "label": "Search", "id": "search-input"},
...
]
}
自然言語で要素を検索します:
selector = operator.find_element_semantic("search button")
# Returns: "[data-testid='search-btn']" or "#search-button" or similar
スマートルーターとの連携
| 操作 | モデル階層 | コスト |
|---|---|---|
| ページ移動 | 無料(Gemini) | $0 |
| 要素の検索 | 無料(Gemini) | $0 |
| スキルの記録 | 無料(Gemini) | $0 |
| スキルの再生 | 無料(Gemini) | $0 |
| エラーからの復旧 | バランス型(Sonnet) | $ |
結果: 95%以上の操作が無料枠で実行されます
GitHub Actions との連携
# .github/workflows/browser_agent.yml
name: Browser Agent Daily
on:
schedule:
- cron: '0 4 * * *' # 11 PM EST
jobs:
scrape:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install playwright
playwright install chromium
- name: Run Browser Agent
run: |
python src/agents/screen_control_operator_v3.py beca \
--case "${{ github.event.inputs.case_number }}"
エラーからの復旧
要素が見つからない場合、V3 は複数の方法を試します:
- data-testid(最も信頼性が高い)
- aria-label(セマンティック)
- role + text(アクセシビリティ)
- ID(従来の方法)
- 元のセレクター(フォールバック)
- テキストコンテンツ(最後の手段)
これが、Cowork の約85%に対して当社が100%の信頼性を実現する理由です。
依存関係
pip install playwright --break-system-packages
playwright install chromium
ファイルの場所
- スクリプト:
src/agents/screen_control_operator_v3.py - スキル:
skills/*.json - スキルライブラリ:
.claude/skills/screen-control-operator-v3/SKILL.md
Claude AI Architect + Ariel Shapira が開発
2025年12月25日(初版)→ 2026年1月15日(V3)
私たちは Claude のイノベーター集団です!
コメント
Markdown 対応