mcpField
S
seo-review

seo-review

github.com/shiplightai营销与增长2416 次安装16 周前更新
代码仓库

关于 seo-review

seo-review 是用于评估网站技术 SEO 与可发现性的评审技能,适合发布或更新公开网站的团队。它通过浏览器检查元数据、结构化数据、抓取能力、社交分享等,并给出修复建议和 YAML 回归测试。

主要功能

  1. 01检查元数据和页面 head 元素
  2. 02验证结构化数据与社交标签
  3. 03审查抓取、索引和站内链接
  4. 04检查语义 HTML 与技术 SEO
  5. 05生成问题、修复建议和 YAML 回归测试

适用场景

  1. 01在公开网站上线前检查 SEO
  2. 02在改版或迁移后检查可发现性
  3. 03评估 SPA 渲染和爬虫可见内容

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/shiplightai/agent-skills --skill seo-review

安装后在 Claude Code 中输入/seo-review确认已加载。

详细介绍

SEO 审查

评估应用的搜索引擎优化和可发现性。此审查可发现常规开发中不易察觉的 SEO 问题——缺少元标签、结构化数据损坏、抓取能力差、缺少站点地图,以及社交分享问题。许多单页应用(SPA)在发布时完全没有考虑 SEO。

适用场景

在以下情况下使用 /seo-review:

  • 发布面向公众的网站或应用前
  • 重新设计或迁移网站后
  • 自然流量是增长渠道时
  • 切换到 SPA 框架(React、Vue、Angular)后
  • 社交分享(Open Graph)很重要时
  • 设置内容营销页面时

参考标准

  • Google Search Central — SEO 最佳实践和指南
  • Schema.org — 结构化数据词汇表
  • Open Graph Protocol — 社交分享元标签
  • Twitter Card — Twitter 分享标记
  • W3C Semantic HTML — 无障碍访问和 SEO 语义
  • Web.dev SEO Guidelines — Google 的 SEO 建议

阶段概览

Phase 1: EDUCATE   → Why SEO matters and what we check
Phase 2: SCOPE     → Identify key pages, content types, SEO goals
Phase 3: ANALYZE   → Browser-based SEO validation
Phase 4: REPORT    → Findings with impact assessment and priority
Phase 5: REMEDIATE → Fix guidance + YAML regression tests

阶段 1:说明

重要性: 所有网站流量中有 53% 来自自然搜索(BrightEdge)。Google 搜索结果的第一位获得 27.6% 的点击量;第 10 位则获得 2.4%(Backlinko)。SPA 通常会向爬虫呈现空白 HTML,导致数百万个页面无法被搜索到。做好 SEO 不需要耍花招——只需让搜索引擎能够发现并理解你的内容。

此审查会检查技术 SEO 基础——这些事项必须先做好,内容策略才有意义。


阶段 2:确定范围

收集背景信息
  1. 从代码库自动检测:

    • 框架和渲染策略(SSR、SSG、CSR、ISR)
    • 元标签管理(react-helmet、next/head、vue-meta 等)
    • 站点地图生成
    • robots.txt 配置
    • 结构化数据(JSON-LD、microdata)
    • i18n/hreflang 设置
    • 规范 URL 处理
    • 路由结构和页面类型
  2. 向用户询问(每次一项):

    • 目标 URL:应用运行在哪个地址?(建议使用生产环境,以便进行真实抓取)
    • 重要页面:哪些页面对搜索最重要?(主页、产品页面、博客文章、落地页)
    • 目标关键词:是否有希望获得排名的主要关键词?(可选,用于内容评估)
    • 社交分享是否重要?:是否需要 Open Graph / Twitter Cards?(公开网站默认需要)
    • 多语言?:网站是否提供多种语言?(自动检测)
  3. 识别页面类型:

    • 主页
    • 内容页面(博客、文档、关于)
    • 产品/列表页面
    • 动态页面(搜索结果、用户个人资料)
    • 实用页面(登录、404、条款)

阶段 3:分析

使用 record_evidence: true 打开一个浏览器会话,并调用 new_session。针对每个重要页面,运行所有检查类别。

类别 A:Meta 标签与 Head 元素(META)
检查 ID检查项标准方法
META-01唯一且描述准确的 <title>(50-60 个字符)Google 指南提取 <title>,检查长度和唯一性
META-02存在 Meta 描述(120-160 个字符)Google 指南检查 <meta name="description">
META-03正确设置规范 URLGoogle 指南检查 <link rel="canonical">
META-04存在 viewport Meta 标签移动端 SEO检查 <meta name="viewport">
META-05已声明字符集HTML 标准检查 <meta charset>
META-06没有重复的 Meta 标签SEO 最佳实践检查是否存在重复的标题和描述
META-07存在网站图标品牌建设/SEO检查 <link rel="icon">
META-08已声明语言SEO/无障碍检查 <html lang="">
META-09重要页面没有设置 Meta robots noindex索引检查 <meta name="robots">
META-10多语言页面包含 Hreflang 标签(如适用)国际 SEO检查 <link rel="alternate" hreflang="">

