--- name: og-image-creator description: > Smart OG image generation that studies your codebase, understands routes and brand identity, then creates contextually appropriate Open Graph images using Playwright and React components. Triggers: "create og images", "generate social cards", "add open graph images". --- # OG Image Creator Generate authentic, brand-aligned Open Graph images by understanding your codebase first, then creating contextually appropriate images for each route using Playwright and your existing components. ## Philosophy: Authentic Over Template **Before generating OG images, ask**: - What is the brand identity of this site (colors, fonts, logo, design language)? - What routes/pages exist and what are their purposes? - What components and assets can be reused for consistency? - What page types need different visual treatments? **Core principles**: 1. **Study before generate**: Understand the codebase structure, routing, and brand before creating anything 2. **Authenticity over templates**: Use actual brand colors, fonts, and components—not generic social card templates 3. **Context-aware design**: Landing pages, articles, products, and docs need different visual approaches 4. **Smart automation**: Auto-detect routes and extract brand, but allow user customization ## Workflow ### 1. Discover and Analyze **Route discovery**: - Analyze project structure to determine framework (Next.js, Astro, React, etc.) - Auto-detect routes based on framework conventions: - Next.js: `app/*/page.tsx` or `pages/*.tsx` - Astro: `src/pages/*.astro` - React Router: Analyze route configuration - Extract route metadata (title, description) from pages - Categorize page types (landing, article, product, about, etc.) **Brand extraction**: - Find logo/icon files (SVG preferred) - Extract color palette from CSS/Tailwind config - Identify primary fonts from stylesheets or config - Capture design patterns from existing components Use `scripts/analyze_codebase.py` to automate discovery. ### 2. Design Strategy **Determine appropriate layouts per page type**: - **Landing pages**: Bold, minimal, emphasize value proposition - **Articles/Blog posts**: Title + excerpt, date/author if relevant - **Product pages**: Product name, key feature, visual if available - **Documentation**: Topic + description, organized/structured feel - **About/Company**: Brand-forward, professional **Layout principles**: - Generous whitespace (avoid clutter) - High contrast for readability when shared - Brand colors as accents, not overwhelming - Typography hierarchy that matches site - 1200x630px (standard OG dimensions) ### 3. Generate Images **Component-based generation**: - Reuse React components when possible for consistency - Use Playwright to render components to images - Apply brand colors, fonts, and assets - Inject actual page metadata (not placeholders) **Technical approach**: 1. Create minimal HTML template with brand styles 2. For each route, generate page-specific markup 3. Use Playwright to capture screenshot at 1200x630 4. Save to `public/og/` or appropriate static directory 5. Update page metadata to reference OG image Use `scripts/generate_og_images.py` for automation. ### 4. Verify and Optimize - Validate OG image metadata in HTML - Test with OG preview tools (opengraph.xyz, linkedin inspector) - Ensure file sizes are reasonable (<200KB preferred) - Check image appearance at different scales ## Framework-Specific Guidance ### Next.js **App Router**: ```tsx // app/page.tsx export const metadata = { openGraph: { images: ['/og/home.png'], }, } ``` **Pages Router**: ```tsx // pages/index.tsx
``` **Dynamic OG images**: Consider Next.js OG Image Generation (`@vercel/og`) for dynamic content, but use static generation for brand consistency. ### Astro ```astro --- // src/pages/index.astro const ogImage = '/og/home.png'; --- ``` ### React SPAs Add OG tags to `public/index.html` or use react-helmet: ```jsx