
AI blog posts sound generic because one prompt is doing four jobs at once (finding the facts, inventing a voice, drafting, and scrubbing its own tells), and the model settles on the safe average for every one of them. That makes it a workflow bug, and you can fix a workflow.
I’ve run about 100 posts through a pipeline that splits those jobs apart, on two live blogs.
This post covers why the output drifts to the average, why pasting in a banned-words list makes it worse, and the four passes that get you light edits instead of rewrites.
Why AI Blog Posts Sound Generic
A language model writes by predicting the likely next word. Likely means typical. And typical is most of what we mean by generic.

Training narrows it further: models are tuned on the answers human raters prefer, and that kind of tuning has been shown to reduce stylistic and expressive variety. So every open decision (tone, example, claim, rhythm) drifts to the middle.
You’ve read the outcome. The New York Times Magazine essay “Why Does A.I. Write Like … That?” (Dec 3, 2025) argues that chatbots have developed one distinctive voice, and it names irritants like “tapestry” and the “It’s not X, it’s Y” construction.
A common first prompt asks for everything in one breath: research the topic and add some stats, write it in my voice, turn it into a post, make it sound human. That leaves the facts, the voice, the draft and the polish open in the same request, so the model reaches for the average on all four.
What does that look like on the page?
- Openers that hedge before they say anything.
- Paragraphs of nearly the same length. As u/Cheeslord2 put it on r/WritingWithAI: “A lot of AI seems to generate a smooth sequence of paragraphs of almost exactly the same length. This triggers my mental warnings.”
- Claims nobody would argue with, because they don’t commit to anything.
Why “Remove the AI Tells” Makes It Worse
The usual fix goes into the same request: a list of banned words, or a line at the end that says “sound more human.” It feels like the obvious move. It tends to make things worse.
u/TimSimpson on r/ClaudeAI spent a week on this in April 2026. They turned every item on Wikipedia’s “Signs of AI writing” page into a rule (no em dashes, no “delve”) and got back a clipped tone that read as if someone had “sanded off every surface.” They called it the subtraction trap: “When you strip away the AI tells without replacing them with anything real, the absence itself becomes a tell.”
Then they added more rules, and GPTZero’s score went from 0.84 to 0.9999 while the writing got better. Their explanation: “The rules were leaving a structural fingerprint: regularities in how the text avoided regularities.” The model followed each new rule precisely, and that precision was a pattern of its own.
That’s one person, one detector, one week. It proves nothing about detectors in general, and even less about human readers. I buy the argument anyway: a rule followed perfectly is a regularity, and regularity is what reads as machine-made.
Banned-word lists are also a commodity. Independent writers land on nearly the same list (em dashes, “not just X but Y”, “delve”, “robust”), and none of those lists knows how you write. On r/WritingWithAI, the top comment (score 47) on a thread listing AI tells pointed out that the post itself used 4 of its 5 tells.
So if the rules make it worse, what do you do with them?
Keep them, and move them. They belong in a final pass of their own, after you settle the voice and the claims. The draft gets written between the third pass and the fourth, and by then drafting is the only job left open.
Pass 1: Learn the Voice From Your Own Posts
“Friendly”, “authoritative” and “conversational” are adjectives, and the model’s idea of each one is the average one. Replace them with a style file extracted from posts you already wrote and would publish again.

What goes in one?
A style file records things like:
- Your sentence-length mix: how often you go short, how far you let a long one run
- How you open a post, and how you open a section
- What you never say, in your words rather than a list from the internet
- The examples you reach for: your own numbers, a customer conversation, a code snippet
- How you disagree with someone
Every line comes from your own posts. You update the file whenever you edit an AI draft and catch a pattern you’d never write. Written once, the same file is what makes founder-led content without the founder’s hours work: you approve posts instead of drafting them.
Which is roughly where u/TimSimpson ended up. The thread’s subtitle is “How I Learned to Stop Adding Rules and Love the Extraction”: they stopped stacking rules and started pulling their voice out of their own writing.
Pilcrino’s setup wizard runs this pass for an existing blog: it reads your voice from the live site’s posts into a local workspace.
Pass 2: Show Before and After Pairs of Your Edits
A style file says what your voice is. Before and after pairs show what you change when a draft misses it.
Keep a few pairs: an AI draft paragraph next to the version you actually published. The model then sees your specific edits (the hedge you cut, the example you swapped, the sentence you split in two) instead of guessing at them from adjectives.
Here’s an illustrative pair, written for this post rather than taken from a real draft:
- Before: “It’s important to consider that a consistent publishing schedule can potentially help improve your blog’s visibility over time.”
- After: “Pick a schedule you can keep for a year. Then keep it.”
Two hedges gone, a vague payoff dropped, one long sentence turned into two short ones.
Why pairs instead of more samples?
Samples show the finished voice. Pairs show the distance between the model’s default and your version, and that distance is exactly what you want it to learn.
Pass 3: Lock the Claims Before the Draft Exists
A model that invents facts while it drafts fills every gap with something plausible: a round number, a feature that sounds right, a date that’s close enough. Plausible filler is the most generic sentence there is.
So decide the claims first. Every number, date and feature goes on a list with its source, and the drafter gets only that list. Anything you can’t source gets cut before a word is written. The full routine starts when you log every claim before you draft and ends with you approving the post.
u/DigiHold described the same rule on r/micro_saas in July 2026: “the biggest rule of all is that every price, date and number gets verified against a live source during the run, or it gets deleted. An article with 3 verified facts beats one with 10 plausible guesses.” The same goes for voices: quoting Reddit threads as sources works only when you link the exact comment.
What does the drafter actually receive?
Here’s one entry from this post’s own list:
- Claim: GPTZero’s score on one Reddit user’s Claude output went from 0.84 to 0.9999 after the user added style rules.
- Source: the user’s r/ClaudeAI thread, April 2026.
- Status: verified as a first-person report, one detector, so the post has to say so.
The drafter can phrase that however the style file wants. It can’t round it, generalize it, or invent a second study to back it up.
Pass 4: Edit in a Separate Pass With a Numbered Banlist
The banned-words list comes back here, as the last step and a separate request. This pass is told to change as little as possible, fix only numbered patterns, and report which rule each change applied.

