Crawl4AI Agent Skill
Portable skill for the Crawl4AI CLI and SDK: JavaScript-heavy pages, structured extraction by CSS schemas and batch crawling.
- 50 ★ on the repository
- Last commit
Broad access
Why this level
- The skill runs a headless browser, visits third-party sites and keeps sessions with login state.
- Data collection can breach site terms or personal data law.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/crawl4ai-agent-skillDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The skill runs a headless browser, visits third-party sites and keeps sessions with login state.
- Data collection can breach site terms or personal data law.
This is third-party code. Review the repository files before installing.
What it does
The skill teaches an agent to work with the `crwl` command and the `crawl4ai` library. Pages render in a headless browser waiting for `networkidle`, and data is extracted two ways. A CSS selector schema is derived once through a model and then applied at no further cost, while LLM extraction suits one-off tasks without a schema. It also offers BM25 and quality content filters, batch crawling with per-job concurrency caps, sessions for multi-step logged-in flows and URL discovery. The bundle holds `SKILL.md`, nine reference guides, six helper scripts, YAML templates and four eval scenarios. It is verified against Crawl4AI 0.8.9.
Who it is for. Developers and data analysts who collect structured data from JavaScript sites and want to derive a schema once instead of paying a model per page.
Good fit when
- A product catalog is drawn by scripts and a plain request returns an empty page
- A selector schema is derived once and applied to thousands of similar pages
- A page must be cleaned to plain Markdown keeping only relevant chunks
- A site is crawled by topic with a cap on concurrent jobs
- A scenario spans several steps inside one browser session
Not a fit when
- The site forbids automated collection in its terms or `robots.txt`
- The data holds personal information you have no basis to process
- The page returns what you need through a plain HTTP request, so a headless browser is overkill
Example request
Open the catalog at this link, derive a CSS schema for product cards and save all products to JSON.Limitations
The skill calls the Crawl4AI library, so the agent environment needs `pip install crawl4ai`, then `crawl4ai-setup` and a `crawl4ai-doctor` check: the headless browser downloads separately. The SDK reference is huge, and commands and parameters are tied to version 0.8.9 and may differ on others. The folder includes a guide on anti-bot handling, which should be applied only to your own sites or where collection is permitted. Sessions keep login state, so do not leave them on shared machines. The license is dual, MIT or Apache-2.0.
How to disable. Delete the `~/.claude/skills/crawl4ai` folder. Remove the library and browser with `pip uninstall crawl4ai` and clear the browser cache manually.
FAQ
How do I install the skill in Claude Code?
Clone the repository into `~/.claude/skills/crawl4ai`: `git clone https://github.com/brettdavies/crawl4ai-skill.git ~/.claude/skills/crawl4ai`. Then install Crawl4AI itself.
What else must be installed?
The Crawl4AI library: `pip install crawl4ai`, then `crawl4ai-setup` and `crawl4ai-doctor`, which confirms a headless browser is available.
How does a schema differ from LLM extraction?
A CSS selector schema is derived once through a model and then applied at no cost. LLM extraction pays per request and suits cases where a schema is not worth deriving.
Which agents does it work with?
Any that load SKILL.md bundles: Claude Code, Codex, Cursor, OpenCode, Cline. Clone the folder where the host looks for skills.
Which Crawl4AI version is it verified against?
Version 0.8.9, recorded in the repository `VERSION` file.
Discussion
No questions or reviews yet.
Related
SkillsFive skills for the XCrawl API: scraping a single page, mapping a site's URLs, crawling a whole site and search, with cURL and Node examples
An open-source crawler that turns websites into clean Markdown for AI agents: install from PyPI, run in Docker and connect to Claude Code over MCP
Three skills and four utilities that let an agent search the web, read pages, pull video subtitles and process media
Firecrawl skills catalog for Claude Code, Cursor and Codex: web search, scraping, crawling, page interaction and API integration
Five skills that teach an agent to wire Firecrawl search, scraping and page interaction into the code of your own application
Official Brave skills that teach an agent to call the Search API for web, news, images, videos, places and page extracts for LLMs
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| Crawl4AI Agent Skill (this card) | no | 50 | ||
| Crawl4AI | yes | API key | 87,271 | the library itself and how to run it; this is a skill with recipes and scripts on top of it |
| Firecrawl CLI | no | 684 | the Firecrawl hosted service with skills; this one uses the local Crawl4AI library |
README in short
The README lists features, installation by cloning, Crawl4AI prerequisites, a quick start for the CLI and SDK and the bundle contents. Links to guides, recipes and eval scenarios follow.
README badge
Original SKILL.md
--- name: crawl4ai description: Use when scraping JavaScript-heavy pages or SPAs, crawling multiple URLs concurrently, extracting structured data with reusable CSS/JSON schemas, or building automated web data pipelines. Wraps the Crawl4AI library (`crwl` CLI and Python SDK) with schema-generation patterns for LLM-free extraction. Triggers on crawl4ai, crwl, scrape JS-heavy site, scrape SPA, headless browser scrape, schema-based extraction, batch crawl, sitemap crawl, web data pipeline. SKIP when a static HTML page can be read with `defuddle` / `fetch-web` — those are faster cold-start and don't need a browser. argument-hint: "[url]" --- # Crawl4AI **Verified against `crawl4ai`** [`VERSION`](VERSION). PEP 723 pins in `scripts/*.py` and `tests/*.py` floor at that version. ## Overview Crawl4AI wraps a headless browser (Playwright) plus a markdown-aware content pipeline. Use it when defuddle/curl can't reach the content — JavaScript-rendered pages, login-gated content, infinite scroll, multi-URL concurrency, repeatable schema-based extraction. This skill exposes both interfaces of the underlying library: - **CLI** (`crwl`) — quick, scriptable commands: [CLI Guide](references/cli-guide.md) - **Python SDK** — full programmatic control: [SDK Guide](references/sdk-guide.md) ## Invoked with a URL argument When the user runs `/crawl4ai <url>` with a single URL and no further qualifier, treat it as the JS-heavy fetch case and default to: ```bash crwl <url> -c "wait_until=networkidle,page_timeout=60000" -o markdown ``` `wait_until=networkidle` waits for the network to be quiet for ~500ms post-load — the right default when the user hasn't named a specific element on a JS-rendered page. (Avoid `wait_for=css:body`: `<body>` exists at t=0 on every HTML response, so it's satisfied before JS renders content.) Then return the markdown to the agent context. Adjust to `wait_for=css:<selector>` if the user named a specific element. Skip the default and route to the relevant section below for any task that names extraction, batch / multi-URL, login / session, screenshot / PDF, or URL discovery — those each have their own pipeline. If the URL is clearly static (a docs page, a blog post), route the user to `/fetch-web` instead per the "When NOT to use" section below. ## When NOT to use this skill - **Static HTML pages** (most documentation sites, blog posts, news articles, tweets) — use `/fetch-web` or `defuddle` directly. Static extraction is ~0ms cold start; crawl4ai pays a ~2s browser startup tax. - **Local file conversion** (`.pdf`, `.docx`, `.pptx`, `.epub`) — use `/markdown-convert`. - **One-URL agent-context reads** (the agent just needs to read this page) — use `/fetch-web` and let it route to