Doramagic 项目包 · 项目说明书

firecrawl 项目

用于大规模搜索、抓取和交互网页的 API。🔥

Project Overview & Repository Structure

Firecrawl 是一个面向 AI Agent 与开发者的一站式 Web 数据 API,提供从搜索、抓取、批量抓取、整站爬取到浏览器交互、结构化抽取等完整链路。仓库根目录的 README.md 将其核心端点划分为两大类:核心端点(Search、Scrape、Interact)与扩展端点(Agent、Crawl、Map、Batch Scrape)。其中 Scrape 可将任...

章节 相关页面

继续阅读本节完整说明和来源证据。

项目概览与仓库结构

项目定位与核心能力

Firecrawl 是一个面向 AI Agent 与开发者的一站式 Web 数据 API,提供从搜索、抓取、批量抓取、整站爬取到浏览器交互、结构化抽取等完整链路。仓库根目录的 README.md 将其核心端点划分为两大类:核心端点(Search、Scrape、Interact)与扩展端点(Agent、Crawl、Map、Batch Scrape)。其中 Scrape 可将任意 URL 转换为 Markdown、HTML、截图或结构化 JSON;Interact 端点允许在抓取后通过自然语言提示词或 Playwright 代码对页面进行点击、填表、翻页等操作 资料来源:README.md:5-17

项目以 v2 系列为主线,截至当前最新发布版本 v2.10 引入了 /parse 端点(支持 PDF、DOCX、XLSX 等本地文件上传解析)以及 Lockdown Mode 等企业级能力;同时在 v2.9.0 加入了浏览器交互(/interact),v2.8.0 引入了 Parallel Agents 与 Firecrawl CLI,v2.6.0 完成了统一计费模型(Credits 与 Tokens 合并)。

仓库整体结构

Firecrawl 采用 monorepo 形式组织,主要目录划分如下:

目录角色关键产物
apps/api核心 API 服务(TypeScript/Node.js)抓取、队列、智能抽取、Playwright 浏览器控制
apps/api/sharedLibs/go-html-to-mdGo 编写的 HTML→Markdown 转换共享库通过 go build -buildmode=c-shared 编译为 .so/.dylib/.dll 供 Node 调用 资料来源:apps/api/sharedLibs/go-html-to-md/README.md:1-9
apps/python-sdkapps/js-sdk/firecrawlapps/rust-sdkapps/ruby-sdk多语言官方 SDK提供 Search/Scrape/Crawl/Map/Batch Scrape 一致接口
examples/端到端示例工程gpt-4.1-web-crawlero3-web-crawlergemini-2.5-web-extractorllama-4-maverick-web-crawlerdeepseek-v3-company-researcher
firecrawl-skills/firecrawl-workflows/配套技能与工作流子模块Skills 用于把 Firecrawl 嵌入产品代码;Workflows 提供可复用的研究/竞品分析流水线 资料来源:firecrawl-skills/README.md:1-5firecrawl-workflows/README.md:1-3

核心服务组件

