mcpField
S
SEO & GEO

SEO & GEO

本地服务
github.com/OrtaMarco商业与营销12 周前更新

关于 SEO & GEO

SEO & GEO 是面向 AI Agent 的页面审计 MCP 服务,检查页面 SEO、结构化数据、爬虫访问和 AI 搜索引擎引用准备度。它同时评估传统页面因素与 GEO,并提供评分和优先修复建议,无需 API 密钥。

主要功能

  1. 01综合 SEO 与 GEO 页面审计
  2. 02检查 AI 爬虫的 robots.txt 访问规则
  3. 03检测内容是否可在无 JavaScript 时读取
  4. 04分析元标签、标题、结构化数据与内容
  5. 05检查站点地图、链接和 hreflang

适用场景

  1. 01评估页面被 AI 搜索引擎抓取和引用的条件
  2. 02排查阻碍搜索引擎索引的页面问题
  3. 03审查多语言页面的 hreflang 设置

MCP 相关

作为 MCP 服务,向 MCP 客户端公开只读 SEO 与 GEO 审计工具,返回结构化结果、评分和修复建议。支持 stdio 与无状态 Streamable HTTP。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"ortamarco-seo-geo": {
"command": "npx",
"args": [
"-y",
"seo-geo-mcp-server"
]
}
}
}
启动命令npx -y seo-geo-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmseo-geo-mcp-server1.2.2

工具

17

收录的工具列表 · 更新于 2 周前

参数类型必填说明
urlstring是要分析的页面 URL,例如 'https://example.com/blog/post'。默认使用 https://。
include_geoboolean否同时评估 GEO(AI 答案引擎)就绪度。会额外发起约 2 次请求。
response_formatenum否输出格式:'markdown' 表示易读摘要(默认),'json' 表示完整的结构化数据。markdown | json
check_broken_linksboolean否抽样检查最多 25 个链接,验证其是否可访问。速度较慢,但能发现失效链接。

详细介绍

seo-geo-mcp-server

一个 MCP 服务,可让 AI Agent 审核页面的 SEO 和 GEO(生成式引擎优化)——检查页面标签、结构化数据、robots.txt、站点地图、hreflang,以及 ChatGPT、Claude、Perplexity 和 Gemini 是否真的能抓取并引用你的网站。无需 API 密钥。

ci npm MCP TypeScript License: MIT

基于 v2 MCP SDK 构建:服务采用 2026-07-28 协议修订版,同时仍通过同一个工厂接受 2025 年的客户端(Claude Desktop、Claude Code、Cursor)——一次构建,兼容两个时代,无需配置。

问 Claude “这个页面表现如何,AI 助手会引用它吗?”,它就会执行完整审核,并提供带有优先级排序修复建议的评分报告——你不必把 URL 分别粘贴到六种不同的网页工具中。

> Audit https://example.com/guide and tell me if ChatGPT can cite it

  seo_audit(url="https://example.com/guide", include_geo=true)

  Overall: A (92/100) · indexable: yes
    Meta tags & social preview   95 (A)
    Heading structure           100 (A)
    Structured data              75 (C)

  GEO readiness: B (85/100)
    ✅ AI crawler access        25/25
    ✅ Server-rendered content  20/20
    ❌ Authorship & entity       2/10
  1. Add author and Organization markup with `sameAs` links to official profiles.

为什么要做这个项目

两个痛点,一个服务。

SEO 痛点: 页面检查工具都是网页界面。没有任何工具能让 Agent 在同一轮工作中执行审核、读取结果并修复代码。

GEO 痛点: “生成式引擎优化”工具大多是需要订阅的排名追踪仪表板。决定 AI 助手能否引用你网站的实际机制,检查成本很低,却几乎从未受到检查:

  • AI 搜索爬虫能访问你的网站吗? 屏蔽 GPTBot 会阻止训练。屏蔽 OAI-SearchBot 会阻止你被引用。许多原本只想阻止前者的网站,却意外阻止了后者。此服务会区分二者。
  • 不运行 JavaScript,内容还存在吗? Googlebot 会渲染 JS。GPTBot、ClaudeBot、PerplexityBot 和 CCBot 基本不会。客户端渲染的页面可能在 Google 上排名良好,却无法被任何 AI 助手看到。

它是 ortamarco.me 上工具的 Agent 端配套服务,并与 domain-security-mcp-server 共享其核心功能(连接时 SSRF 防护和主机验证)。

工具

