mcpField
O
Open SEO Crawler

Open SEO Crawler

本地服务
github.com商业与营销726 天前更新

关于 Open SEO Crawler

Open SEO Crawler 是面向 SEO 专业人员、开发者和站点所有者的自托管网站爬虫与技术 SEO 审计工具。它还会检查搜索及 AI 爬虫对抽样页面的访问,并通过 MCP 和命令行提供爬取数据操作。

主要功能

  1. 01技术 SEO 爬取与审计
  2. 02检查搜索及 AI 爬虫访问
  3. 03检测仅由 JavaScript 呈现的内容
  4. 04批量报告与 XLSX 导出
  5. 05保存爬取记录并按严重度汇总
  6. 06通过 MCP 服务和命令行操作

适用场景

  1. 01审计网站的技术 SEO 问题
  2. 02检查 AI 爬虫能否读取页面
  3. 03通过 AI 客户端启动并查看爬取
  4. 04比较已保存审计的爬取结果

MCP 相关

其 MCP 服务允许 MCP 客户端启动和跟进爬取、读取摘要、按问题筛选页面、查看页面及入链、比较爬取结果、运行 AI 爬虫检查并导出 XLSX 报告。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbopen-seo-crawler-mcp.mcpb1.0.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Open SEO Crawler:免费 SEO 爬虫、网站审计与 AI 爬虫检查器(可自托管)

License: MIT Platform: Linux · macOS · Windows Python 3.10+

Open SEO Crawler 是一款可在本地运行的免费开源 SEO 爬虫:这是一款可自托管的网站 SEO 爬虫和网站审计工具,可抓取任意网站并检查技术 SEO 问题。它快速、支持并发且能识别 CMS,可直接替代 Screaming Frog、Sitebulb 和 Ahrefs Site Audit,无需账户、API 密钥或云服务,也没有 URL 数量限制。

它还是一款 AI 爬虫检查器。 AI 搜索和 Google 能读取您的网页吗?每次抓取后,都会抽取部分网页,分别以 Googlebot、Bingbot、Applebot 以及所有公开用户代理标识的 AI 爬虫(GPTBot、OAI-SearchBot、ChatGPT-User、PerplexityBot、CCBot)发起请求。如果爬虫访问某个网页时遭到拦截、质询、重定向,或收到内容较少的版本,该网页就会被标记;仅在运行 JavaScript 后才出现的文本也会被标记。抓取完成后,Use with AI 按钮会将结果整理成摘要和现成的提示词,供您粘贴到任意 AI 助手中;也可以提供一条设置提示词,将您的 AI 应用连接到爬虫,让它自行执行抓取。

您的 AI 助手可以操控它。 代码库内置了 MCP 服务和命令行工具,因此 Claude Code、Claude Desktop、Cursor 等 MCP 应用(或任何脚本)无需打开浏览器,就能启动抓取、读取问题并查看任意网页。爬虫本身不会调用 AI:是您的助手在调用爬虫。进行设置。

专为 SEO 专业人士、Web 开发人员和网站所有者打造,帮助您在自己的设备上完成真正的技术 SEO 审计。可将其用作单站点免费 SEO 爬虫,也可用于持续抓取您整个网站组合中的各个网站。

由一线 SEO 从业者 Puneet Singh 开发。有问题、想法或 Bug 想当面讨论?欢迎通过 LinkedIn 联系。

→ 在 Linux、macOS 或 Windows 上一行命令即可安装。系统启动时自动运行,每日自动更新。完成后,浏览器会打开 http://localhost:5002/。

抓取摘要:按严重程度对每个问题进行分组,并显示受影响页面的数量

Bot Readability:Googlebot、Bingbot、Applebot 和 AI 爬虫分别能从抽样页面中获取哪些内容

对 books.toscrape.com 进行的 100 页测试抓取;这是一个公开的网页抓取测试站点。

对比情况

Open SEO CrawlerScreaming Frog(免费版)Screaming Frog(付费版)SitebulbAhrefs Site Audit
URL 数量限制无限制500无限无限按额度计费
价格免费,MIT免费£199 / 年$13.50+ / 月$129+ / 月
可自托管✅✅✅✅❌ 云端
会向外部服务器发送数据❌❌❌❌✅
自动更新✅ 每日 + 开机时❌ 手动❌ 手动❌ 手动不适用
开源✅❌❌❌❌
适配 CMS 的预设✅ 10 种 CMS❌部分支持部分支持部分支持
无头 JS 渲染✅ 可选✅ 付费版✅✅✅

配套工具:Chrome SEO 侧边栏

爬虫会抓取整个网站。对于你当前打开的单个页面,可以使用同一开发者推出的免费 Chrome 扩展 SEO Side Panel。它会在你访问的每个页面旁保持打开,并列出每项问题及其修复方法。

  • AI 爬虫会遗漏的内容。 将服务端发送的原始 HTML 与渲染后的页面并排显示。GPTBot、ClaudeBot 和 PerplexityBot 不会运行 JavaScript,因此它们看不到任何仅在水合后出现的内容。
  • 标题和元描述按像素衡量, 而非按字符数。
  • JSON-LD 错误会按代码块和行号指出, 并以通俗易懂的文字说明。
  • 链接状态: 页面上的每个链接都会标记为 200、重定向或 404。

无需账号、API 密钥,也不会收集遥测数据。先在这里抓取网站,找到存在问题的页面,再用 Chrome 打开其中一个,查看具体问题。

