如何用 Firecrawl 技能从网页提取结构化数据并轮询异步任务
【免费下载链接】awesome-codex-skillsA curated list of practical Codex skills for automating workflows across the Codex CLI and API.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-codex-skills
如果你的 Codex Agent 需要从网页中拿到结构化的 JSON 数据(比如公司名、定价套餐、功能列表),并且要可靠地取回异步任务的最终结果,可以用 awesome-codex-skills 仓库中的 Firecrawl 自动化技能。该技能通过 Composio 的 Firecrawl 集成,把FIRECRAWL_EXTRACT(结构化提取)和FIRECRAWL_EXTRACT_GET/FIRECRAWL_CRAWL_GET(异步任务轮询)接入你的 Codex 会话。前提条件:一个能配置 MCP 服务器的 Codex 环境、一个 Composio MCP 端点,以及一个有额度的 Firecrawl 账号。
准备条件:安装技能并接入 Composio MCP
把技能装进 Codex
按 README 的手动安装方式,把技能文件夹composio-skills/firecrawl-automation/复制到$CODEX_HOME/skills/(默认~/.codex/skills/),然后重启 Codex 让它加载新的技能元数据。
验证安装是否生效:
ls ~/.codex/skills head ~/.codex/skills/firecrawl-automation/SKILL.mdhead里应能看到name、description等 frontmatter。会话中描述提取任务时,Codex 会根据description自动触发该技能;也可以直接点名技能。
配置 MCP 并连接 Firecrawl 账号
技能 frontmatter 声明了requires.mcp: rube,所以必须把 Composio MCP 服务器加入你的 MCP 配置:
https://rube.app/mcp连接流程(见技能文档 Setup 一节):
- 在配置中加入上面的 MCP 端点;
- 按提示连接 Firecrawl 账号,Agent 会提供一个认证链接,完成授权即可。
文档同时提醒:Firecrawl 按用量消耗额度(credits),先把爬取范围收窄、在小 URL 集合上测试,再放大。
发起结构化数据提取:FIRECRAWL_EXTRACT
提取使用FIRECRAWL_EXTRACT工具,关键参数:
urls(必填):要提取的 URL 数组,beta 阶段最多 10 个,支持https://example.com/blog/*这样的通配符;prompt:自然语言描述要提取什么;schema:定义期望输出结构的 JSON Schema;enable_web_search:是否允许爬取初始域名之外的链接(默认 false)。
prompt和schema至少提供一个。技能文档给出的示例请求是(文档示例):
"Extract company name, pricing tiers, and feature lists from https://example.com/pricing"
文档的已知坑提醒:schema 或 prompt 写得含糊、频繁改动会产出噪音大、不一致的结果。应先把 schema 定稿(freeze),在小样本 URL 上测试,再扩到大批量。
可选分支:如果你走的是 Composio CLI 集成路径(先执行curl -fsSL https://composio.dev/install | bash安装 CLI——该命令会下载并运行官方安装脚本,注意先确认来源;再composio login登录、composio whoami确认身份,工具未连接时先composio link <toolkit>),同一批工具 slug 可以直接用composio execute调用,参数以 JSON 传入:
composio execute FIRECRAWL_EXTRACT -d '{ "urls": ["https://example.com/pricing"], "prompt": "Extract company name, pricing tiers, and feature lists" }'其中urls、prompt为读者按自己的目标页面和字段替换的值。调用前可用composio execute FIRECRAWL_EXTRACT --get-schema查看入参、--dry-run预演。
轮询异步任务:EXTRACT_GET 与 CRAWL_GET
提取任务:FIRECRAWL_EXTRACT_GET
FIRECRAWL_EXTRACT对较大的任务也是异步的:调用不会直接返回最终数据,而是返回一个任务id。拿这个id调FIRECRAWL_EXTRACT_GET才能取回最终输出。CLI 路径下即:
composio execute FIRECRAWL_EXTRACT_GET -d '{"id": "FIRECRAWL_EXTRACT 返回的 job id"}'id是上一次FIRECRAWL_EXTRACT调用返回的任务标识,必须原样替换。
整站爬取任务:FIRECRAWL_CRAWL_V2 + FIRECRAWL_CRAWL_GET
爬取走FIRECRAWL_CRAWL_V2,常用参数:url(必填,起始 URL)、limit(默认 10,最大爬取页数)、maxDiscoveryDepth、includePaths/excludePaths(URL 路径正则)、allowSubdomains(默认 false)、crawlEntireDomain(默认 false)、sitemap(include默认 /skip/only)。
关键行为:FIRECRAWL_CRAWL_V2会立即返回一个任务 ID(UUID),不会等你爬完。后续都用FIRECRAWL_CRAWL_GET轮询,它返回状态、进度、已用额度和已爬页面数据。技能文档中的示例(文档示例):
"Check the status of crawl job 019b0806-b7a1-7652-94c1-e865b5d2e89a"
如果任务卡住或失控,用FIRECRAWL_CANCEL_A_CRAWL_JOB取消它(接受 active 或 queued 状态的任务),避免继续浪费额度;FIRECRAWL_GET_THE_STATUS_OF_A_CRAWL_JOB也可单独用于查进度。两个查询/取消工具都需要爬取发起时返回的任务id(UUID)。
结果如何判定:嵌套响应与常见失败
拿到响应后不能只看外层调用是否成功,文档明确要求检查内层状态:
- 嵌套错误:单页失败可能藏在
response.data.code里(例如SCRAPE_DNS_RESOLUTION_ERROR),即使外层 API 调用是成功的。始终校验内层 status/error 字段。 - 深层嵌套结果:结果常嵌套在
data.data或更深处,拿到响应后先观察返回结构,不要假设是扁平键。 - 限流:Firecrawl 可能触发 429 "Rate limit exceeded"。文档建议对 429/5xx 做退避;批量抓取用
FIRECRAWL_BATCH_SCRAPE代替大量逐个FIRECRAWL_SCRAPE调用;extract 的 URL 批次保持在约 10 个以内。 - 额度不足:
FIRECRAWL_EXTRACT可能报 "Insufficient credits"。收窄范围,避免用宽泛的首页 URL(字段稀疏、产出少)。 - JS 重的页面:不渲染的抓取可能漏掉关键内容,动态页面用
waitFor(文档建议 1000–5000ms)或配置scrapeOptions_actions先与页面交互再抓。
限制与边界
FIRECRAWL_EXTRACT的urls在 beta 阶段上限 10 个;- 该技能依赖 Composio MCP(
rube端点)与已授权的 Firecrawl 账号,MCP 未配置时技能无法工作; - 额度消耗与爬取范围直接相关,文档反复强调"先小后大",但没给出免费的额度阈值或重试间隔等具体数值,实际限速表现以账号实际响应为准。
完成以上步骤后,你可以在 Codex 会话里直接下达"从某页面提取某字段"的自然语言任务:Agent 触发该技能,发起FIRECRAWL_EXTRACT,用返回的 jobid轮询FIRECRAWL_EXTRACT_GET,并按上面的规则校验嵌套响应。完整的工具清单见技能文档的 Quick Reference 表。
【免费下载链接】awesome-codex-skillsA curated list of practical Codex skills for automating workflows across the Codex CLI and API.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-codex-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考