Feature Spec: Content Thumbnail Metadata System
By Jay Griffin, Claude Sonnet 4.5*🤖 AI Generated· January 30, 2026
docs
🏷️ Tags:feature-specimagesthumbnailsmetadatasocial-sharingopen-graphvisual-design
Add visual thumbnail support to all content types (posts, projects, pages) for improved visual appeal, social sharing, and user engagement
Feature Spec: Content Thumbnail Metadata System
Overview
Add visual thumbnails to all content on jaygriff.com (blog posts, projects, pages) to improve visual appeal, social sharing, and user engagement. Currently the site has no images - this is the foundational image system.
Problem Statement
- Site is currently all text, feels sparse and unpolished
- No visual hierarchy or quick visual scanning
- Poor social media preview when sharing links
- Projects page will need thumbnails to showcase work effectively
- Blog posts look generic without featured images
Goals
- Add thumbnail support to all content types
- Generate/select appropriate thumbnails for existing content
- Make adding thumbnails to new content frictionless
- Improve visual appeal and professionalism of the site
- Enable rich social media previews (Open Graph)
Core Features
1. Metadata Schema Extension
Add to all content frontmatter:
thumbnail: "/thumbnails/posts/my-post.png" # or .jpg, .webp
thumbnail_alt: "Description for accessibility"
thumbnail_attribution: "Source/creator if applicable" # optional
Fallback system:
- If no thumbnail specified, use category/type default
- AI posts → AI-themed default thumbnail
- Projects → project category default
- Generic → site logo or abstract pattern
2. Directory Structure
/public/thumbnails/
/posts/ # Blog post thumbnails
/projects/ # Project thumbnails
/pages/ # Special page thumbnails
/defaults/ # Fallback thumbnails by category
/generated/ # AI-generated thumbnails
3. Thumbnail Specifications
Technical Requirements:
- Dimensions: 1200x630px (optimal for Open Graph)
- Formats: WebP primary, PNG/JPG fallback
- Max file size: 200KB per image
- Aspect ratio: 1.91:1 (social media standard)
Alternative sizes (optional Phase 2):
- Card view: 400x210px
- List view: 200x105px
- Use responsive images / srcset for optimization
4. Content Display Integration
Blog Post Cards
[Thumbnail Image]
Post Title
Post Excerpt
Date | Read Time
Project Cards
[Thumbnail Image]
Project Name
Tech Stack Badges
Short Description
[View Code] [Demo]
Social Media Meta Tags
<meta property="og:image" content="thumbnail_url" />
<meta property="og:image:alt" content="thumbnail_alt" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="thumbnail_url" />
5. Thumbnail Generation Strategies
For Blog Posts:
- Option 1: AI-generated abstract visuals based on post topic
- Option 2: Simple text-based thumbnails (title + gradient)
- Option 3: Stock photos / Unsplash integration
- Option 4: Custom illustrations (future)
For Projects:
- Option 1: Screenshot of the project in action
- Option 2: Logo/icon if project has one
- Option 3: Code snippet with syntax highlighting
- Option 4: Abstract tech visualization
Batch Generation Tool:
- Script to generate thumbnails for all existing content
- Uses AI to analyze post content and generate relevant images
- Jay reviews and approves/regenerates as needed
- One-time migration task, then manual for new content
Implementation Phases
Phase 1: Foundation (Pre-Launch)
- Add thumbnail fields to content metadata schema
- Create
/public/thumbnails/directory structure - Implement thumbnail display in blog post cards
- Implement thumbnail display in project cards
- Add Open Graph meta tags for social sharing
- Create 3-5 default fallback thumbnails
Phase 2: Content Migration (Pre-Launch)
- Generate/select thumbnails for 5 main projects
- Generate/select thumbnails for existing blog posts
- Test social media sharing previews
- Ensure mobile responsive image display
Phase 3: Quality & Automation (Post-Launch)
- Build thumbnail generation script (AI or template-based)
- Add thumbnail preview in content editor
- Implement responsive image sizes (srcset)
- Add image optimization pipeline (compression, WebP conversion)
- Create thumbnail template system for consistency
Phase 4: Advanced Features (Future)
- In-browser thumbnail editor/cropper
- AI thumbnail generator integrated into content creation
- Thumbnail A/B testing for engagement
- Animated thumbnails for special content
- Video thumbnail support
Technical Implementation
Component Updates
BlogPostCard Component:
<article className="blog-post-card">
{thumbnail && (
<img
src={thumbnail}
alt={thumbnailAlt || title}
className="post-thumbnail"
loading="lazy"
/>
)}
<h2>{title}</h2>
<p>{excerpt}</p>
<metadata>{date} | {readTime}</metadata>
</article>
ProjectCard Component:
<div className="project-card">
<img
src={thumbnail}
alt={thumbnailAlt || title}
className="project-thumbnail"
/>
<h3>{title}</h3>
<TechStack tags={techStack} />
<p>{description}</p>
<Actions>
<a href={repoUrl}>View Code</a>
{demoUrl && <a href={demoUrl}>Live Demo</a>}
</Actions>
</div>
SEO/Social Meta Tags Template
<Head>
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:image" content={thumbnail} />
<meta property="og:image:alt" content={thumbnailAlt} />
<meta property="og:type" content="article" />
<meta property="og:url" content={canonicalUrl} />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content={thumbnail} />
<meta name="twitter:image:alt" content={thumbnailAlt} />
</Head>
Content Migration Strategy
For Existing Blog Posts
- Batch Analysis: Run script to analyze each post's content
- AI Generation: Generate thumbnail options based on post topic
- Manual Review: Jay selects best option or regenerates
- Fallback: Use category default if nothing feels right
- Metadata Update: Add thumbnail path to frontmatter
For Projects
- Screenshots First: Capture screenshots of live projects/demos
- Repo Visuals: For libraries, create code snippet visuals
- Logos/Icons: Use existing branding if available
- AI Generation: Fallback for abstract/non-visual projects
Design Considerations
Visual Consistency
- Use a consistent color palette across thumbnails
- Match site's overall design aesthetic
- AI posts could have a specific visual style (circuit boards, neural nets)
- Projects could use tech-themed visuals
Accessibility
- Always include alt text
- Ensure sufficient contrast if text is in thumbnail
- Don't rely solely on thumbnails to convey information
Performance
- Lazy load thumbnails below the fold
- Use WebP with PNG/JPG fallback
- Compress images appropriately
- Consider CDN for image serving (future)
Success Metrics
- All projects have thumbnails before launch
- All blog posts have thumbnails before launch
- Social media sharing shows rich previews correctly
- Page load time doesn't increase significantly
- Positive feedback on visual appeal
Open Questions
- Should thumbnails be required or optional for new content?
- Auto-generate thumbnails on content creation or manual selection?
- Standardized thumbnail templates or fully custom each time?
- Video thumbnails for future video content?
Future Enhancements
- Thumbnail gallery/library for reuse
- Seasonal/themed thumbnail variations
- Interactive/animated thumbnails
- Thumbnail analytics (click-through rates)
- AI-powered thumbnail optimization based on engagement