审核
工具功能
seo_audit ⭐一次抓取 → 七个加权部分(元数据、标题、内容、架构、图片、链接、可抓取性)→ 0–100 分、A–F 等级、按优先级排序的修复建议。include_geo=true 会加入 GEO 维度
geo_audit ⭐AI 答案引擎就绪度:爬虫访问权限(25)、服务端渲染内容(20)、结构化数据(15)、可提取结构(15)、作者信息(10)、新鲜度(8)、深度(7)
GEO
工具功能
ai_crawler_access根据 robots.txt 检查约 35 种 AI 爬虫令牌的解析结果。区分训练爬虫与引用爬虫,标记供应商文档中说明为无法强制执行的屏蔽规则,并处理 Applebot→Googlebot 回退
render_check检查内容在不运行 JavaScript 时是否仍然存在——检测 AI 爬虫无法读取的、尚未水合的 SPA 空壳
llms_txt_check检测并验证 /llms.txt 是否符合 llmstxt.org 提案——并报告其实际采用情况,而不是暗示它能提升可见度
页面内
工具功能
meta_tags_check标题、描述、canonical、robots(meta 和 X-Robots-Tag)、lang、charset、viewport
social_preview_checkOpen Graph + Twitter Card,并验证 og:image 是否实际加载
heading_structure完整的 h1–h6 大纲、多个 h1、跳级标题、疑问句式标题
structured_data_check提取 JSON-LD/microdata/RDFa,检查解析错误,并验证 21 种 schema 类型是否满足 Google 富媒体搜索结果要求
content_analysis字数、Flesch 易读性、薄弱内容检测、文本与 HTML 比率、术语密度(EN + ES 停用词)
image_seo_check检查缺失的替代文本、缺失的尺寸(布局偏移)、延迟加载、WebP/AVIF 采用情况
技术
工具功能
robots_txt_check按 RFC 9309 解析;标记通配符 Disallow: / 和 5xx 响应(Google 会将其视为禁止所有抓取)
sitemap_check通过 robots.txt → 常规路径发现站点地图;跟进索引、处理 gzip、50k/50MiB 限制、验证 lastmod
canonical_host_check检查全部四种 http/https × apex/www 变体是否汇聚到一个 canonical URL,以及通过 301 还是 302 跳转
redirect_trace逐跳追踪链路,检测循环和临时重定向
link_audit区分内部/外部链接、检查 rel 属性和通用锚文本,并可选择抽样检查失效链接
hreflang_check验证 BCP-47、检查自引用、x-default 和重复项,并可选择验证互反性

每个工具均为只读,声明 outputSchema,并返回 structuredContent(由 SDK 验证),同时提供人类可读的 Markdown(默认格式)或 JSON(response_format="json"),以及可执行的错误信息。

说明

此服务会刻意避免夸大两件事,而大多数 GEO 内容都会在这方面出错。相关说明会显示在工具输出中,而非藏在这里:

  • llms.txt 并非已采纳的标准。 它是 2024 年 9 月提出的社区提案。没有任何主流 AI 厂商说明其爬虫会从第三方网站读取该文件,Google 也曾公开表示不会。该工具会报告文件是否存在并验证其格式,而 geo_audit 刻意不为其评分。(llms-full.txt 是文档工具的惯例,并非该提案的一部分。)
  • robots.txt 中的某些限制仅供参考。 据各自厂商的文档,Perplexity-User、ChatGPT-User 和 meta-externalfetcher 会忽略或可能忽略 robots.txt。将这些爬虫报告为已明确“屏蔽”会造成误导,因此它们会单独列为无法强制执行。

爬虫令牌带有 provenance 字段,用于区分来自厂商官方文档的信息和来自社区聚合站点的信息;同时会明确列出未公布任何令牌的厂商(xAI/Grok、Microsoft Copilot),因为缺少规则不能被视为允许或屏蔽。

安装

需要 Node.js 20.18+。无需克隆项目——每个 MCP 客户端都可以通过 npx 运行。

与 Claude Code 搭配使用

claude mcp add seo-geo -- npx -y seo-geo-mcp-server

与 Claude Desktop 或 Cursor 搭配使用

添加到 claude_desktop_config.json(或 ~/.cursor/mcp.json)中——参见 examples/:

{
  "mcpServers": {
    "seo-geo": {
      "command": "npx",
      "args": ["-y", "seo-geo-mcp-server"]
    }
  }
}

在 Windows 上,使用 "command": "cmd",并设置 "args": ["/c", "npx", "-y", "seo-geo-mcp-server"]。 重启客户端,然后询问:“审查 example.com 的 SEO 和 GEO。”

自托管(HTTP 传输)

同一服务支持无状态的 Streamable HTTP,供远程或多客户端使用。一个端点即可兼容两个协议版本;无需会话状态,也无需携带 Mcp-Session-Id。