新增内容(近期更新)

  • 两种 AI 使用方式:现在点击顶部栏按钮后,可以选择一种方式。粘贴简报 会将抓取结果复制为 Markdown 简报,供任意 AI 聊天使用。连接 AI 应用 会提供设置提示词,其中包含这台计算机的准确命令和路径:将其粘贴到能够运行命令的 AI 应用中,该应用就会自行添加 MCP 服务。也可以复制命令和设置块,手动完成设置。
  • 外观更简洁,借鉴大家熟悉的爬虫工具:参考桌面端和托管爬虫进行了调整。采用浅灰色画布、白色面板、蓝色点缀,全程使用句首字母大写风格,严重程度标记采用 Lighthouse 风格;Summary 采用审计概览式布局(按状态统计已抓取页面、按严重程度统计存在问题的页面、抓取详情、问题表格);普通的 200 状态码不带徽标,只有重定向和错误才显示徽标;悬停时显示行操作;深色模式采用中性灰色。开始抓取后,设置栏会自动折叠(点击顶部栏的 Settings 可重新展开),无论设置内容有多长,Start crawl 都会保持可见。
  • 抓取进度和实时 Summary:顶部栏下方会显示抓取进度(已抓取页面数占已抓取与排队页面总数的比例,上限为页面数量限制)、队列、已用时间和剩余时间估算。新抓取会在 Summary 页面打开,并随着页面到达逐步填充内容。
  • 现在会检查通过重定向到达的页面:爬虫会将跟随重定向后到达的页面保存在最终落地页面下,但此前会跳过该页面的内容检查,因此发生重定向的起始 URL(例如从 example.com 重定向到 www.example.com,或重定向到语言目录)始终不会检查标题、meta 描述、H1、canonical 或 Open Graph。现在会检查这些内容,而且这些页面也会纳入重复内容报告、站点地图对比和导出的站点地图。
  • 更准确的 AI 简报:简报会写明起始 URL 及其重定向目标,并说明抓取是否在遍历完所有链接页面之前就已停止(因此不会把从未到达的 URL 称为孤立页面);如果某个问题影响了几乎所有页面,会列出没有该问题的少数页面;标题中的 | 会按原样保留;导出日期会使用你所在的时区。站点地图报告中的 在站点地图中,未抓取 列表现在会显示每个 URL 被多少已抓取页面链接。
  • MCP 服务和命令行:将 Claude Code、Claude Desktop 或其他 MCP 应用连接到爬虫,也可以使用 osc.py 编写脚本。启动并跟踪抓取、以数据形式读取 Summary、按问题筛选页面、查看带有入链的单个页面、对比两次抓取、对任意 URL 运行 AI 爬虫检查、导出为 .xlsx。通过这些方式启动的抓取会运行与浏览器相同的检查,并显示在 Load 下。使用 Python 标准库,无需额外安装任何内容。请参阅从 AI 助手使用(MCP 或命令行)。
  • AI 爬虫检查器(机器人可读性):每次抓取后,都会以浏览器以及 Googlebot、Bingbot、Applebot 和公开用户代理信息的 AI 爬虫(OAI-SearchBot、PerplexityBot、ChatGPT-User、GPTBot、CCBot)请求抽样页面。系统会标记拦截、CDN 验证挑战、重定向、标题或文本差异、内容较少的页面、针对特定爬虫的 noindex,以及仅在 JavaScript 运行后才存在的内容和内容少于桌面版的移动页面。默认检查 10 个页面。
  • AI 简报(现位于 使用 AI 下):点击一次即可将抓取结果转换为精简的 Markdown 简报,并附上现成提示词,可粘贴到任意 AI 助手中,生成按优先级排序的修复清单。问题分组方式与 Summary 相同,并限制 URL 列表长度,让简报适合聊天窗口。爬虫本身不会调用 AI,也不会向任何地方发送内容。
  • 所有报告都可导出:现在可在所有报告标签页(All Titles、Redirect Chains、Hreflang、Deep Pages 等)中使用 Export view;.xlsx 工作簿也会为每个包含数据行的报告添加一个工作表。
  • 更安全、更稳定:已抓取的标题、URL 和 robots.txt 行不再能在应用中运行脚本;其他网站无法再触发 Update 或 Restart;Update 按钮现在会在 systemd 和 launchd 下正确重启;站点地图分析也已恢复正常。
  • 格式错误的链接 href 检测:不含方案的 href 中若包含原始空格(例如直接粘贴到链接中的街道地址或 Google Maps Plus Code:<a href="7FG4+8Q Springfield">Directions</a>),过去会相对于每个包含该链接的页面解析,导致抓取结果中出现大量虚假的 404。一个损坏的页脚链接在 300 页的网站上就会产生约 300 条虚假 404 记录。现在系统会跳过此类链接,并在每个页面上报告一次 格式错误的链接 href 问题,同时注明有问题的文本。
  • JS 与无 JS 对比模式:启用 Render JS 后,勾选 与非 JS HTML 对比,即可使用两种模式抓取每个页面(Playwright 渲染版和原始 HTML)。逐页差异会准确显示 AI 爬虫(GPTBot、ClaudeBot、PerplexityBot、CCBot)无法看到的内容,因为它们大多不会执行 JavaScript。
  • 共享实例支持:通过 SITE_CRAWLER_EXTRA_CRAWL_DIRS 将已保存抓取列表指向其他文件夹,让办公室中的一个实例显示多个工具的抓取结果;通过 SITE_CRAWLER_USER_MAP 按 IP 标明每次抓取的发起者。
  • 抓取预算页面:扫描主页和各个栏目页面,按查询参数归类所有发现的 URL,识别抓取预算陷阱(Elementor ?e-page- AJAX 分页、分面筛选、排序/跟踪/会话参数),并生成可直接粘贴的 robots.txt Disallow 规则。该页面会在旁边显示站点地图的实际页面数与虚假的参数 URL 数量,让浪费的抓取预算一目了然。
  • 软 404/无限 URL 陷阱检测:每次抓取后,系统会发送两次探测请求,检查服务器是否会对不可能存在的 URL 返回 200(根目录下的 /<token>/,以及真实页面下的嵌套路径)。如果返回 200,说明服务器会以软 404 处理请求,并生成无限可抓取的 URL 空间;系统会在问题侧边栏中将其标为红色,并提供修复建议。
  • 缺少 Alt 的图片报告:以图片为中心的批量报告,每张缺少替代文本的图片单独占一行,并列出嵌入该图片的所有页面。
  • robots.txt AI 爬虫拦截检测:如果 robots.txt 拦截 AI 爬虫(GPTBot、ClaudeBot、PerplexityBot、Google-Extended、CCBot、Bytespider 等 20 多种),导致 ChatGPT、Perplexity 或 Google AI Overviews 无法读取或引用该网站,系统会将其标为红色错误;如果经典搜索引擎(Googlebot/Bingbot)遭到拦截,也会标记出来。还会检测 Cloudflare Content-Signal: ai-train=no 退出设置。结果会显示在主页对应的行中,并列于问题侧边栏的 AI 爬虫遭到拦截/搜索引擎遭到拦截 下。
  • 抓取后 Summary 仪表板:抓取完成后自动打开,一目了然地显示按严重程度统计的问题、页面总数、响应代码分布和问题最严重的页面。
  • 批量 SEO 报告:All Titles、All Metas、All H1s、All Canonicals,以及专门的 Duplicate Title/Duplicate Meta/Duplicate H1/Duplicate Body/Multiple H1s/Redirect Chains/Response Codes/Deep Pages/Hreflang 报告。
  • 按严重程度分组的问题视图:根据页面上最严重的问题将页面分为 Errors/Warnings/Info,并按问题类型分组,让你先修复影响最大的问题。
  • 一键自动更新:顶部栏中的版本徽标会检查 GitHub 上是否有更新的提交,并提供一键执行 git pull + restart + page reload,让你始终使用最新代码。
  • 深色模式切换:可由每位用户单独选择(选择会保存在 localStorage 中),并正确覆盖系统的 prefers-color-scheme 设置。
  • 已保存的抓取列表:每次抓取都会自动保存;可在 Load Saved 对话框中重新打开任意历史抓取。同一局域网上多个工具的抓取发起者名称均可正确显示。
  • 智能处理 noindex/规范化页面:这类页面不再增加 Error 计数,也不会被批量报告标记为重复内容。

