stealth-browser について
stealth-browserは、macOSでChromeを非表示にしてCDP経由で操作するClaude Codeスキルです。ページの読み取りや操作に加え、サイト固有の知見を再利用できる形で記録します。
主な機能
- 01レンダリング済みページをMarkdownで取得
- 02CDP経由でChromeを非表示で起動
- 03agent-browserでページを操作
- 04再利用可能なサイト知見を記録
- 05ブロック対象ドメインを記録
活用シーン
- 01JavaScriptで描画されるページの内容抽出
- 02ブラウザー移動やフォーム入力の自動化
- 03サイト固有の操作方法の再利用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ changeflowhq/ skills --skill stealth-browserインストール後、Claude Code で/stealth-browserを入力して読み込まれたか確認します。
詳細
stealth-browser
CDP 経由の不可視 Chrome 自動化。実際の Chrome を非表示で起動し、Chrome DevTools Protocol 経由でコマンドを送信します。サイトからは通常のブラウザーに見え、自動化を検出されません。
macOS のみです。 AppleScript と
open -gを使用して Chrome を非表示にします。
メモリ
すべてのタスクの開始時に ~/.claude/skills/stealth-browser/LEARNED.md を読み込んでください。存在しない場合は、# Learned ヘッダーを付けて作成してください。
次のことを検出したときは、学びを記録してください。
- ドメイン固有の注意点:追加の待機時間、Cookie の却下、特定の操作パターンが必要なサイト
- 解決した問題:何が、なぜ失敗したか(タイムアウト、空白ページ、誤ったセレクター)
- 修正:「いいえ、X を使ってください」「それはしないでください」「実際は……」
- 回避策:コンテンツの取得に JS 評価、スクロール、複数ステップのナビゲーションが必要なサイト
- 肯定的なフィードバック:「完璧です!」「そのとおりです!」「そういうやり方です!」
追記する前に確認してください。
- 再利用できますか?(一度限りの指示ではない)
- すでに LEARNED.md にありますか?(重複させない)
- 一般的な原則を抽出できますか?(具体的な修正だけにしない)
形式: 実行可能なルールを1行で記述します。経緯ではなく、ルールを書いてください。
- 悪い例:「スクロールが必要だったためページが空白だとユーザーが言った」
- 良い例:「example.com はコンテンツを遅延読み込みするため、抽出前に一番下までスクロールする」
許可を求めないでください。追記して作業を続けてください。
基本ワークフロー
# 1. Read a page as markdown (most common)
stealth-browser read <url>
# 2. Full automation (open, interact, close)
stealth-browser open <url> --hidden
agent-browser --cdp 9222 snapshot -i
agent-browser --cdp 9222 click @e1
stealth-browser close
stealth-browser は、このスキルからの相対パス scripts/stealth-browser にあります。絶対パスを使用してください。
~/.claude/skills/stealth-browser/scripts/stealth-browser read <url>
コマンド
stealth-browser read <url> # Fetch as markdown (waits for JS render)
stealth-browser open <url> --hidden # Launch hidden Chrome
stealth-browser close # Stop Chrome
stealth-browser status # Check state
stealth-browser screenshot [path] # CDP screenshot (auto unhide/re-hide)
stealth-browser hide / unhide # Toggle visibility
stealth-browser doctor # Check dependencies
stealth-browser setup # Reset Chrome profile
開いた後:agent-browser 経由の CDP コマンド
agent-browser --cdp 9222 open <url> # Navigate
agent-browser --cdp 9222 snapshot -i # Get interactive elements
agent-browser --cdp 9222 click @e1 # Click by ref
agent-browser --cdp 9222 fill @e2 "text" # Fill input
agent-browser --cdp 9222 type @e2 "text" # Type without clearing
agent-browser --cdp 9222 press Enter # Press key
agent-browser --cdp 9222 scroll down 500 # Scroll
agent-browser --cdp 9222 get text @e1 # Get text
agent-browser --cdp 9222 get url # Get current URL
agent-browser --cdp 9222 eval "document.title" # Run JavaScript
agent-browser --cdp 9222 screenshot path.png # Screenshot
agent-browser --cdp 9222 wait 2000 # Wait
agent-browser --cdp 9222 back # Navigate back
ナビゲーションまたは DOM の変更後は、必ずスナップショットを再取得してください。要素の参照が変わります。
Chrome の永続性
read または open --hidden の後も、Chrome は起動したまま非表示になります。
- 最初の操作: Chrome の起動中に一瞬表示されます(左上隅に小さなウィンドウが表示されます)
- 以降のすべての操作: 完全に不可視で、すぐに実行されます
- 終了するとき:
stealth-browser close
ドメインのブロックリスト(学習用)
ブロックされたドメインは data/blocked-domains.txt に記録されます。PreToolUse フックが、今後それらのドメインに対する WebFetch 呼び出しをインターセプトし、Claude に stealth-browser を直接使うよう指示します。
Claude Code との統合設定については、hooks/README.md を参照してください。 人間向けの完全なドキュメントについては、README.md を参照してください。