浏览器验证: 使用 inspect_page 读取 DOM。通过 JavaScript 提取所有 <head> 元素。

类别 B:结构化数据(SCHEMA)
检查 ID检查项标准方法
SCHEMA-01存在 JSON-LD 结构化数据Schema.org检查是否存在 <script type="application/ld+json">
SCHEMA-02Schema 类型与页面内容匹配Schema.org验证类型(Organization、Product、Article 等)
SCHEMA-03包含必需属性Schema.org根据类型要求进行验证
SCHEMA-04JSON-LD 是有效的 JSONSchema.org解析并验证 JSON
SCHEMA-05没有已弃用的 Schema 属性Schema.org检查是否存在已弃用字段
SCHEMA-06包含面包屑结构化数据Schema.org检查内页是否包含 BreadcrumbList
SCHEMA-07包含 FAQ 结构化数据(如适用)Schema.org检查 FAQ 部分是否包含 FAQPage
SCHEMA-08包含评论/评分结构化数据(如适用)Schema.org检查是否包含 AggregateRating

浏览器验证: 通过 JavaScript 提取 JSON-LD 脚本。解析并验证结构。将页面内容与 Schema 声明进行对比。

类别 C:Open Graph 与社交分享(OG)
检查 ID检查项标准方法
OG-01存在有意义的 og:titleOpen Graph检查 <meta property="og:title">
OG-02存在 og:descriptionOpen Graph检查 <meta property="og:description">
OG-03存在且可访问 og:imageOpen Graph检查 <meta property="og:image">,验证 URL 可加载
OG-04og:image 尺寸合适(建议为 1200x630)Open Graph检查图片尺寸
OG-05og:url 与规范 URL 一致Open Graph比较 og:url 与规范 URL
OG-06正确设置 og:typeOpen Graph检查 og:type 值
OG-07存在 Twitter 卡片 Meta 标签Twitter Cards检查 twitter:card、twitter:title 等
OG-08社交分享预览显示正确用户体验根据 OG 标签生成预览

浏览器验证: 提取所有 OG 和 Twitter Meta 标签。验证 og:image URL 是否可访问。生成预览效果。

类别 D:可抓取性与索引(CRAWL)
检查 ID检查项标准方法
CRAWL-01robots.txt 存在且有效Google 指南获取 /robots.txt
CRAWL-02Sitemap.xml 存在且有效Google 指南获取 /sitemap.xml,验证格式
CRAWL-03robots.txt 中引用了 Sitemap最佳实践检查 robots.txt 中是否有 Sitemap 指令
CRAWL-04重要页面包含在 sitemap 中SEO将关键页面与 sitemap URL 交叉核对
CRAWL-05没有失效的内部链接可抓取性检查关键页面上的所有内部链接
CRAWL-06没有重定向链(>2 次跳转)抓取效率跟踪重定向并统计跳转次数
CRAWL-07URL 结构简洁(没有过多参数)SEO检查 URL 模式是否简洁
CRAWL-08404 页面返回正确的 HTTP 状态码SEO访问不存在的 URL 并检查状态码
CRAWL-09没有孤立页面(可通过导航访问)可抓取性确认首页/导航中链接到关键页面
CRAWL-10无需 JavaScript 即可看到 SSR/SSG 内容SPA SEO禁用 JS,检查内容是否渲染
CRAWL-11爬虫的页面加载时间抓取预算测量服务器响应时间

浏览器验证: 访问 robots.txt 和 sitemap.xml。跟踪内部链接。禁用 JavaScript,以测试服务器渲染的内容。检查 HTTP 状态码。

类别 E:语义化 HTML 与内容(SEM)
检查 ID检查项标准方法
SEM-01每个页面只有一个 <h1>SEO 最佳实践统计 h1 元素
SEM-02标题层级合乎逻辑(h1→h2→h3)SEO/a11y检查标题顺序
SEM-03图片具有描述性 alt 文本SEO/a11y检查 alt 属性是否具有描述性
SEM-04内部链接使用描述性锚文本SEO检查是否将「点击此处」或纯 URL 用作链接
SEM-05使用语义化 HTML 元素(nav、main、article、section)SEO检查语义地标
SEM-06内容与 HTML 的比例合理SEO计算文本内容与 HTML 标记的比例
SEM-07页面之间没有重复内容SEO比较各页面的关键内容部分
SEM-08URL 易于阅读SEO检查 slug 是否具有描述性,而非 ID/哈希值

