For a long time I thought AI just couldn’t write.

Then I worked out it could. And I was still getting it wrong. Even with a good prompt, it kept handing me the same post everyone else already had. Flat the first time. Boring the second.

It took me about 96 posts to figure out the whole thing. Most of that was me getting it wrong in public.

So here’s the real version. The actual system I run to make good content at scale, on my own. No prompt-pack tricks. I built it for the blog of Kirro, the A/B testing tool I made. A version of it wrote this post.

Two things up front. The model was never the thing holding me back. And the idea is the easy part too. Everyone’s had the same one by now: use AI for content. The hard bit is doing it well. Which tools, set up which way, with which boring rules.

Why this matters

Here’s how it usually goes. You’re a small team, maybe a team of one. Someone says “let’s use AI for our content.” You try it. The drafts are slop. So you go back to writing by hand. Or you ship the slop and nothing happens.

I did the first one for about a year. I’d open ChatGPT, type “write a blog post about X,” and read what came back. Then I’d sigh and think “yeah, AI can’t do this.”

But the promise is real. One person really can out-produce a whole content team. I’ve seen it work now. You just need a system behind it.

So I built one. And I’ll be honest about how it went. The early posts were slop. I fixed the setup. Now it’s starting to rank.

Some real numbers, because I’d want them too. The site is brand new. The content is barely three months old. And 57 keywords already sit in Google’s top 10. Four of them in the top three. That’s about 26,500 times it showed up in search in 90 days.

It ranks on page one for stuff people actually buy on. “google optimize alternatives,” around spot 4. “funnel conversion rate benchmarks,” around spot 5.

It’s even getting pulled into AI answers. In 28 days, 63 visits came from ChatGPT, Perplexity, and Claude.

Now the honest catch. This is the site showing up in search. The clicks are still tiny. Search Console says 3 clicks in 90 days. My analytics says about 100 visits a month. (Why those two numbers are so far apart is a whole other post. Short version: the search console badly under-counts when you’re small.) So it’s early. It’s working, but it’s early.

The bet I’m making

Quick aside for the founders and solo folks, because this is why I bother with something this slow. The full version is its own post. Here’s the short one.

Distribution is the whole game. You can build the best product out there and die quietly because nobody finds you. So the real question is which channel you bet on.

I bet on content and search. Two reasons. It’s basically free. And it builds up over time. A post you write today keeps pulling people in for years, for nothing. You write it once. It keeps paying. Ads stop the second you stop paying for them.

The math is boring, and that’s the point. Right now the blog pulls in about 100 visits a month. It only just got going. Say it grows 10x as the content ages. That’s around 1,000 a month. About 2 in 100 start a trial. About 1 in 10 of those pay. On a 99-euro product, that’s roughly 32 customers. Call it 3,000 euros a month. About 36,000 a year. Roughly one person’s salary, from posts that are already written.

Those numbers are the plan. None of it’s in the bank yet. And it takes time. That’s the catch. It’s also the edge. Most people quit at month three. If you can wait it out, you’re up against people who won’t. There are a lot of them.

There’s never a good time to start SEO. The best time was a year ago. The next best is today. If you want the longer version, it’s over on the search side of what I write about.

What it actually is

Okay, the system itself. It’s an assembly line.

Each step does one job, then hands off to the next. That’s the whole idea. Think of a kitchen line. Nobody cooks the whole meal alone. Everyone owns one station.

Five steps. Brief, research, write, review, publish.

BRIEF RESEARCH WRITE REVIEW PUBLISH
Fig. 01 · the five steps. The two yellow ones, research and write, are where the quality comes from. The rest is plumbing that keeps it consistent.

The two yellow boxes are the ones that matter. Research is what stops the post being a copy of everyone else’s. Writing with your context is what makes it sound like you. Get those two right and you’ve won most of the battle. The other three keep the line moving so you’re not the bottleneck.

Let me walk through all five. The real tool I use for each, and why.

Step 1: Brief, work out what the page is for

Before I write a word, I work out the job the page has to do.

What’s the person really after when they search this? What does Google already think the search means? And will this page fight with one I already have?

The boring tool here is the DataForSEO search API. I have the AI call it. It pulls back the top ten results for the keyword, plus the “people also ask” questions Google shows.

Why an API and not just Googling it myself? Because the AI can do it on its own. In seconds. Every time. No human in the loop. That’s what lets the whole line run without me. Googling by hand doesn’t scale. An API call does.

The “people also ask” box is gold, by the way. It’s Google telling you, in plain words, what the reader wants to know.

Step 2: Research, before you read the competition

This is the first step that makes or breaks the post. And nearly everyone does it backwards.

Here’s the trap. You’re about to write about something, so you open the top five articles to “see what’s out there.” Now you’re stuck. You’ve read them. So whatever you write is a remix of those five. Same points, same order, same sources. That’s why so much AI content feels like you’ve read it before. You have.

So I flip the order. I do my own research first. Before I open a single competitor.

That means real sources. Studies, surveys, reports. A couple of takes from people who actually do the thing. And at least one finding that goes against the usual advice.

Then, and only then, I read the top-ranking articles. Now they’re useful. I can see what they all left out. The strong sources I found that none of them used? That’s my angle. That’s the part nobody else has.

Here’s the checklist I actually run. Steal it.

Before reading any competitor, research the topic yourself:
- Find 7+ primary sources (studies, surveys, real data, NOT blog posts)
- Find 2+ takes from people who actually do this for a living
- Find 1+ thing that contradicts the common advice

