网页抓取工具包

Firecrawl Toolkit 是一个命令行优先的网页抓取工具,可将网页和PDF转换为本地可搜索的Markdown文件,适用于自动化工作流和代理程序。

  • by Joey-Kot
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Joey-Kot/firecrawl-toolkit

使用说明

Firecrawl工具包

将网页和PDF转换为本地可搜索的代理Markdown。

Firecrawl工具包是建立在Firecrawlneneneba API之上的第一个CLI网络捕获工具。它专为基于shell的代理而设计,如Codex、Claude Code、OpenCode和其他本地自动化工作流。

CLI不会将长网页转储到模型上下文中,而是将页面保存为本地Markdown文件,并仅向stdout打印最小的成功/失败信号。

firecrawl scrape --url "https://example.com/article" --output article --path ./Temp-Scrape
# true

然后让您的代理使用正常的本地工具检查文件:

rg -n "pricing|risk|governance|download|PDF" ./Temp-Scrape
bat --paging=never --line-range 40:120 ./Temp-Scrape/article.md

刮一次。在本地搜索。保持上下文干净。

为什么存在此工具包

大多数网络搜索或抓取工具将网页视为即时的模型输入。这适用于短页面,但对于长报告、新闻文章、PDF、文档页面和研究材料,它很快就会崩溃。

此工具包使用不同的工作流程:

remote URL / PDF
→ local Markdown file
→ rg / bat / sed / awk / local file tools
→ agent reads only the relevant sections

当代理需要收集多个来源、比较报告、检查引用或构建本地研究文件夹时,这尤其有用。

目标不是生产完全干净的纯物品提取物。目标是生产 完整、可搜索、代理人可读的本地源材料 具有减少的网络噪声和最小的上下文污染。

核心工作流程

1.将网页或PDF抓取到本地Markdown中

firecrawl scrape \
  --url "https://example.com/report-or-article" \
  --output report \
  --path ./Temp-Scrape

关于成功:

true

文件另存为:

./Temp-Scrape/report.md

生成的Markdown以源元数据开头:

## title:
## description:
## url:
## language:
## creditsUsed:

markdown content

2.本地搜索

rg -n "agentic|governance|pricing|risk|EBIT|download" ./Temp-Scrape

3.只读相关章节

bat --paging=never --line-range 80:150 ./Temp-Scrape/report.md

或者使用标准的Unix工具:

sed -n '80,150p' ./Temp-Scrape/report.md

为什么stdout故意小

用于文件生成命令,例如 scrape,stdout故意最小化。

关于成功:

true

失败时:

false
<short error reason>

默认情况下,大页面内容会写入磁盘,而不会打印到stdout。这是有意的:代理不应该意外地将50k、100k或500k字符的页面摄入上下文中。

推荐的模式是:

scrape to file
→ inspect file size / headings / keywords
→ read only the useful ranges

内置样板过滤

默认情况下,scratch命令应用内置的噪波过滤器。

它减少了常见的非内容区域,例如:

  • 脚本、样式、表单、输入、按钮
  • 导航栏、页眉、页脚、侧边栏
  • 菜单和导航块
  • 标志和品牌块
  • 可访问性跳过链接和视觉隐藏元素
  • 广告和广告容器
  • 侧边栏
  • 面包屑和分页
  • 相关、推荐和趋势部分
  • 常见布局偏移/模块块

这并不意味着要积极删除所有非文章元素。优先事项是 低噪音的高召回率:在删除明显样板的同时,保持源材料对本地搜索有用。

使用 --scroll 当页面在提取之前需要短暂的等待和正文滚动时,延迟加载的内容就有机会出现。

如果页面在不寻常的区域包含有用内容,您可以禁用内置过滤器:

firecrawl scrape \
  --url "https://example.com/page" \
  --output page-raw \
  --empty-tags

您还可以添加自己的排除项:

firecrawl scrape \
  --url "https://example.com/page" \
  --output page \
  --exclude-tags ".newsletter,.promo,aside.related"

安装

Python包

Python包提供了MCP服务器。

uvx firecrawl-toolkit

包裹:

firecrawl-toolkit

Go CLI

独立CLI位于 cli 目录。

从源代码构建:

cd cli
go test ./...
go build -o firecrawl .

