seo-review

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

SEO Review

SEO审查

Evaluate your application's search engine optimization and discoverability. This review catches SEO issues that are invisible during normal development — missing meta tags, broken structured data, poor crawlability, missing sitemaps, and social sharing problems. Many SPAs ship with zero SEO consideration.
评估你的应用程序的搜索引擎优化(SEO)与可发现性。本次审查能发现常规开发过程中不易察觉的SEO问题——缺失的meta标签、损坏的结构化数据、糟糕的爬虫可爬性、缺失的站点地图以及社交分享问题。许多单页应用(SPA)上线时完全未考虑SEO因素。

When to use

适用场景

Use
/seo-review
when:
  • Before launching a public-facing website or application
  • After redesigning or migrating a website
  • When organic traffic is a growth channel
  • After switching to an SPA framework (React, Vue, Angular)
  • When social sharing (Open Graph) is important
  • Setting up content marketing pages
在以下场景使用
/seo-review
  • 面向公众的网站或应用上线前
  • 网站改版或迁移后
  • 自然流量作为核心增长渠道时
  • 切换至SPA框架(React、Vue、Angular)后
  • 社交分享(Open Graph)较为重要时
  • 搭建内容营销页面时

Standards Referenced

参考标准

  • Google Search Central — SEO best practices and guidelines
  • Schema.org — Structured data vocabulary
  • Open Graph Protocol — Social sharing meta tags
  • Twitter Card — Twitter sharing markup
  • W3C Semantic HTML — Accessibility and SEO semantics
  • Web.dev SEO Guidelines — Google's SEO recommendations
  • Google Search Central — SEO最佳实践与指南
  • Schema.org — 结构化数据词汇标准
  • Open Graph Protocol — 社交分享meta标签协议
  • Twitter Card — Twitter分享标记规范
  • W3C Semantic HTML — 无障碍与SEO语义标准
  • Web.dev SEO Guidelines — Google官方SEO建议

Phase Overview

阶段概述

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

Phase 1: EDUCATE   → 为什么SEO重要以及我们的审查内容
Phase 2: SCOPE     → 确定核心页面、内容类型与SEO目标
Phase 3: ANALYZE   → 基于浏览器的SEO验证
Phase 4: REPORT    → 包含影响评估与优先级的审查结果
Phase 5: REMEDIATE → 修复指导 + YAML回归测试

Phase 1: Educate

阶段1:认知普及

Why this matters: 53% of all website traffic comes from organic search (BrightEdge). The first Google result gets 27.6% of all clicks; position 10 gets 2.4% (Backlinko). SPAs often render blank HTML to crawlers, making millions of pages invisible to search. Proper SEO doesn't require tricks — it requires making your content discoverable and understandable by search engines.
This review checks the technical SEO foundation — the things that must be correct before content strategy matters.

重要性说明:53%的网站流量来自自然搜索(BrightEdge数据)。Google搜索结果中排名第一的页面获得27.6%的点击量,排名第十的页面仅获得2.4%(Backlinko数据)。SPA通常会向爬虫返回空白HTML,导致数百万页面无法被搜索引擎收录。合规的SEO无需投机取巧——只需让你的内容能被搜索引擎发现并理解。
本次审查聚焦技术SEO基础——这些是内容策略生效前必须确保正确的要素。

Phase 2: Scope

阶段2:范围界定

Gather context