THEN read the top 5 ranking articles. For each, note:
- what they all cover (table stakes, include it but it won't set you apart)
- what they all miss

Your angle = the strong sources and points none of them used.

It’s like the difference between writing from memory and writing after you’ve done the reading. Same person. Much better essay.

Step 3: Write, with your context loaded

This is the second step that decides everything. It’s also the one I got wrong for a year.

The fix is boring, and it’s the whole thing. Give the AI your context before you ask it for anything.

Context is just what a good freelancer would need. Who it’s for. How you sound. What’s true about your product, and what it can’t claim. The angle you landed on in step 2.

It’s the difference between shouting a topic at a freelancer and actually briefing one. Same writer. Totally different work. The only thing that changed is what you handed them.

For me it’s about 80% context and 20% prompt. Smarter people gave this a name. They stopped calling it prompt engineering and started calling it context engineering. Same idea. What you feed the model matters more than how clever the ask is.

Here’s what I hand it, every time:

  1. My voice. I paste in three old posts that already sound like me. “Match how these are written.” That one step kills most of the AI sound.
  2. The facts. A short doc of what’s true. The product, the real numbers, what it’s not allowed to claim. This is what stops it making things up.
  3. The angle and the reader. One paragraph. Who’s reading, what they already know, what I want them to do after.
  4. The research from step 2. The actual sources and notes. Not a one-word topic.

Writing all that down sounds like a lot. It mostly isn’t. The AI can build it for you, from stuff you already have. I pointed it at my old posts and my homepage and asked it to write the doc itself:

Read these 3 blog posts and my homepage.
Write a short doc that covers:
- my tone of voice: how I sound, words I use, words I'd never use
- my main points, and what makes the product different

Keep it plain and simple. I'll edit it after.

Ten minutes. I fixed the bits it got wrong and kept the rest. Now I paste that doc in every time. Point it at your emails for tone. Your homepage for the selling points. Old posts for both.

A slice of the context doc I paste in: tone of voice, words I use, words I never use, and the key facts about the product.
Fig. 02 · a piece of the context doc the line reads before it writes a word. [screenshot to drop in]

Step 4: Review, with a script that can’t lie

A first draft is never the post. So there’s a review step. It has two parts, and they don’t trust each other.

First, a fresh read. I have the AI read the draft cold, like it’s never seen it. Then it checks the draft against the research notes. Did it really use the sources, or just wave at them? Models love to say they did something they didn’t. A second cold read catches a lot of that.

Then the part I like most. A dumb little script runs every time. If the post is off, it fails the build.

Why a script, and not “ask the AI to check”? Because the AI will tell you it removed every em dash while three are still sitting there. A script can’t do that. It just counts. It looks for the tells. Em dashes. Words no human says out loud. Too few real sources. Missing links. It finds them and stops the line until they’re fixed.

That’s the trick with anything you automate. Don’t let the model grade its own homework. If you can count it, let a boring script be the judge.

The terminal showing the validator script failing a post: a list of issues it found, like too few sources and an em dash.
Fig. 03 · the script failing a draft. It doesn't argue. It lists what's wrong and refuses to pass. [screenshot to drop in]

Last step. Mostly plumbing. Build the site, open a pull request, merge, ship.

One part isn’t plumbing. Before it goes live, the line adds links to the new post from older, related ones. A new post with nothing pointing at it is invisible. To readers, and to Google. So the old posts reach out and pull the new one in. People skip this all the time. It’s one of the highest-value things you can do.

Here’s the whole line in one table.

StepWhat it doesThe one rule
BriefWorks out what the page is forCheck what Google thinks the search means
ResearchBuilds your own takeYour own research before any competitor
WriteDrafts it in your voiceContext first, then the prompt
ReviewCatches the slopLet a script be the judge
PublishShips it and connects itLink the new post from old ones

Running it without babysitting it

Here’s what makes it “at scale” and not just a nice workflow.

The whole line runs off a Trello board on a cheap server. About 11 euros a month. I drop a keyword on the board. The steps run on their own. A plain-English summary comes back to the card. I read it on my phone. Then I approve it, or send it back with a note.

That part still kind of gets me. A team of one can’t sit and watch a pipeline all day. So the board does the watching. I’m the editor. If you want to build your own setup like this, that’s a whole build-your-own corner of what I do.

You don’t need the server to start, by the way. The five steps work fine in a normal ChatGPT or Claude project, run by hand. The server just takes you off the critical path.

If you’d rather have this built into your team than wire it up yourself, that’s what I do.

The honest part

Two honest things, because “just build a system” is easy to say.

First, the AI still won’t pick your angle for you. Even with the research and the context loaded, the default draft comes out fine and forgettable. Picking the one idea worth writing is on me. So is cutting the boring 30%. That’s the part that keeps it sounding like a person. It’s also the part you can’t hand off.

Second, the context isn’t free. The AI can draft it. But you have to fix what it gets wrong and keep it current. I still tweak my voice doc most weeks.

And the whole thing takes time. The posts ranking today were written months ago. If you need results this week, this isn’t your channel. If you can wait, almost nobody else will. That’s the opening.

Where to start today

You don’t need the server, the board, or my exact setup. You need the order.

Next time you’re about to type “write a blog post about X,” stop. Do two things first. Spend 30 minutes researching it yourself, before you read a single competitor. Then write down your context. Or have the AI draft it from your old posts with the prompt above. Paste it in.

That’s it. Research first, context first. That one change does more than any clever prompt. The rest is just plumbing you can add later.