SEO

SEO Checklist

# SEO Setup Checklist

Complete technical SEO playbook based on the ActiveWizards Astro site (147 pages, 115 blog posts, 800+ redirects). Every pattern is production-tested. Covers on-page SEO, structured data, GEO (Generative Engine Optimization), and performance.


Table of Contents

  • Meta Tags
  • Open Graph Tags
  • Twitter Cards
  • JSON-LD Structured Data
  • GEO (Generative Engine Optimization)
  • Sitemap
  • robots.txt
  • Heading Hierarchy
  • Image Optimization
  • Internal Linking
  • Page Speed
  • Redirect Strategy
  • Schema.org by Page Type
  • Pre-Launch Checklist

  • 1. Meta Tags

    Required on every page

    ``html

    Page Title | Brand Name

    `

    Implementation in Astro SEO component

    `astro


    const { title, description, canonical } = Astro.props;

    const siteUrl = 'https://mysite.com';

    const canonicalUrl = canonical || new URL(Astro.url.pathname, siteUrl).href;


    {title}

    `

    Title tag rules

    RuleLimitExample
    Length50-60 characters"Building RAG Pipelines with LangChain \ActiveWizards"
    FormatPage Title \BrandKeeps brand consistent, page-specific first
    Primary keywordWithin first 60 charsFront-load the target keyword
    Unique per pageNo duplicatesEvery page has a distinct title

    Meta description rules

    RuleLimitExample
    Length120-155 charactersLong enough for context, short enough to not truncate
    Include keywordNaturallyNot keyword-stuffed
    Include CTAWhen appropriate"Learn how..." or "See our approach to..."
    Unique per pageNo duplicatesEvery page has a distinct description

    Canonical URL rules

    • Always absolute URL: https://mysite.com/blog/my-post/
    • Include trailing slash consistently (match your Astro config)
    • Self-referencing canonical on every page (even when not deduping)
    • For paginated content: each page gets its own canonical

    2. Open Graph Tags

    `html

    `

    Article-specific OG tags

    `html

    `

    OG image specifications

    • Dimensions: 1200 x 630 pixels (1.91:1 ratio)
    • Format: PNG for text-heavy, JPG for photo-heavy
    • File size: Under 1MB (under 300KB preferred)
    • Text safe area: Keep important text in the center 800x400 area
    • Fallback: Set a site-wide default OG image for pages without a custom one

    Implementation pattern

    `astro


    const ogImage = Astro.props.ogImage || '/images/brand/og-default.png';

    const ogImageUrl = ogImage.startsWith('http')

    ? ogImage

    : new URL(ogImage, 'https://mysite.com').href;


    `


    3. Twitter Cards

    `html

    `

    Card types

    TypeUse caseImage size
    summary_large_imageBlog posts, landing pages1200x630
    summaryGeneric pages120x120 minimum

    Validation

    Test at cards-dev.twitter.com/validator before launch.


    4. JSON-LD Structured Data

    Base pattern (every page)

    `astro