# 审查AI生成的SEO页面的清单

> 针对由AI编码代理编写的SEO目标页面的人工审查清单——包括元数据、结构化数据、规范URL以及Astro和Next.js的核心网页指标。

**Type:** Checklist  
**Tools:** Cursor, Claude Code, Codex, Windsurf  
**Stack:** Next.js, Astro, TypeScript  
**Updated:** 2026-06-08

---

AI生成的SEO页面看起来正确，但可能包含重复的规范标签、通用的描述、损坏的结构化数据或阻塞渲染的脚本，这会严重影响核心网页指标分数。

## 正确性

```txt
[ ] Every page has a unique, descriptive title tag (50–60 characters)
[ ] Every page has a unique meta description (120–160 characters)
[ ] Title and description are dynamically generated from page content — not one shared static string
[ ] Canonical URL is set to the preferred URL — absolute URL with the correct domain
[ ] Only one canonical tag is emitted per page — check for duplicates from layout + page
[ ] Open Graph og:title, og:description, og:image, og:url, and og:type are all present
[ ] og:image is an absolute URL, minimum 1200x630px, and actually resolves
[ ] twitter:card is set (summary_large_image for most content pages)
[ ] Heading hierarchy is correct — one h1 per page, h2/h3 for subsections, no skipped levels
[ ] The h1 contains the primary keyword and is not identical to the title tag
[ ] Internal links use descriptive anchor text — not "click here" or "read more"
[ ] noindex is not accidentally set on pages that should be indexed
[ ] robots.txt does not disallow the pages you want indexed
[ ] sitemap.xml includes all indexable pages with correct lastmod dates
[ ] hreflang tags are present and correct on multilingual or multi-region pages
[ ] Pagination uses rel="next" and rel="prev" or canonical to the first page
```

## 结构化数据

```txt
[ ] JSON-LD is valid — paste into Google's Rich Results Test before deploying
[ ] @context is https://schema.org (HTTPS, not HTTP)
[ ] @type matches the actual content (Article, Product, FAQPage, BreadcrumbList, etc.)
[ ] datePublished and dateModified are ISO 8601 format
[ ] author.name is a real name, not "AI" or a placeholder
[ ] BreadcrumbList item positions start at 1 and are sequential
[ ] FAQPage only lists questions that are actually answered on the page
[ ] Product schema includes price, currency, and availability
[ ] No fabricated schema properties — verify each property at schema.org
[ ] Structured data is in a script tag with type="application/ld+json" — not inline attributes
```

## 性能

```txt
[ ] Largest Contentful Paint (LCP) element is an img with priority (Next.js) or fetchpriority="high"
[ ] Hero images are served in WebP or AVIF format — not PNG or unoptimized JPEG
[ ] No render-blocking third-party scripts in the head without async or defer
[ ] Google Fonts are loaded via next/font or with font-display: swap
[ ] Cumulative Layout Shift (CLS) is minimized — images have explicit width and height
[ ] Time to First Byte (TTFB) is acceptable — page is statically generated or edge-cached
[ ] Unused CSS (Tailwind purge, CSS modules) is not bloating the page payload
[ ] Pagespeed Insights score is verified in a staging environment before publishing
```

## AI特定风险

```txt
[ ] AI has not generated keyword-stuffed or duplicate descriptions across multiple pages
[ ] AI has not set noindex: true on the page component while generating a sitemap entry
[ ] AI-generated JSON-LD contains no template literal leftovers or undefined values
[ ] AI has not used Next.js Pages Router metadata patterns inside the App Router
[ ] AI has not duplicated canonical tags by adding one in a layout and another in the page
[ ] AI has not used relative URLs in og:image or canonical — these must be absolute
[ ] AI has not invented schema.org types or properties that do not exist
[ ] Sitemap generation includes correct priority and changefreq values for each content type
[ ] AI has not set the same title and og:title — they can and often should differ
```

## 修复提示

```txt title="Fix Prompt"
Review this page and its metadata against the SEO checklist above. Fix any
duplicate canonical tags, relative og:image URLs, invalid JSON-LD, or missing
meta tags. Ensure each page has a unique title and description derived from the
actual page content. Return the corrected metadata component and JSON-LD block,
then list each issue found with a one-line explanation.
```