收集上下文信息

  1. Auto-detect from codebase:
    • Framework and rendering strategy (SSR, SSG, CSR, ISR)
    • Meta tag management (react-helmet, next/head, vue-meta, etc.)
    • Sitemap generation
    • robots.txt configuration
    • Structured data (JSON-LD, microdata)
    • i18n/hreflang setup
    • Canonical URL handling
    • Route structure and page types
  2. Ask the user (one at a time):
    • Target URL: Where is the app running? (production preferred for realistic crawling)
    • Key pages: Which pages are most important for search? (homepage, product pages, blog posts, landing pages)
    • Target keywords: Any primary keywords you want to rank for? (optional, for content evaluation)
    • Social sharing important?: Is Open Graph / Twitter Cards needed? (default: yes for public sites)
    • Multi-language?: Does the site serve multiple languages? (auto-detected)
  3. Identify page types:
    • Homepage
    • Content pages (blog, docs, about)
    • Product/listing pages
    • Dynamic pages (search results, user profiles)
    • Utility pages (login, 404, terms)

  1. 从代码库自动检测
    • 框架与渲染策略(SSR、SSG、CSR、ISR)
    • Meta标签管理工具(react-helmet、next/head、vue-meta等)
    • 站点地图生成方式
    • robots.txt配置
    • 结构化数据(JSON-LD、微数据)
    • 多语言/i18n hreflang设置
    • 规范URL处理
    • 路由结构与页面类型
  2. 向用户逐一确认
    • 目标URL:应用部署在哪里?(优先选择生产环境以获得真实爬取数据)
    • 核心页面:哪些页面对搜索最为重要?(首页、产品页、博客文章、落地页)
    • 目标关键词:是否有想要排名的核心关键词?(可选,用于内容评估)
    • 社交分享是否重要?:是否需要配置Open Graph / Twitter Cards?(默认:面向公众的网站需要)
    • 是否支持多语言?:网站是否服务于多语言用户?(可自动检测)
  3. 识别页面类型
    • 首页
    • 内容页(博客、文档、关于页)
    • 产品/列表页
    • 动态页面(搜索结果、用户资料)
    • 功能页(登录页、404页、条款页)

Phase 3: Analyze

阶段3:分析评估

Open a browser session with
new_session
using
record_evidence: true
. For each key page, run all check categories.
使用
new_session
开启浏览器会话并设置
record_evidence: true
。针对每个核心页面,运行所有检查类别。

Category A: Meta Tags & Head Elements (META)

类别A:Meta标签与头部元素(META)

Check IDCheckStandardMethod
META-01Unique, descriptive
<title>
(50-60 chars)
Google guidelinesExtract
<title>
, check length and uniqueness
META-02Meta description present (120-160 chars)Google guidelinesCheck
<meta name="description">
META-03Canonical URL set correctlyGoogle guidelinesCheck
<link rel="canonical">
META-04Viewport meta tag presentMobile SEOCheck
<meta name="viewport">
META-05Charset declaredHTML standardCheck
<meta charset>
META-06No duplicate meta tagsSEO best practiceCheck for duplicate titles, descriptions
META-07Favicon presentBranding/SEOCheck
<link rel="icon">
META-08Language declaredSEO/a11yCheck
<html lang="">
META-09No meta robots noindex on important pagesIndexingCheck
<meta name="robots">
META-10Hreflang tags for multi-language (if applicable)International SEOCheck
<link rel="alternate" hreflang="">
Browser validation: Use
inspect_page
to read the DOM. Extract all
<head>
elements via JavaScript.
检查ID检查内容参考标准检查方法
META-01唯一且具有描述性的
<title>
标签(50-60字符)
Google指南提取
<title>
标签,检查长度与唯一性
META-02存在meta描述标签(120-160字符)Google指南检查
<meta name="description">
标签
META-03规范URL设置正确Google指南检查
<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>
元素。

Category B: Structured Data (SCHEMA)

类别B:结构化数据(SCHEMA)

Check IDCheckStandardMethod
SCHEMA-01JSON-LD structured data presentSchema.orgCheck for
<script type="application/ld+json">
SCHEMA-02Schema type matches page contentSchema.orgValidate type (Organization, Product, Article, etc.)
SCHEMA-03Required properties presentSchema.orgValidate against type requirements
SCHEMA-04JSON-LD is valid JSONSchema.orgParse and validate JSON
SCHEMA-05No deprecated schema propertiesSchema.orgCheck for deprecated fields
SCHEMA-06Breadcrumb structured dataSchema.orgCheck for BreadcrumbList on interior pages
SCHEMA-07FAQ structured data (if applicable)Schema.orgCheck for FAQPage on FAQ sections
SCHEMA-08Review/Rating structured data (if applicable)Schema.orgCheck for AggregateRating
Browser validation: Extract JSON-LD scripts via JavaScript. Parse and validate structure. Compare page content against schema claims.
检查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为合法JSON格式Schema.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声明。

