Most AI content tools write articles nobody publishes

We run Visorank on our own properties. Last week we looked at one of them properly for the first time in months and found 24 finished articles sitting in draft.
Written between June and September. Full body text, meta descriptions, hero images, internal structure. Thirty articles generated in total, six live, twenty-four never published.
Nobody had decided not to publish them. There was simply no moment where publishing them was one action.
The shape of the problem
Our dashboard had a publish button. It lived on the page for an individual article. To put 24 articles live you opened 24 pages and clicked 24 buttons, each one starting a job you then waited on.
That is not a feature anyone chooses to use twice. So the backlog grew, quietly, while every number on the dashboard got worse in ways that looked like different problems:
Internal linking had six pages to work with instead of thirty. With six articles, each one has five possible link targets, most of which are not topically related, so the link pass placed almost nothing. We spent an afternoon assuming the matching logic was too strict.
The competitive gap analysis compared six published pages against a competitor's several hundred. Every gap it found was real and the list was meaningless, because twenty-four articles that would have closed some of those gaps were sitting in a database.
AI visibility scored near zero. An unpublished page cannot be cited by an assistant for the same reason it cannot rank: it does not exist on the internet.
Three separate features looking broken, one cause.
Why this is common
Every AI content tool has the same split between generating and publishing, and generation is the part that demos well. You watch an article appear in ninety seconds. Publishing is plumbing: credentials, a CMS API that rejects your post for a reason it will not name, image uploads, a slug collision.
So generation gets the polish and publishing gets a button. The gap between them is where content goes to sit.
The tell is that the two actions have different units. Generation is naturally one article at a time, because you review each one. Publishing a backlog is naturally many at once, because you already reviewed them. A product that offers both at the same granularity is forcing one of those two jobs into the wrong shape.
What we changed
Visorank now publishes a site's entire draft backlog as one action. The articles page shows how many drafts are waiting and offers two buttons: send them all to your CMS as drafts for review, or publish them all live.
Some specifics that turned out to matter:
Oldest first. A backlog published newest-first reverses your blog's chronology, so a reader scrolling the archive sees September before June. Publishing in the order things were written keeps the dates reading forward.
A pause between articles. A WordPress publish is not one request. It is the post, plus a media upload for the hero image, plus one per inline image. Twenty-four of those fired back to back at shared hosting is how a site ends up rate-limited by its own publisher. There is a gap between each article, and the whole run takes a few minutes rather than a few seconds. Nobody is watching anyway.
One failure does not stop the run. If article nine has a slug collision, articles ten through twenty-four still publish, and the result names the one that failed and why.
The live option asks twice. Putting two dozen articles in front of readers at once is not reversible from our side; undoing it means going into the CMS. One click arms it, the second does it.
The part worth copying even if you never use Visorank
Go and count your drafts. In whatever tool you use, in your CMS, in the folder of markdown files you meant to get to.
If the number is higher than you expected, the cause is almost never that you decided against publishing them. It is that publishing was never one action, and so it never became this afternoon's task.
The fix is boring and it is not more content. It is making the step after content cost one click instead of twenty-four.