运行:

./firecrawl --help

构建Windows示例:

cd cli
go build -o firecrawl.exe .

API 密钥

Go CLI从以下位置读取Firecrawl API密钥:

FIRECRAWL_KEY

Linux/macOS:

export FIRECRAWL_KEY="fc-..."

Windows PowerShell:

$env:FIRECRAWL_KEY="fc-..."

Python MCP服务器使用:

FIRECRAWL_API_KEY

API基本URL

默认情况下,Go CLI和Python MCP服务器都使用官方的Firecrawl API基础URL:

https://api.firecrawl.dev/v2

对于自托管的Firecrawl兼容服务,请设置:

FIRECRAWL_BASE_URL

Linux/macOS:

export FIRECRAWL_BASE_URL="https://your-firecrawl.example/v2"

Windows PowerShell:

$env:FIRECRAWL_BASE_URL="https://your-firecrawl.example/v2"

CLI命令

firecrawl aggregated
firecrawl web
firecrawl news
firecrawl image
firecrawl scholar
firecrawl scrape
firecrawl parse
firecrawl audio-scrape
firecrawl video-scrape
firecrawl credit-usage

常见CLI选项

--proxy

可选。指向Firecrawl API的CLI请求的代理URL。支持的方案有 http, https, socks4, socks4a, socks5,以及 socks5h.

使用URL userinfo进行代理身份验证,或省略它进行无身份验证:

firecrawl web --query "AI policy" --proxy "http://user:pass@127.0.0.1:8080"
firecrawl scrape --url "https://example.com" --output example --proxy "socks5://127.0.0.1:1080"

报废命令

基本用途

firecrawl scrape \
  --url "https://example.com/article" \
  --output article

文中写道:

article.md

保存到目录中

firecrawl scrape \
  --url "https://example.com/article" \
  --output article \
  --path ./Temp-Scrape

文中写道:

./Temp-Scrape/article.md

如果目录不存在,CLI会尝试创建它。

剪贴PDF

firecrawl scrape \
  --url "https://example.com/report.pdf" \
  --output report-pdf \
  --path ./Temp-Scrape

CLI请求Markdown输出并启用Firecrawl的PDF解析器。

报废选项

--output

必修的。导出名称。

firecrawl scrape --url "https://example.com" --output example

CLI写道:

example.md

如果提供的名称已以结尾 .md,它被保存了下来。

--path

可选。输出目录。

firecrawl scrape --url "https://example.com" --output example --path ./exports

--url

必修的。目标网页或PDF URL。

firecrawl scrape --url "https://example.com" --output example

--include-tags

可选。要包含的CSS选择器。

当您知道有用内容在特定区域内时,请使用此选项:

firecrawl scrape \
  --url "https://example.com" \
  --output page \
  --include-tags "article"

多个选择器:

firecrawl scrape \
  --url "https://example.com" \
  --output page \
  --include-tags ".article-body,#content,main"

当选择器包含空格、引号或逗号时,建议使用JSON数组形式:

firecrawl scrape \
  --url "https://example.com" \
  --output page \
  --include-tags '["main article",".post-content","#content"]'

--exclude-tags

可选。要排除的其他CSS选择器。

firecrawl scrape \
  --url "https://example.com" \
  --output page \
  --exclude-tags ".nav,.footer,#sidebar"

这将与内置的样板过滤器合并。

--empty-tags

可选。禁用此请求的内置排除选择器列表。

firecrawl scrape \
  --url "https://example.com" \
  --output page-raw \
  --empty-tags

用户提供 --exclude-tags 仍然适用:

firecrawl scrape \
  --url "https://example.com" \
  --output page-custom \
  --empty-tags \
  --exclude-tags ".nav"

--scroll

可选。在抓取之前启用等待和滚动操作。

启用后,scratch会在请求负载中发送以下操作:

[
  {
    "type": "wait",
    "milliseconds": 2
  },
  {
    "type": "scroll",
    "direction": "down",
    "selector": "body"
  }
]

使用 --scroll 当页面需要额外的交互时:

firecrawl scrape \
  --url "https://example.com" \
  --output page \
  --scroll

--skip-tls

可选。跳过上游抓取目标的TLS证书验证。

默认情况下,启用TLS证书验证。

