Site-Wide SEO Optimization Implementation Plan

By Jay Griffin, Claude Sonnet 4.5  ·  February 9, 2026
docs
🏷️ Tags:seonextjsoptimizationroadmapmetadata

Comprehensive plan for implementing Next.js metadata API across the site for better SEO, including OpenGraph and Twitter Card support.

Site-Wide SEO Optimization Implementation Plan

This document outlines the plan for implementing comprehensive SEO metadata across the site using Next.js's Metadata API. Currently, we have basic metadata but we're missing key fields that affect search rankings and social media sharing.

Current State

Right now we have two separate metadata systems:

The problem: Next.js doesn't read our PostMeta for SEO. We need to export both so our content system works AND search engines get proper metadata.

What We're Missing

Implementation Plan

Phase 1: High-Priority Pages

Start with pages that are most likely to be shared or searched:

Phase 2: Content Pages

All blog posts and docs should have rich metadata for sharing:

Phase 3: Automation

Make metadata generation automatic:

Metadata Structure Template

Here's what each page should export:

.ts
import type { Metadata } from 'next'
import type { PostMeta } from '@/types/post'

// Your custom metadata (for content system)
export const routeMetadata: PostMeta = {
  title: 'Page Title - Jay Griffin',
  slug: 'page-slug',
  date: '2026-02-09T00:00:00Z',
  author: ['Jay Griffin'],
  description: 'Clear description of what this page is about',
  tags: ['relevant', 'tags'],
  path: '/page-slug',
}

// Next.js metadata (for actual SEO)
export const metadata: Metadata = {
  title: routeMetadata.title,
  description: routeMetadata.description,

  openGraph: {
    title: routeMetadata.title,
    description: routeMetadata.description,
    url: `https://jaygriff.com${routeMetadata.path}`,
    siteName: 'Jay Griffin',
    type: 'article',
    images: [
      {
        url: 'https://jaygriff.com/og-image.jpg',
        width: 1200,
        height: 630,
        alt: routeMetadata.title,
      },
    ],
  },

  twitter: {
    card: 'summary_large_image',
    title: routeMetadata.title,
    description: routeMetadata.description,
    images: ['https://jaygriff.com/twitter-image.jpg'],
  },
}

OpenGraph Image Generation

We need to create or generate Open Graph images (1200x630px) for social sharing. Options:

SEO Metadata Fields Reference

Basic Metadata

.ts
{
  title: 'Page Title',              // Browser tab, search results
  description: 'Meta description',   // Search result snippet
  keywords: ['array', 'of', 'terms'], // Mostly ignored by modern search engines
  authors: [{ name: 'Jay Griffin' }],
  robots: 'index, follow',           // Crawling instructions
  alternates: {
    canonical: 'https://jaygriff.com/path', // Preferred URL
  }
}

OpenGraph Metadata

.ts
openGraph: {
  title: 'Page Title',
  description: 'Description for social media',
  url: 'https://jaygriff.com/path',
  siteName: 'Jay Griffin',
  locale: 'en_US',
  type: 'website',
  images: [
    {
      url: 'https://jaygriff.com/og-image.jpg',
      width: 1200,
      height: 630,
      alt: 'Image description',
    },
  ],
}

Twitter Card Metadata

.ts
twitter: {
  card: 'summary_large_image',
  title: 'Page Title',
  description: 'Description for Twitter',
  creator: '@yourhandle',
  images: ['https://jaygriff.com/twitter-image.jpg'],
}

Testing & Validation

After implementing, test with these tools:

Success Metrics

Resources

Implementation Checklist

Notes

This is a one-time implementation effort with long-term benefits. Once the infrastructure is in place, new content automatically gets proper metadata through the content creation system. The focus should be on making it automatic so we never think about it again.