API 服务(apps/api)是整个系统的中枢,包含三条关键子链路:

  1. 抓取与浏览器渲染scrapeURL/lib/ 中实现了智能抓取逻辑。smartScrape.ts 通过内部 /smart-scrape 端点使用 Gemini 2.5 Pro 等模型驱动 LLM 抽取 资料来源:apps/api/src/scraper/scrapeURL/lib/smartScrape.ts:1-60extractSmartScrape.ts 定义了 Zod 风格的输出 Schema,包含 shouldUseSmartscrape 开关与 smartscrape_reasoning / smartscrape_prompt 字段,用以在数据缺失时决定是否触发"模拟用户交互"以获取更深层内容 资料来源:apps/api/src/scraper/scrapeURL/lib/extractSmartScrape.ts:1-25
  2. 队列与缓存:社区长期关注 Redis 依赖及其稳定性——nuq 工作进程存在连接泄漏导致 Redis maxclients(默认 10000)耗尽的问题(#3662),并有用户提议引入 Valkey 作为替代后端(#2718)。
  3. HTML→Markdown 转换:通过 Go 共享库在 Node 进程中以 FFI 方式加速 HTML 解析与正文抽取。

SDK 与示例生态

各语言 SDK 在接口层面高度一致:

  • Python (apps/python-sdk):提供 Firecrawl 客户端,支持 searchscrapecrawlstart_crawlget_crawl_statusparse(上传本地文件)等方法,并可结合 nest_asyncio 通过 crawl_url_and_watch 进行 WebSocket 监听 资料来源:apps/python-sdk/README.md:1-30`。
  • Node.js / TypeScript (apps/js-sdk/firecrawl):提供 app.crawlapp.startCrawlapp.getCrawlStatusapp.extract(支持 Zod Schema)等异步方法 资料来源:apps/js-sdk/firecrawl/README.md:1-20`。
  • Rust (apps/rust-sdk):Client::new(api_key) 后调用 scrape_url,对视频链接(YouTube、TikTok)可通过 Format::Video 获得签名 URL 视频流 资料来源:apps/rust-sdk/README.md:1-20`。
  • Ruby (apps/ruby-sdk):以 Firecrawl::Models 命名空间承载 CrawlOptionsBatchScrapeOptionsMapOptionsSearchOptions 等模型对象 资料来源:apps/ruby-sdk/README.md:1-30`。

examples/ 目录展示了典型组合:先用 Map 枚举站内 URL,再调用 LLM(GPT-4.1、o3、Gemini 2.5、Llama 4 Maverick、DeepSeek V3 等)做相关度排序与内容分析,最后用 Scrape/Extract 拿到结构化 JSON 资料来源:examples/gpt-4.1-web-crawler/README.md:1-20examples/o3-web-crawler/README.md:1-20

自托管与部署关注点

社区中的高互动议题集中在自托管场景:

  • 代理(Proxy)支持#1129 指出在单 IP 反复抓取时容易被目标站封禁,需要官方在自托管中提供代理选项。
  • Docker 构建失败html-transformer 模块在某些平台下出现 *mut u8*mut i8 类型不匹配(#1103),与 go-html-to-md 共享库的 C 字符串边界处理相关。
  • 反爬死循环nuq-worker 在被反爬系统拦截后可能陷入永久重试(#2350),需要更稳健的超时与退避策略。
  • Playwright 镜像#1322 询问是否提供预构建 Playwright 镜像以简化部署。
  • Kubernetes Helm Chart#1255 请求官方发布 Helm Chart 以便在 K8s 中安装。

See Also

  • See: API Endpoints Reference
  • See: Self-Hosting Guide
  • See: SDK Usage Guide
  • See: SmartScrape & Extraction Pipeline

来源:https://github.com/firecrawl/firecrawl / 项目说明书

API Server, Scraping Engine & Worker Pipeline

Firecrawl 的核心后端由三层构成:对外提供 REST API 的 API Server(位于 apps/api)、执行实际抓取与解析的 Scraping Engine,以及基于 Redis 的异步任务队列 Worker Pipeline(nuq)。整个系统以 nuq 队列解耦请求接收与抓取执行,使 scrape、crawl、batch scrape、agent 等端...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 已知失败模式

继续阅读本节完整说明和来源证据。

API Server、Scraping Engine 与 Worker Pipeline

概述

Firecrawl 的核心后端由三层构成:对外提供 REST API 的 API Server(位于 apps/api)、执行实际抓取与解析的 Scraping Engine,以及基于 Redis 的异步任务队列 Worker Pipeline(nuq)。整个系统以 nuq 队列解耦请求接收与抓取执行,使 scrape、crawl、batch scrape、agent 等端点既能同步返回结果,也能通过 job id 异步轮询。资料来源:README.md

社区对这套架构的关注主要集中在三类问题上:自托管场景下的 Redis 连接泄漏(见 Issue #3662)、batch scrape 状态接口返回数据冗余(见 Issue #2599),以及反爬触发的死循环(见 Issue #2350)。这些议题均直接关联 Worker Pipeline 的稳定性与 Scraping Engine 的错误处理策略。

整体架构

下图展示了从 API 入口到抓取执行、到队列回写的主要数据流:

flowchart LR
    Client[SDK / cURL / Playground] -->|HTTP v2| API[API Server<br/>apps/api/src]
    API -->|sync scrape| Engine[Scraping Engine<br/>scrapeURL/]
    API -->|async crawl/batch| Queue[(Redis + nuq)]
    Queue --> Worker[nuq Worker]
    Worker --> Engine
    Engine -->|结果回写| Queue
    Queue -->|job status| API
    API -->|轮询响应| Client

API Server 同时承担 POST /v2/scrapePOST /v2/crawlPOST /v2/batch/scrapePOST /v2/agentPOST /v2/mapPOST /v2/search 等端点的鉴权、参数校验和入队逻辑。资料来源:README.md

Scraping Engine

apps/api/src/scraper/scrapeURL/lib/smartScrape.ts 定义了 smartScrape 内部函数,它通过 POST ${SMART_SCRAPE_API_URL}/smart-scrape 把 URL 与 prompt 转发给推理服务,结构化结果以 Zod schema 校验。函数签名接受 urlpromptsessionIdextractIdscrapeIdcostTracking 字段,并在 child logger 中绑定 extractIdurlpromptsessionIdscrapeId 以便链路追踪。资料来源:apps/api/src/scraper/scrapeURL/lib/smartScrape.ts

const response = await robustFetch<typeof smartScrapeResultSchema>({
  url: `${config.SMART_SCRAPE_API_URL}/smart-scrape`,
  method: "POST",
  body: {
    url, prompt, userProvidedId: sessionId ?? undefined,
    extractId, scrapeId,
    models: { thinkingModel: { model: "gemini-2.5-pro", ... } },
  },
});

在抽取场景下,apps/api/src/scraper/scrapeURL/lib/extractSmartScrape.ts 引入了 shouldUseSmartscrape 布尔字段与 smartscrape_reasoningsmartscrape_prompt 文本字段,允许 LLM 决定是否需要二次智能抓取(例如点击折叠面板、登录、分页等用户行为)。当 shouldUseSmartscrape 为 true 时,引擎会再次调用 smartScrape 完成交互。资料来源:apps/api/src/scraper/scrapeURL/lib/extractSmartScrape.ts

各官方 SDK 在调用层对此做了统一封装:Python 的 firecrawl.scrape(url, formats=[...])、Node 的 app.scrape(url, { formats: [...] })、Rust 的 app.scrape_url(url, None)、Java 的 client.scrape(...) 均将 formats、changeTracking 等参数透传至 POST /v2/scrape,由 Engine 决定具体执行链路。资料来源:apps/python-sdk/README.mdapps/js-sdk/firecrawl/README.mdapps/rust-sdk/README.mdapps/java-sdk/README.md

Worker Pipeline(nuq)

crawl 与 batch scrape 等长任务并不在请求线程中执行,而是被 enqueue 到 nuq(基于 Redis 的队列抽象)。Worker 进程订阅队列后调用 scrapeURL 完成单页抓取,并把中间态写回 Redis,使 SDK 的 crawl waiter 或 getCrawlStatus(id) 能通过 Redis 读取进度。资料来源:apps/python-sdk/README.mdapps/ruby-sdk/README.md

crawl 方法默认阻塞直到完成(poll_interval=30),start_crawl 仅返回 job id;Ruby SDK 提供对应的 client.crawl / client.start_crawl / client.get_crawl_status / client.cancel_crawl 四元组。资料来源:apps/ruby-sdk/README.md

已知失败模式

现象触发条件资料来源
Redis 连接持续增长直至 maxclients=10000nuq worker 未释放 Redis 连接,约 18 天耗尽连接数Issue #3662
GET /batch/scrape/:id 在未完成时仍返回完整 data缺少 omit_data 等过滤参数Issue #2599
被反爬封禁后进入 nuq-worker-4 永久重试反爬分支缺少全局超时与最大重试上限Issue #2350
html-transformer Docker 构建失败(*mut u8 vs *mut i8Rust FFI 与 CString 版本不一致Issue #1103

对于希望替换 Redis 的自托管用户,社区已提出对 Valkey(Redis 的 Linux Foundation 开源分叉)的兼容性测试需求,见 Issue #2718

自托管注意事项

社区反馈的部署痛点集中在 scraper 的可选依赖:html-transformer 的 Rust 构建链路(Issue #1103)、Playwright 镜像的可用性(Issue #1322)、代理支持(Issue #1129)以及 Kubernetes Helm chart(Issue #1255)。这些不直接影响 API Server 的语义,但决定 Worker Pipeline 在自托管环境能否成功拉起 scraper 容器。生产部署建议显式声明 playwright 服务镜像版本并启用针对 Redis 的连接复用监控,以规避 Issue #3662 中的连接泄漏。

See Also

来源:https://github.com/firecrawl/firecrawl / 项目说明书

SDK Ecosystem & Client Libraries

Firecrawl 的 SDK 生态是一组围绕同一组 v2 HTTP 端点(/scrape、/crawl、/map、/batch/scrape、/search、/agent、/extract、/interact 等)构建的多语言客户端库,目的是让 AI Agent、数据工程师与产品开发者在不同技术栈中以一致的方式调用 Firecrawl 的网页抓取与结构化提取能力。根目录的...

章节 相关页面

继续阅读本节完整说明和来源证据。

概览与定位

Firecrawl 的 SDK 生态是一组围绕同一组 v2 HTTP 端点(/scrape/crawl/map/batch/scrape/search/agent/extract/interact 等)构建的多语言客户端库,目的是让 AI Agent、数据工程师与产品开发者在不同技术栈中以一致的方式调用 Firecrawl 的网页抓取与结构化提取能力。根目录的 README.md 明确把 Search、Scrape、Interact、Agent、Crawl、Map、Batch Scrape 列为“Core Endpoints”,SDK 的职责就是把这些端点包装成语义化的方法并屏蔽鉴权与轮询细节。

资料来源:README.md:1-40

除官方 SDK 外,仓库还托管了 firecrawl-skillsfirecrawl-workflows 两个子目录,把 SDK 用法沉淀为可复用的“技能”与“工作流”资产,前者聚焦在产品代码中如何选择端点、装配 SDK、设置 API Key,后者面向竞品分析、站点克隆等可重复交付物。

资料来源:firecrawl-skills/README.md:1-5firecrawl-workflows/README.md:1-5

官方 SDK 矩阵

仓库在 apps/ 目录中并行维护多种语言实现,发布节奏与 v2 API 同步。下表按语言对核心能力、入口类与代表性方法做汇总,方便按技术栈选型。

语言/包入口初始化抓取/爬取入口方法
JavaScript / TypeScript(apps/js-sdkFirecrawlApp / Firecrawlnew FirecrawlApp({apiKey})scrapecrawlstartCrawlgetCrawlStatus
Python(apps/python-sdkFirecrawlFirecrawl(api_key=...)scrapecrawlstart_crawlget_crawl_statuscrawl_url_and_watch
Rust(apps/rust-sdkClientClient::new("fc-...")scrape_url
Java(apps/java-sdkFirecrawlClient 及其 models构造器注入 API Key通过 Format 模型(如 QuestionFormat)描述请求体

资料来源:apps/js-sdk/firecrawl/README.md:1-40apps/python-sdk/README.md:1-40apps/rust-sdk/README.md:1-25apps/java-sdk/src/main/java/com/firecrawl/models/QuestionFormat.java:1-30

需要注意的是,不同语言 SDK 在 v2 命名风格上保持了统一:Node 使用驼峰(如 startCrawl),Python 使用蛇形(如 start_crawl),但二者的语义一一对应,避免跨语言迁移时的心智负担。

通用调用模式

各 SDK 都遵循相似的三步调用模式:构造客户端 → 调用阻塞或异步方法 → 解析结果。下面以 Python 与 Node 为例展示这一共同模式。

from firecrawl import Firecrawl
from firecrawl.types import ScrapeOptions

firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")
result = firecrawl.scrape(
    "https://firecrawl.dev",
    formats=["markdown", "html"],
)
print(result)

资料来源:apps/python-sdk/README.md:1-30

import { Firecrawl } from "firecrawl";

const app = new Firecrawl({ apiKey: "fc-YOUR_API_KEY" });
const crawlResponse = await app.crawl("https://firecrawl.dev", {
  limit: 100,
  scrapeOptions: { formats: ["markdown", "html"] },
  pollInterval: 2,
});

资料来源:apps/js-sdk/firecrawl/README.md:1-25

对于耗时较长的爬取任务,SDK 都提供阻塞(waiter)与非阻塞两套接口:阻塞方法在内部按 pollInterval 轮询直到完成;非阻塞方法如 startCrawl / start_crawl 仅返回作业 ID,调用方用 getCrawlStatus / get_crawl_status 自行驱动状态机。这种“可选异步”设计在 Crawl、Batch Scrape、Agent 等长任务端点上保持一致。

差异化能力

虽然核心 API 表面一致,但各 SDK 在语言习惯层面提供了差异化能力。

  • Python — WebSocket 监听器crawl_url_and_watch 方法返回一个支持 documenterrordone 事件的 watcher,可流式接收爬取进度,适合在 Notebook 或长任务管道中实时消费。资料来源:apps/python-sdk/README.md:1-50
  • Node — Extract + Zod 集成extract 方法可直接接收 Zod schema,把 LLM 抽取结果强类型化为 JS 对象,简化前端/Agnet 链路。资料来源:apps/js-sdk/firecrawl/README.md:1-50
  • Rust — 显式异步与 Format::Video:使用 tokio 运行时与 Format 枚举,YouTube/TikTok 等视频 URL 可通过 Format::Video 返回签名下载链接。资料来源:apps/rust-sdk/README.md:1-25
  • Java — 强类型请求模型QuestionFormat 等模型类通过 Builder 模式构造请求体,@JsonInclude(NON_NULL) 注解保证空字段不参与序列化,便于在企业后端服务中安全调用。资料来源:apps/java-sdk/src/main/java/com/firecrawl/models/QuestionFormat.java:1-30
flowchart LR
    A[User Code] --> B[Firecrawl SDK Client]
    B -->|HTTP/JSON| C[Firecrawl v2 API]
    C --> D[(Queue / Workers)]
    D --> E[SmartScrape / Extract]
    E -->|polling or webhook| B
    B --> A

服务端侧的智能抓取能力(如 smartScrape)会调用内部 /smart-scrape 端点完成 LLM 驱动的结构化提取,SDK 客户端只需通过 extract / scrape(prompt=...) 等高层方法触发即可。

资料来源:apps/api/src/scraper/scrapeURL/lib/smartScrape.ts:1-40

示例与生态扩展

仓库的 examples/ 目录收纳了大量 SDK 与第三方模型组合的实战样例,可作为集成参考:

社区近期关注的功能(如 v2.10 引入的 /parse 本地文件解析、Lockdown Mode 等)均同步在 SDK 中以新方法/新参数形式暴露,自托管用户在升级到较新版 docker-compose 后需同步将 SDK 升级到与 API 兼容的版本。

常见失败模式

  • API Key 缺失或环境变量拼写错误:Node SDK 默认读取 FIRECRAWL_API_KEY,但也允许在构造时显式传入 apiKey;若两者都未设置,将收到认证错误。资料来源:apps/js-sdk/firecrawl/README.md:1-25apps/python-sdk/README.md:1-25
  • 长任务被截断:未使用 waiter 模式而直接 await app.crawl(...) 时,底层 HTTP 超时可能导致任务中断,建议在批处理或 Agent 场景下优先使用 startCrawl + 状态轮询。
  • v1/v2 命名差异:v2 SDK 中参数名以 formatsscrapeOptions 等小驼峰为主,迁移自 v1 旧版时需注意 pageOptions 等字段已重命名。
  • 自托管时连接后端失败:自托管用户在容器网络内调用 SDK 时,需把 FIRECRAWL_API_URL 指向内部服务地址,否则 SDK 会默认访问 api.firecrawl.dev,这也是社区 #1103、#1322 等 Docker 构建/网络相关 Issue 的常见根因之一。

See Also

资料来源:README.md:1-40

Self-Hosting, Deployment & Common Failure Modes

Firecrawl 提供 Search、Scrape、Interact、Agent、Crawl、Map、Batch Scrape 等核心端点,既可以走 firecrawl.dev 托管服务,也可以通过 Docker 自托管 README.md。本页聚焦自托管场景下的部署拓扑、配置入口,以及社区高频反馈的故障模式,帮助运维与开发人员快速定位问题。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 1. nuq-worker 持续累积 Redis 连接

继续阅读本节完整说明和来源证据。

章节 2. 反爬触发后的无限 waterfall 循环

继续阅读本节完整说明和来源证据。

章节 3. 自托管缺少代理出口

继续阅读本节完整说明和来源证据。

概述

Firecrawl 提供 Search、Scrape、Interact、Agent、Crawl、Map、Batch Scrape 等核心端点,既可以走 firecrawl.dev 托管服务,也可以通过 Docker 自托管 README.md。本页聚焦自托管场景下的部署拓扑、配置入口,以及社区高频反馈的故障模式,帮助运维与开发人员快速定位问题。

部署架构

自托管实例通常由以下组件协同工作:API 服务(处理 scrape / crawl / agent 等同步与异步请求)、Playwright 浏览器集群(渲染需要 JS 的页面)、Redis/Valkey(缓存与轻量队列)、nuq-worker(实际抓取与提取的执行端)、以及可选的 Postgres 后端(持久化 nuq 任务)。代码中 smartScrape 通过 config.SMART_SCRAPE_API_URL 调用内部端点,说明 API 与抓取/提取子系统是独立部署但通过 HTTP 协作的 smartScrape.ts

graph LR
  Client[客户端 / SDK] --> API[API 服务]
  API --> Queue[nuq 队列]
  Queue --> Worker[nuq-worker]
  Worker --> Browser[Playwright 浏览器集群]
  Worker --> Redis[(Redis / Valkey)]
  Worker --> PG[(Postgres)]
  Worker --> LLM[LLM 提取服务]
  LLM --> Worker
  API -. 状态轮询 .-> Client

关键配置入口

smartScrapeextractSmartScrape 通过统一 config 对象读取运行时参数,包括内部 SMART_SCRAPE_API_URL、所选 LLM(如 gemini-2.5-pro)和成本追踪开关 extractSmartScrape.ts。自托管时必须保证这些环境变量在 API 与 worker 两端都正确注入,且内部服务之间网络可达。

apps/api/sharedLibs/go-html-to-md 是将 Go 实现的 HTML→Markdown 编译为 C 共享库的脚本,产物按目标系统分为 .dll / .so / .dylib go-html-to-md/README.md。Docker 构建时需针对目标平台执行对应 go build -buildmode=c-shared 命令,否则会出现原生库缺失或符号类型不匹配问题(社区 #1103 即因此类 C 端类型差异 *mut u8 vs *mut i8 触发)。

常见故障模式

1. nuq-worker 持续累积 Redis 连接

社区 #3662 报告 nuq-worker 进程与 Redis 的连接数单调上升,约 18 天后撞到 Redis 默认 maxclients = 10000 上限,触发持续 EPIPE 风暴并伴随 CPU/内存攀升。临时缓解可提高 maxclients 或周期性重启 worker;根本方案需要修复连接泄漏,并补上连接上限保护。

2. 反爬触发后的无限 waterfall 循环

#2350 记录了 API 在目标站点启用反爬时反复回退到不同抓取策略,却没有任何墙钟超时保护,最终 nuq-worker 死锁、日志循环。运维侧应在 worker 层设置最大重试次数与单次抓取超时,并在外层加 watchdog 回收。

3. 自托管缺少代理出口

#1129 指出默认镜像未暴露代理配置,服务器出口 IP 在大量抓取后被目标站点封锁。短期可借助 sidecar 透明代理或网络层 egress proxy;官方尚未提供内置 PROXY 环境变量。

4. Playwright 镜像与 Helm Chart 缺失

#1322 询问官方 Playwright 镜像(compose 中 image 字段留空),#1255 提议提供 Kubernetes Helm Chart 以便在 K8s 上部署。两者目前都依赖用户自行构建或社区方案。

5. 缓存后端从 Redis 迁移到 Valkey

#2718 提议增加 Valkey 兼容测试。Valkey 是 Redis 的 Linux 基金会开源分叉,因 Redis 许可证变更被许多企业采纳。自托管时切到 Valkey 通常无需改代码,但需确认 ioredis 客户端版本与 Valkey 协议完全兼容。

SDK 与上层能力

JavaScript、Python、Ruby、Rust SDK 均对 crawl、batch scrape、map、search、extract 等端点提供阻塞与异步两种调用方式 js-sdk/README.mdpython-sdk/README.mdruby-sdk/README.mdrust-sdk/README.mdFirecrawl SkillsFirecrawl Workflows 仓库面向产品集成与可重复交付物模板 firecrawl-skills/README.mdfirecrawl-workflows/README.md,可与自托管部署协同使用。

See Also

  • Core API Endpoints (Search / Scrape / Crawl / Map / Batch Scrape)
  • nuq Queue Internals
  • LLM Extraction Pipeline (extractSmartScrape)
  • SDK Quick Start (JS / Python / Ruby / Rust)

来源:https://github.com/firecrawl/firecrawl / 项目说明书

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

high 来源证据:[Self-Host] nuq workers leak Redis connections until maxclients (10k) → continuous EPIPE storm, climbing CPU/memory

可能影响授权、密钥配置或安全边界。

medium 来源证据:Your project is tracked on HVTracker — any data we should correct?

可能增加新用户试用和生产接入成本。

medium 能力判断依赖假设

假设不成立时,用户拿不到承诺的能力。

medium 维护活跃度未知

新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。

Pitfall Log / 踩坑日志

项目:firecrawl/firecrawl

摘要:发现 10 个潜在踩坑项,其中 1 个为 high/blocking;最高优先级:安全/权限坑 - 来源证据:[Self-Host] nuq workers leak Redis connections until maxclients (10k) → continuous EPIPE storm, climbing CPU/memory。

1. 安全/权限坑 · 来源证据:[Self-Host] nuq workers leak Redis connections until maxclients (10k) → continuous EPIPE storm, climbing CPU/memory

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[Self-Host] nuq workers leak Redis connections until maxclients (10k) → continuous EPIPE storm, climbing CPU/memory
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/firecrawl/firecrawl/issues/3662 | 来源讨论提到 node 相关条件,需在安装/试用前复核。

2. 安装坑 · 来源证据:Your project is tracked on HVTracker — any data we should correct?

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:Your project is tracked on HVTracker — any data we should correct?
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/firecrawl/firecrawl/issues/3668 | 来源讨论提到 npm 相关条件,需在安装/试用前复核。

3. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 证据:capability.assumptions | github_repo:787076358 | https://github.com/firecrawl/firecrawl | README/documentation is current enough for a first validation pass.

4. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 证据:evidence.maintainer_signals | github_repo:787076358 | https://github.com/firecrawl/firecrawl | last_activity_observed missing
  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 证据:downstream_validation.risk_items | github_repo:787076358 | https://github.com/firecrawl/firecrawl | no_demo; severity=medium

6. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 证据:risks.scoring_risks | github_repo:787076358 | https://github.com/firecrawl/firecrawl | no_demo; severity=medium

7. 安全/权限坑 · 来源证据:Feature: AgentCredit integration — credit fallback for x402 scraping when wallet is short

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Feature: AgentCredit integration — credit fallback for x402 scraping when wallet is short
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/firecrawl/firecrawl/issues/3415 | 来源讨论提到 api key 相关条件,需在安装/试用前复核。

8. 安全/权限坑 · 来源证据:[Feat] Add Additional Testing to Ensure Support for Valkey

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[Feat] Add Additional Testing to Ensure Support for Valkey
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/firecrawl/firecrawl/issues/2718 | 来源讨论提到 docker 相关条件,需在安装/试用前复核。

9. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 证据:evidence.maintainer_signals | github_repo:787076358 | https://github.com/firecrawl/firecrawl | issue_or_pr_quality=unknown

10. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 证据:evidence.maintainer_signals | github_repo:787076358 | https://github.com/firecrawl/firecrawl | release_recency=unknown

来源:Doramagic 发现、验证与编译记录