Category C: Open Graph & Social Sharing (OG)

类别C:Open Graph与社交分享(OG)

Check IDCheckStandardMethod
OG-01og:title present and meaningfulOpen GraphCheck
<meta property="og:title">
OG-02og:description presentOpen GraphCheck
<meta property="og:description">
OG-03og:image present and accessibleOpen GraphCheck
<meta property="og:image">
, verify URL loads
OG-04og:image dimensions adequate (1200x630 recommended)Open GraphCheck image size
OG-05og:url matches canonicalOpen GraphCompare og:url with canonical
OG-06og:type set correctlyOpen GraphCheck og:type value
OG-07Twitter card meta tags presentTwitter CardsCheck
twitter:card
,
twitter:title
, etc.
OG-08Social sharing preview looks correctUXConstruct preview from OG tags
Browser validation: Extract all OG and Twitter meta tags. Verify og:image URL is accessible. Construct a preview representation.
检查ID检查内容参考标准检查方法
OG-01存在有意义的og:title标签Open Graph检查
<meta property="og:title">
标签
OG-02存在og:description标签Open Graph检查
<meta property="og:description">
标签
OG-03存在可访问的og:image标签Open Graph检查
<meta property="og:image">
标签,验证URL可正常加载
OG-04og:image尺寸达标(推荐1200x630)Open Graph检查图片尺寸
OG-05og:url与规范URL一致Open Graph对比og:url与规范URL
OG-06og:type设置正确Open Graph检查og:type取值
OG-07存在Twitter卡片meta标签Twitter Cards检查
twitter:card
twitter:title
等标签
OG-08社交分享预览显示正常用户体验根据OG标签生成预览效果
浏览器验证:提取所有OG与Twitter meta标签,验证og:image URL可访问,生成预览效果。

Category D: Crawlability & Indexing (CRAWL)

类别D:爬虫可爬性与索引规则(CRAWL)

Check IDCheckStandardMethod
CRAWL-01robots.txt exists and is validGoogle guidelinesFetch /robots.txt
CRAWL-02Sitemap.xml exists and is validGoogle guidelinesFetch /sitemap.xml, validate format
CRAWL-03Sitemap referenced in robots.txtBest practiceCheck robots.txt for Sitemap directive
CRAWL-04Important pages are in sitemapSEOCross-reference key pages with sitemap URLs
CRAWL-05No broken internal linksCrawlabilityCheck all internal links on key pages
CRAWL-06No redirect chains (>2 hops)Crawl efficiencyFollow redirects, count hops
CRAWL-07Clean URL structure (no excessive params)SEOCheck URL patterns for cleanliness
CRAWL-08404 page returns correct HTTP statusSEONavigate to non-existent URL, check status
CRAWL-09No orphan pages (accessible from navigation)CrawlabilityVerify key pages linked from homepage/nav
CRAWL-10SSR/SSG content visible without JavaScriptSPA SEODisable JS, check if content renders
CRAWL-11Page load time for crawlersCrawl budgetMeasure server response time
Browser validation: Navigate to robots.txt, sitemap.xml. Follow internal links. Disable JavaScript to test server-rendered content. Check HTTP status codes.
检查ID检查内容参考标准检查方法
CRAWL-01robots.txt存在且合法Google指南获取/robots.txt文件
CRAWL-02sitemap.xml存在且合法Google指南获取/sitemap.xml文件,验证格式
CRAWL-03robots.txt中引用站点地图最佳实践检查robots.txt是否包含Sitemap指令
CRAWL-04核心页面已纳入站点地图SEO交叉验证核心页面与站点地图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状态码。

Category E: Semantic HTML & Content (SEM)

类别E:语义化HTML与内容(SEM)

