Best for
- Use when user says "crawl site", "map site", "full crawl", "find all pages", "broken links", "site structure", "discover pages", "JS rendering", or needs site-wide analysis.
AgriciDaniel/codex-seo/skills/seo-firecrawl/SKILL.md
Full-site crawling, scraping, and site mapping via Firecrawl MCP. Use when user says "crawl site", "map site", "full crawl", "find all pages", "broken links", "site structure", "discover pages", "JS rendering", or needs site-wide analysis.
Decision brief
Full-site crawling, scraping, and site mapping via Firecrawl MCP.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Declared | Source record | Install path and trigger |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/AgriciDaniel/codex-seo --skill "skills/seo-firecrawl"Inspect the Agent Skill "seo-firecrawl" from https://github.com/AgriciDaniel/codex-seo/blob/97c59bcdac3c9538bf0e3ae456c1e73aa387f85a/skills/seo-firecrawl/SKILL.md at commit 97c59bcdac3c9538bf0e3ae456c1e73aa387f85a. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Step 0 -- Check shared data cache:
Review the “Quick Reference” section in the pinned source before continuing.
Crawl an entire website starting from the given URL. Returns page content, metadata, and links for all discovered pages.
Crawl an entire website starting from the given URL. Returns page content, metadata, and links for all discovered pages.
Discover all URLs on a website without fetching content. Fast and credit-efficient.
Permission review
The documentation includes network, browsing, or remote request actions.
| `/seo firecrawl search <query> <url>` | Search within a crawled site |Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 85/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 546 | Source | Repository attention, not individual Skill quality |
| Compatibility | 1 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Step 0 -- Check shared data cache:
Before gathering, check .seo-cache/ for reusable context from related SEO skills.
Reference: ../seo/references/shared-data-cache.md for schemas and dependency map.
Check these cache files when present:
.seo-cache/site-meta.json for domain, business type, industry, and crawl context
.seo-cache/audit-scores.json for prior full-audit priorities
.seo-cache/pages/{url-slug}/page-analysis.json for page-level context when a URL is provided
If found: parse and use clearly valid fields (note "Using cached [X] from [date]")
If missing, corrupt, or irrelevant: continue with fresh evidence
If the user says "refresh" or "re-run": ignore cache reads and overwrite on write
This skill requires the Firecrawl extension to be installed:
./extensions/firecrawl/install.sh
Check availability: Before using any Firecrawl tool, verify the MCP server
is connected by checking if firecrawl_scrape or any Firecrawl tool
is available. If tools are not available, inform the user the extension is not
installed and provide install instructions.
| Command | Purpose |
|---|---|
/seo firecrawl crawl <url> | Full-site crawl with content extraction |
/seo firecrawl map <url> | Discover site structure (URLs only, fast) |
/seo firecrawl scrape <url> | Single-page scrape with JS rendering |
/seo firecrawl search <query> <url> | Search within a crawled site |
Crawl an entire website starting from the given URL. Returns page content, metadata, and links for all discovered pages.
MCP Tool: firecrawl_crawl
Parameters:
url (required): Starting URL to crawllimit: Max pages to crawl (default: 100, max: 500)maxDepth: Max link depth from start URL (default: 3)includePaths: Array of glob patterns to include (e.g., ["/blog/*"])excludePaths: Array of glob patterns to exclude (e.g., ["/admin/*", "/api/*"])scrapeOptions.formats: Output formats -- ["markdown", "html", "links"]SEO Usage Patterns:
includePaths to audit only /blog/* or /products/*["links"] format, check all hrefs for 404sExample orchestration for /seo audit:
1. firecrawl_map(url) -> get all URLs (fast, no content)
2. Filter to top 50 most important pages (homepage, key sections)
3. firecrawl_crawl(url, limit=50) -> get full content
4. Feed content to seo-technical, seo-content, seo-schema agents
Cost awareness:
Discover all URLs on a website without fetching content. Fast and credit-efficient.
MCP Tool: firecrawl_map
Parameters:
url (required): Website URL to maplimit: Max URLs to discover (default: 5000)search: Optional search term to filter URLsSEO Usage Patterns:
Output: Array of URLs. Present as:
Site: example.com
Pages discovered: 342
URL Pattern Breakdown:
/blog/* - 128 pages (37%)
/products/* - 89 pages (26%)
/category/* - 45 pages (13%)
/pages/* - 32 pages (9%)
/ (root pages) - 48 pages (14%)
Scrape a single page with full JavaScript rendering. More thorough than
fetch_page.py because it executes JS and waits for dynamic content.
MCP Tool: firecrawl_scrape
Parameters:
url (required): Page URL to scrapeformats: Output formats -- ["markdown", "html", "links", "screenshot"]onlyMainContent: Strip nav/footer/sidebar (default: true)waitFor: CSS selector or milliseconds to wait for contenttimeout: Request timeout in ms (default: 30000)actions: Browser actions before scraping (click, scroll, wait)SEO Usage Patterns:
onlyMainContent for clean E-E-A-T analysisscreenshot format for visual analysisWhen to use scrape vs fetch_page.py:
| Scenario | Use |
|---|---|
| Static HTML page | fetch_page.py (no API cost) |
| JS-rendered SPA | firecrawl_scrape (renders JS) |
| Need response headers | fetch_page.py (returns headers) |
| Need clean markdown | firecrawl_scrape (better extraction) |
| Rate-limited/blocked | firecrawl_scrape (handles anti-bot) |
Search within a website for specific content. Useful for finding pages related to a topic without crawling everything.
MCP Tool: firecrawl_search
Parameters:
query (required): Search queryurl (required): Website to search withinlimit: Max results (default: 10)scrapeOptions.formats: Output format for matched pagesSEO Usage Patterns:
When Firecrawl is available during /seo audit:
firecrawl_map to discover all site URLs| Error | Cause | Resolution |
|---|---|---|
FIRECRAWL_API_KEY not set | MCP not configured | Run ./extensions/firecrawl/install.sh |
402 Payment Required | Credits exhausted | Check usage at firecrawl.dev/app, upgrade plan |
429 Too Many Requests | Rate limited | Wait 60s, reduce crawl concurrency |
408 Timeout | Page too slow to render | Increase timeout, try without JS rendering |
403 Forbidden | Site blocks crawling | Check robots.txt, may need to skip this site |
Graceful fallback: If Firecrawl is unavailable, inform the user and suggest:
fetch_page.py for single-page analysis (no API cost)WebFetch tool for basic HTML retrieval./extensions/firecrawl/install.shAfter completing all work, write a concise JSON summary to .seo-cache/ when the workflow produced durable findings.
Use the schemas and naming rules in ../seo/references/shared-data-cache.md; include at least cache_type, analyzed_at, source URL/domain, key findings, issues, recommendations, and tool limitations. Add .seo-cache/ to .gitignore if it is missing.
Alternatives
AgriciDaniel/claude-seo
Full-site crawling, scraping, and site mapping via Firecrawl MCP. Use when user says "crawl site", "map site", "full crawl", "find all pages", "broken links", "site structure", "discover pages", "JS rendering", or needs site-wide analysis.
Bhanunamikaze/Agentic-SEO-Skill
Deterministic LLM-first SEO audits for websites, blog posts, and GitHub repositories. Use this when the user asks to "perform SEO analysis", "run SEO audit", "analyze SEO", "check technical SEO", "review schema", "Core Web Vitals", "E-E-A-T", "hreflang", "GEO", "AEO", or GitHub repository SEO optimization. For full/page/repo audits, run bundled scripts for evidence and return prioritized, confidence-labeled fixes.
PramodDutta/qaskills
Comprehensive website auditing skill using Lighthouse, PageSpeed Insights, and web performance APIs to audit performance, accessibility, SEO, best practices, and security.
nowork-studio/NotFair
Write SEO-optimized blog posts, landing pages, and content improvements following Google's E-E-A-T and Helpful Content guidelines. Handles new content creation from a keyword or topic, and improving existing pages. Use when asked to "write a blog post", "create a landing page", "improve this page", "write content about X", "content for keyword X", "draft an article", "blog post about", "landing page for", "service page", "product page copy", "rewrite this page", "make this page rank better", "co