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 (0)