功能

抓取
  • 并发抓取:默认使用 5 个工作线程,可配置为 1–20 个。针对每个主机的礼貌性限速可确保抓取速度快,同时不超过目标速率限制。
  • CMS 检测 + 一键推荐:自动检测 Shopify、WordPress(+ Yoast / Rank Math)、Webflow、Wix、Squarespace、Kajabi、Ghost、Drupal、HubSpot、Joomla。根据各平台应用合理的排除模式和 JS 渲染设置。
  • 智能重试:遇到 429 / 5xx / 连接错误时采用指数退避。遵循 Retry-After。当服务器开始限速时,按主机自适应地将退避时间加倍;服务器恢复后逐渐缩短。
  • 站点地图分析:获取 sitemap.xml 并与抓取结果交叉核对:标记站点地图中缺失的页面、孤立页面、仅存在于站点地图中的 URL、站点地图中的非 200 状态页面,以及站点地图中的重定向。
  • 近似重复内容:基于分片的 Jaccard 相似度会标记相似度达到 90% 以上的页面对(可调整为 80 / 85 / 90 或自定义值)。
  • 遵循 robots.txt(也可选择忽略)。
  • Glob 包含 / 排除模式:*?variant=*、*/cart/* 等。
  • 可选的 Playwright JS 渲染:适用于 SPA 网站(React、Vue、Wix),需单独安装。勾选 与非 JS HTML 比较后,每个页面都会以两种模式抓取,并通过差异标记非 JS 抓取工具无法看到的内容。
  • 内置爬虫陷阱防护:在错误链接和无限 URL 空间影响报告前将其过滤,无需配置:
    • 跳过非页面路径(/feed/、/wp-json/、/wp-admin/、/cdn-cgi/、站点地图 XML、购物车 / 结账 AJAX 端点)
    • 重复片段防护:拒绝由相对路径导航 href 生成的 /our-team/our-team/ 风格 URL
    • 页面构建器的分页 / 筛选参数(?e-page-*、?e-filter-* Elementor AJAX、?infinity Jetpack)不会加入队列(避免经典的“在 9k 页面的网站上排入 26k 个 URL”问题)
    • 未使用 mailto: 的裸电子邮件地址(<a href="[email protected]">)会被丢弃,不会变成伪造的 /contact/[email protected] URL
    • 粘贴到 href 中的纯文本(地址、Google Maps Plus Codes)会被报告为 格式错误的链接 href 问题,而不会在每个页面下生成虚假的 404
    • 抓取后进行软 404 探测,以检测对不存在的 URL 返回 200 的服务器
AI 爬虫检查器(机器人可读性)

Googlebot、Bingbot 和 Applebot 会渲染 JavaScript;大多数 AI 爬虫并未表示自己会这样做,因此它们读取的是实际提供的 HTML。每次爬取后(默认勾选),都会抽取部分页面进行请求:主页以及每个版块中的一个页面。随后,分别以浏览器和以下每种爬虫的身份请求这些页面,并进行比较。

  • 实时请求使用各运营方公布的用户代理:Googlebot(智能手机和桌面版)、Bingbot、Applebot、OAI-SearchBot、PerplexityBot、ChatGPT-User、GPTBot 和 CCBot。
  • 仅检查 robots.txt:对于未公布用户代理的爬虫(ClaudeBot、Claude-SearchBot、Claude-User),以及并非爬虫的令牌(Google-Extended、Applebot-Extended)。
  • 针对每个页面和爬虫:页面被阻止(403、429、503)、遇到 CDN 挑战、被重定向到其他位置、仅针对该爬虫设置了 noindex、标题、H1、canonical 或文本不同,或者页面内容更少。每个页面都会先以浏览器身份获取两次,因此不会把每次加载都会变化的页面判定为不同。
  • JavaScript:每个抽样页面都会渲染一次,以统计仅在 JavaScript 运行后才出现的字数,并检查是否有脚本移除 HTML 中的 noindex(Google 可能会跳过渲染此类页面)。
  • 优先检查移动版:比较 Googlebot 智能手机版与 Googlebot 桌面版。
  • 每个爬取的页面:检查其所有者文档中说明对 AI 答案有影响的 robots 指令(nosnippet、noarchive 和 Bing Copilot 的 nocache、max-snippet、data-nosnippet),以及仅针对 Googlebot 或 Bingbot 设置的 noindex。

这些请求会从你的机器发出,并使用各爬虫的用户代理。CDN 和防火墙会通过 IP 地址或签名识别真实爬虫,因此检查结果可能与真实爬虫获取的内容不同,两个方向都有可能:如果发现问题,请将其作为线索,检查 CDN 或防火墙设置;并使用 Search Console 中的 URL 检查实时测试来确认 Googlebot 的情况。请在自己拥有或负责审计的网站上使用此功能。

每个页面的检查项
  • 标题:缺失、过长(>60 个字符)、过短、跨页面重复、与 H1 相同
  • 元描述:缺失、过长(>160 个字符)、过短、跨页面重复
  • H1 标签:缺失、存在多个 H1、与标题相同、跨页面重复
  • Canonical 标签:缺失、指向其他位置(已规范化)、自引用
  • Schema.org 结构化数据:检测 JSON-LD 和 microdata(itemtype)标记中的数据是否存在及其类型
  • Open Graph + Twitter Card:缺少 og:title、og:image、twitter:card
  • 内容:内容过少(<200 个词)、正文近似重复(Jaccard 相似度)
  • 性能:响应时间过长(>3 秒)
  • 重定向:区分实际重定向与尾部斜杠 / www / HTTPS 规范化(单独分类,避免尾部斜杠 301 污染重定向链报告)
  • 重定向链:标记多跳重定向,并列出完整跳转列表
  • HTTP 错误:4xx / 5xx,包含重试次数
  • 可索引性:meta robots 或 X-Robots-Tag 中存在 noindex
  • Hreflang:提取并验证,标记缺失的返回标签
  • 分页:抓取 /page/N/、?page=N、?paged=N 及 ?_page=N 等带构建器前缀的变体,但跳过 SEO 问题检查(避免分页归档缺少元数据时出现误报)
  • 移动设备友好性:检查 viewport 元标签是否存在
  • 混合内容:HTTPS 页面加载 HTTP 资源
  • URL 规范性:大写字母、下划线、空格、长度 >115 个字符、跟踪参数
  • 格式错误的链接 href:将粘贴到 href 中的纯文本(地址、Plus Code)按页面标记,而不是作为虚假 URL 抓取
  • 图片:统计缺少 alt 属性的图片数量(装饰性图片的 alt="" 不会被扣分)
  • 安全标头:HTTPS、HSTS、CSP、X-Frame-Options、X-Content-Type-Options
  • 深层页面:距离主页超过 N 次点击的 URL(可配置)
  • 软 404 / URL 陷阱:抓取后探测返回 200 状态码的不存在 URL(根路径和嵌套路径)的服务。这些 URL 会形成可无限抓取的 URL 空间;重定向以及 4xx/5xx 探测响应均视为正常
批量报告(侧边栏)

每份报告都可导出为 XLSX,方便交给内容团队或开发人员:

  • 所有标题 / 所有元描述 / 所有 H1 / 所有 Canonical:每个页面一行
  • 重复标题 / 重复元描述 / 重复 H1 / 重复正文:按重复值分组,URL 已规范化(不会因尾部斜杠产生误报)
  • 多个 H1:包含 2 个或更多 H1 标签的页面,列会动态显示为 H1(1) / H1(2) / H1(N)
  • 重定向链:通过 2 次或更多跳转到达的页面,包含完整链路
  • 响应代码:按状态代码细分
  • 深层页面:距离主页 N 次或更多点击的 URL
  • 缺少 Alt 的图片:每张缺少 alt 文本的图片一行,并列出嵌入该图片的所有页面
  • Hreflang:提取并验证,检查跨页面一致性
  • 严重程度视图:所有错误 / 所有警告 / 所有信息,各视图会隐藏无关列
抓取预算分析
  • 按需抓取预算页面(顶部栏):无需完整抓取。扫描主页和各分区页面,按查询参数归类所有已发现的 URL,并识别哪些参数属于抓取预算陷阱、Elementor ?e-page- AJAX 分页、分面筛选、排序、跟踪和会话 ID。
  • 可直接粘贴的 robots.txt 规则:生成用于屏蔽每种陷阱的准确 Disallow 行,并说明每种陷阱的情况以及为何适合用 robots.txt 修复。
  • 直观呈现的浪费:将站点地图中的实际页面数量与虚假参数 URL 数量并列显示,让你了解有多少抓取预算浪费在不应存在的 URL 上。
  • 软 404 / 无限 URL 陷阱探测:每次抓取后自动运行;结果显示在问题侧边栏的红色 URL 陷阱类别中,并附有详情面板和修复建议。
自动更新 + 版本徽标
  • 顶栏版本徽标会显示当前构建版本、轮询 GitHub 检查是否有更新的提交,并在 master 分支有更新提交时切换为 “有可用更新”。
  • 一键即可端到端运行 git pull + restart service + reload page。无需 SSH,也无需手动执行命令。
  • 后台每日自动更新(Linux systemd timer / macOS LaunchAgent / Windows Task Scheduler)让所有人始终使用最新版本,无需操心。如果拉取导致应用故障,会自动回滚。
UI
  • 爬取后摘要仪表板会自动打开,显示严重程度计数、主要问题和爬取统计数据。
  • 严重程度侧边栏:所有页面 / 错误 / 警告 / 信息,每项都显示实时计数。
  • 问题分组:点击任一严重程度,即可按类型查看分组问题,并在每组下列出受影响最严重的页面。
  • 页面详情面板:点击任意 URL,即可查看完整的页面元数据、该页面的所有问题、入链(含锚文本)和出链。
  • 深色模式:在顶栏切换,并按用户保存设置。
  • 已保存的爬取记录:每次爬取都会自动保存,可从“加载已保存记录”弹窗重新打开;打开记录时会显示保存日期。
  • 与 AI 配合使用:复制或下载包含可编辑提示词的精简爬取摘要,供任何 AI 助手使用;也可以复制设置提示词,将 AI 应用通过 MCP 连接到爬虫。
  • 顶栏提供站点地图 + XLSX 导出按钮,各点一次即可导出。

快速安装(手动)

需要 Python 3.10+。

git clone https://github.com/puneetindersingh/open-seo-crawler.git
cd open-seo-crawler
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 app.py

在浏览器中打开 http://localhost:5002/。

一行安装:自动启动 + 自动更新(Linux / macOS / Windows)

每个安装程序都会将爬虫注册为后台服务,使其在启动系统或登录时自动运行,并设置每日自动更新程序,从此仓库拉取最新版本(失败时会回滚)。安装到 ~/open-seo-crawler(Windows 上为 %USERPROFILE%\open-seo-crawler)。完成后会自动在浏览器中打开 http://localhost:5002/。

平台安装命令
Linux Mint / Ubuntu / Debian请参阅 Linux 部分
macOS(Intel + Apple Silicon)请参阅 macOS 部分
Windows 10 / 11请参阅 Windows 部分
在 Linux Mint / Ubuntu / Debian 上一行安装

打开终端并粘贴:

curl -fsSL https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install.sh -o install.sh && chmod +x install.sh && ./install.sh

就这么简单。安装完成后,浏览器会打开 http://localhost:5002/。

可选的试运行预检(检查 Python、端口、磁盘和互联网;不会进行任何更改):

curl -fsSL https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install.sh -o install.sh && chmod +x install.sh && ./install.sh --check

安装程序会执行以下操作:

  • 验证前置条件(Python 3.10+、systemd、sudo、磁盘空间、5002 端口空闲、互联网连接)
  • 如果缺少 python3 / python3-venv / git / curl,则通过 apt 安装
  • 支持旧版 Ubuntu/Mint:如果系统自带的 Python 版本低于 3.10(例如 Mint 20.x 使用 Python 3.8),安装程序会添加 deadsnakes PPA,并依次尝试安装 python3.13 → 3.12 → 3.11 → 3.10。如果都无法安装,则自动回退到从源代码编译 Python 3.10.14(约需 5-15 分钟)。
  • 克隆仓库、创建虚拟环境并安装 Python 依赖项
  • 注册 open-seo-crawler.service,使爬虫在每次系统启动时运行
  • 注册 open-seo-crawler-update.timer,使其在每次系统启动 2 分钟后以及每天执行一次 git pull + 重启(出现任何故障时都会自动回滚)
  • 显示访问 URL(http://localhost:5002/ 加上你的局域网 IP);如果你使用的是桌面环境,还会自动打开浏览器
  • 将 URL 保存到 ~/open-seo-crawler/ACCESS_URLS.txt,方便日后查看

安装后可用的命令:

systemctl status open-seo-crawler                  # is it running?
sudo systemctl restart open-seo-crawler            # restart
sudo systemctl disable open-seo-crawler            # stop autostarting on boot
./install.sh --update-now                          # force a git-pull + restart now
systemctl list-timers | grep open-seo-crawler      # when's the next auto-update?
journalctl -u open-seo-crawler-update.service -n 50  # update history
sudo systemctl disable --now open-seo-crawler-update.timer  # turn auto-update off
tail -f /var/log/open-seo-crawler.log              # live app logs
在 macOS 上一行命令安装

适用于 Intel + Apple Silicon,以及 macOS 11 Big Sur 及更高版本。使用 Homebrew + launchd。

打开终端(⌘+Space →“Terminal”)并粘贴:

curl -fsSL https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install-macos.sh -o install-macos.sh && chmod +x install-macos.sh && ./install-macos.sh

预检试运行:

curl -fsSL https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install-macos.sh -o install-macos.sh && chmod +x install-macos.sh && ./install-macos.sh --check

安装程序会执行以下操作:

  • 验证前置条件(macOS、Python 3.10+、磁盘空间、端口 5002 未被占用、互联网连接)
  • 如果未安装 Homebrew,则进行安装(会提示输入密码)
  • 如果未安装,则通过 Homebrew 安装 [email protected] + git
  • 克隆仓库、创建虚拟环境并安装 Python 依赖
  • 注册 io.openseocrawler.app LaunchAgent(登录时启动,崩溃时重启)
  • 注册 io.openseocrawler.update LaunchAgent(登录 2 分钟后运行 + 每天 03:30 运行,并自动回滚)
  • 在默认浏览器中打开 http://localhost:5002/

安装后的常用命令:

launchctl list | grep openseocrawler                                                # is it running?
launchctl kickstart -k gui/$(id -u)/io.openseocrawler.app                           # restart
launchctl bootout gui/$(id -u)/io.openseocrawler.app                                # stop
rm ~/Library/LaunchAgents/io.openseocrawler.app.plist                               # disable autostart
./install-macos.sh --update-now                                                     # force update now
tail -f ~/Library/Logs/OpenSEOCrawler/app.log                                       # live app logs
tail -f ~/Library/Logs/OpenSEOCrawler/update.log                                    # update history
在 Windows 10 / 11 上一行命令安装

使用 winget +“启动”文件夹快捷方式。无需管理员权限。

打开 PowerShell(“开始”菜单 → 输入“powershell” → 按 Enter)并粘贴:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; iwr https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install-windows.ps1 -OutFile install.ps1; powershell -ExecutionPolicy Bypass -File .\install.ps1

预检试运行:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; iwr https://raw.githubusercontent.com/puneetindersingh/open-seo-crawler/master/install-windows.ps1 -OutFile install.ps1; powershell -ExecutionPolicy Bypass -File .\install.ps1 -Check

Tls12 前缀会强制使用现代 TLS 握手。如果没有此前缀,某些机器上的 Windows PowerShell 5.1 会默认使用 TLS 1.0/1.1,导致 GitHub 下载失败并显示 “无法创建安全的 SSL/TLS 通道。”

安装程序会执行以下操作:

  • 验证前置条件(Windows、Python 3.10+、磁盘空间、端口 5002 未被占用、互联网连接)
  • 如果未安装,则通过 winget 安装 Python 3.12 + Git(固定使用 --source winget,避免触发 msstore 源的证书错误)
  • 直接解析实际的 python.exe(通过注册表 + 标准安装目录),避免 Microsoft Store 的 python 别名存根遮蔽刚安装的 Python
  • 将仓库克隆到 %USERPROFILE%\open-seo-crawler,创建虚拟环境并安装 Python 依赖
  • 将辅助脚本(Run.ps1、Stop.ps1、Update.ps1、Autostart.ps1)写入安装文件夹
  • 添加“开始”菜单 + 桌面快捷方式;除非指定 -NoAutostart,还会在“启动”文件夹中添加快捷方式,每次登录时拉取最新代码,然后通过 pythonw.exe 在后台启动应用(不显示控制台窗口)
  • 启动爬虫,并在默认浏览器中打开 http://localhost:5002/

参数:-Check(仅执行预检)、-UpdateNow(拉取代码 + 重新安装依赖)、-NoAutostart(跳过登录时的“启动”快捷方式)。

安装后的常用命令(PowerShell):

& "$env:USERPROFILE\open-seo-crawler\Run.ps1"        # run in this window
& "$env:USERPROFILE\open-seo-crawler\Stop.ps1"       # stop whatever is on port 5002
& "$env:USERPROFILE\open-seo-crawler\Update.ps1"     # pull latest + reinstall deps if changed
Get-Content "$env:USERPROFILE\open-seo-crawler\autostart.log" -Tail 50 -Wait   # tail autostart/update log

若要禁用登录时自动启动,请删除 %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup 中的 Open SEO Crawler (Autostart) 快捷方式。

如果 PowerShell 的执行策略阻止脚本运行,上文所示的 -ExecutionPolicy Bypass 前缀即可解决。无需管理员权限;winget --scope user 和用户级“启动”快捷方式都无需 UAC 即可使用。

JS 渲染(适用于 SPA 和无代码构建器)

React / Vue / Wix / Bubble / 大型 Squarespace 网站需要此功能。开始爬取前勾选 Render JS:首次使用时,爬虫会自行在其 Python 环境中安装 Playwright 和 Chromium(一次性下载,耗时几分钟,进度会显示在角落)。对于菜单由可点击元素组成且没有 <a href> 链接的网站(Bubble 等类似网站),爬虫会在无头浏览器中点击这些元素来访问页面,并将此类页面标记为“仅 JS 导航”,因为搜索引擎只会跟随真实链接。

如果自动设置失败(没有互联网连接、Python 受限),爬取过程会说明原因。使用爬虫的 Python 手动安装,然后重启爬虫:

python -m pip install playwright
python -m playwright install chromium

使用方法

  1. 输入网站 URL 2.(可选)调整默认设置:1500 个页面、5 个工作线程、每个主机延迟 0.4 秒、深度 10。站点地图分析和**近似重复内容(相似度 ≥90%)**已默认勾选,因此新爬取会自动运行这两项后续分析。
  2. 点击 Start crawl

工具会在首次请求时检测目标网站使用的 CMS,并提供一键式 Apply recommendations 按钮,用于填入合理的排除模式和工作线程数。

爬取期间会自动打开 Summary 标签页,并随着页面抓取完成实时刷新。爬取完成后,你可以查看:

  • 按严重程度划分的统计(错误 / 警告 / 信息),并显示实时数量
  • 常见 SEO 审核的批量报告(所有标题、重复标题、重定向链等)
  • 任意 URL 的页面详情面板(点击某一行):元数据、问题、入链、出链
  • 顶部工具栏中的站点地图和 XLSX 导出按钮

通过 AI 助手(MCP)或命令行使用

仓库中的两个文件可让其他程序使用已在端口 5002 上运行的爬虫:

  • mcp_server.py,一个 MCP 服务。你的 AI 应用会将其作为本地程序启动,并通过标准输入和标准输出与它通信,因此不会打开端口,也无需登录。
  • osc.py,提供相同工具的终端命令,每个命令都支持 --json,供脚本使用。

两者都需要爬虫正在运行(单行安装程序会让它保持运行),且无需安装 Python 标准库之外的任何内容。

该服务已在官方 MCP 注册表 中列出,名称为 io.github.puneetindersingh/open-seo-crawler,因此可供支持读取该注册表的 MCP 应用和目录查找。

连接 AI 应用

最快的方法:点击顶部工具栏中的 Use with AI,打开 Connect an AI app 并复制设置提示词。提示词包含适用于你设备的确切命令和路径。将它粘贴到能够在你的计算机上运行命令的 AI 应用中,该应用便会使用自己的命令添加 MCP 服务、检查连接状态,并告知你是否需要重启。

如需手动操作,请运行一次此命令。它会输出适用于你设备的确切命令和配置块,并告知爬虫是否正在运行:

~/open-seo-crawler/venv/bin/python3 ~/open-seo-crawler/osc.py setup

在 Windows 上:%USERPROFILE%\open-seo-crawler\venv\Scripts\python.exe %USERPROFILE%\open-seo-crawler\osc.py setup

Claude Code(通过标准输入/输出使用 MCP),运行一条命令即可:

claude mcp add --scope user open-seo-crawler -- ~/open-seo-crawler/venv/bin/python3 ~/open-seo-crawler/mcp_server.py

然后在 Claude Code 中运行 /mcp,open-seo-crawler 应会显示为已连接。你可以尝试提问:“爬取 example.com 的 100 个页面,并告诉我最重要的十项修复内容。”

Claude Desktop,一键安装(MCP 扩展):从最新 MCP 版本下载 open-seo-crawler-mcp.mcpb,然后依次打开 Settings、Extensions、Advanced settings,再选择 Install Extension。需要在 PATH 中安装 Python 3.10+,并确保爬虫正在运行。它会询问爬虫地址;默认地址适用于常规安装。

Claude Desktop,手动配置(MCP 配置文件):依次打开 Settings、Developer、Edit Config,然后将服务添加到 claude_desktop_config.json,并使用 osc.py setup 输出的完整路径:

{
  "mcpServers": {
    "open-seo-crawler": {
      "command": "/home/you/open-seo-crawler/venv/bin/python3",
      "args": ["/home/you/open-seo-crawler/mcp_server.py"]
    }
  }
}

重启 Claude Desktop,使其加载 MCP 服务。在 Windows 上,路径类似于 C:\\Users\\you\\open-seo-crawler\\venv\\Scripts\\python.exe,在 JSON 中反斜杠需要加倍。请使用配置文件,而不要使用 Settings 中的 Connectors:Connectors 通过互联网连接,而此服务仅在你的计算机上运行。

其他 MCP 应用(Cursor、VS Code、Windsurf 等):在应用设置中,将相同的命令和参数添加为本地(标准输入/输出)MCP 服务。许多应用可以直接使用上面的 mcpServers 块;请查阅应用的 MCP 文档,了解应将其放在哪里。

如果爬虫运行在其他端口或另一台计算机上,请在服务的环境中设置 OSC_URL(例如 http://office-pc:5002)。

助手能做什么
工具功能
start_crawl使用应用的引擎、设置和默认值抓取网站,并立即返回任务 ID
crawl_status、stop_crawl查看抓取进度;停止抓取并保留已抓取的内容,效果与“停止”按钮相同
list_crawls列出过去 30 天保存的抓取记录,包括在应用中或通过此处启动的抓取
crawl_summary以数据形式提供“摘要”选项卡的内容:按严重程度列出问题及页面数和示例 URL、重复项、重定向链、站点地图缺漏、近似重复项,以及机器人可读性
get_pages、get_page按问题、严重程度、状态码、URL 或可索引性筛选页面;查看某个 URL 的完整信息及其入链
get_brief以 Markdown 格式获取 AI 简报
compare_crawls查看网站两次抓取之间的变化
bot_check检查任意 URL 对 AI 爬虫的可读性,无需抓取
check_robots、detect_cms检查任意 URL 的 robots.txt 和背后的 CMS
export_xlsx将 .xlsx 导出到你指定的路径

此外还有一个 seo_audit 提示词,用于加载已保存抓取的 AI 简报。支持 MCP 提示词的应用会将其显示为斜杠命令。

从 AI 应用启动的抓取与从浏览器启动的抓取完全相同:使用相同的引擎和默认值,随后进行站点地图分析、近似重复项检测和机器人可读性检查,然后自动保存,因此会显示在应用的 Load 下。除非你亲自关闭,或要求 AI 关闭,否则会遵守 robots.txt。让助手抓取不属于你的网站之前,请阅读负责任地使用。

命令行
cd ~/open-seo-crawler
venv/bin/python3 osc.py crawl https://example.com --max-pages 200   # crawl, save, print the summary
venv/bin/python3 osc.py summary latest                               # issue counts for a saved crawl
venv/bin/python3 osc.py pages latest --issue "Missing H1"            # which pages have it
venv/bin/python3 osc.py page latest https://example.com/about/       # one page and its inlinks
venv/bin/python3 osc.py brief latest --out brief.md                  # the AI brief as a file
venv/bin/python3 osc.py compare <older crawl> <newer crawl>          # what changed
venv/bin/python3 osc.py bots https://example.com/                    # AI crawler readability
venv/bin/python3 osc.py export latest crawl.xlsx
venv/bin/python3 osc.py list

可通过 latest、osc.py list 中的文件名,或网站名称的一部分来指定抓取记录(匹配最新的一项)。在任意命令中添加 --json,即可输出机器可读的数据。在部署流水线中,运行 osc.py crawl <staging URL> --fail-on error 时,如果任意页面出现错误,命令会以代码 1 退出,从而阻止部署。退出代码 2 表示命令本身执行失败,例如爬虫未运行。

使用场景

  • 上线前审计:抓取预发布网站,在重定向切换前修复所有错误。
  • 上线后验证:迁移后重新抓取,并将重定向链、响应代码和 Hreflang 报告与迁移前的抓取结果进行比较。
  • 定期检查技术 SEO 状况:每周抓取主域名,及时发现规范链接、重复标题和失效内链方面的退化。
  • 竞品研究:以负责任的方式抓取竞争对手的网站,并遵守其 robots.txt,以了解其内链、内容深度和结构化数据覆盖情况。
  • 批量元数据审计:导出所有标题或所有元数据,并将 XLSX 文件交给内容团队进行改写。
  • Hreflang 调试:国际化网站可一键验证所有 hreflang 标注,包括采用区域子目录或子域名的网站。
  • 站点地图检查:发现仅存在于站点地图中的 URL(已列入站点地图,但未从网站实际链接)、孤立页面(有链接,但未列入站点地图),以及返回 404 / 301 的过期 URL。

设置参考

设置默认值说明
最大页面数1500抓取的 URL 总数上限(1-5000 + 无限)
工作线程5并发 HTTP 工作线程数(1-20)
每主机延迟0.4 s向同一主机发送两次请求的最小间隔。若设置低于 0.4 s,则会显示警告
最大深度10从种子 URL 开始的点击层数
渲染 JS关闭为单页应用(SPA)启用(需要 Playwright)
与非 JS HTML 比较关闭启用“渲染 JS”时:以两种模式抓取每个页面,差异标记非 JS 爬虫看不到的仅限 JS 内容
忽略 robots.txt关闭默认:遵守 Disallow 规则
忽略 noindex关闭默认:在重复内容 / 孤立页面报告中排除 noindex 页面
站点地图分析开启抓取后:标记站点地图中缺失的页面、孤立页面、仅在站点地图中的页面、非 200 页面及站点地图中的重定向
近似重复内容开启,相似度 90%对正文内容使用 Shingle Jaccard;标记相似度 ≥ 90% 的页面对(可调整为 80 / 85 / 90 或自定义值)
Bot 可读性检查开启,10 个页面抓取后:抽样页面,分别以浏览器和每种爬虫请求,并比较启用和未启用 JavaScript 的结果;每个页面约发送 11 个请求,间隔遵循每主机延迟设置
包含 / 排除模式空Glob 通配符,例如 *?variant=*、*/cart/*

可选环境变量(适用于共享 / 多工具设置):

变量用途
SITE_CRAWLER_EXTRA_CRAWL_DIRS以冒号分隔的额外文件夹,将其合并(只读)到已保存抓取列表中,以便一个实例显示其他工具保存的抓取记录
SITE_CRAWLER_USER_MAPJSON 字典文件路径,将 IP 映射为易识别的名称(默认 ~/.site-crawler-users.json),这样已保存的抓取记录会显示执行者,而不是 IP

性能

在一个 Shopify 商店上进行测试:

  • 3.3 秒抓取 10 个页面(5 个工作线程,0.1 s 延迟)
  • 速度约为单线程爬虫(延迟 1 s)的 3 倍
  • 不到 3 分钟即可抓取一个包含 1500 个页面的 WordPress 网站(5 个工作线程,默认延迟)

并发数在达到约 8 个工作线程之前近乎线性提升,之后目标服务器的速率限制会成为瓶颈。

隐私

完全在你的计算机上运行。没有 API 调用、没有账户,也没有遥测。唯一发出的 HTTP 请求是发往你正在抓取的目标网站,以及 api.github.com;页面会向后者请求此仓库的最新提交 SHA(每 10 分钟最多一次),以显示更新徽章。不会发送任何与你的抓取相关的信息。

MCP 服务和 osc.py 只会与本机上的爬虫通信。连接 AI 应用后,工具返回的内容(URL、标题、标题层级、问题、部分页面文本)会发送给该应用及其 AI 提供商,并由其在你的账户下处理。抓取网站的文本会标记为数据而非指令,但它仍来自他人的网站,因此请保持 AI 应用的审批提示开启,以便审批会启动抓取或写入文件的工具。

负责任地使用

你有责任确保抓取目标合规。在将此工具用于你不拥有的网站之前:

  • 遵守 robots.txt。 默认启用是有原因的。在你不拥有的网站上禁用它,可能会违反该网站的服务条款。
  • 遵守速率限制。 默认每主机延迟 0.4 s、并发数为 5,设置较为保守。在抓取生产网站时,请保持这些设置或提高延迟。猛烈请求服务器可能会被视为滥用。
  • 遵守目标网站的服务条款。 有些网站明确禁止自动抓取。扫描前请阅读其 ToS。
  • 个人 / 隐私数据。 如果抓取的页面包含个人数据,那么适用的隐私法律(GDPR / UK GDPR / Australian Privacy Act / CCPA 等)可能会约束你之后对这些数据的任何处理。此工具只会将结果存储在你的本地浏览器 / 进程中;之后如何处理由你负责。

作者对滥用不承担任何责任。完整免责声明请参阅 LICENSE。

商标

Screaming Frog、Sitebulb、Ahrefs、Shopify、WordPress、Yoast SEO、Rank Math、Webflow、Wix、Squarespace、Kajabi、Ghost、Drupal、HubSpot 和 Joomla 均为其各自所有者的商标。本项目是一款独立的开源工具,与上述任何一方均无关联,也未获得其认可或赞助。提及这些名称仅用于描述性比较/兼容性列表。

关于

Open SEO Crawler 由 Puneet Singh 开发和维护。他是一名 SEO 从业者,每周都会在真实网站上使用这款工具。请通过 GitHub Issues 提交 Bug 报告。其他事宜请通过 LinkedIn 联系。

同一开发者推出的更多免费 SEO 工具,包括 SEO Side Panel Chrome 扩展和 WordPress 插件:puneetindersingh.github.io

许可证

MIT。请参阅 LICENSE。

贡献

欢迎提交 PR。整个爬虫由一个易读的 Flask 文件(app.py)和一个精简的前端组成,易于扩展。

常见问题

有免费的 SEO 爬虫吗? 有。Open SEO Crawler 是一款免费的 MIT 许可 SEO 爬虫,没有页面数量限制。克隆项目后运行 python3 app.py,即可在本地抓取任何网站:无需账号、API 密钥或信用卡。

最好的免费 Screaming Frog 替代工具是什么? Open SEO Crawler 涵盖了大多数人使用 Screaming Frog 时所需的核心技术 SEO 抓取功能(标题、元描述、H1、规范链接、重定向、失效链接、hreflang、重复内容、站点地图和结构化数据),免费版支持无限 URL,并可一键导出 XLSX。免费版 Screaming Frog 最多支持 500 个 URL;本工具没有数量上限。

这款 SEO 爬虫能处理大型网站吗? 可以。它支持并发抓取(1-20 个工作线程),并提供按主机限速功能。使用默认设置时,抓取一个 1,500 页的网站不到三分钟即可完成;对于更大的网站,可将页面上限设为 Unlimited。

这款网站爬虫适用于 Shopify、WordPress 和 Webflow 吗? 适用。它能自动检测 10 个 CMS 平台(Shopify、WordPress + Yoast / Rank Math、Webflow、Wix、Squarespace、Kajabi、Ghost、Drupal、HubSpot、Joomla),并为每个平台应用合适的抓取预设。

它真的免费且开源吗? 是的:采用 MIT 许可,可自托管,完全在你的机器上运行。没有遥测、不会向外发送数据,也不按 URL 收费。

有用于检查单个页面的 Chrome 扩展吗? 有:SEO Side Panel,由同一开发者推出,且完全免费。爬虫会在你的机器上审计整个网站。扩展会在你当前页面旁的面板中检查该页面,包括 AI 爬虫能够和不能读取的内容。

相关搜索词

SEO 爬虫、免费 SEO 爬虫、网站 SEO 爬虫、免费 SEO 爬虫工具、开源 SEO 爬虫、免费 SEO 蜘蛛、可自托管的在线 SEO 爬虫、开源 SEO 蜘蛛、免费的 Screaming Frog 替代工具、可自托管的 SEO 审计工具、技术 SEO 爬虫、用于 SEO 的网站爬虫、免费站点审计工具、开源 SEO 站点爬虫、Shopify SEO 爬虫、WordPress SEO 审计工具、Webflow SEO 审计、免费重复内容检查器、免费重复标题检查器、免费重复元描述检查器、免费重复 H1 检查器、免费失效链接检查器、免费重定向链查找器、免费 hreflang 验证器、免费 XML 站点地图分析器、符合 GDPR 要求的 SEO 爬虫、无需注册的 SEO 工具、无需 API 密钥的 SEO 爬虫、识别 CMS 的爬虫、并发网页爬虫、本地 SEO 蜘蛛、MIT 许可的 SEO 工具、Python SEO 爬虫、Flask SEO 爬虫、SEO 审计 XLSX 导出、按严重程度分组的 SEO 问题、抓取后的 SEO 摘要仪表板、自动更新的 SEO 工具

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。