TRANSPORT=http npx -y seo-geo-mcp-server
# POST JSON-RPC to http://127.0.0.1:3000/mcp   ·   health at /healthz

默认情况下,它是安全的:服务绑定到 127.0.0.1,且只接受 localhost 的 Host 和 Origin 标头,因此可以阻止来自网页的 DNS 重绑定攻击。若要公开访问——例如部署在 Coolify 或 Traefik 后面——请明确启用:

变量默认值用途
TRANSPORTstdio使用 http 提供 Streamable HTTP
PORT3000监听端口
HOST127.0.0.1绑定地址;设为 0.0.0.0 以接受远程连接
ALLOWED_HOSTS—Host 标头可携带的主机名,以逗号分隔(例如 mcp.example.com)
ALLOWED_ORIGINS—允许从浏览器发起调用的来源,以逗号分隔
MCP_AUTH_TOKEN—如果设置,每个请求都必须携带 Authorization: Bearer <token>

绑定到非环回地址,但未设置 ALLOWED_HOSTS 或 MCP_AUTH_TOKEN 时仍可运行,不过服务会在 stderr 中提示这一点。使用 Docker 时(镜像会设置 HOST=0.0.0.0):

docker build -t seo-geo-mcp .
docker run -p 3000:3000 -e ALLOWED_HOSTS=mcp.example.com -e MCP_AUTH_TOKEN=change-me seo-geo-mcp

开发

npm run dev      # tsx watch (stdio)
npm test         # deterministic unit tests: SSRF guard, robots matcher, nesting guard,
                 # gzip sitemaps, SPA detection, JSON-LD, HTTP transport defaults
npm run smoke    # call all 17 tools over MCP, in BOTH protocol eras, and validate
                 # structuredContent vs outputSchema
npm run inspect  # open the MCP Inspector against the built server
npm run build    # type-check + emit dist/

evals/ 中包含一组 10 个问题的大模型评测集(稳定且可验证),以及运行说明——请参阅 evals/README.md。

工作原理

src/
├── index.ts        # transport selection: serveStdio | createMcpHandler + Express
├── server.ts       # the factory: registers every tool on one McpServer
├── schemas.ts      # Zod 4 outputSchema for each tool
├── core/           # pure logic, no MCP coupling — reusable & testable
│   ├── validate.ts     # host/URL validation and the address classifier
│   ├── netguard.ts     # connect-time SSRF guard (every socket's address is checked)
│   ├── fetch.ts        # fetch: guarded dispatcher, manual redirects, loop detection, byte caps
│   ├── page.ts         # HTML loading + the shared parsed-document model
│   ├── meta.ts         # title/description/canonical/robots, Open Graph, hreflang
│   ├── content.ts      # headings, readability, word counts, image SEO
│   ├── structured-data.ts # JSON-LD/microdata + Google rich-result requirements
│   ├── robots.ts       # RFC 9309 parser and rule matcher
│   ├── ai-crawlers.ts  # the AI crawler registry (token, purpose, compliance, provenance)
│   ├── sitemap.ts      # discovery, index following, gzip, protocol limits
│   ├── links.ts        # link classification + broken-link sampling
│   ├── redirects.ts    # chain tracing + host canonicalisation
│   ├── geo.ts          # llms.txt, JS-rendering detection, GEO scoring
│   └── seo-audit.ts    # the composite audits (one fetch, every analyser)
└── tools/          # thin MCP wrappers (Zod schemas, descriptions, formatting)

core/ 层刻意不依赖任何 MCP 类型,因此相同的逻辑既可用于此服务,也可用于网页 UI。

安全

这些工具会获取调用者指定的 URL,也会获取受审计网站指定的 URL(链接、og:image、hreflang 替代页面、站点地图子项、重定向),因此所有出站连接都会经过筛查,以防服务器端请求伪造:

  • 各种格式的私有、环回、链路本地(云元数据)、共享(CGNAT)、多播和保留地址都会被拒绝,包括嵌入 IPv4 地址的 IPv6 地址([::ffff:127.0.0.1])。
  • 检查会在建立连接时针对套接字即将使用的地址执行,因此 DNS 重绑定以及只有内部解析器知道的名称也会被拒绝。重定向会逐个手动跟进,每一跳都会经过筛查,并会报告循环。
  • 不可信输入受到限制:HTML 为 2 MB、嵌套深度为 512 层(浏览器所保留的深度)、robots.txt 匹配器不会发生回溯、每个站点地图为 10 MiB(包括 gzip 解压后的输出)、同时检查 6 个链接,且每个结果列表最多包含 200 项。

发现问题?请提交私密安全公告。

许可证

MIT © Marco Orta

评论

支持 Markdown

第一次接触 MCP?

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

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