The blog that wrote itself
I built a blog that wrote itself. A week later I had 50 articles that looked like one article, written 50 times. The system worked perfectly. The content was garbage.
// body
The blog that wrote itself
I woke up in the middle of the night with a brilliant idea: what if I built a blog that wrote itself? Plug in an AI API, let it generate posts, fall back asleep richer.
A week later I had 50 articles. They looked like one article, written 50 times. The system worked perfectly. The content was garbage.
This is the story of how that happened.
The setup
I dropped $15 on the API, hooked codex up to my VPS, and got to work.
First mistake: I bought a dashboard template from ThemeForest. A popular one, beautiful out of the box — sidebar with icons, nice cards, proper light theme, clean typography. I dropped it on the server, pointed codex at the folder, and started thinking about logic.

Light able themeforest template — caption: "The template I bought. Beautiful out of the box.
How does the AI know what to write? It needs context. So I made 10 categories around trading — popular topic, broad audience, easy to fill. Then I wrote a prompt: "You're a copywriter for a trading site. You write engaging articles."
I hit run. The AI dutifully produced 20 articles that all looked the same — one template stretched across slightly different keywords. Working, technically. But this was one category out of ten, and I already had a content problem.
The "smarter" architecture
I figured the problem was the prompt. So I rebuilt it:
A smaller, cheaper model as the editor. It opens the database, sees which categories already have posts and which are empty, and writes a brief for the next article.
A larger, slower model as the writer. It takes the brief and writes the article. It publishes.
Two models, two roles. Editor decides what to write, writer writes it. This felt like real engineering — division of labor between models, each doing what it's better at.
Then I asked codex to wrap it in a cron job. Every four hours: editor wakes up, picks an underfilled category, writes a brief, hands it to the writer, article gets published. No human in the loop.
I leaned back. This was going to work.
When codex broke the sidebar
There was one piece left: the template's sidebar didn't know about my categories. I needed it to render a menu from the database. Simple ask.
I told codex: "Take this template at /var/www/idtrader/template. Add a category menu to the existing sidebar based on the categories in the database. Don't touch anything else."
It said executing.
I refreshed the page.
The sidebar was gone. The navbar was gone. The footer was gone. The content area was gone. In their place was a bare <ul> of <a> tags — no styles, no colors, no icons, no active state. Just unstyled HTML links sitting in a void where my $30 template used to live.
I sat there for a moment.
Then I told it: "No. Restore the original template from /var/www/idtrader/template. Just add the categories into the existing sidebar. Don't redesign anything."
It said executing.
It restored the sidebar — and removed the navbar, the content, and the footer. Different breakage. Same vibe.

idtrader.blog current state — caption: "What it looked like after. Same site, after the AI 'helped' with the sidebar.
I went back and forth maybe fifteen times. Every iteration, codex understood the words and missed the intent. It wasn't malicious. It just had its own opinion about what the site should look like, and it kept silently overruling mine. By the end the site sort of worked, but visually it looked like someone had crowdsourced the design from five different developers who'd never met.
I gave up on the design fight. The content automation still worked. That was the point. The cron was running. Articles were being published. I left it for a week and went to do something else.
A week later
I came back to 50 articles in the database.

Filament posts list, cropped to ~20 rows — caption: "One week of cron output. Same categories, same patterns, just shuffled words.
I started reading them.
The first one was fine. Generic, but fine. The second one was familiar. By the fifth one, I realized I was reading the same article with the nouns swapped out. By the twentieth, the pattern was undeniable: "Identifying X is critical for traders. Understanding Y enhances decision-making. Proper Z significantly improves outcomes." Different words in different positions, telling you nothing new each time.
50 articles. One article, 50 times.
What actually went wrong
I spent a while staring at this trying to figure out where the system broke.
The architecture was sound. Editor model picks the gap, writer model fills it. Cron schedules the work. Database tracks what exists. Every piece did what it was supposed to do.
The problem wasn't in the components. The problem was that nothing in the entire pipeline pointed outward.
The editor read the database. The database held articles the writer had created. The writer wrote based on briefs the editor had written based on what the writer had written. A closed loop, recursively feeding on itself.
There was no external signal. No news feed. No market data. No human asking a question. No reader leaving a comment. No event in the world that demanded an article be written. The system had no eyes — only a mirror.
And a generative system with no outside input always lands in the same place: its own statistical median. At first it varies, because the models are stochastic. Then it converges. By article 50 it had collapsed into a single shape with surface decoration.
Automation without varied input regresses to the mean. Always. The interesting question isn't "will it happen" — it's "how fast." With LLMs, it's faster than you'd think.
What I kept from this
I turned the cron off. I kept the code in the repo as a souvenir.
The takeaway wasn't "AI can't write blogs." It can. The takeaway was about what automation actually is.
Automation isn't "do the thing for me." Automation is a multiplier on a flow. If you have a flow — news arriving, data updating, questions coming in, ideas being generated — automation accelerates it. You get more of the thing, faster.
If you don't have a flow — automation just pumps an empty pipe faster. Same nothing, scaled up. Same article, 50 times.
The mistake wasn't picking the wrong models or writing the wrong prompts. The mistake was thinking I could remove humans from a content system that had no other source of signal. The system worked. It did exactly what I built it to do. I just hadn't realized I'd built a perpetual motion machine.
Those don't exist. Not in physics, not in content.