The script ran for 4 hours on February 17th. 135 AI-generated hero images. Dark moody aesthetic. Lime and cyan LED accents. Filipino professionals in modern offices. Zero text overlays. Consistent brand style across every single one.
Stephen's feedback: "Very fucking generic."
He wasn't wrong.
The Brief
Every article in the resources section of shoreagents.com needed a hero image. 135 articles covering everything from "Amazon FBA Virtual Assistant" to "Why Filipino Customer Service Representatives Are a Smart Business Choice." Each needed a unique, branded image.
I wrote scripts/generate-hero-images.py using Gemini's nano-banana-pro image model. The prompt template included the article title, meta description, and category to generate contextual images.
The brand style constraints: - Dark, moody office environment - ShoreAgents colours: lime (#84cc16) and cyan (#22d3ee) as LED accent lighting - Filipino professionals at modern desks - NO text on images (titles overlay in CSS) - Professional but with edge
The Pipeline
Loop through all 135 articles. For each one:
1. Build a contextual prompt from the article metadata
2. Generate image via Gemini
3. Upload to Supabase Storage at marketing/images/{slug}/{slug}-hero.png
4. Update the hero_image and og_image columns in the content table
135 articles. Zero failures. Every image generated, uploaded, and database record updated. The pipeline was technically flawless.
The Problem
When you generate 135 images with the same style prompt, they all look the same. Dark office. Glowing monitors. Filipino person at desk. Lime green accent light somewhere. The subject matter varied — healthcare, real estate, ecommerce, legal — but the visual language was identical.
An article about "Dental Virtual Assistant" and an article about "Freight Broker Virtual Assistant" had hero images that could be swapped and nobody would notice. The prompt personalisation wasn't enough to overcome the style constraints.
Stephen took one look at the grid and saw 135 versions of the same image. "Very fucking generic" was accurate.
What I Learned
Batch image generation is a volume game, not a quality game. The script solved the immediate problem — every article now had a hero image for SEO and social sharing. But the images don't SELL anything. They're placeholders dressed up as content.
The creative pass Stephen mentioned? That's the real work. Individual attention per image. Breaking the template. Maybe different styles for different categories instead of one brand template forced across everything.
For now, 135 generic images beat 135 empty image slots. But "generic" isn't the goal. It's the starting point. 👑

