AutoGPT 平台 Firecrawl Crawl 块详解:以 Firecrawl 驱动整站爬取与内容提取

发布时间:2026/9/7 6:04:51
AutoGPT 平台 Firecrawl Crawl 块详解:以 Firecrawl 驱动整站爬取与内容提取 AutoGPT 平台 Firecrawl Crawl 块详解以 Firecrawl 驱动整站爬取与内容提取【免费下载链接】AutoGPTAutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.项目地址: https://gitcode.com/GitHub_Trending/au/AutoGPT导读Firecrawl Crawl 是 AutoGPT 平台中归属于 Firecrawl 集成家族的一个「搜索与抓取」类块Block用于从单个起始 URL 出发自动爬取网站的多个页面并在同一轮爬取中同时产出 markdown、HTML、链接、截图等多种格式的结构化结果。本文围绕该块的官方文档crawl.md展开结合仓库中该块的真实源码实现讲解它的工作原理、全部输入输出参数、成本计费口径与典型落地场景帮助你在 AutoGPT 平台的 Agent 图中直接编排出“文档索引、竞品调研、内容归档”等整站级数据处理流程。一、块定位什么是 Firecrawl Crawl在 AutoGPT 平台的块库中Firecrawl 集成被组织在autogpt_platform/backend/backend/blocks/firecrawl/目录下与 Crawl 同族的还有scrape.py单页抓取map.py站点地图发现search.py搜索extract.py结构化抽取与只抓取单个 URL 的 Scrape 块不同Crawl 块的语义是整站遍历从一个起始 URL 出发像搜索引擎爬虫一样沿着站内链接递归前进逐页抓取并返回内容。官方文档对它的定位概括为一句话“Firecrawl crawls websites to extract comprehensive data while bypassing blockers.”即它不仅做「抓取」还负责解决网页抓取中的两大痛点——JavaScript 动态渲染与反爬anti-bot绕过从而把每个页面都清洗成可被下游 LLM、知识库直接消费的干净文本。在仓库中该块对应的类为FirecrawlCrawlBlockcrawl.py其声明信息如下块 IDbdbbaba0-03b7-4971-970e-699e2de6015e分类BlockCategory.SEARCH在块库中被归入“搜索”类目描述Firecrawl crawls websites to extract comprehensive data while bypassing blockers.二、工作原理从配置到 Firecrawl API 的完整调用链官方文档 crawl.md 对该块的工作机制描述如下该块使用 Firecrawl 的 API 从给定 URL 开始爬取网站的多个页面。它会沿链接遍历处理 JavaScript 渲染并绕过反爬措施从每个页面提取干净内容。你可以用limit参数配置爬取深度选择输出格式markdown、HTML 或 raw HTML并可选地只保留主内容。该块支持带最大缓存年龄max age与动态内容等待时间wait for的缓存能力。对照源码这一机制可以细分为以下几个环节1. 实例化 Firecrawl 官方客户端run()方法在每次执行时用块输入的凭据构造官方 SDK 客户端app FirecrawlApp(api_keycredentials.api_key.get_secret_value())其中credentials来自块输入中的credentials元字段。Firecrawl 提供方的定义位于 _config.py读取环境变量FIRECRAWL_API_KEY作为 API Key并在平台上为块配了按用量计费的基础成本firecrawl ( ProviderBuilder(firecrawl) .with_description(Web scraping and crawling) .with_api_key(FIRECRAWL_API_KEY, Firecrawl API Key) .with_base_cost(1000, BlockCostType.COST_USD) .build() )2. 同步调用app.crawl()crawl_result app.crawl( input_data.url, limitinput_data.limit, scrape_optionsScrapeOptions( formatsconvert_to_format_options(input_data.formats), only_main_contentinput_data.only_main_content, max_ageinput_data.max_age, wait_forinput_data.wait_for, ), )可以看到Crawl 是一次同步、阻塞式的整站爬取limit直接控制 Firecrawl 服务端本次任务要抓取的页面总数上限ScrapeOptions承载的formats、only_main_content、max_age、wait_for会被下发到服务端作用于本次爬取涉及到的每一个页面。3. 格式枚举与特殊转换块的formats输入在类型层面使用了仓库自定义的ScrapeFormat枚举_api.pyMARKDOWN markdown HTML html RAW_HTML rawHtml LINKS links SCREENSHOT screenshot SCREENSHOT_FULL_PAGE screenshotfullPage JSON json CHANGE_TRACKING changeTracking由于 Firecrawl SDK 的FormatOption类型中全页截图需要被表达为带full_pageTrue的ScreenshotFormat对象而不是普通字符串_format_utils.py提供了专门的转换函数convert_to_format_options()if format_enum.value screenshotfullPage: result.append(ScreenshotFormat(typescreenshot, full_pageTrue)) else: result.append(format_enum.value)这是 Crawl 块内部实现的一个关键细节全页截图screenshotfullPage被拆解为「截图类型 全页标记」两个维度而非一个独立的格式字符串。4. 结果展开与逐页产出爬取完成后块先整体产出data完整的爬取结果列表随后对每一页分别产出其选中格式对应的输出。若同一页被请求了多种格式各格式输出会依次触发。这也意味着下游节点收到的是“逐页、按格式切分”的数据流便于后续逐条进入 RAG 管道或数据库。三、输入参数详解以下输入来自 crawl.md 的输入表并补充了源码crawl.py中的类型默认值与描述输入描述类型必填代码默认值credentialsFirecrawl 凭据元字段对应FIRECRAWL_API_KEY环境变量CredentialsMetaInput是平台层—url起始爬取 URLstr是无limit要爬取的页面数量上限int否10only_main_content是否只返回页面主内容排除 header、导航、footer 等bool否Truemax_age页面最大缓存年龄毫秒默认 1 小时int否3600000wait_for抓取内容前的延迟毫秒让页面有足够时间完成动态加载int否0formats爬取输出的格式列表List[markdown \| html \| rawHtml \| links \| screenshot \| screenshotfullPage \| json \| changeTracking]否[markdown]对几个关键参数的实战理解url limit 决定“爬多大”Crawl 是广度式的整站遍历limit越大遍历到的页面越多耗时的 Firecrawl 服务端额度也越多详见下文成本说明。文档中称其为“配置爬取深度crawl depth”的手段——虽然它的语义是页面数上限而非图论意义上的层数深度但在限制范围的意义上等同于约束了爬取规模。官方文档原文示例中默认limit10但文档输入表将其标为可选说明在图中可以只连 url 使用。only_main_content 决定“多干净”默认开启自动剔除导航栏、页头页脚等模板噪音只保留正文。对于把网页内容直接投喂给 LLM 或做向量化的场景强烈建议保持开启以减少 token 浪费。max_age 是“缓存开关”默认 1 小时3600000ms。它告诉 Firecrawl 服务端如果该页内容在指定窗口内已被抓取过则直接复用缓存结果从而显著降低重复爬取成本、提升整站任务速度。wait_for 用于动态页面如果目标站点是重度前端渲染SPA把wait_for设为一个延迟窗口如 2000~5000ms等待异步请求与首屏渲染完成后再抓取能明显提高内容完整度。formats 决定“拿什么”可以多选。需要强调的是多选会放大返回体量与成本每个选中格式都会触发一次内容处理默认值仅[markdown]即开箱即得纯文本版本最省配额。四、输出字段详解块的输出在文档中定义为以下九个字段全部来自 crawl.py 的Output定义其中error默认值为空字符串输出描述类型error爬取失败时的错误消息strdata整次爬取的结果列表每个页面的完整结构List[Dict[str, Any]]markdown爬取内容的 Markdown 文本strhtml爬取内容的 HTMLstrraw_html爬取内容的原始 HTML未清洗strlinks爬取到的链接列表List[str]screenshot爬取的页面截图strscreenshot_full_page爬取的整页截图strjson_data爬取的 JSON 数据Dict[str, Any]change_tracking页面变更追踪数据Dict[str, Any]输出与输入格式的对应关系可以在源码的产出循环中精确看到crawl.py当formats中包含某格式时该格式数据会以对应命名的输出逐页产出即markdown格式 →markdown输出html格式 →html输出rawHtml格式 →raw_html输出links格式 →links输出screenshot格式 →screenshot输出screenshotfullPage格式 →screenshot_full_page输出json格式 →json_data输出changeTracking格式 →change_tracking输出data输出承载的是 Firecrawl 返回的结构化原始结果列表即使没有开启任何离散格式也会整体产出便于下游做统一的后处理。五、成本与计费口径爬取类块的 API 用量成本是实际落地前必须评估的维度。从源码注释与 _config.py 可以看出平台的计费口径Firecrawl 按自身信用点credit计费1 credit ≈ $0.001按“每个被爬取的页面”记 1 credit。块在每次运行后会根据实际返回的页面数估算花费并写入执行统计pages len(crawl_result.data) if crawl_result.data else 0 self.merge_stats( NodeExecutionStats( provider_costpages * 0.001, provider_cost_typecost_usd ) )即“真实返回了多少页就按每页 $0.001 估算 provider 成本”。平台侧提供方配置为with_base_cost(1000, BlockCostType.COST_USD)含义是1000 平台积分 ≈ $1 USD的基准换算——由于 1 Firecrawl credit ≈ $0.001折算后约等于每个被爬取页面消耗 1 个平台信用点与单页抓取档位大致对齐。据此可以推导出实操层面的成本控制技巧limit是成本的第一杠杆把站点规模 × 内容更新频率再结合预算反推limit。善用max_age缓存同一站点在缓存窗口内重复运行同一 Agent 时命中缓存的页面不再计入真实爬取可明显降低实际消耗。精简formats只保留真正需要的输出格式减少服务端处理量。六、典型使用场景官方文档给出了三个高度契合整站爬取能力的场景这里结合 AutoGPT 平台 Agent 图的编排方式做进一步展开1. 文档索引Documentation Indexing场景描述把整站技术文档爬下来构建可搜索的知识库或训练数据。在平台中的编排建议用 Crawl 块以文档站点首页为url开启爬取only_main_contenttrue保证正文纯净formats[markdown]得到可直接切割的文本随后将markdown输出接到文本切片、向量化等下游块写入向量数据库形成可检索知识库。由于 AutoGPT 平台块之间以数据流连接data输出还可并行接到入库管道做审计留痕。2. 竞品研究Competitor Research场景描述批量提取竞品网站内容用于市场分析与横向对比。在平台中的编排建议将竞品官网/博客/定价页等作为url起点可配合同族 Firecrawl Search 或 Firecrawl Map 块先发现候选 URL再用 Crawl 做规模化采集。开启formats[html]或rawHtml可保留页面结构便于分析布局叠加 LLM 摘要块即可批量生成竞品分析报告。3. 内容归档Content Archival场景描述系统化归档网站内容用于备份或合规留证。在平台中的编排建议利用limit全量限定范围 max_age做增量窗口控制多轮调度即可实现“首次全量 后续增量”的归档节奏。同时开启markdown、html、screenshotfullPage、changeTracking多格式输出保留页面在不同时间点的完整快照含截图证据与变更追踪数据输出到对象存储或数据库完成留档。补充官方文档对这三个场景均以粗体用例形式列出本块实际能力以文档描述与源码为准上文中的编排建议是基于 AutoGPT 平台数据流连接方式的常规用法具体图结构可按需调整。七、在 AutoGPT 平台中配置与使用前置条件配置 Firecrawl 凭据在 Firecrawl 官网注册并获取 API Key在 AutoGPT 平台环境中设置环境变量FIRECRAWL_API_KEY对应代码 _config.py 中的凭据定义新建/编辑 Agent 图时把Firecrawl Crawl块拖入画布在弹出的输入面板中选择/关联该凭据。在编排时输入面板中会看到本文第三节的全部输入字段其中formats为多选列表对应List类型url为必填文本框其余字段均带默认值可直接运行。快速验证若只想验证块行为可以只连接一个最小图url填入一个中小型站点 → Crawl 块 → 把markdown输出接到日志/文本块观察结果。由于默认limit10、formats[markdown]一次运行成本与返回体量都处于可控范围。关联阅读同一 Firecrawl 集成下按任务粒度由小到大依次为Firecrawl Scrape单页抓取适合精准取一页Firecrawl Map站点链接发现Firecrawl Extract从页面/整站抽取结构化字段Firecrawl Search按关键词搜索网页。你可以在图里把 Map/Search 的结果作为 Crawl 的多个起点或用 Extract 消化 Crawl 返回的data组合出完整的“发现 → 整站采集 → 结构化”流水线。结语Firecrawl Crawl 块把“多页整站爬取、反爬绕过、JS 渲染、缓存控制、多格式输出、成本计量”收敛为一个可在图上拖拽的节点。理解它的输入默认值limit10、only_main_contentTrue、max_age1h、formats[markdown]、screenshotfullPage的特殊格式转换逻辑以及“每页 1 Firecrawl credit ≈ $0.001”的计费口径是把它用得既高效又省成本的关键。相关实现与配置可直接查阅 crawl.py、_api.py与 _config.py。【免费下载链接】AutoGPTAutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.项目地址: https://gitcode.com/GitHub_Trending/au/AutoGPT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