P PasteCode
Checklist

Checklist for Reviewing AI-Generated SEO Pages

A human review checklist for SEO-targeted pages written by AI coding agents — metadata, structured data, canonical URLs, and Core Web Vitals for Astro and Next.js.

CursorClaude CodeCodexWindsurf Next.jsAstroTypeScript
.md .json Updated Jun 8, 2026

AI generates SEO pages that look correct but ship with duplicate canonical tags, generic descriptions, broken structured data, or render-blocking scripts that tank Core Web Vitals scores.

Correctness

[ ] 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

Structured Data

[ ] 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

Performance

[ ] 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-Specific Risks

[ ] 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

Fix Prompt

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.