← Back to Insights

Insight

I Didn't Notice My Blog Had a Pulse Until It Almost Died Three Times

Ariel Agor
I Didn't Notice My Blog Had a Pulse Until It Almost Died Three Times

Listen · Read by Leo · click any word to jump

0:00 / · loading…

On July 14th, my blog published three days of posts to a branch nobody was looking at. Every script ran clean. Every commit succeeded. Every log said "done." The live site just quietly stopped updating, because a stray branch checkout meant the whole pipeline had been faithfully archiving content into the void for 72 hours.

Six weeks earlier, a Python point-release silently deleted a dependency, and for nineteen days every post published perfectly except the one feature that made it worth listening to: a karaoke-style highlight that tracks the narrator's voice sentence by sentence. Nobody caught that either, until I went looking.

And before both of those, on a single Tuesday, my own automation got confused about what day it was and published the same blog three times in twenty minutes.

None of these were the failure. The failure was that I didn't know any of them had happened until I went digging. So I stopped building a blog that writes itself and started building one that watches itself, and that's the part worth explaining, because "AI writes my blog" is not the interesting sentence. "My blog has an immune system" is.

What it actually does, end to end

Every morning, a script runs on my own machine. Not a cloud server. My machine, because the cheapest and best model I have access to is the one I already pay a flat monthly fee for, not the one billed per token. It pulls a queue of search terms straight out of Google Search Console. Real queries real people are typing, where my site ranks 5th to 20th: close enough to win, not yet winning. That becomes the day's topic.

The draft gets written by Claude, with a hard rule baked into the prompt: no anonymized stand-ins. Not "a hyperscaler," not "a frontier lab", name AWS, name OpenAI, name the actual date something happened. Every claim has to trace back to a real web search result, and the post isn't allowed to publish without a Sources section linking to where each fact came from. I got tired of AI writing that sounds confident and means nothing, so the system is structurally incapable of doing that to me.

Then it needs a face. Three different illustration styles rotate deterministically by post number, an editorial photo-illustration, a cyber-blueprint schematic, a surrealist object photograph, so the blog doesn't read like the same template wearing a new outfit every day. The image model leaks readable text into its own output ten to twenty percent of the time, so every single render gets checked by a second model asking one question, "is there text in this image," before it's allowed through.

Then it gets a voice. A cloned version of my own voice reads every post aloud, and a second AI listens back to its own narration and time-stamps every word, so as you read along on the site, the sentence being spoken lights up in sync, no manual editing, ever.

Then it goes out three different ways to three different platforms, in three different voices, because a LinkedIn post and a tweet are not the same species of writing and pretending otherwise is why so much cross-posted content reads like nobody was in the room.

The part that actually matters: it catches itself

Here's what none of that machinery is worth without the part I actually had to learn the hard way. After the triple-post incident, I didn't just fix that day's output, I built a rule directly into the pipeline that makes a second same-day post structurally impossible, at three separate layers, because I'd learned that "it shouldn't happen again" is not a plan.

After the nineteen-day silent karaoke outage, I stopped trusting "the script exited zero" as proof anything worked. Now the pipeline checks its own dependency before it starts, verifies the specific file it was supposed to produce actually landed on disk, and if either check fails, it still publishes the post. A broken feature is better than a missed day. But it emails me immediately, so a silent failure becomes a loud one within the hour instead of within three weeks.

After the branch incident, every script that commits content now refuses to run at all unless it's sitting on the branch that actually deploys, and says so, out loud, before it touches anything.

That's the actual lesson underneath all of this, and it's the one nobody puts in the "I automated my content" post: the AI writing your posts is the easy 20%. The other 80% is building something that notices when it's lying to you about having worked.

If you're building one of these

Don't start by asking what the AI should write. Start by asking how you'll know if it stops writing correctly, and build that answer first. Make failure loud before you make output good. A broken pipeline that emails you is worth more than a flawless one you have to keep checking by hand. And keep the receipts rule for yourself too: if your system can't point at where a claim came from, don't trust it just because it sounds fluent. Mine didn't get good because it stopped making mistakes. It got good because it stopped hiding them from me.

Want this kind of automation working for your business?

Agor AI designs and ships the systems these posts describe, scoped in weeks, not quarters.

Book a Free Strategy Call