I auto-published 2,300 AI articles. Google buried 90% of my traffic.

A vast field of identical pale documents receding into the distance, with a single green seedling growing from dark soil in the foreground.
Illustration generated with AI (Flux 1.1 Pro).

This is the first post on this blog, and it exists because something I built failed. So let me start with the failure instead of a mission statement.

For sixteen months I ran a content machine on a side project called Startups Españolas. It published on its own, twice a day, nobody in the loop. By the time I actually looked at the numbers it had shipped around 2,300 articles. I was quietly pleased with it, and not for nothing: it was a real piece of software. A Laravel backend, the prompts kept in the database, several LLM providers wired up with fallback, publishing straight to the live site with no hand on the button. It felt like leverage. Set it up once, let it run, watch the pages pile up.

Then I pulled the full Search Console history and sat with it for a while, and the pile stopped feeling like an asset.

The numbers

Here is the monthly click trend, straight from the GSC API, nothing rounded in my favour:

MonthClicksImpressionsAvg. position
2025-0763876,19433.2
2025-0969556,45819.8
2025-1063433,37813.5
2025-1242831,47516.8
2026-0216615,83823.2
2026-0411514,96922.1
2026-06699,23632.1

The peak was September 2025, 695 clicks in a month. The last full month, June 2026, did 69. That is a 90% drop. Average position over the same stretch slid from about 13 back down to about 32, which in plain terms means Google took my pages from the bottom of page one to the bottom of page three and left them there.

The number that actually stung was the long tail. Over a 90 day window, 1,567 of the pages picked up impressions, so Google had indexed almost everything the machine produced. But only 147 of them, about 6%, earned a single click. I had built two thousand articles to feed a hundred and fifty that did anything at all, and even those were quietly going dark.

What I was telling myself

The story in my head was simple: more articles, more surface area, more chances to rank. Intuitive, and wrong. Those thin pages competed with each other for the same weak queries, watered down whatever topical signal the domain had, and handed Google a heap of near-duplicate machine text to judge the whole site by. Which is exactly what the helpful-content updates exist to push down. I had not built an asset. I had built the thing the algorithm was learning to distrust.

And the traffic that did exist never came from the volume anyway. It came from a handful of genuinely useful startup profiles that happened to rank. Those few pages were the valuable part, and I had spent sixteen months on the other half.

The part where it got embarrassing

The slow decline was the lesson. The fast one was the wake-up call.

The brand was Spanish, es-ES only, on purpose. One day a channel with no language guard generated a batch of posts in English and pushed them onto a Spanish-only site, live, before anyone had read a word of them.

Nothing caught fire. But that is the point of automation with no human gate: the day something does go wrong, it is already public before you know it exists. A pipeline that can publish a good post on its own can publish a bad one on its own, and given enough days, it will.

What I took from it

I am not turning anti-automation on a blog about building with AI. It writes most of my code and I am not going to pretend otherwise.

Volume was never a strategy. A young site does not earn authority by producing more of anything, and one real article beats five thin ones by a margin that is not close. Thin content is not even neutral: those pages did not just fail to rank, they sat on the domain like a tax and dragged down the pages that could have. I had fallen for my own impressive machine.

Both failures had the same cause underneath. Things went live without a human reading them first. So that is the rule this blog runs on. Nothing publishes until I have read it.

And I should have looked at the data in month three instead of month sixteen. If I had, the machine would have been off by month four.

So what is this blog

The opposite bet. Static, hand-written, English, slow on purpose. A small script gathers what I actually did across my projects each week, the git history and the working notes, and hands me the raw material. Then I pick something worth writing about and write it. No CMS, no queue, no provider zoo.

I build around a dozen real projects, mostly alone, with AI doing a lot of the typing, and I write about how that actually goes. Some of it works. Some of it is this post.

← All posts