firecrawl scrape \
  --url "https://example.com" \
  --output page \
  --skip-tls

--headers

可选。请求头的JSON对象。

firecrawl scrape \
  --url "https://example.com" \
  --output page \
  --headers '{"X-Trace-Id":"abc123"}'

--headers-file

可选。头文件的路径。文件被自动检测为以下标准格式之一:

  • JSON标头或Cookie, headers/cookies 数组或浏览器扩展cookie导出数组
  • HTTP标头字符串,例如浏览器样式 Name: value 线条
  • Netscape cookie文件
  • Cookie标头值,例如 a=1; b=2
firecrawl scrape \
  --url "https://example.com" \
  --output page \
  --headers-file ./headers.txt

小心使用敏感的标题。除非您了解风险,否则避免传递凭据、Cookie或授权令牌。

--timeout

可选。请求超时(秒)。默认值为 120.

firecrawl scrape \
  --url "https://example.com" \
  --output page \
  --timeout 180

--proxy

可选。从CLI到Firecrawl API的请求的代理URL。支持 http, https, socks4, socks4a, socks5,以及 socks5h,具有URL用户信息身份验证或无身份验证。

学者指挥

scholar 搜索研究论文并将紧凑的单行JSON打印到stdout。

firecrawl scholar \
  --query "AI" \
  --search-num 3 \
  --categories "cs.CY" \
  --time-from "2000-05-28" \
  --time-to "2026-06-28"

该命令向发送GET请求 /v2/search/research/papers 具有查询字符串参数和包含以下内容的JSON正文 timeout.

学者选择

--query

必修的。研究论文搜索关键字。最小长度为 1.

--search-num

可选。要返回的纸张数量。法律范围为 1 到 500默认值为 5.

--categories

可选。逗号分隔的纸张类别过滤器。所有过滤器必须匹配。

--time-from

可选。包括创建/更新日期的下限。格式: yyyy-MM-dd例如 2000-05-28.

--time-to

可选。包括创建/更新日期的上限。格式: yyyy-MM-dd例如 2026-06-28.

--timeout

可选。请求超时(秒)。默认值为 120.

--proxy

可选。从CLI到Firecrawl API的请求的代理URL。支持 http, https, socks4, socks4a, socks5,以及 socks5h.

输出字段:

{"data":{"scholar":[{"abstract":"Paper abstract","paperId":"2581735124241874","primaryId":"arxiv:2307.10057","score":0.956892745058914,"title":"Paper title"}]},"success":true}

解析命令

使用 parse 对于来自URL或本地文件的文档。该命令将Markdown写入本地 .md 仅用于文件和打印 true 或 false 到stdout。

解析文档URL

firecrawl parse \
  --url "https://example.com/report.xlsx" \
  --output report \
  --path ./Temp-Scrape

URL模式通过抓取端点发送文档URL,输出Markdown,支持PDF解析器,保留base64图像,并配置超时。

解析本地文件

firecrawl parse \
  --file ./report.xlsx \
  --output report \
  --path ./Temp-Scrape

文件模式将本地文件与多部分表单数据一起上传到解析端点。

支持的本地文件扩展名:

.html .htm .pdf .docx .doc .odt .rtf .xlsx .xls

解析选项

--url

目标文档URL。除非满足以下条件,否则为必填项 --file 提供。 --url 和 --file 是相互排斥的。

firecrawl parse --url "https://example.com/report.pdf" --output report

--file

本地文档文件。除非满足以下条件,否则必须 --url 提供。

firecrawl parse --file ./report.pdf --output report

--output

必修的。导出名称。结果另存为 <output>.md.

--path

可选。输出目录。默认为当前目录。

--skip-tls

可选。仅URL模式。跳过上游文档URL的TLS证书验证。默认值为false。

--timeout

可选。请求超时(秒)。默认值为 120.

--proxy

可选。从CLI到Firecrawl API的请求的代理URL。支持 http, https, socks4, socks4a, socks5,以及 socks5h.

生成的Markdown以以下内容开头:

## title:
## url:
## language:
## creditsUsed:

markdown content

音频和视频抓取命令

audio-scrape 和 video-scrape 请求Firecrawl AV提取并将紧凑的单行JSON打印到stdout。

音频刮擦

