关于 seo-firecrawl
seo-firecrawl 是面向 SEO 从业者的工作流技能,可通过 Firecrawl 抓取页面、映射 URL、爬取网站或站内搜索,并将结果整理为页面数据、元数据、链接和摘要。
主要功能
- 01抓取页面正文与元数据
- 02映射网站中的 URL
- 03按范围控制爬取页面
- 04在指定网站内搜索
- 05将结果整理为文件
适用场景
- 01检查页面 HTML 和 JSON-LD
- 02爬取前盘点网站 URL
- 03审计已爬取页面的元数据
- 04在网站内查找相关页面
MCP 相关
需要连接 firecrawl-mcp MCP 服务,并根据选择的模式调用抓取、映射、爬取或搜索工具。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ seranking/ seo-skills --skill seo-firecrawl安装后在 Claude Code 中输入/seo-firecrawl确认已加载。
附带文件references/preflight.md
详细介绍
示例输出:examples/seo-firecrawl-stripe-com-20260514/scrape/FIRECRAWL.md
Firecrawl 编排器
直接对接 Firecrawl MCP,用于处理数据驱动的 SE Ranking 技能无法覆盖的任务。适用于以下情况:
- 需要原始 HTML、
<head>元数据、JSON-LD 或 WebFetch 的 Markdown 转换会剥离的 JS 渲染后 DOM。 - 需要获取某个域名下的所有 URL 列表,但不需要逐个抓取。
- 需要爬取网站并审核每个页面的元数据。
- 需要在已知域名内搜索。
- 更高层级的技能(
seo-page、seo-schema、seo-content-audit等)将你作为子步骤调用。
前提条件
- 必需:
firecrawl-mcpMCP 服务。如果mcp__firecrawl-mcp__firecrawl_scrape不可用,则中止并提供安装命令——在此插件仓库中运行bash extensions/firecrawl/install.sh,并提供 firecrawl.dev 注册 URL(免费套餐每月 500 积分)。不要尝试备用方案;此技能专用于 WebFetch 无法覆盖的情况。 - 用户提供:目标 URL 或域名,以及可选的模式(
scrape/map/crawl/search)。如果未指定模式,则根据输入形式推断(单个 URL →scrape,单个域名 →map)。
流程
- 预检。 确认
firecrawl-mcp已连接。如果未连接,提供安装命令并停止。 - 选择模式。 将用户意图归入以下模式之一:
scrape— 单个 URL,获取完整数据(用户提供一个 URL 时的默认模式)。map— 单个域名,仅列出 URL(低成本初步探查)。crawl— 单个域名,抓取发现的每个页面(成本较高;需明确确认)。search— 在某个域名内查询。
- 估算成本并确认。
scrape(1 积分),map(每个发现的 URL 约 0.5 积分;范围不明确时,先用map估算),crawl(每个抓取的页面 1 积分),search(每个返回的结果 1 积分)。- 对于
crawl,以及预期 URL 数量超过 50 个的map,提供费用估算,并在调用前要求用户明确同意。 - 始终通过 Firecrawl 响应元数据中的
metadata(creditsUsed/creditsRemaining)隐式读取剩余积分。
- 执行。 调用对应的
mcp__firecrawl-mcp__firecrawl_*工具。scrape:默认传入formats: ["markdown", "html"](Markdown 用于正文,HTML 用于<head>+ JSON-LD)。仅当交付内容会实际展示截图时,才添加formats: ["screenshot"]。对于 SPA,传入waitFor: 2000(或 CSS 选择器),以捕获 JS 渲染后的 DOM。默认设置onlyMainContent: true,以去除导航栏和页脚等干扰内容;仅在用户明确要求时覆盖此设置。map:默认设置limit: 500(硬上限)。传入excludePaths: ["/admin/*", "/api/*", "/wp-admin/*", "/feed/*"]作为合理的默认值。crawl:默认设置limit: 50(默认上限),硬上限为limit: 200。始终传入excludePaths进行筛选。如果任务异步返回,则轮询firecrawl_check_crawl_status。search:默认设置limit: 20。
- 解析并整理输出。 不要直接输出原始 API 响应。按模式整理:
scrape→RAW.md(Markdown 正文)、META.md(og / twitter / canonical / robots / headers,以及带哈希的已解析 JSON-LD@type列表)、links.csv,可选的screenshot.png。map→URLS.md,按模式分组列出(例如,/blog/* — 128 (37%)、/products/* — 84 (24%)),以及urls.csv。crawl→ 在pages/{slugified-url}/下为每个页面建立文件夹,包含RAW.md+META.md;另在顶层创建INDEX.md,汇总每个页面(URL、状态、关键信号)。search→MATCHES.md,包含匹配摘录和按相关性排序的 URL。
- 在根目录生成
FIRECRAWL.md:目标、模式、已用积分、关键发现(最多 5 条)、待处理事项、推荐的下一项技能。
输出格式
文件夹 seo-firecrawl-{slug}-{YYYYMMDD}/:
模式 = scrape
seo-firecrawl-{slug}-{YYYYMMDD}/
├── RAW.md (markdown body)
├── META.md (og / twitter / canonical / robots / headers + parsed JSON-LD)
├── links.csv (every <a href> on the page)
├── screenshot.png (optional; only if requested)
└── FIRECRAWL.md (synthesis + handoff payload)
模式 = map
seo-firecrawl-{slug}-{YYYYMMDD}/
├── URLS.md (pattern-grouped URL list)
├── urls.csv (every URL with discovery depth, if available)
└── FIRECRAWL.md
模式 = crawl
seo-firecrawl-{slug}-{YYYYMMDD}/
├── INDEX.md (every page + status code + key signals)
├── pages/
│ ├── {slug-1}/RAW.md
│ ├── {slug-1}/META.md
│ ├── {slug-2}/RAW.md
│ └── ...
└── FIRECRAWL.md
模式 = search
seo-firecrawl-{slug}-{YYYYMMDD}/
├── MATCHES.md (hit excerpts + URLs ranked by relevance)
└── FIRECRAWL.md
FIRECRAWL.md 遵循以下结构:
# Firecrawl: {target}
> Run dated {YYYY-MM-DD} · Mode: {scrape | map | crawl | search} · Credits used: {n}
## Summary
{One-paragraph what-came-back. Example: "Scraped https://example.com/article. og:title and og:image present, JSON-LD Article schema with author + datePublished. 12 outbound links. Page is server-rendered (no JS-render divergence). Robots: index,follow."}
## Key findings
1. {Finding anchored in concrete data}
2. ...
5. ...
## Open loops
- {What this run did NOT answer}
- ...
## Recommended next step
{One of: `seo-page` (when a single URL was scraped and now wants performance analysis) | `seo-schema` (when JSON-LD audit needs follow-up generation) | `seo-technical-audit` (when crawl revealed broken pages) | `seo-content-audit` (when crawl produced a corpus to audit) | `seo-drift baseline` (when the user wants to track this URL over time) | "this completes the user's ask".}
## Handoff payload
- **Produced by:** seo-firecrawl
- **Target:** {url or domain}
- **Mode:** {scrape | map | crawl | search}
- **Credits used:** {n}
- **Key findings:** {5 bullets — e.g., "twitter:card present (summary_large_image)", "JSON-LD types: Article + Organization + BreadcrumbList", "robots: index,follow", "canonical self-referencing", "404s: 0 of 50 pages crawled"}
- **Open loops:** {what this didn't answer}
- **Recommended next skill:** {seo-page | seo-schema | seo-technical-audit | seo-content-audit | …} — {one-line why}
提示
- 免费套餐每月 500 cr。
map每个 URL 消耗 0.5 cr;scrape每次消耗 1 cr;crawl每页消耗 1 cr。请提前说明费用;如果单次运行会消耗超过 100 个积分,请发出警告。 scrape默认使用onlyMainContent: true,以去除导航栏和页脚等噪声。只有用户明确要求完整页面 DOM 时才覆盖此设置。- 对于会延迟加载内容的 SPA,请使用
waitFor(CSS 选择器或毫秒数)。2000ms 是合理的默认值;选择器比等待时间更可靠。 - 当爬取范围不明确时,先运行
firecrawl_map,再运行firecrawl_crawl——先发现页面,再决定要爬取什么,然后再爬取。这样可以节省积分。 includePaths/excludePaths能大幅降低爬取费用。始终默认传入excludePaths: ["/admin/*", "/api/*", "/wp-admin/*", "/feed/*"]。- 除非交付内容会明确使用截图,否则不要请求
formats: ["screenshot"]。 这会使每页费用翻倍。 - 不要使用
firecrawl_extract或firecrawl_deep_research。 两者都与我们自己的大模型分析重叠;firecrawl_extract在免费套餐中的定价不透明;并且两者都明确不属于seo-skills的范围。 - Cloudflare / 反机器人机制: 一些网站(尤其是电商和银行网站)会屏蔽 Firecrawl 的抓取工具。请清楚地呈现错误;绕过 WAF 并非此技能的目标。
- 子步骤用法。 从其他技能(
seo-page、seo-schema等)调用时,不要生成FIRECRAWL.md综合结果——调用方需要原始的META.md/RAW.md。如果调用方需要原始的urls.csv,也跳过模式 2 的URLS.md摘要。 - 当你需要原始 HTML,且没有更具体的技能可用时,这是入口。 如果有更合适的技能——针对单个 URL 的关键词 / 流量判断使用
seo-page,JSON-LD 工作使用seo-schema,全站爬取问题使用seo-technical-audit——请改用这些技能。它们会自动协调 Firecrawl 和 SE Ranking 数据。
配合使用
- 前置技能: 无(入口),或作为子步骤由其他技能调用。
- 后续技能:
seo-page— 抓取单个 URL 后,需要进行关键词 / 流量判断时使用。seo-schema— JSON-LD 审核发现需要生成内容来填补的缺口时使用。seo-technical-audit— 大规模爬取发现失效页面或 noindex 问题时使用。seo-content-audit— 爬取生成了需要进行 E-E-A-T 审核的内容集时使用。seo-drift baseline— 用户想要长期跟踪此 URL 或域名时使用。
评论
支持 Markdown