DEV Community

TAMSIV
TAMSIV

Posted on

I Built a Blog with 31 Articles and AI-Generated Cover Images in One Day — Here's How

I'm building TAMSIV, a voice-powered task manager, solo. After 670+ commits over 6 months, I had a landing page, a web dashboard, and... zero blog. Google didn't know I existed.

So I decided to fix that. In one day.

The Problem

My site had no indexable content. No articles. No FAQ. No user guide worth the name. Every piece of marketing I'd done (50+ posts across Discord, LinkedIn, Facebook, dev.to) lived on other people's platforms. Nothing on my own domain.

The Solution: 31 Articles, AI Cover Images, 6 Languages

Here's what I built:

Blog Architecture (Next.js)

The blog lives in src/lib/blog.ts — all content is inline HTML, no database. Each article has metadata (title, slug, date, tag, excerpt, cover image) and content in HTML.

// blog.ts structure
export const articles: BlogArticle[] = [
  {
    slug: 'voice-pipeline-architecture',
    tag: 'Engineering',
    image: '/blog/voice-pipeline.png',
    content: {
      fr: { title: '...', excerpt: '...', body: '...' },
      en: { title: '...', excerpt: '...', body: '...' },
      // + de, es, it, pt
    }
  }
]
Enter fullscreen mode Exit fullscreen mode

The listing page uses a Hero (latest article, full width) + Grid (2 columns) layout. Each article gets its own page with generateStaticParams for SSG.

AI-Generated Cover Images (Gemini 2.5 Flash)

Every article has a cinematic cover image generated by Gemini 2.5 Flash Image via OpenRouter:

POST https://openrouter.ai/api/v1/chat/completions
Model: google/gemini-2.5-flash-image
Enter fullscreen mode Exit fullscreen mode

The prompt formula:

  • Subject: Description of the article topic
  • Style: Photorealistic, cinematic, shallow depth of field
  • Mood: Dark background (#101922), blue/cyan accent lighting
  • Constraint: NEVER include text in the image

The result? Images that look like they belong in a tech magazine editorial, not a solo dev's side project.

SEO Audit

While I was at it, I ran a full SEO audit:

  • JSON-LD structured data (SoftwareApplication + Organization)
  • OpenGraph + Twitter cards for every page
  • Meta descriptions per page and per article
  • Sitemap auto-generated (listing + individual articles)
  • Fixed OG image 404 that had been broken since launch
  • Added x-default hreflang for international SEO

User Guide Overhaul

The existing guide was a single page. I split it into sub-pages:

  • Voice assistant guide
  • Folders & organization guide
  • Gamification guide
  • FAQ (expanded from 6 to 18 questions)

Other Stuff That Shipped

Since I was in "ship everything" mode:

  • In-app updates via Google Play (flexible update flow)
  • Admin dashboard rebuilt from scratch: 5 tabs (stats, services, infrastructure, logs, credits)
  • Infrastructure monitoring: real-time Supabase, Railway, and Vercel metrics
  • API credit tracking: OpenRouter, Deepgram, Runware, OpenAI usage dashboards

The Question

Is launching a blog with 31 articles at once a good idea? The SEO argument says yes — Google rewards content-rich domains. The UX argument says maybe not — who reads 31 articles from a brand they've never heard of?

My bet: the articles aren't for reading today. They're for Google to index, for people to find when they search "voice task manager" or "AI productivity app" six months from now. They're planting seeds.

670 commits in. The site is becoming a content hub. The app is becoming a product.


Links:

What's your approach to blogging for side projects? One article at a time, or go all-in from day one?

Top comments (2)

Collapse
 
bhavin-allinonetools profile image
Bhavin Sheth

Honestly, shipping 31 at once is fine — but distribution matters more than volume.

I tried something similar before, and what actually worked was:
write a bunch → publish slowly → share each one → update based on real clicks/search.

Right now you’ve built a strong base 👍
Next step: make sure each article gets traffic, not just exists.

Google doesn’t reward “more content”, it rewards “useful + clicked content”.

Collapse
 
tamsiv profile image
TAMSIV

Thanks for the thoughtful feedback Bhavin! You're absolutely right — distribution > volume. The 31 articles weren't a "publish and pray" move though. About half are build-in-public dev stories (my actual journey over 5 months of solo development), and the other chunk targets long-tail SEO queries that real users search for ("voice task manager Android", "Todoist alternative with AI", etc.).

Your point about making each piece earn its traffic is well taken. I'm now focused on internal linking, promoting individual articles on the right channels, and tracking which ones actually get traction vs which sit idle. Early days — Google hasn't even indexed most of them yet (just submitted to Search Console this week).

Appreciate the reality check — it's exactly the kind of feedback that keeps a solo dev honest. 🙏