Check IDCheckStandardMethod
SEM-01Single
<h1>
per page
SEO best practiceCount h1 elements
SEM-02Heading hierarchy is logical (h1→h2→h3)SEO/a11yCheck heading sequence
SEM-03Images have descriptive alt textSEO/a11yCheck alt attributes for descriptiveness
SEM-04Internal links use descriptive anchor textSEOCheck for "click here" or bare URLs as links
SEM-05Semantic HTML elements used (nav, main, article, section)SEOCheck for semantic landmarks
SEM-06Content-to-HTML ratio is reasonableSEOCalculate text content vs HTML markup
SEM-07No duplicate content across pagesSEOCompare key content sections across pages
SEM-08URLs are human-readableSEOCheck for descriptive slugs vs IDs/hashes
Browser validation: Extract headings, links, images, and semantic elements via JavaScript. Analyze content structure.
检查ID检查内容参考标准检查方法
SEM-01每页仅有一个
<h1>
标签
SEO最佳实践统计h1元素数量
SEM-02标题层级逻辑合理(h1→h2→h3)SEO/无障碍检查标题序列
SEM-03图片包含描述性alt文本SEO/无障碍检查alt属性的描述性
SEM-04内部链接使用描述性锚文本SEO检查是否存在“点击这里”或裸URL作为链接文本
SEM-05使用语义化HTML元素(nav、main、article、section)SEO检查是否存在语义化地标元素
SEM-06内容与HTML占比合理SEO计算文本内容与HTML标记的比例
SEM-07页面间无重复内容SEO对比各页面的核心内容板块
SEM-08URL具有可读性SEO检查URL是否为描述性slug,而非ID/哈希值
浏览器验证:通过JavaScript提取标题、链接、图片与语义化元素,分析内容结构。

Category F: Technical SEO (TECH)

类别F:技术SEO(TECH)

Check IDCheckStandardMethod
TECH-01HTTPS everywhereGoogle ranking signalCheck protocol
TECH-02HTTP → HTTPS redirect worksSEOTest HTTP URL redirect
TECH-03www → non-www (or vice versa) redirect consistentSEOTest both variants
TECH-04Mobile-friendly (responsive)Google mobile-firstCheck viewport, responsive behavior
TECH-05Core Web Vitals pass "Good" thresholdsGoogle ranking signalMeasure LCP, INP, CLS
TECH-06No render-blocking resourcesPage speedCheck script/style loading
TECH-07Proper 301 redirects for moved contentSEOCheck known old URLs if applicable
TECH-08International targeting correct (if multi-region)International SEOCheck hreflang, geo-targeting
Browser validation: Test redirects, measure performance metrics, check mobile rendering.

检查ID检查内容参考标准检查方法
TECH-01全站使用HTTPSGoogle排名信号检查协议类型
TECH-02HTTP → HTTPS重定向生效SEO测试HTTP URL的重定向行为
TECH-03www与非www重定向保持一致SEO测试两种URL变体的重定向
TECH-04移动端友好(响应式设计)Google移动优先索引检查viewport与响应式表现
TECH-05Core Web Vitals达到“良好”阈值Google排名信号测量LCP、INP、CLS指标
TECH-06无阻塞渲染的资源页面速度检查脚本/样式的加载方式
TECH-07已迁移内容配置正确的301重定向SEO如适用,检查已知旧URL的重定向
TECH-08国际化目标配置正确(如适用)国际化SEO检查hreflang与地理定位设置
浏览器验证:测试重定向,测量性能指标,检查移动端渲染效果。

Phase 4: Report

阶段4:生成报告

Generate a structured report saved to
shiplight/reports/seo-review-{date}.md
:
markdown
undefined
生成结构化报告并保存至
shiplight/reports/seo-review-{date}.md
markdown
undefined

SEO Review Report

SEO审查报告

Date: {date} URL: {url} Pages reviewed: {list} Rendering: {SSR/SSG/CSR/ISR}
日期: {date} URL: {url} 审查页面: {list} 渲染方式: {SSR/SSG/CSR/ISR}

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

总体评分: {X}/10 | 置信度: {X}%

Score Breakdown

评分明细

