The Blog Engine

SEO blog posts, drafted and shipped on a schedule

Visit the live site
Centauri Media

About Centauri Media

Centauri Media is a creative and technical agency in Birmingham with a marketing arm and a software arm. Its own content marketing runs on a steady stream of blog posts, the kind of consistent, keyword-targeted output that is easy to start and hard to sustain by hand while client work competes for the same hours.

Objectives

  • Keep the newsroom publishing consistently without it eating the team's time.
  • Ground every post in the agency's real work, so the content is credible rather than generic filler.
  • Target SEO keywords and avoid near-duplicate posts that compete with each other.
  • Keep a human in the loop: draft automatically, publish only after review.
  • Make the engine configurable and auditable, from the model to the cadence to a log of every run.

The Challenge

SEO rewards consistency, but consistency is exactly what a busy agency runs out of. Writing keyword-targeted posts by hand competes with client work for the same hours, so the newsroom goes quiet. Generic AI filler is worse than nothing: it reads as spam and can compete with the pages that already rank. The content had to be steady, genuinely useful, and grounded in real work.

The Approach

The key decision was to write from the agency's own case studies rather than from a blank prompt. A generic 'write a post about X' produces filler; feeding the model a real project as source material produces something specific and credible. From there it was a scheduling and de-duplication problem: rotate through the case studies and the target keywords so no two posts land too close together, and never publish straight to live.

The Solution

A daily job picks a few case studies in rotation, builds a prompt from each, and generates an SEO article through a language model. It derives and rotates a target keyword per post so titles do not repeat within a cooldown window, drops each result into the newsroom as a scheduled draft, and lets the team review and edit before it goes live. Every run is logged, and the whole engine, its model, cadence, keywords and system prompt, is configurable without touching code.

Built as scheduled jobs on the agency's own back-office. A daily cron drafts posts through OpenRouter, so the underlying model is swappable, converts them to the CMS's rich-text format, and stores them as scheduled drafts. Keyword rotation and a per-study cooldown are read from settings and a log of past runs, so the engine does not repeat itself. A second job publishes drafts to the public site once their review window passes.

GROUNDED, NOT GENERIC

Written from real work, not a blank prompt

Instead of asking a model to invent a post about a topic, the engine feeds it one of the agency's real case studies as source material. The result is specific and credible, tied to actual projects and clients, which is exactly what generic AI content never manages and search engines increasingly discount.

  • Each post drafted from a real case study in rotation
  • Specific detail, not topic-level filler
  • A case-study footer links the post back to the work
SEO
APP UI
16/9 · DROP-ZONE
KEYWORDS ON ROTATION

SEO targeting that never repeats itself

Every post gets a target keyword, and the engine rotates through them, advancing the choice until it lands on one it has not used within a cooldown window. Back-to-back near-duplicate titles cannot slip through, so the posts reinforce each other instead of competing for the same search term.

  • A derived, rotating SEO keyword per post
  • A cooldown window so nothing repeats too soon
  • Case studies picked round-robin, not the same few
SEO
APP UI
16/9 · DROP-ZONE
REVIEWED BEFORE LIVE

Automatic drafts, a human on the switch

Nothing publishes straight from the model. Each post lands in the newsroom as a scheduled draft the team can edit, and a separate job takes it live only after a review window. The agency gets the speed of automation without handing its public voice to a model unattended.

The trade

Drafting automatically but publishing on a delay means the newsroom is never truly hands-off: someone still has to glance at the queue. The upside is that a bad draft never reaches the public site; the cost is that the review window is a small standing task rather than zero.

SEO
APP UI
16/9 · DROP-ZONE

Technologies

TypeScriptNext.jsSupabasePostgreSQLOpenRouter / LLMsVercel

Conclusion

The newsroom stopped depending on someone finding time to write. It fills itself with posts grounded in real work, targeted at real keywords, and checked by a human before they publish, so the agency stays visible without the content ever becoming the job nobody does.

Have a project in mind? Let's talk

NEXT CASE STUDY

Uplift Community

WEBSITE / COMMUNITY CMS

Have a project?Tell me about it.

BIRMINGHAM, UNITED KINGDOM
IR35 IN / OUT
BPSS SCREENED (HMRC)
© 2026 Hamza Wahbi