Keel Docs
Contributing

SEO Guide

Best practices for search engine optimization on the Keel marketing site.

SEO Guide

Best practices for keeping the Keel marketing site optimized for search engines.

Page Metadata

Every page should have unique metadata via generateMetadata():

export const metadata = {
  title: 'Your Page Title',  // Becomes "Your Page Title — Keel"
  description: 'A concise description under 160 characters.',
};

Title Best Practices

  • Keep under 60 characters
  • Front-load important keywords
  • Use the %s — Keel template (set in root layout)

Description Best Practices

  • Keep between 120-160 characters
  • Include primary keyword
  • Write for humans (it appears in search results)

Structured Data

Add JSON-LD for rich snippets where appropriate:

// For blog posts
export default function BlogPost() {
  return (
    <>
      <script type="application/ld+json" dangerouslySetInnerHTML={{
        __html: JSON.stringify({
          '@context': 'https://schema.org',
          '@type': 'Article',
          headline: 'Your Post Title',
          author: { '@type': 'Person', name: 'Author Name' },
          datePublished: '2026-04-15',
        })
      }} />
      {/* ... page content ... */}
    </>
  );
}

Internal Linking

  • Blog posts should link to relevant docs pages
  • Docs pages should link to related blog posts
  • Use descriptive anchor text (not "click here")

Sitemap

The sitemap at /sitemap.xml is auto-generated from all routes. It:

  • Includes all non-draft blog posts
  • Includes all docs pages
  • Includes static pages (landing, pricing, changelog)
  • Excludes campaign pages (they have their own tracking)

Verify at: https://usekeel.io/sitemap.xml

Performance

Core Web Vitals targets:

MetricTarget
LCP< 2.5s
FID< 100ms
CLS< 0.1

All marketing and docs pages are statically generated for optimal performance.

Blog Post SEO Checklist

  • Title under 60 characters with primary keyword
  • Meta description 120-160 characters
  • H1 matches the title
  • H2/H3 headings use related keywords
  • Images have alt text
  • Internal links to related content
  • External links open in new tab
  • Canonical URL is set (automatic via metadataBase)