适用于 Claude SEO 的 Firecrawl 扩展
此技能需要安装 Firecrawl 扩展:
./extensions/firecrawl/install.sh
可用性检查: 在使用任何 Firecrawl 工具之前,请通过检查 firecrawl_scrape 或任何 Firecrawl 工具是否可用来验证 MCP 服务器是否已连接。如果工具不可用,请告知用户扩展未安装,并提供安装说明。
快速参考
| 命令 | 用途 |
|---|---|
/seo firecrawl crawl <url> | 全站爬取并提取内容 |
/seo firecrawl map <url> | 发现站点结构(仅 URL,快速) |
/seo firecrawl scrape <url> | 单页面抓取(含 JS 渲染) |
/seo firecrawl search <query> <url> | 在已爬取站点内搜索 |
命令
crawl -- 全站爬取
从指定起始 URL 开始爬取整个网站。返回所有发现页面的页面内容、元数据和链接。
MCP 工具: firecrawl_crawl
参数:
url(必须):要爬取的起始 URLlimit:最大爬取页数(默认:100,最大:500)maxDepth:从起始 URL 开始的最大链接深度(默认:3)includePaths:要包含的 glob 模式数组(例如:["/blog/*"])excludePaths:要排除的 glob 模式数组(例如:["/admin/*", "/api/*"])scrapeOptions.formats:输出格式 --["markdown", "html", "links"]
SEO 使用模式:
- 全面审计爬取:爬取全站,提取所有页面供子代理分析
- 分区聚焦爬取:使用
includePaths仅审计/blog/*或/products/* - 死链检测:以
["links"]格式爬取,检查所有 href 是否返回 404 - 内容清单:大规模提取所有页面标题、元描述和 H1
- SPA/JS 渲染站点:Firecrawl 渲染 JavaScript,解决 Issue #11 问题
/seo audit 编排示例:
1. firecrawl_map(url) -> 获取所有 URL(快速,无内容)
2. 筛选出最重要的 50 个页面(首页、关键板块)
3. firecrawl_crawl(url, limit=50) -> 获取完整内容
4. 将内容传递给 seo-technical、seo-content、seo-schema 代理
成本意识:
- 免费版:500 积分/月
- 1 积分 = 1 个页面爬取或抓取
- Map 操作更便宜(每个发现的 URL 消耗 0.5 积分)
- 大型爬取前务必告知用户预估积分使用量
map -- 站点结构发现
发现网站上的所有 URL,但不获取内容。快速且节省积分。
MCP 工具: firecrawl_map
参数:
url(必须):要映射的网站 URLlimit:最大可发现 URL 数(默认:5000)search:可选的搜索词,用于过滤 URL
SEO 使用模式:
- 站点地图对比:映射站点,将发现的 URL 与 XML 站点地图进行对比
- 孤立页面检测:站点地图中存在但任何页面都未链接的 URL
- 爬取预算分析:可索引页面总数与首页链接的页面数对比
- URL 模式分析:识别 URL 结构模式、重复内容、参数膨胀
- 预审计发现:先运行 map,然后在关键板块上进行定向爬取
输出: URL 数组。呈现方式如下:
站点:example.com
发现的页面:342
URL 模式分类:
/blog/* - 128 页(37%)
/products/* - 89 页(26%)
/category/* - 45 页(13%)
/pages/* - 32 页(9%)
/(根页面) - 48 页(14%)
scrape -- 单页面深度抓取
使用完整的 JavaScript 渲染抓取单个页面。比 fetch_page.py 更彻底,因为它会执行 JS 并等待动态内容。
MCP 工具: firecrawl_scrape
参数:
url(必须):要抓取的页面 URLformats:输出格式 --["markdown", "html", "links", "screenshot"]onlyMainContent:去除导航/页脚/侧边栏(默认:true)waitFor:要等待内容的 CSS 选择器或毫秒数timeout:请求超时时间,单位为毫秒(默认:30000)actions:抓取前的浏览器操作(click、scroll、wait)
SEO 使用模式:
- SPA 内容提取:抓取 JS 渲染的 React/Vue/Angular 页面
- 动态内容审计:包含折叠下方懒加载内容的页面
- 付费墙/登录检测:识别位于身份验证墙后的内容
- 主体内容提取:使用
onlyMainContent进行干净的 E-E-A-T 分析 - 截图捕获:使用
screenshot格式进行视觉分析
何时使用 scrape 与 fetch_page.py:
| 场景 | 使用 |
|---|---|
| 静态 HTML 页面 | fetch_page.py(无 API 成本) |
| JS 渲染的 SPA | firecrawl_scrape(渲染 JS) |
| 需要响应头 | fetch_page.py(返回头部) |
| 需要干净 Markdown | firecrawl_scrape(更好的提取效果) |
| 被限速/屏蔽 | firecrawl_scrape(处理反爬机制) |
search -- 站点内搜索
在网站内搜索特定内容。无需爬取所有内容即可找到与主题相关的页面。
MCP 工具: firecrawl_search
参数:
query(必须):搜索查询url(必须):要在其中搜索的网站limit:最大结果数(默认:10)scrapeOptions.formats:匹配页面的输出格式
SEO 使用模式:
- 内容缺口验证:在站点上搜索某个关键词以检查是否存在相关内容
- 内链机会:找到提及某个主题的页面,这些页面可以相互链接
- 重复内容检测:搜索关键短语以发现近似重复内容
- 竞争对手内容研究:搜索竞争对手网站上特定主题的内容
跨技能集成
与 seo-audit(全面审计)集成
当 Firecrawl 在 /seo audit 期间可用时:
- 使用
firecrawl_map发现所有站点 URL - 与 XML 站点地图(seo-sitemap)对比,查找孤立/缺失页面
- 选择最佳页面进行深度分析
- 将爬取内容提供给所有子代理(技术、内容、架构、地理)
- 报告总可爬取页面数、URL 模式和爬取深度
与 seo-technical 集成
- 死链检测:爬取所有内部链接,检查是否有 404
- 重定向链映射:追踪所有重定向,标记超过 2 跳的链
- 混合内容检测:检查 HTTPS 页面上的 HTTP 资源
- 规范 URL 验证:将规范 URL 与实际 URL 进行对比
与 seo-sitemap 集成
- 站点地图覆盖率:已爬取页面中出现在站点地图中的百分比
- 孤立页面:爬取发现但站点地图中缺失的页面
- 过时的站点地图条目:返回 404/410 的站点地图中的 URL
与 seo-content 集成
- 内容提取:将干净的 Markdown 提供给 E-E-A-T 分析
- 内容过薄检测:大规模识别字数少于 300 的页面
- 重复内容:跨页面比较内容,查找近似重复
与 seo-schema 集成
- 架构提取:从所有爬取页面中提取 JSON-LD
- 架构覆盖率:具有结构化数据的页面百分比
- 架构验证:批量验证提取的架构数据
错误处理
| 错误 | 原因 | 解决方案 |
|---|---|---|
FIRECRAWL_API_KEY not set | MCP 未配置 | 运行 ./extensions/firecrawl/install.sh |
402 Payment Required | 积分耗尽 | 在 firecrawl.dev/app 检查使用情况,升级套餐 |
429 Too Many Requests | 请求频率受限 | 等待 60 秒,减少爬取并发数 |
408 Timeout | 页面渲染过慢 | 增加 timeout,尝试不使用 JS 渲染 |
403 Forbidden | 站点阻止爬取 | 检查 robots.txt,可能需要跳过此站点 |
优雅降级: 如果 Firecrawl 不可用,请告知用户并建议:
- 使用
fetch_page.py进行单页面分析(无 API 成本) - 使用
WebFetch工具进行基本 HTML 检索 - 安装 Firecrawl:
./extensions/firecrawl/install.sh