SEO readiness before production

Technical SEO checks for metadata, crawlability, accessibility signals, and social previews. SEO findings account for 10% of the overall score.

Metadata checks

Up to 50 HTML, TSX, JSX, Vue, and layout files are scanned for these signals:

CheckDetection patternSeverity if missing
Page title<title> or Next.js title: exportMedium
Meta descriptionmeta description or description: exportMedium
Open Graphog:title, property="og:…"Medium
Twitter/X cardtwitter:card, name="twitter:…"Medium
Canonical URLrel="canonical" or canonical: exportMedium
JSON-LD structured dataapplication/ld+json script blocksMedium

When seo.defaultTitle is set in config, missing-metadata recommendations include your configured title as a hint.

Content checks

CheckScopeSeverity
Image alt text<img> tags without alt in up to 30 filesLow
Heading hierarchyHTML pages missing <h1> (more than 2 pages)Low

Public assets

CF Ready searches the same candidate paths as AI readiness checks:

AssetCandidate pathsSeverity if missing
sitemap.xmlpublic/sitemap.xml, sitemap.xml, static/sitemap.xmlMedium
robots.txtpublic/robots.txt, robots.txt, static/robots.txtLow

fix --seo output

cf-ready fix --seo generates:

FileDescription
public/sitemap.xmlURL set from detected routes + criticalRoutes (up to 30 URLs)
cf-ready-seo-suggestions.mdCopy-paste HTML metadata, JSON-LD Organization schema, and Next.js App Router metadata export using seo.* config values

Existing files are skipped unless --force is passed. The suggestions file is meant for manual application — cf-ready does not modify your page components automatically.

Combine with AI readiness. cf-ready fix --ai-readiness also generates public/robots.txt and public/sitemap.xml. Run both flags together or use --force to refresh.

Commands

cf-ready seo-ready           # Run SEO checks only
cf-ready fix --seo           # Generate sitemap + suggestions
cf-ready scan                # Full scan including SEO category

Configure defaults in Configuration under the seo block: defaultTitle, defaultDescription, defaultImage, organizationName.