CategoryScoreFindings
Meta Tags (META)7/101 high, 2 medium
Structured Data (SCHEMA)4/101 critical, 1 high
Social Sharing (OG)6/102 high
Crawlability (CRAWL)5/101 critical, 1 high
Semantic HTML (SEM)8/101 medium
Technical SEO (TECH)7/101 high
类别得分问题发现
Meta标签 (META)7/101个高优先级,2个中优先级
结构化数据 (SCHEMA)4/101个关键问题,1个高优先级
社交分享 (OG)6/102个高优先级
爬虫可爬性 (CRAWL)5/101个关键问题,1个高优先级
语义化HTML (SEM)8/101个中优先级
技术SEO (TECH)7/101个高优先级

Page-by-Page Summary

页面逐项总结

PageTitleDescriptionOG ImageSchemaH1Score
/❌ missing❌ none6/10
/blog⚠️ too short✅ Article8/10
页面标题描述OG图片SchemaH1得分
/❌ 缺失❌ 无6/10
/blog⚠️ 过短✅ Article8/10

Findings

问题发现

(structured findings with evidence and impact)
undefined
(包含证据与影响评估的结构化结果)
undefined

Confidence Scoring

置信度评分

  • 90-100%: Verified in browser — tag present/absent, URL accessible/broken
  • 70-89%: Content analysis suggests issue (e.g., thin content, generic alt text)
  • 50-69%: Best practice recommendation without clear violation
  • Below 50%: Don't report

  • 90-100%: 浏览器验证确认——标签存在/缺失、URL可访问/失效
  • 70-89%: 内容分析提示问题(如内容单薄、通用alt文本)
  • 50-69%: 最佳实践建议,无明确违规
  • 低于50%: 不纳入报告

Phase 5: Remediate

阶段5:问题修复

1. Fix guidance (example)

1. 修复指导(示例)

markdown
undefined
markdown
undefined

CRAWL-10: Content not visible without JavaScript

CRAWL-10: 禁用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
undefined
影响: 搜索引擎可能无法收录你的内容(尤其是Google Discover、Bing及社交爬虫) 现状: 客户端渲染的React应用,返回空白HTML外壳 修复方案: 实现SSR或SSG:
  • Next.js: 使用
    getServerSideProps
    getStaticProps
  • Nuxt: 默认SSR模式
  • Gatsby: 静态生成
  • 或: 添加预渲染服务(prerender.io、rendertron) 快速优化: 确保核心内容包含在初始HTML响应中
undefined

2. YAML regression test

2. YAML回归测试

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
Save all YAML tests to
shiplight/tests/seo-review.test.yaml
.

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

Depth Levels

审查深度级别

  • --quick
    : Meta tags + canonical + robots.txt on homepage only. ~2 minutes.
  • default: All categories on key pages. ~8-12 minutes.
  • --thorough
    : All categories + full site crawl + all page types + content analysis. ~20-30 minutes.
  • --quick
    : 仅检查首页的Meta标签、规范URL与robots.txt。约2分钟。
  • 默认: 检查核心页面的所有类别。约8-12分钟。
  • --thorough
    : 检查所有类别 + 全站爬取 + 所有页面类型 + 内容分析。约20-30分钟。

Tips

提示

  • Test with JavaScript disabled to see what search engines see (especially for SPAs)
  • Use
    inspect_page
    DOM output to extract
    <head>
    content efficiently
  • Check sitemap.xml manually — auto-generated sitemaps often include pages that shouldn't be indexed
  • OG image must be an absolute URL — relative URLs don't work for social sharing
  • For SPA SEO, the critical question is: "Does the initial HTML contain the content?"
  • Close session with
    close_session
    and use
    generate_html_report
    for evidence
  • 禁用JavaScript测试,查看搜索引擎能看到的内容(尤其针对SPA)
  • 使用
    inspect_page
    的DOM输出高效提取
    <head>
    内容
  • 手动检查sitemap.xml——自动生成的站点地图常包含不应被索引的页面
  • OG图片必须使用绝对URL——相对URL无法用于社交分享
  • 针对SPA的SEO,关键问题是:“初始HTML是否包含内容?”
  • 使用
    close_session
    关闭会话,调用
    generate_html_report
    生成带证据的报告