{"id":"3f608bfc-0fb9-41e3-920d-e0aa22a273df","entityType":"agent","slug":"clawhub-simonpierreboucher02-firecrawl-ws","name":"Firecrawl","canonicalUrl":"https://www.xpersona.co/agent/clawhub-simonpierreboucher02-firecrawl-ws","canonicalPath":"/agent/clawhub-simonpierreboucher02-firecrawl-ws","generatedAt":"2026-10-12T19:00:53.027Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-12T01:50:11.023Z","emptyReason":null},"description":"AI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic... Skill: Firecrawl Owner: simonpierreboucher02 Summary: AI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic... Tags: latest:1.0.0 Version history: v1.0.0 | 2026-05-31T15:39:31.183Z | auto Firecrawl Skill 1.0.0 – Initial Release - Adds AI-native web scraping, crawling, domain mapping, and structured extraction capab","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 959 downloads reported by the source. Last updated 10/12/2026.","installCommand":"clawhub skill install s17e2qmx5cdbsgjw93488kxpmd87r6f9:firecrawl-ws","sourceUrl":"https://clawhub.ai/simonpierreboucher02/firecrawl-ws","homepage":"https://clawhub.ai/simonpierreboucher02/skills/firecrawl-ws","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/simonpierreboucher02/firecrawl-ws","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/simonpierreboucher02/skills/firecrawl-ws","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"AI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-12T01:50:11.023Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T01:50:11.023Z","emptyReason":null},"stars":null,"forks":null,"downloads":959,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.0","tractionLabel":"959 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T01:50:11.010Z","emptyReason":null},"lastUpdatedAt":"2026-10-12T01:50:11.023Z","lastCrawledAt":"2026-10-12T01:50:11.010Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-13T01:50:11.010Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.0","createdAt":"2026-05-31T15:39:31.183Z","changelog":"Firecrawl Skill 1.0.0 – Initial Release - Adds AI-native web scraping, crawling, domain mapping, and structured extraction capabilities via Firecrawl. - Supports scraping single pages, crawling entire domains, mapping URLs, and extracting structured JSON according to user-defined schemas. - Includes best-practice guidance for efficient, scalable, and resilient data extraction. - Provides resource guides for API integration, SDK templates, and self-hosted deployments. - Details anti-patterns and optimization strategies for cost-effective LLM-ready data processing.","fileCount":5,"zipByteSize":6582}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17e2qmx5cdbsgjw93488kxpmd87r6f9:firecrawl-ws","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonpierreboucher02-firecrawl-ws/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonpierreboucher02-firecrawl-ws/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonpierreboucher02-firecrawl-ws/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-simonpierreboucher02-firecrawl-ws/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-simonpierreboucher02-firecrawl-ws/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-simonpierreboucher02-firecrawl-ws/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-12T19:00:53.026Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonpierreboucher02-firecrawl-ws/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonpierreboucher02-firecrawl-ws/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonpierreboucher02-firecrawl-ws/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simonpierreboucher02-firecrawl-ws/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-12T01:50:11.023Z","emptyReason":null},"readme":"Skill: Firecrawl\n\nOwner: simonpierreboucher02\n\nSummary: AI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic...\n\nTags: latest:1.0.0\n\nVersion history:\n\nv1.0.0 | 2026-05-31T15:39:31.183Z | auto\n\nFirecrawl Skill 1.0.0 – Initial Release\n\n- Adds AI-native web scraping, crawling, domain mapping, and structured extraction capabilities via Firecrawl.\n- Supports scraping single pages, crawling entire domains, mapping URLs, and extracting structured JSON according to user-defined schemas.\n- Includes best-practice guidance for efficient, scalable, and resilient data extraction.\n- Provides resource guides for API integration, SDK templates, and self-hosted deployments.\n- Details anti-patterns and optimization strategies for cost-effective LLM-ready data processing.\n\nArchive index:\n\nArchive v1.0.0: 5 files, 6582 bytes\n\nFiles: references/api_reference.md (3731b), references/self_hosting.md (2149b), skill-card.md (2793b), SKILL.md (4750b), _meta.json (131b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: firecrawl\ndescription: AI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic JS/actions, crawling full domains, or extracting schema-based structured JSON.\n---\n\n# Firecrawl Skill\n\nThis skill extends Manus with the capability to search, scrape, crawl, and extract structured data from any website using **Firecrawl** [1] [2].\n\n*   **Author:** Simon-Pierre Boucher\n*   **Target Audience:** AI Engineers, Agent Developers, Data Engineers, Web Scraping Engineers\n\n---\n\n## 1. Core Workflows\n\n### 1.1 Scraping a Single URL (`/scrape`)\nUse when you need the text content, Markdown, HTML, or screenshots of a specific webpage [2].\n1.  Initialize the Firecrawl client with your API key [1].\n2.  Specify output `formats` (e.g., `[\"markdown\"]` or `[\"markdown\", \"screenshot\"]`) [2].\n3.  Apply custom browser actions (e.g., click, wait, write) if the page has dynamic content or requires interaction [2].\n4.  Optionally filter the DOM using `includeTags` or `excludeTags` [2].\n\n### 1.2 Crawling a Domain (`/crawl`)\nUse when you need to discover and scrape all pages under a specific domain or path recursively [1] [2].\n1.  Start an asynchronous crawl job by specifying the starting `url` [2].\n2.  Set depth limits (`maxDepth`) and page limits (`limit`) to control token and credit usage [2].\n3.  Configure `scrapeOptions` to ensure each crawled page is parsed with the correct format (e.g., Markdown only) [2].\n4.  Poll the crawl status using the `jobId` until completed [2].\n\n### 1.3 Mapping a Domain (`/map`)\nUse when you need to quickly discover all URLs belonging to a domain without scraping page content [1] [2].\n1.  Provide the base `url` [2].\n2.  Optionally provide a `search` filter to only return URLs matching a specific keyword or path [2].\n3.  Set `includeSubdomains` to `true` if you need sub-domain discovery [2].\n\n### 1.4 Structured Extraction (`/extract`)\nUse when you need to parse raw web pages and extract structured JSON data conforming to a specific schema [3].\n1.  Provide an array of `urls` and a natural language extraction `prompt` [3].\n2.  Define the target schema using a **JSON Schema**, **Pydantic model** (Python), or **Zod schema** (TypeScript) [3].\n3.  Run the extraction to retrieve guaranteed, type-safe JSON [3].\n\n---\n\n## 2. Resource Guides\n\nFor comprehensive API parameters, SDK code templates, and configuration options, read the following reference files:\n*   **API Reference & SDK Snippets:** Read `references/api_reference.md` for complete endpoint request/response schemas, Python SDK templates, and TypeScript/Zod snippets.\n*   **Self-Hosting & Docker:** Read `references/self_hosting.md` for production-ready Docker Compose configurations, environment variables, and scaling guidelines.\n\n---\n\n## 3. Best Practices & Anti-Patterns\n\n### 3.1 Best Practices\n*   **Always use `onlyMainContent: true`** to strip out navigation bars, headers, and footers. This dramatically reduces downstream LLM token costs and keeps context windows clean [2].\n*   **Leverage `/map` before `/crawl`** if you only need to discover pages or filter specific URLs to scrape. Mapping is significantly faster and cheaper than full crawls [1] [2].\n*   **Implement exponential backoff with jitter** when handling rate limits (`429`) or transient server errors (`5xx`) to ensure scraping resiliency [4].\n*   **Set explicit CPU and RAM limits** on your containers if self-hosting to prevent headless Chromium from consuming all host system resources [5].\n\n### 3.2 Anti-Patterns\n*   **Do not use hard-coded `waitFor` delays** when scraping dynamic content. Instead, use selector-based waits (e.g., `{\"type\": \"wait\", \"selector\": \"#loaded-element\"}`) to minimize request latency [2].\n*   **Do not run synchronous crawls.** Crawling is an inherently long-running process; always use the asynchronous `/crawl` endpoint and poll for results or use webhooks [2].\n*   **Do not reuse browser sessions across unrelated scraping tasks** if security isolation is required. Firecrawl relies on ephemeral containers to prevent session contamination [5].\n\n---\n\n## References\n[1] Firecrawl Homepage, \"The API to search, scrape, and interact with the web at scale.\" URL: https://github.com/firecrawl/firecrawl  \n[2] Firecrawl Documentation, \"Advanced Scraping Guide.\" URL: https://docs.firecrawl.dev/advanced-scraping-guide  \n[3] Firecrawl Documentation, \"Agent Endpoint.\" URL: https://docs.firecrawl.dev/features/agent  \n[4] Firecrawl Documentation, \"Rate Limits.\" URL: https://docs.firecrawl.dev/rate-limits  \n[5] Firecrawl GitHub Repository, \"Self-hosting Firecrawl Guide.\" URL: https://raw.githubusercontent.com/firecrawl/firecrawl/main/SELF_HOST.md\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn72qahwxqx3tge4ypyee3hhph82890m\",\n  \"slug\": \"firecrawl-ws\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1780241971183\n}\n\nFile v1.0.0:references/api_reference.md\n\n# Firecrawl API Reference & SDK Guides\n\nThis reference guide is designed to provide quick lookup schemas and parameters for Firecrawl endpoints and SDK methods.\n\n## 1. Endpoints & Schemas\n\n### `/scrape` (POST)\nSynchronously scrapes a single URL.\n*   **Endpoint:** `https://api.firecrawl.dev/v2/scrape`\n*   **Request Schema:**\n    ```json\n    {\n      \"url\": \"string (required)\",\n      \"formats\": [\"markdown\", \"html\", \"rawHtml\", \"links\", \"images\", \"screenshot\", \"json\"],\n      \"onlyMainContent\": \"boolean (default: true)\",\n      \"includeTags\": [\"string\"],\n      \"excludeTags\": [\"string\"],\n      \"mobile\": \"boolean (default: false)\",\n      \"waitFor\": \"integer (milliseconds)\",\n      \"timeout\": \"integer (milliseconds, default: 60000)\",\n      \"actions\": [\n        {\n          \"type\": \"wait|click|write|press|scroll|screenshot\",\n          \"selector\": \"string\",\n          \"text\": \"string\",\n          \"key\": \"string\",\n          \"milliseconds\": \"integer\",\n          \"direction\": \"string\"\n        }\n      ]\n    }\n    ```\n\n### `/crawl` (POST)\nAsynchronously crawls a domain starting from a base URL.\n*   **Endpoint:** `https://api.firecrawl.dev/v2/crawl`\n*   **Request Schema:**\n    ```json\n    {\n      \"url\": \"string (required)\",\n      \"exclude\": [\"string (glob patterns)\"],\n      \"includes\": [\"string (glob patterns)\"],\n      \"limit\": \"integer (default: 10000)\",\n      \"maxDepth\": \"integer (default: 10)\",\n      \"mode\": \"default|fast\",\n      \"scrapeOptions\": {\n        \"formats\": [\"markdown\"],\n        \"onlyMainContent\": true\n      }\n    }\n    ```\n\n### `/map` (POST)\nDiscovers all URLs belonging to a domain.\n*   **Endpoint:** `https://api.firecrawl.dev/v2/map`\n*   **Request Schema:**\n    ```json\n    {\n      \"url\": \"string (required)\",\n      \"search\": \"string (filter pattern)\",\n      \"ignoreSitemap\": \"boolean (default: false)\",\n      \"includeSubdomains\": \"boolean (default: false)\",\n      \"limit\": \"integer (default: 5000)\"\n    }\n    ```\n\n### `/extract` (POST)\nAsynchronously extracts structured data matching a schema.\n*   **Endpoint:** `https://api.firecrawl.dev/v2/extract`\n*   **Request Schema:**\n    ```json\n    {\n      \"urls\": [\"string\"],\n      \"prompt\": \"string\",\n      \"schema\": \"object (JSON Schema)\"\n    }\n    ```\n\n---\n\n## 2. Python SDK Snippets\n\n### Advanced Scrape\n```python\nfrom firecrawl import FirecrawlApp\n\napp = FirecrawlApp(api_key=\"fc-YOUR_API_KEY\")\n\nscrape_result = app.scrape_url(\n    \"https://example.com\",\n    params={\n        \"formats\": [\"markdown\", \"screenshot\"],\n        \"onlyMainContent\": True,\n        \"actions\": [\n            {\"type\": \"click\", \"selector\": \"button#load-more\"},\n            {\"type\": \"wait\", \"milliseconds\": 1000}\n        ]\n    }\n)\n```\n\n### Async Crawl\n```python\nimport time\nfrom firecrawl import FirecrawlApp\n\napp = FirecrawlApp()\ncrawl_job = app.crawl_url(\n    \"https://example.com\",\n    params={\"limit\": 50, \"scrapeOptions\": {\"formats\": [\"markdown\"]}},\n    wait_until_done=False\n)\n\nwhile True:\n    status = app.check_crawl_status(crawl_job[\"id\"])\n    if status[\"status\"] in [\"completed\", \"failed\"]:\n        break\n    time.sleep(5)\n```\n\n---\n\n## 3. TypeScript SDK Snippets\n\n### Map Domain\n```typescript\nimport FirecrawlApp from '@mendable/firecrawl-js';\n\nconst app = new FirecrawlApp({ apiKey: process.env.FIRECRAWL_API_KEY });\n\nconst result = await app.mapUrl('https://stripe.com', {\n  search: 'pricing'\n});\n```\n\n### Structured Extraction (Zod)\n```typescript\nimport FirecrawlApp from '@mendable/firecrawl-js';\nimport { z } from 'zod';\n\nconst app = new FirecrawlApp();\nconst CompanySchema = z.object({\n  name: z.string(),\n  hq: z.string()\n});\n\nconst extraction = await app.extract({\n  urls: ['https://example.com/about'],\n  prompt: 'Extract company details',\n  schema: CompanySchema\n});\n```\n\nFile v1.0.0:references/self_hosting.md\n\n# Firecrawl Self-Hosting Reference Guide\n\nThis reference guide covers the setup, environment variables, and Docker Compose configurations for self-hosting Firecrawl.\n\n## 1. Minimal Docker Compose Setup\n\n```yaml\nversion: '3.8'\n\nservices:\n  api:\n    image: firecrawl/api:latest\n    container_name: firecrawl-api\n    restart: always\n    ports:\n      - \"3002:3002\"\n    environment:\n      - PORT=3002\n      - HOST=0.0.0.0\n      - REDIS_URL=redis://redis:6379/0\n      - REDIS_RATE_LIMIT_URL=redis://redis:6379/1\n      - PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/scrape\n      - USE_DB_AUTHENTICATION=false\n    depends_on:\n      - redis\n      - playwright-service\n\n  playwright-service:\n    image: firecrawl/playwright-service:latest\n    container_name: firecrawl-playwright\n    restart: always\n    environment:\n      - PORT=3000\n    resources:\n      limits:\n        cpus: '2.0'\n        memory: 4096M\n\n  redis:\n    image: redis:7-alpine\n    container_name: firecrawl-redis\n    restart: always\n    command: redis-server --appendonly yes\n    volumes:\n      - redis-data:/data\n\nvolumes:\n  redis-data:\n```\n\n---\n\n## 2. Environment Variables Reference\n\n| Variable Name | Default Value | Description |\n| :--- | :--- | :--- |\n| `PORT` | `3002` | Port for the main API entry server. |\n| `HOST` | `0.0.0.0` | Binding host for the API server. |\n| `REDIS_URL` | `redis://localhost:6379/0` | Redis connection string for the BullMQ job queue. |\n| `REDIS_RATE_LIMIT_URL` | `redis://localhost:6379/1` | Redis connection string for rate limit tracking. |\n| `PLAYWRIGHT_MICROSERVICE_URL` | `http://localhost:3000/scrape` | URL of the Playwright headless browser service. |\n| `USE_DB_AUTHENTICATION` | `false` | Set to `true` to enable Supabase-based API key authentication. |\n| `BULL_AUTH_KEY` | `None` | Authorization key for accessing the BullMQ queues admin panel. |\n| `MAX_CPU` | `0.8` | Worker safety threshold: stops accepting new jobs if CPU usage exceeds 80%. |\n| `MAX_RAM` | `0.8` | Worker safety threshold: stops accepting new jobs if RAM usage exceeds 80%. |\n| `PROXY_SERVER` | `None` | Optional proxy server URL for rotating scraping requests. |\n\nFile v1.0.0:skill-card.md\n\n## Description:\n\nAI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic JS/actions, crawling full domains, or extracting schema-based structured JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[simonpierreboucher02](https://clawhub.ai/user/simonpierreboucher02)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, AI engineers, data engineers, and agent builders use this skill to guide Firecrawl scraping, crawling, URL mapping, and schema-based extraction workflows for authorized websites.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can guide broad scraping, crawling, and browser actions against websites.\n\nMitigation: Use it only for sites the operator is authorized to scrape, set explicit crawl limits, and avoid logged-in, internal, personal, or sensitive pages without approval.\n\nRisk: Target URLs and retrieved page content may be sent to Firecrawl.\n\nMitigation: Review data sensitivity before use and avoid sending confidential or regulated content to external services unless approved.\n\nRisk: The self-hosting example can expose an unauthenticated API if deployed publicly as written.\n\nMitigation: Enable authentication, bind privately or place the API behind an authenticated proxy, pin container images or digests, and set conservative CPU, memory, and crawl limits.\n\n## Reference(s):\n\n- [Firecrawl API Reference & SDK Guides](references/api_reference.md)\n- [Firecrawl Self-Hosting Reference Guide](references/self_hosting.md)\n- [Firecrawl GitHub Repository](https://github.com/firecrawl/firecrawl)\n- [Firecrawl Advanced Scraping Guide](https://docs.firecrawl.dev/advanced-scraping-guide)\n- [Firecrawl Agent Endpoint](https://docs.firecrawl.dev/features/agent)\n- [Firecrawl Rate Limits](https://docs.firecrawl.dev/rate-limits)\n- [Firecrawl Self-Hosting Guide](https://raw.githubusercontent.com/firecrawl/firecrawl/main/SELF_HOST.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Code, Shell commands, Configuration, JSON]\n\n**Output Format:** [Markdown guidance with API examples, SDK snippets, Docker Compose configuration, and JSON schema examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include guidance for Firecrawl API calls that return Markdown, HTML, screenshots, links, images, or structured JSON.]\n\n## Skill Version(s):\n\n1.0.0 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.","readmeExcerpt":"Skill: Firecrawl Owner: simonpierreboucher02 Summary: AI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic... Tags: latest:1.0.0 Version history: v1.0.0 | 2026-05-31T15:39:31.183Z | auto Firecrawl Skill 1.0.0 – Initial Release - Adds AI-native web scraping, crawling, domain mapping, and structured extraction capab","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n      \"url\": \"string (required)\",\n      \"formats\": [\"markdown\", \"html\", \"rawHtml\", \"links\", \"images\", \"screenshot\", \"json\"],\n      \"onlyMainContent\": \"boolean (default: true)\",\n      \"includeTags\": [\"string\"],\n      \"excludeTags\": [\"string\"],\n      \"mobile\": \"boolean (default: false)\",\n      \"waitFor\": \"integer (milliseconds)\",\n      \"timeout\": \"integer (milliseconds, default: 60000)\",\n      \"actions\": [\n        {\n          \"type\": \"wait|click|write|press|scroll|screenshot\",\n          \"selector\": \"string\",\n          \"text\": \"string\",\n          \"key\": \"string\",\n          \"milliseconds\": \"integer\",\n          \"direction\": \"string\"\n        }\n      ]\n    }"},{"language":"json","snippet":"{\n      \"url\": \"string (required)\",\n      \"exclude\": [\"string (glob patterns)\"],\n      \"includes\": [\"string (glob patterns)\"],\n      \"limit\": \"integer (default: 10000)\",\n      \"maxDepth\": \"integer (default: 10)\",\n      \"mode\": \"default|fast\",\n      \"scrapeOptions\": {\n        \"formats\": [\"markdown\"],\n        \"onlyMainContent\": true\n      }\n    }"},{"language":"json","snippet":"{\n      \"url\": \"string (required)\",\n      \"search\": \"string (filter pattern)\",\n      \"ignoreSitemap\": \"boolean (default: false)\",\n      \"includeSubdomains\": \"boolean (default: false)\",\n      \"limit\": \"integer (default: 5000)\"\n    }"},{"language":"json","snippet":"{\n      \"urls\": [\"string\"],\n      \"prompt\": \"string\",\n      \"schema\": \"object (JSON Schema)\"\n    }"},{"language":"python","snippet":"from firecrawl import FirecrawlApp\n\napp = FirecrawlApp(api_key=\"fc-YOUR_API_KEY\")\n\nscrape_result = app.scrape_url(\n    \"https://example.com\",\n    params={\n        \"formats\": [\"markdown\", \"screenshot\"],\n        \"onlyMainContent\": True,\n        \"actions\": [\n            {\"type\": \"click\", \"selector\": \"button#load-more\"},\n            {\"type\": \"wait\", \"milliseconds\": 1000}\n        ]\n    }\n)"},{"language":"python","snippet":"import time\nfrom firecrawl import FirecrawlApp\n\napp = FirecrawlApp()\ncrawl_job = app.crawl_url(\n    \"https://example.com\",\n    params={\"limit\": 50, \"scrapeOptions\": {\"formats\": [\"markdown\"]}},\n    wait_until_done=False\n)\n\nwhile True:\n    status = app.check_crawl_status(crawl_job[\"id\"])\n    if status[\"status\"] in [\"completed\", \"failed\"]:\n        break\n    time.sleep(5)"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: firecrawl\ndescription: AI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic JS/actions, crawling full domains, or extracting schema-based structured JSON.\n---\n\n# Firecrawl Skill\n\nThis skill extends Manus with the capability to search, scrape, crawl, and extract structured data from any website using **Firecrawl** [1] [2].\n\n*   **Author:** Simon-Pierre Boucher\n*   **Target Audience:** AI Engineers, Agent Developers, Data Engineers, Web Scraping Engineers\n\n---\n\n## 1. Core Workflows\n\n### 1.1 Scraping a Single URL (`/scrape`)\nUse when you need the text content, Markdown, HTML, or screenshots of a specific webpage [2].\n1.  Initialize the Firecrawl client with your API key [1].\n2.  Specify output `formats` (e.g., `[\"markdown\"]` or `[\"markdown\", \"screenshot\"]`) [2].\n3.  Apply custom browser actions (e.g., click, wait, write) if the page has dynamic content or requires interaction [2].\n4.  Optionally filter the DOM using `includeTags` or `excludeTags` [2].\n\n### 1.2 Crawling a Domain (`/crawl`)\nUse when you need to discover and scrape all pages under a specific domain or path recursively [1] [2].\n1.  Start an asynchronous crawl job by specifying the starting `url` [2].\n2.  Set depth limits (`maxDepth`) and page limits (`limit`) to control token and credit usage [2].\n3.  Configure `scrapeOptions` to ensure each crawled page is parsed with the correct format (e.g., Markdown only) [2].\n4.  Poll the crawl status using the `jobId` until completed [2].\n\n### 1.3 Mapping a Domain (`/map`)\nUse when you need to quickly discover all URLs belonging to a domain without scraping page content [1] [2].\n1.  Provide the base `url` [2].\n2.  Optionally provide a `search` filter to only return URLs matching a specific keyword or path [2].\n3.  Set `includeSubdomains` to `true` if you need sub-domain discovery [2].\n\n### 1.4 Structured Extraction (`/extract`)\nUse when you need to parse raw web pages and extract structured JSON data conforming to a specific schema [3].\n1.  Provide an array of `urls` and a natural language extraction `prompt` [3].\n2.  Define the target schema using a **JSON Schema**, **Pydantic model** (Python), or **Zod schema** (TypeScript) [3].\n3.  Run the extraction to retrieve guaranteed, type-safe JSON [3].\n\n---\n\n## 2. Resource Guides\n\nFor comprehensive API parameters, SDK code templates, and configuration options, read the following reference files:\n*   **API Reference & SDK Snippets:** Read `references/api_reference.md` for complete endpoint request/response schemas, Python SDK templates, and TypeScript/Zod snippets.\n*   **Self-Hosting & Docker:** Read `references/self_hosting.md` for production-ready Docker Compose configurations, environment variables, and scaling guidelines.\n\n---\n\n## 3. Best Practices & Anti-Patterns\n\n### 3.1 Best Practices\n*   **Always use `onlyMainContent: true`** to strip out navigation bars, headers, and footers. This d"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn72qahwxqx3tge4ypyee3hhph82890m\",\n  \"slug\": \"firecrawl-ws\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1780241971183\n}"},{"path":"references/api_reference.md","content":"# Firecrawl API Reference & SDK Guides\n\nThis reference guide is designed to provide quick lookup schemas and parameters for Firecrawl endpoints and SDK methods.\n\n## 1. Endpoints & Schemas\n\n### `/scrape` (POST)\nSynchronously scrapes a single URL.\n*   **Endpoint:** `https://api.firecrawl.dev/v2/scrape`\n*   **Request Schema:**\n    ```json\n    {\n      \"url\": \"string (required)\",\n      \"formats\": [\"markdown\", \"html\", \"rawHtml\", \"links\", \"images\", \"screenshot\", \"json\"],\n      \"onlyMainContent\": \"boolean (default: true)\",\n      \"includeTags\": [\"string\"],\n      \"excludeTags\": [\"string\"],\n      \"mobile\": \"boolean (default: false)\",\n      \"waitFor\": \"integer (milliseconds)\",\n      \"timeout\": \"integer (milliseconds, default: 60000)\",\n      \"actions\": [\n        {\n          \"type\": \"wait|click|write|press|scroll|screenshot\",\n          \"selector\": \"string\",\n          \"text\": \"string\",\n          \"key\": \"string\",\n          \"milliseconds\": \"integer\",\n          \"direction\": \"string\"\n        }\n      ]\n    }\n    ```\n\n### `/crawl` (POST)\nAsynchronously crawls a domain starting from a base URL.\n*   **Endpoint:** `https://api.firecrawl.dev/v2/crawl`\n*   **Request Schema:**\n    ```json\n    {\n      \"url\": \"string (required)\",\n      \"exclude\": [\"string (glob patterns)\"],\n      \"includes\": [\"string (glob patterns)\"],\n      \"limit\": \"integer (default: 10000)\",\n      \"maxDepth\": \"integer (default: 10)\",\n      \"mode\": \"default|fast\",\n      \"scrapeOptions\": {\n        \"formats\": [\"markdown\"],\n        \"onlyMainContent\": true\n      }\n    }\n    ```\n\n### `/map` (POST)\nDiscovers all URLs belonging to a domain.\n*   **Endpoint:** `https://api.firecrawl.dev/v2/map`\n*   **Request Schema:**\n    ```json\n    {\n      \"url\": \"string (required)\",\n      \"search\": \"string (filter pattern)\",\n      \"ignoreSitemap\": \"boolean (default: false)\",\n      \"includeSubdomains\": \"boolean (default: false)\",\n      \"limit\": \"integer (default: 5000)\"\n    }\n    ```\n\n### `/extract` (POST)\nAsynchronously extracts structured data matching a schema.\n*   **Endpoint:** `https://api.firecrawl.dev/v2/extract`\n*   **Request Schema:**\n    ```json\n    {\n      \"urls\": [\"string\"],\n      \"prompt\": \"string\",\n      \"schema\": \"object (JSON Schema)\"\n    }\n    ```\n\n---\n\n## 2. Python SDK Snippets\n\n### Advanced Scrape\n```python\nfrom firecrawl import FirecrawlApp\n\napp = FirecrawlApp(api_key=\"fc-YOUR_API_KEY\")\n\nscrape_result = app.scrape_url(\n    \"https://example.com\",\n    params={\n        \"formats\": [\"markdown\", \"screenshot\"],\n        \"onlyMainContent\": True,\n        \"actions\": [\n            {\"type\": \"click\", \"selector\": \"button#load-more\"},\n            {\"type\": \"wait\", \"milliseconds\": 1000}\n        ]\n    }\n)\n```\n\n### Async Crawl\n```python\nimport time\nfrom firecrawl import FirecrawlApp\n\napp = FirecrawlApp()\ncrawl_job = app.crawl_url(\n    \"https://example.com\",\n    params={\"limit\": 50, \"scrapeOptions\": {\"formats\": [\"markdown\"]}},\n    wait_until_done=False\n)\n\nwhile True:\n    status = app.check_crawl_status(crawl_job[\"id\"])\n    if stat"},{"path":"references/self_hosting.md","content":"# Firecrawl Self-Hosting Reference Guide\n\nThis reference guide covers the setup, environment variables, and Docker Compose configurations for self-hosting Firecrawl.\n\n## 1. Minimal Docker Compose Setup\n\n```yaml\nversion: '3.8'\n\nservices:\n  api:\n    image: firecrawl/api:latest\n    container_name: firecrawl-api\n    restart: always\n    ports:\n      - \"3002:3002\"\n    environment:\n      - PORT=3002\n      - HOST=0.0.0.0\n      - REDIS_URL=redis://redis:6379/0\n      - REDIS_RATE_LIMIT_URL=redis://redis:6379/1\n      - PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/scrape\n      - USE_DB_AUTHENTICATION=false\n    depends_on:\n      - redis\n      - playwright-service\n\n  playwright-service:\n    image: firecrawl/playwright-service:latest\n    container_name: firecrawl-playwright\n    restart: always\n    environment:\n      - PORT=3000\n    resources:\n      limits:\n        cpus: '2.0'\n        memory: 4096M\n\n  redis:\n    image: redis:7-alpine\n    container_name: firecrawl-redis\n    restart: always\n    command: redis-server --appendonly yes\n    volumes:\n      - redis-data:/data\n\nvolumes:\n  redis-data:\n```\n\n---\n\n## 2. Environment Variables Reference\n\n| Variable Name | Default Value | Description |\n| :--- | :--- | :--- |\n| `PORT` | `3002` | Port for the main API entry server. |\n| `HOST` | `0.0.0.0` | Binding host for the API server. |\n| `REDIS_URL` | `redis://localhost:6379/0` | Redis connection string for the BullMQ job queue. |\n| `REDIS_RATE_LIMIT_URL` | `redis://localhost:6379/1` | Redis connection string for rate limit tracking. |\n| `PLAYWRIGHT_MICROSERVICE_URL` | `http://localhost:3000/scrape` | URL of the Playwright headless browser service. |\n| `USE_DB_AUTHENTICATION` | `false` | Set to `true` to enable Supabase-based API key authentication. |\n| `BULL_AUTH_KEY` | `None` | Authorization key for accessing the BullMQ queues admin panel. |\n| `MAX_CPU` | `0.8` | Worker safety threshold: stops accepting new jobs if CPU usage exceeds 80%. |\n| `MAX_RAM` | `0.8` | Worker safety threshold: stops accepting new jobs if RAM usage exceeds 80%. |\n| `PROXY_SERVER` | `None` | Optional proxy server URL for rotating scraping requests. |"},{"path":"skill-card.md","content":"## Description:\n\nAI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic JS/actions, crawling full domains, or extracting schema-based structured JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[simonpierreboucher02](https://clawhub.ai/user/simonpierreboucher02)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, AI engineers, data engineers, and agent builders use this skill to guide Firecrawl scraping, crawling, URL mapping, and schema-based extraction workflows for authorized websites.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can guide broad scraping, crawling, and browser actions against websites.\n\nMitigation: Use it only for sites the operator is authorized to scrape, set explicit crawl limits, and avoid logged-in, internal, personal, or sensitive pages without approval.\n\nRisk: Target URLs and retrieved page content may be sent to Firecrawl.\n\nMitigation: Review data sensitivity before use and avoid sending confidential or regulated content to external services unless approved.\n\nRisk: The self-hosting example can expose an unauthenticated API if deployed publicly as written.\n\nMitigation: Enable authentication, bind privately or place the API behind an authenticated proxy, pin container images or digests, and set conservative CPU, memory, and crawl limits.\n\n## Reference(s):\n\n- [Firecrawl API Reference & SDK Guides](references/api_reference.md)\n- [Firecrawl Self-Hosting Reference Guide](references/self_hosting.md)\n- [Firecrawl GitHub Repository](https://github.com/firecrawl/firecrawl)\n- [Firecrawl Advanced Scraping Guide](https://docs.firecrawl.dev/advanced-scraping-guide)\n- [Firecrawl Agent Endpoint](https://docs.firecrawl.dev/features/agent)\n- [Firecrawl Rate Limits](https://docs.firecrawl.dev/rate-limits)\n- [Firecrawl Self-Hosting Guide](https://raw.githubusercontent.com/firecrawl/firecrawl/main/SELF_HOST.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Code, Shell commands, Configuration, JSON]\n\n**Output Format:** [Markdown guidance with API examples, SDK snippets, Docker Compose configuration, and JSON schema examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include guidance for Firecrawl API calls that return Markdown, HTML, screenshots, links, images, or structured JSON.]\n\n## Skill Version(s):\n\n1.0.0 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"AI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic... Skill: Firecrawl Owner: simonpierreboucher02 Summary: AI-native web scraping, crawling, domain mapping, and structured extraction. Use for converting websites into LLM-ready Markdown, scraping pages with dynamic... Tags: latest:1.0.0 Version history: v1.0.0 | 2026-05-31T15:39:31.183Z | auto Firecrawl Skill 1.0.0 – Initial Release - Adds AI-native web scraping, crawling, domain mapping, and structured extraction capab","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1467,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-12T01:50:11.023Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-12T01:50:11.023Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-12T19:00:53.027Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}