I Audited My AI-Generated Blog Posts. They Were Awful.
I ran my own AI slop checklist against my published blogs and found patterns I didn't even know to look for. Here's what I learned.
The Setup
A few days ago I built a whole pipeline for writing blog posts with Claude Code. Keyword research, drafting, AI slop review, rewrite, image generation, auto-deploy. I even wrote a checklist to catch AI-sounding patterns. I was pretty pleased with myself.
Then I actually sat down and read the published posts.
They were bad. Not factually wrong. Not poorly structured. Just obviously, recognizably AI-generated. The kind of content where you read two sentences and your brain goes “ah, a robot wrote this.”
Five posts. All published within 48 hours. Every single one had the same problems.
What I Found
I went through all five posts on my Aanvi site (baby milestone app) and flagged everything that screamed AI. Some of it was stuff my existing checklist should have caught. Most of it was patterns I didn’t even know to look for.
The Obvious Stuff My Checklist Already Banned
The welcome post opened with “We are thrilled to start sharing parenting wisdom.” Thrilled. The most AI word in the English language, right after “delve.”
Same post used “Whether you are a first-time parent or adding another little one to the family.” My checklist literally has that construction banned. The pipeline ran the checklist and still missed it. Which tells me the review phase wasn’t actually doing its job.
There was also a blockquote that said “Every family’s journey is unique, and every moment matters.” I can’t even type that without cringing. It says absolutely nothing. It’s the written equivalent of holding-hands stock photography.
The Structural Stuff I Hadn’t Thought Of
This was the bigger problem. The milestones post was broken into month-by-month sections. Months 1-2, 3-4, 5-6, and so on. Every single section had the exact same internal template:
- Intro paragraph about what’s happening
- Bullet list of milestones
- “What you can do” sub-header
- Paragraph of advice
Six times. Same template. Copy-paste structure with different content swapped in. No human writes like that. A human would write a lot about the months they found interesting and barely anything about the boring ones. AI distributes content evenly because it has no opinions about which parts matter more.
I added this to the checklist as “robotically repeating sub-sections.” It’s probably the single biggest structural tell.
The Voice Problem
All five posts were written in generic second person. “Your baby.” “Your toddler.” Not a single personal anecdote. Not one “I” statement. Not one specific observation that couldn’t have been generated by literally any AI tool.
The thing is, my checklist already warned against fake personal anecdotes. So the AI correctly avoided making up stories about “when my daughter was born.” But the result was worse: zero personality. Every post read like it was written by nobody.
I added a new section for this: “Total Absence of Personality.” The fix isn’t fake stories. It’s having opinions. Picking a specific angle. Using concrete details. Saying “the potato phase” instead of “the newborn phase.” Having a voice.
The Anti-AI Voice That Is Itself AI
This one messed with my head.
The posts that tried hardest to sound human had a recognizable pattern: short punchy sentence, then a longer one, then another short one. “That’s it.” “Seriously.” “Here’s the thing.”
That alternating rhythm is now its own AI tell. When you prompt an AI to “write naturally” or “avoid sounding like AI,” this is what you get. It’s just a different flavour of artificial. I’d been reading it as “good voice” when it was actually just a newer version of the same problem.
Everything Ended the Same Way
Every single post ended with:
---
*Try our free [Some Tool](/tools/some-tool) or explore all our [parenting tools](/tools).*
Same separator. Same italics. Same structure. Five posts, five identical closing stamps. Readers absolutely notice this kind of repetition across posts, even if each individual post seems fine in isolation.
What I Changed
The Checklist Got 12 New Patterns
The original checklist had about 30 items. I added:
- Robotically repeating sub-sections
- Cookie-cutter CTA endings
- Total absence of personality
- Excessive reassurance (“perfectly normal” said 4+ times)
- The anti-AI voice pattern
- Too-perfect examples (kid quotes that sound workshopped)
- Neat categorization of everything (AI sorts everything into clean taxonomies)
- Meta-commentary (“most lists give you 50 items and half are padding”)
- Suspiciously comprehensive coverage (every angle covered evenly)
The meta-commentary one is interesting. AI loves to frame itself as better than other AI: “Unlike most guides, here’s the REAL version.” That self-aware positioning is now a pattern you can spot.
Prevention, Not Just Detection
The biggest structural change: I moved the de-slop rules into the drafting phase, not just the review phase. The original pipeline wrote a full draft first, then reviewed it, then rewrote it. Three phases for what should have been one.
Now the drafting phase has rules baked in: vary section structure, vary section length, no banned words, no generic reassurance, use concrete specifics. The review phase still exists, but it catches less because less gets through in the first place.
I Rewrote All Five Posts
Sat down and rewrote every published blog. The milestones post went from identical section templates to varied structures. Some months got bullets, some got paragraphs, some got one-liners. The welcome post went from “thrilled to share parenting wisdom” to a direct explanation of why the blog exists.
The time capsule post had a line that said “Most lists give you 50 items and half of them are padding.” Peak AI meta-commentary. Cut it. Just wrote the good list without narrating how the list is better than other lists.
What I Actually Learned
Three things.
Your checklist needs to be tested against real output. I built the checklist from theory. “These words sound AI-generated.” “This structure is a tell.” All true, but incomplete. The patterns I missed only showed up when I read actual published posts with fresh eyes. The checklist doubled in usefulness after one real audit.
The review phase doesn’t work if it’s reviewing its own writing. The same AI that wrote the draft was reviewing the draft. It had blind spots about its own patterns. The anti-AI voice pattern is the clearest example: the AI thought it was writing naturally because it was trained on humans saying “write more naturally.” It couldn’t see the pattern because the pattern was baked into its training.
Volume is a tell. Five posts in 48 hours. All the same voice. All the same structure. Even if each individual post passed the slop check, the collection as a whole screamed “automated.” Spacing posts out and varying the voice between them matters.
The Current State
The pipeline still works. It’s just smarter now. The skill files are updated in both repos (the website and my dotconfig backup). Next time Claude Code writes a blog post for Aanvi, it has 12 more patterns to avoid during drafting and 19 checks during review instead of 10.
Will the next batch of posts still have AI tells? Probably. But fewer. And I’ll audit again, find new patterns, and update the checklist again. The system improves each time it fails.
That’s the whole point of building in public. You ship, you learn it’s broken, you fix it, you ship again.
Building AI writing pipelines? Here’s a tip: read your output. Actually read it. @itskritix