360 Secure SkillHub
360 安全技能中心

Firecrawl Local

该 Skill 通过 bash 脚本封装本地自托管 Firecrawl 的 v1 REST API,提供单页抓取、站点 URL 发现(map)和异步批量爬取(crawl,含轮询)三种能力,输出 markdown、html、links 等结构化 JSON。使用前需本机已运行 Firecrawl 服务并安装 curl、jq,可选 API Key 环境变量。

saddamtechie
saddamtechie
热度 45.44
最近更新 2026-05-11 17:36:30
分类:搜索依赖:代码执行 / 第三方 API应用场景:研究 / 数据处理 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add firecrawl-local
Metadata
name
firecrawl-local
description
Use this skill whenever you need to scrape web pages, crawl websites, or map site structure using a self-hosted Firecrawl instance. Triggers on requests to extract web content, build RAG pipelines from docs, bulk ingest documentation, discover site URLs, or get clean markdown from any webpage. Assumes Firecrawl is already running at localhost:3002 (no Docker startup). Falls back gracefully if unavailable. Use even if the user just says "scrape this", "crawl the docs", or "get content from X".
tags
["web-scraping","rag","documentation","local-first"]

Firecrawl Local Skill

Self-hosted Firecrawl integration using the v1 REST API. Tests connectivity first, executes scrape/crawl/map, handles async crawl polling automatically.

Setup (one-time)

mkdir -p ~/.openclaw/skills/firecrawl-local
cp run.sh ~/.openclaw/skills/firecrawl-local/run.sh
chmod +x ~/.openclaw/skills/firecrawl-local/run.sh

The script lives at scripts/run.sh in this skill folder — copy it into place as above.

Prerequisites: curl, jq installed. Firecrawl running at localhost:3002.

Optional env vars:

export FIRECRAWL_LOCAL_URL="http://localhost:3002"  # default
export FIRECRAWL_API_KEY="fc-your-key"              # only needed if auth enabled

Commands

Default — scrape a single page (URL only, no subcommand needed)

firecrawl-local https://docs.example.com/api

Scrape — explicit, with format options

firecrawl-local scrape https://docs.example.com/api
firecrawl-local scrape https://docs.example.com/api --formats markdown,html

Map — discover all URLs on a site

firecrawl-local map https://docs.example.com
firecrawl-local map https://docs.example.com --limit 200

Crawl — bulk extract multiple pages (async, auto-polled)

firecrawl-local crawl https://docs.example.com
firecrawl-local crawl https://docs.example.com --limit 30 --max-depth 2
firecrawl-local crawl https://docs.example.com --include /docs --exclude /blog

Agent Instructions

When to use each command

Goal Command
Get content from one URL (quickest) firecrawl-local <url>
Discover what pages exist map
Get content from one URL with format control scrape
Ingest an entire docs site crawl
RAG pipeline ingestion map → targeted scrape or crawl

Optimal workflows

Documentation RAG pipeline:

1. map https://docs.example.com          → get full URL list
2. scrape <specific key pages>           → targeted extraction
3. Pass markdown to embedding pipeline

Full site ingestion:

1. crawl https://docs.example.com --limit 50 --max-depth 3
2. Results auto-polled and returned as JSON array of {url, markdown}

Parameters

Flag Applies to Description
--limit N map, crawl Max pages (default: 50 for crawl, 500 for map)
--max-depth N crawl How deep to follow links (default: 2)
--include /path crawl Only crawl URLs matching this path prefix
--exclude /path crawl Skip URLs matching this path prefix
--formats list scrape Comma-separated: markdown, html, rawHtml, links

Reading the output

  • scrape: Returns {success, data: {markdown, html, metadata}}
  • map: Returns {success, links: [...]}
  • crawl: Returns {success, data: [{url, markdown, metadata}, ...]} ← after polling completes

Failure signals and fixes

Error Cause Fix
Local Firecrawl unavailable Service not running Start Firecrawl, check port 3002
success: false Bad URL or blocked Check URL is reachable, try --formats html
Empty markdown field JS-rendered page Firecrawl handles most JS — check if site blocks bots
Crawl times out Site is large Reduce --limit or --max-depth

Script reference

See scripts/run.sh for the full implementation. Key design decisions:

  • Health check uses /health endpoint with 3s timeout
  • Auth header only sent when FIRECRAWL_API_KEY is set
  • Crawl polling retries every 5s up to 60 attempts (5 minutes)
  • All parameters are passed via jq to prevent shell injection in JSON