firecrawl audio-scrape \
  --url "https://www.youtube.com/watch?v=dQw4w9WgXcQ" \
  --timeout 60

输出字段:

{"creditsUsed":5,"title":"Video title","description":"Video description","audio":"https://storage.example/audio.mp3","success":true}

视频抓取

firecrawl video-scrape \
  --url "https://www.youtube.com/watch?v=dQw4w9WgXcQ" \
  --timeout 60

输出字段:

{"creditsUsed":5,"title":"Video title","description":"Video description","video":"https://storage.example/video.mp4","success":true}

这两个命令都需要 --url. --timeout 可选,接受秒,默认为 120,并以毫秒为单位转发到Firecrawl。 --proxy 还支持对Firecrawl API的CLI请求。

推荐使用代理

为您的代理提供一个狭窄的工作流程,而不是暴露每个抓取选项。

默认捕获

firecrawl scrape --url "$URL" --output "$NAME" --path ./Temp-Scrape

检查捕获的源

rg -n "$KEYWORDS" ./Temp-Scrape
bat --paging=never --line-range 1:120 "./Temp-Scrape/$NAME.md"

如果页面有噪音

尝试添加排除项:

firecrawl scrape \
  --url "$URL" \
  --output "$NAME-clean" \
  --path ./Temp-Scrape \
  --exclude-tags ".newsletter,.promo,aside.related"

如果内置过滤器删除了有用的东西

捕获原始版本:

firecrawl scrape \
  --url "$URL" \
  --output "$NAME-raw" \
  --path ./Temp-Scrape \
  --empty-tags

搜索命令

搜索命令返回紧凑的单行JSON。

firecrawl aggregated --query "AI governance 2026" --country US --search-num 10
firecrawl web        --query "AI governance 2026" --country US --search-num 10
firecrawl news       --query "OpenAI news" --search-time week
firecrawl image      --query "firecrawl logo" --search-num 10

可用搜索命令:

aggregated  web + news + images
web         web results
news        news results
image       image results

搜索选项

--query

必修的。搜索关键字。

firecrawl web --query "AI pricing SaaS"

--country

可选。国家或地区名称/ISO代码。默认值为 US.

firecrawl web --query "AI policy" --country "United States"
firecrawl web --query "AI policy" --country US

--search-num

可选。结果数量,来自 1 到 100默认值为 20.

firecrawl web --query "AI policy" --search-num 5

--search-time

可选。时间过滤器。

允许值:

hour
day
week
month
year

例子:

firecrawl news --query "AI regulation" --search-time week

--timeout

可选。请求超时(秒)。默认值为 120.

--proxy

可选。从CLI到Firecrawl API的请求的代理URL。支持 http, https, socks4, socks4a, socks5,以及 socks5h.

搜索输出

搜索命令输出紧凑的JSON:

{"success":true,"data":{"web":[],"news":[],"images":[]},"creditsUsed":1}

映射字段:

data.web[]:
  title
  description
  url

data.news[]:
  title
  snippet
  url
  date

data.images[]:
  title
  imageUrl
  url

搜索结果旨在帮助代理发现URL。如需详细阅读,请将选定的URL抓取到本地Markdown文件中。

推荐模式:

firecrawl web --query "AI trust maturity survey 2026" --search-num 5
firecrawl scrape --url "<selected-url>" --output ai-trust-survey --path ./Temp-Scrape
rg -n "governance|risk|agentic|maturity" ./Temp-Scrape

信贷使用

检查Firecrawl团队信用使用情况:

firecrawl credit-usage

漂亮的印刷:

firecrawl credit-usage --pretty

credit-usage 还支持 --proxy 用于向Firecrawl API发出CLI请求。

默认输出为JSON:

{"success":true,"data":{"remainingCredits":1000,"planCredits":500000,"billingPeriodStart":"2025-01-01T00:00:00Z","billingPeriodEnd":"2025-01-31T23:59:59Z"}}

退出行为

刮擦和解析

成功:

true

失败:

false
<error reason>

CLI仅在成功抓取或解析后写入Markdown文件。失败时不会创建或覆盖现有文件。

搜索、学者、信用使用、音频抓取和视频抓取

搜索, scholar、信用使用, audio-scrape,以及 video-scrape 命令输出JSON。

