Jaredw2289-svg

chrome-pilot

0
0
# Install this skill:
npx skills add Jaredw2289-svg/chrome-pilot --skill "chrome-pilot"

Install specific skill from multi-skill repository

# Description

Control the user's real Chrome browser via AppleScript. Write Python scripts using chrome_pilot library to browse, extract, and download web content. Invisible to anti-bot detection.

# SKILL.md


name: chrome-pilot
description: Control the user's real Chrome browser via AppleScript. Write Python scripts using chrome_pilot library to browse, extract, and download web content. Invisible to anti-bot detection.


What this skill does

You control the user's real Chrome browser by writing and executing Python scripts that use the chrome_pilot library. This is invisible to anti-bot systems (PerimeterX, Cloudflare, etc.) because it uses macOS AppleScript IPC, not CDP or WebDriver.

When to use this skill

  • Browsing sites with anti-bot protection (Seeking Alpha, WSJ, Bloomberg, etc.)
  • Accessing content behind login/paywalls (user's Chrome is already logged in)
  • Any web task where Playwright MCP gets blocked
  • Downloading images/files from authenticated sessions
  • Form filling on internal/enterprise systems

Prerequisites

  • macOS
  • Chrome running
  • Chrome → View → Developer → Allow JavaScript from Apple Events ✓
  • pip install chrome-pilot (or pip install -e ~/coding/chrome-pilot)

How to work

  1. Understand the user's goal
  2. Write a complete Python script that uses chrome_pilot to accomplish it
  3. Execute the script via Bash tool
  4. If it fails, read the traceback, fix the script, re-execute
  5. Return results to the user

Do NOT call chrome_pilot tools one-by-one in a loop. Write the full script first, then run it.

API reference

from chrome_pilot import chrome
from chrome_pilot.extractor import extract_article, extract_links, extract_images
from chrome_pilot.downloader import download_image, download_images
import time, json

# --- Navigation ---
chrome.navigate(url)                    # open URL (auto-waits 3s)
chrome.navigate(url, wait=5)            # custom wait
chrome.back() / chrome.forward()
chrome.reload()
chrome.new_tab(url)
chrome.close_tab()

# --- Read page ---
chrome.snapshot() -> str                # page visible text
chrome.html(selector?) -> str           # element HTML
chrome.js(code) -> str                  # execute any JavaScript
chrome.url() -> str
chrome.title() -> str
chrome.tabs() -> [{title, url}]

# --- Interact ---
chrome.click(selector)                  # CSS selector
chrome.type_text(selector, text)        # type into input
chrome.select(selector, value)          # select dropdown option
chrome.scroll("down"|"up"|"bottom"|"top")
chrome.wait(seconds)
chrome.wait_for(js_condition, timeout=30)

# --- Smart extract ---
extract_article() -> {title, author, date, url, content_md, summary, word_count}
extract_links(pattern?) -> [{title, url}]
extract_images() -> [{url, alt, width, height}]

# --- Download ---
download_image(url, save_dir) -> filepath
download_images(save_dir, min_width=100) -> [filepaths]

# --- State ---
chrome.cookies(domain?) -> str
chrome.storage(key?) -> str
chrome.is_running() -> bool

Script patterns

Fetch articles from a listing page

from chrome_pilot import chrome
from chrome_pilot.extractor import extract_article, extract_links
import time, json

chrome.navigate("https://seekingalpha.com/symbol/NVDA/analysis")
time.sleep(5)
links = extract_links(pattern="/article/")[:5]

articles = []
for link in links:
    chrome.navigate(link["url"])
    time.sleep(4)
    article = extract_article()
    if article.get("content_md"):
        articles.append(article)
        print(f"✓ {article['title'][:60]}")
    else:
        print(f"✗ {link['title'][:60]} - no content")

# Save results
from pathlib import Path
out = Path.home() / "articles"
out.mkdir(exist_ok=True)
for a in articles:
    slug = a["title"][:50].lower().replace(" ", "-")
    (out / f"{slug}.md").write_text(
        f"# {a['title']}\n\n**{a['author']}** | {a['date']}\n\n{a['content_md']}"
    )
print(f"\nSaved {len(articles)} articles to ~/articles/")

Search and extract

from chrome_pilot import chrome
import time

chrome.navigate("https://seekingalpha.com")
time.sleep(3)
chrome.click('input[data-test-id="search-input"]')
chrome.type_text('input[data-test-id="search-input"]', "NVDA GTC 2026")
chrome.press_key("enter")
time.sleep(3)
print(chrome.snapshot())

Download all images

from chrome_pilot import chrome
from chrome_pilot.downloader import download_images

chrome.navigate("https://example.com/gallery")
chrome.wait(3)
saved = download_images("~/Downloads/gallery", min_width=200)
print(f"Downloaded {len(saved)} images")

Rules

Ask before acting

Before writing and executing a script, confirm with the user if any of these are unclear:
- Which Chrome window/profile to use (if multiple are open)
- Which specific pages or URLs to target
- Where to save output files
- How many articles/items to fetch
- Whether to navigate away from the current page

Example: "I'll open a new tab in your Junyu profile window, navigate to SA, and extract the first 5 NVDA articles to ~/articles/. OK?"

Do NOT ask about

  • Technical implementation details (selectors, sleep timing, script structure)
  • Things the user already specified in their request
  • Obvious defaults (e.g. save format is Markdown unless stated otherwise)

Execution rules

  • Always time.sleep(3-5) after navigate()
  • Never ask for login credentials — the user's Chrome is already logged in
  • If CAPTCHA or error dialog appears, report it and stop — do not retry endlessly
  • Prefer extract_article() over manual DOM parsing
  • Scripts are disposable — write, run, discard or save as the user prefers
  • Use chrome.snapshot() to understand page state before deciding actions
  • Print progress during loops so the user sees what's happening
  • Use Chrome(window=...) or chrome.use(window=...) to target a specific profile window without disturbing the user's active browsing

CLI usage (alternative to Python scripts)

chrome-pilot navigate "https://example.com"
chrome-pilot snapshot
chrome-pilot extract article
chrome-pilot extract links --pattern "/article/"
chrome-pilot download images ~/images/
chrome-pilot status

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.