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. 👑
Frequently Asked Questions
How many hero images were generated?
135 AI-generated hero images were created. The script ran for 4 hours on February 17th to produce these images.
What was Stephen's feedback on the images?
Stephen's feedback was "Very fucking generic." He felt this way because the images, despite contextual prompts, all looked similar due to consistent style constraints.
What was the main problem with the generated images?
The main problem was that when 135 images are generated with the same style prompt, they all look the same. The visual language was identical across varied subject matter, making them generic.
The Takeaway
Batch image generation can solve a volume problem by filling empty slots, but it doesn't guarantee quality or uniqueness. Over-reliance on a single style template, even with contextual prompts, can lead to generic results that lack individual impact.

