Writing SEO Articles With AI Without Publishing Filler

Here is a sentence that sat on this site for months, in a post about tools for bloggers: “This cuts drafting time significantly while leaving the actual expertise and opinion for you to add during editing.”

Read it twice. It contains no number, no example, no name, nothing anyone could disagree with, and no evidence that the person typing it had ever drafted anything. It is grammatically perfect and completely empty. I wrote about a hundred posts full of sentences like that, and the blog was turned down for display ads four times before I understood why. That story belongs in the post about what went wrong here. This one is about the workflow that replaced it, which I am using right now, on this article.

The brief is where the article is won or lost

If you ask a model to “write an SEO article about X”, you get the sentence at the top of this page, several hundred times. Not because the model is bad, but because you gave it nothing that was yours, and the only thing it can do with nothing is produce the average of everything it has read.

My brief now runs to a page or so before a word of the article exists, and it has six parts:

  • Who this is for and what they already know. Someone who has published ten posts is a different reader from someone choosing a platform.
  • The single question the page answers. One. If I cannot write it in a sentence, the topic is two posts, which is a decision that belongs back in the keyword and clustering stage.
  • What I know first hand, and what I do not. Written out explicitly, in two lists. This is the part that decides whether the article is worth publishing at all.
  • The numbers I am allowed to use, with the file they come from. In my case that is a notes file with everything I measured or checked on one specific day, with URLs and the date.
  • The sections, in order, with a line on what each one does. Not headings lifted from the current top results; an order that makes sense for the question.
  • What the article must not say. No claim of testing anything I have not opened. No price without a source and a date. No income figures. No filler transitions.

That last item is the one people skip and the one that does the most work. A model will not volunteer the sentence “I have not used this tool”. You have to demand it in advance, and then check that it is there.

Drafting section by section, opening written by hand

I do not ask for a whole article in one go. Long single-prompt drafts start well and drift into summary somewhere in the middle, where every paragraph begins to restate the one before it in different words. Section by section, with the brief and the previous sections as context, keeps each part doing a distinct job. It also means I can throw away one section without touching the rest.

The opening I write myself, always, and usually last. It is the part that has to contain something only I can say, and it is the part a model is least able to help with, because it has no memory of a sentence that embarrassed me for months.

Which tool you use for this matters less than people think. I use one, and the jobs I give it, with what comes back show where it helps and where it does not. None of that changes the outcome if the brief is empty.

The verification pass, which is the slow part

This is where an AI-assisted article stops being cheap. Every factual sentence gets one of three verdicts: I checked it today and here is the link, it goes in with an attribution to whoever claims it, or it comes out.

Three things get caught over and over:

  • Prices. Out of date, wrong currency, or the introductory figure quoted with the renewal price quietly missing. I now write both, with the date. For the hosting under this blog, that sentence reads: the entry tier was $2.99 a month with four years paid in advance, renewing at $10.99 a month, on Hostinger’s shared hosting page as I read it on 20 September 2026.
  • Plan names. Companies rename their tiers and old articles keep repeating the old names. Squarespace no longer sells Personal, Business, Commerce and Premium; the plans on its pricing page on 20 September 2026 were Basic, Core, Plus and Advanced. A model trained on older text will hand you the old names with total confidence.
  • Claims of testing. “In our testing”, “after evaluating the major players”, “based on hands-on experience”. These appear in drafts unprompted because they appear everywhere in the training data. Every one of them has to be either true and dated, or deleted.

The rule that makes this survivable: if a figure is not in my notes file with a URL and the day I opened it, it does not get published. No exceptions for numbers that are probably right.

One paragraph, before and after

This is the clearest way I can show what the workflow does. Same topic, same site, same author.

Before: “For long-form blog drafts that need to hold structure and voice across many paragraphs, Claude consistently produces the most usable first drafts. This cuts drafting time significantly while leaving the actual expertise and opinion for you to add during editing.”

After: “Drafting is the least valuable thing I use Claude for. What saves me days is pointing Claude Code at the WordPress REST API: for this site’s rebuild it pulled all 100 posts into one file, sorted them into keep, merge and unpublish, and turned the merge decisions into a list of redirects. I have not compared it with any other writing tool, so none of this says whether another model drafts better. It says where the hours actually went.”

The second version is longer, less confident and far more useful. It is also checkable, which is the real difference: the redirects exist, and anyone can load one of the old URLs and see where it lands. Getting there cost the work of doing the job first and writing about it second, and that is the entire difference between the two paragraphs.

Notice what the second one also does: it lists its own limits in the same breath as its claim. That is not hedging, it is the part that makes the number believable.

The four things the model cannot add

  • Your own numbers. Something you counted, measured, timed or paid for. It does not have to be impressive. Mine include a traffic figure so small it is embarrassing.
  • Your own screenshots. Real ones, from your own screen, with anything private covered. If you do not have one, the post gets no image rather than a generated picture of an interface that does not exist.
  • An opinion with a downside attached. “I use this and here is what annoys me about it” cannot be produced by averaging other people’s articles. It is also the sentence readers remember.
  • The sentence that says what you do not know. Naming the limit of your own experience is the cheapest credibility available, and models will never write it unsolicited.

On-page work, done last and quickly

Ten minutes at the end, not a phase of its own. A title that describes the article rather than repeating the phrase three times. The slug left alone if the post already exists, because a URL with history is worth more than a tidier one; if it genuinely has to change, it changes with a redirect. One meta description, written by hand. Alt text written by hand too, describing the image rather than restating the target phrase. Three to five internal links placed in the text where they help, with anchors that say where they go, never “click here” and never pointing at a URL that redirects somewhere else. If you are mapping those links across a whole site rather than one post, do it from a list of every post you have, not from memory.

Things I have stopped doing, all of which the old posts here did over and over: a question-and-answer block at the bottom whether or not anyone asks those questions, the target phrase forced into every subheading, a paragraph labelled “Table of Contents” with no links in it, and an identical list of related articles pasted under every post. Those four together are what made a hundred posts look like one post published a hundred times.

What I threw out of the process entirely

A publishing schedule I could not fill honestly. At one point thirty-six posts on this site went live on the same day, which is not a content calendar, it is a bulk upload. Two or three finished pieces a week is a pace I can defend, and nothing goes out the day it was drafted.

Templates, too. When every article has the same skeleton, the skeleton becomes the message, and the message is that nobody was paying attention. These rewrites deliberately have different shapes, because different questions deserve different shapes.

And the word “we”. There is no editorial team here. Writing as a group when you are one person is a small lie that makes every other claim on the site harder to believe.

The three questions I answer before publishing

  1. Is there at least one thing in here that nobody else could have written?
  2. Can I point to the source of every number, with a date?
  3. Would I send this to someone who knows the subject better than I do?

If the answer to the first one is no, the article does not need editing. It needs not to exist, and the hour is better spent on the unglamorous parts of running the site or on getting the pages you already have indexed and found. That was the hardest thing to accept, and taking seventy-five posts down was easier once I had.