示例:本地研究文件夹

mkdir -p ./Temp-Scrape

firecrawl scrape \
  --url "https://www.mckinsey.com/capabilities/tech-and-ai/our-insights/tech-forward/state-of-ai-trust-in-2026-shifting-to-the-agentic-era" \
  --output mckinsey-ai-trust-2026 \
  --path ./Temp-Scrape

firecrawl scrape \
  --url "https://www.reuters.com/business/world-at-work/ai-will-lead-labour-shortages-jeff-bezos-says-vivatech-2026-06-17/" \
  --output reuters-bezos-ai-labor \
  --path ./Temp-Scrape

rg -n "agentic|governance|risk|labor shortage|AI" ./Temp-Scrape
bat --paging=never --line-range 1:120 ./Temp-Scrape/mckinsey-ai-trust-2026.md

这将创建一个本地源文件夹,可以搜索和重新访问,而无需重复提取或粘贴网页到上下文中。

Python MCP服务器

该项目还包括一个Python MCP服务器。

运行方式:

uvx firecrawl-toolkit

MCP客户端配置示例:

{
  "mcpServers": {
    "firecrawl": {
      "command": "uvx",
      "args": ["firecrawl-toolkit"],
      "env": {
        "FIRECRAWL_API_KEY": "<Your Firecrawl API key>",
        "FIRECRAWL_MCP_ENABLE_STDIO": "1"
      }
    }
  }
}

MCP环境变量:

变量 默认值 描述
FIRECRAWL_API_KEY fc-xxx Firecrawl API密钥。
FIRECRAWL_BASE_URL https://api.firecrawl.dev/v2 Firecrawl API基本URL。为自托管服务设置此URL。
FIRECRAWL_HTTP2 0 使用启用HTTP/2 1.
FIRECRAWL_MAX_WORKERS 10 工作进程数。
FIRECRAWL_MAX_CONNECTIONS 200 最大HTTP连接数。
FIRECRAWL_MAX_CONCURRENT_REQUESTS 200 最大并发请求数。
FIRECRAWL_KEEPALIVE 20 最大保持活动连接数。
FIRECRAWL_RETRY_COUNT 3 最大重试次数。
FIRECRAWL_RETRY_BASE_DELAY 0.5 基本重试延迟(秒)。
FIRECRAWL_ENDPOINT_CONCURRENCY {"search":10,"scrape":2} 每个端点的并发限制。
FIRECRAWL_ENDPOINT_RETRYABLE {"scrape": false} 按端点重试配置。
FIRECRAWL_MCP_ENABLE_STDIO 0 启用STDIO传输。
FIRECRAWL_MCP_ENABLE_HTTP 0 启用HTTP传输。
FIRECRAWL_MCP_ENABLE_SSE 0 启用SSE传输。
FIRECRAWL_MCP_HTTP_HOST 127.0.0.1 HTTP主机。
FIRECRAWL_MCP_HTTP_PORT 7001 HTTP端口
FIRECRAWL_MCP_SSE_HOST 127.0.0.1 SSE主机。
FIRECRAWL_MCP_SSE_PORT 7001 SSE港口
FIRECRAWL_MCP_LOCK_FILE /tmp/firecrawl_mcp.lock 锁定文件路径。

STDIO、HTTP和SSE应该一次使用一个。如果需要多次传输,请使用不同的锁文件启动单独的服务。

MCP工具

MCP服务器提供:

工具 说明
firecrawl-aggregated-search 聚合网络、新闻和图像搜索。
firecrawl-web-search 网络搜索。
firecrawl-news-search 新闻搜索。
firecrawl-image-search 图像搜索。
firecrawl-scrape 抓取一个URL并返回映射的Markdown内容。

对于基于本地shell的代理,Go CLI通常是更简单、更安全的界面,因为它将大型抓取结果写入文件,而不是直接将其返回到模型上下文。

发展

运行Go CLI测试:

cd cli
go test ./...

构建CLI:

cd cli
go build -o firecrawl .

运行Python测试:

pytest

许可证

此项目根据GNU通用公共许可证v3.0或更高版本获得许可。 看 许可证 了解详情。第三方依赖通知和完成 许可证文本可在 第三条_通知.txt 和 THIRD_PARTY_LICENSES/.