浏览器验证: 通过 JavaScript 提取标题、链接、图片和语义化元素。分析内容结构。

类别 F:技术 SEO(TECH)
检查 ID检查项标准方法
TECH-01全站使用 HTTPSGoogle 排名信号检查协议
TECH-02HTTP → HTTPS 重定向正常SEO测试 HTTP URL 重定向
TECH-03www → 非 www(或反之)的重定向保持一致SEO测试两种形式
TECH-04适配移动设备(响应式)Google 移动优先检查 viewport 和响应式行为
TECH-05Core Web Vitals 达到「良好」阈值Google 排名信号测量 LCP、INP、CLS
TECH-06没有阻塞渲染的资源页面速度检查脚本/样式的加载情况
TECH-07内容迁移时正确设置 301 重定向SEO如适用,检查已知的旧 URL
TECH-08国际定位正确(如面向多个地区)国际 SEO检查 hreflang 和地理定位

浏览器验证: 测试重定向、测量性能指标并检查移动端渲染。


第 4 阶段:报告

生成结构化报告并保存到 shiplight/reports/seo-review-{date}.md:

# SEO Review Report
**Date:** {date}
**URL:** {url}
**Pages reviewed:** {list}
**Rendering:** {SSR/SSG/CSR/ISR}

## Overall Score: {X}/10 | Confidence: {X}%

## Score Breakdown
| Category | Score | Findings |
|----------|-------|----------|
| Meta Tags (META) | 7/10 | 1 high, 2 medium |
| Structured Data (SCHEMA) | 4/10 | 1 critical, 1 high |
| Social Sharing (OG) | 6/10 | 2 high |
| Crawlability (CRAWL) | 5/10 | 1 critical, 1 high |
| Semantic HTML (SEM) | 8/10 | 1 medium |
| Technical SEO (TECH) | 7/10 | 1 high |

## Page-by-Page Summary
| Page | Title | Description | OG Image | Schema | H1 | Score |
|------|-------|-------------|----------|--------|----|-------|
| / | ✅ | ✅ | ❌ missing | ❌ none | ✅ | 6/10 |
| /blog | ✅ | ⚠️ too short | ✅ | ✅ Article | ✅ | 8/10 |

## Findings
(structured findings with evidence and impact)
置信度评分
  • 90-100%:已在浏览器中验证——标签存在/缺失,URL 可访问/失效
  • 70-89%:内容分析表明存在问题(例如,内容单薄、alt 文本笼统)
  • 50-69%:最佳实践建议,但没有明确违规
  • 低于 50%:不要报告

第 5 阶段:修复

1. 修复指南(示例)
#### CRAWL-10: Content not visible without JavaScript
**Impact:** Search engines may not index your content (especially Google Discover, Bing, social crawlers)
**Current:** Client-side rendered React app, empty HTML shell
**Fix:** Implement SSR or SSG:
- Next.js: Use `getServerSideProps` or `getStaticProps`
- Nuxt: Default SSR mode
- Gatsby: Static generation
- Or: Add prerendering service (prerender.io, rendertron)
**Quick win:** Ensure critical content is in initial HTML response
2. YAML 回归测试
- name: meta-01-title-present
  description: Verify each key page has a unique, properly-sized title tag
  severity: high
  standard: Google-SEO-Guidelines
  steps:
    - URL: /
    - description: Assert the page title is present and 20-60 characters
      js: |
        const title = await page.title();
        if (!title || title.trim() === '') {
          throw new Error('Page has no title');
        }
        if (title.length < 20) {
          throw new Error(`Title too short (${title.length} chars): "${title}"`);
        }
        if (title.length > 60) {
          throw new Error(`Title too long (${title.length} chars): "${title}"`);
        }
        console.log(`Title OK (${title.length} chars): "${title}"`);
    - VERIFY: Page has a descriptive title between 20 and 60 characters

将所有 YAML 测试保存到 shiplight/tests/seo-review.test.yaml。


深度级别

  • --quick:仅检查首页的 Meta 标签、canonical 和 robots.txt。约 2 分钟。
  • 默认:检查关键页面上的所有类别。约 8-12 分钟。
  • --thorough:检查所有类别、爬取整个网站、覆盖所有页面类型并分析内容。约 20-30 分钟。

提示

  • 禁用 JavaScript 后进行测试,查看搜索引擎能看到什么(尤其是 SPA)
  • 使用 inspect_page 的 DOM 输出,高效提取 <head> 内容
  • 手动检查 sitemap.xml——自动生成的网站地图通常包含不应被索引的页面
  • OG 图片必须使用绝对 URL——相对 URL 无法用于社交分享
  • 对于 SPA SEO,关键问题是:“初始 HTML 是否包含内容?”
  • 使用 close_session 关闭会话,并使用 generate_html_report 生成证据

评论

支持 Markdown