An excerpt, to show the format rather than a list to copy:
- No em dashes. Use a comma, a colon or a full stop.
- No “not just X but Y”.
- No stacked hedges (“may potentially”, “could arguably”).
- No closing question to the reader.
- Never add a fact, example or claim. Flag the gap instead.
Why number them at all?
Every change has to point at a rule, so you can audit the pass in a minute and spot where it overreached. And an editor that must cite a rule for each change can’t drift into a quiet rewrite.
Because this pass runs after you fix the voice and the claims, it removes tells without inventing new content to fill the gap. That’s the subtraction trap handled: the real content is already there.
u/CopperLanternTales, in an r/BypassAiDetect thread about humanizer tools, called chasing detectors “its own time sink” and said what helped more was “clear structure + consistent tone, then doing a normal edit pass.”
In Pilcrino, the humanizing pass is its own step after the draft and the review loop, never part of the drafting prompt.
What a Better Workflow Won’t Fix
A workflow fixes the mechanical part of why AI blog posts sound generic: the tells and the invented filler. It doesn’t supply a point of view, and a point of view about your product is also what an assistant needs before it will name you (here’s how to get ChatGPT to recommend your product).
u/Hack999, a working journalist, named that gap on r/Fantasy. Models “present an impartial list of facts. There’s also no nuance or implication in how facts are presented together.” If you have nothing to argue, the model can’t argue it for you, however clean your passes are. It won’t guarantee rankings either. Whether AI content is bad for SEO depends on what a page adds, not on which tool wrote it.
When is all this not worth it?
Sometimes blogging itself isn’t worth it for a SaaS yet. For a single post, write it yourself when:
- The post is short enough that setting up the passes takes longer than writing it.
- The story is personal and only you were there.
- You’re still working out what you think.
But if you’re like u/grilledscheese on r/ClaudeAI, who said “I invariably end up rewriting 100% of it anyways,” and that happens on every post, treat it as a workflow bug, because the workflow is the part you can change.
You can build these passes yourself with the AI plan you already pay for and a handful of text files (here’s how to write blog posts with Claude from brief to images). If you’d rather start from a pipeline that already keeps the jobs apart, join the Pilcrino waitlist.
It’s built for posts in your voice that argue for your product. The writer is a free Claude Code plugin; the app that runs it for you is $199 once, $129 for the first 50, with 12 months of updates and support, and is on a waitlist.
Researched and drafted with Pilcrino. Approved by Slav.
FAQ
Why does ChatGPT or Claude writing sound so generic?
Both predict the likely next word. Both are also tuned on what human raters prefer, a step shown to make their style less varied. A single open-ended prompt leaves tone, examples and claims undecided, so the model fills each one with the average. Give it your voice, your edits and a fixed list of claims, and there is far less average left to fall back on.
Does a banned-words list fix AI-sounding writing?
Not on its own, and not inside the drafting prompt. Stripping tells without putting your real voice in their place creates a new pattern: text that reads clipped and sanded off. Keep the list, but run it last, as a separate edit pass that changes as little as possible and names the rule behind each change.
Can AI detectors tell if a blog post was written with AI?
I wouldn’t rely on one. In one Reddit user’s week of testing, GPTZero’s score on their Claude output rose from 0.84 to 0.9999 after they added more style rules, while the writing got better. That’s one person and one detector, but it’s reason enough to write for readers and treat a detector score as a weak signal at most.
How many of my own posts does a style file need?
There’s no magic number. Use posts you would publish again as they are, and enough of them to show how you open, how you argue and what kinds of examples you use. Then keep the file current: each time you edit an AI draft and catch a pattern, add it.
Is it faster to just write the post myself?
Sometimes. For a short post, a personal story or an argument you’re still working out, writing it yourself is often quicker. But if you rewrite most of every AI draft, fix the workflow before you give up on it, because a rewrite on every post usually means one prompt is still doing four jobs. For scale, here is how much of each post I actually rewrite once the workflow is fixed.