SEO Checklist
Everything to verify before and after the first deploy.
Config
Section titled “Config”-
site:inastro.config.mjs= production domain (no www, correct TLD) -
robots.txtsitemap URL matchessite:exactly - Both
domain.comandwww.domain.comadded as Cloudflare Pages custom domains
Meta tags
Section titled “Meta tags”- Every page has a unique
titleanddescription -
<link rel="canonical">uses the production domain (not localhost) - Canonical is suppressed on all
noindexpages (checkout, payment-return, thank-you) -
noindexpages have<meta name="robots" content="noindex, nofollow"> - OG image exists at
/og-image.jpg(1200x630) - OG
og:urlmatches the canonical URL
Schema markup
Section titled “Schema markup”- JSON-LD passes Google’s rich results test
-
aggregateRatinguses real client numbers (not placeholder 4.9/38) -
addressis the real business address -
telephoneandemailare correct -
sameAscontains real social profile URLs - Homepage has
FAQPageJSON-LD with 5+ questions
Anchor text
Section titled “Anchor text”- No icon-only links without
<span class="sr-only">text - No generic “Learn more” links without sr-only service context
- No duplicate H2 text across pages
robots.txt & sitemap
Section titled “robots.txt & sitemap”- Utility pages disallowed:
/checkout,/payment-return,/thank-you - Sitemap URL in robots.txt matches production domain
- All 9 AI crawlers listed explicitly with
Allow: /before theUser-agent: *block (GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot, GoogleExtendedBot, Applebot-Extended, meta-externalagent, YouBot, Amazonbot) -
public/llms.txtcreated with service descriptions, pricing, contact, and page URLs - Sitemap submitted to Google Search Console after first deploy
- Sitemap submitted to Bing Webmaster Tools (feeds Perplexity and ChatGPT indexing)
Images
Section titled “Images”- All images have descriptive
alttext - First/LCP image uses
loading="eager"+fetchpriority="high" - All other images use
loading="lazy"
Favicons
Section titled “Favicons”- Only reference favicon PNG files that actually exist in
/public/ - If PNGs not ready, use SVG-only
<link rel="icon" type="image/svg+xml">
Performance
Section titled “Performance”- PageSpeed score 90+ on mobile and desktop
- Core Web Vitals: LCP < 2.5s, CLS < 0.1, INP < 200ms
Blog scheduling (if blog exists)
Section titled “Blog scheduling (if blog exists)”- All 4
getCollection("blog", ...)calls includedata.pubDate <= nowfilter -
.github/workflows/scheduled-build.ymlexists with 9:00 IST daily cron -
CF_PAGES_DEPLOY_HOOKsecret added to GitHub repo - After each post goes live: Google Search Console → URL Inspection → Request Indexing
Post-deploy
Section titled “Post-deploy”-
npm run indexnow- submit all URLs to Bing/Yandex - Submit sitemap in Google Search Console
- Submit sitemap in Bing Webmaster Tools
- Test OG image: paste URL into opengraph.xyz
- Force WhatsApp/social re-scrape via Facebook debugger