From zendriver
Use when scraping, extracting, or reading content or data from a website with zendriver — especially JS-rendered SPAs, bot-walled pages, or anything plain fetch/WebFetch can't reach. Covers the open→goto→wait→extract flow, surgical extraction, tool selection, and gotchas.
How this skill is triggered — by the user, by Claude, or both
Slash command
/zendriver:scrapingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The canonical playbook for driving the zendriver browser well. The `/zendriver:scrape`
The canonical playbook for driving the zendriver browser well. The /zendriver:scrape
command and the zendriver-scraper subagent both follow this skill — it is the single
source of truth.
Reach for zendriver when the page is JS-rendered, bot-walled, or needs interaction/session state. For static HTML a plain fetch is lighter — don't spin up a browser to read a sitemap.
browser_status — is a browser already open this session? Reuse it; don't re-open.browser_open — launch once. Stealth is on by default; do NOT re-enable it or set a
profile unless a site specifically needs it.browser_goto { url, wait_for: "load" } — navigate.browser_close when the job is done (the server also kills its owned Chrome on
exit).browser_html { trim: true } returns the whole page — ~40–50k tokens for a real article.
Only dump full DOM when you genuinely need the whole page. When the goal is specific,
pull just that:
browser_find (one) or browser_find_all (many).browser_get_links.<script> → browser_evaluate
with a small JS snippet that returns exactly the shape you want.browser_search_resources.Default to targeted tools; reserve browser_html { trim: true } for genuinely unstructured
full-page reads.
wait_for: "load", not "idle" on ad/tracker-heavy sites — idle's ~5s cap times out
waiting on hanging tracker requests. Use load and read the DOM regardless; escalate to
browser_wait_for_idle only for SPAs that genuinely settle.trim: true on browser_html unless you need raw markup.browser_status before assuming a browser/tab is open — calling navigation on a
closed browser errors.browser_wait_for_load / short browser_wait_for_idle, or check for a wall (next section).If the DOM shows an anti-bot interstitial instead of content — "Just a moment…", a Cloudflare
ray ID, an Imperva/Incapsula notice, or a DataDome block — invoke the bypass skill
(via the Skill tool) and follow it, then resume extraction.
Loop the core flow per URL. Prefer browser_get_links to discover "next" targets over
guessing URL patterns. For big crawls, run inside the zendriver-scraper subagent (and
background it) so the main thread's context stays clean.
zendriver is for authorized access: your own sites, content you're permitted to read,
authorized testing, and research. Respect robots-style intent and rate limits; throttle
between requests. Don't use it for mass-targeting or to defeat access controls you have no
right to bypass.
npx claudepluginhub turtiesocks/zendriver-rs --plugin zendriverGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.