I used to publish once a month. If I was lucky.
Not because I had nothing to say — I have opinions on everything from Ollama routing to why GPT-4o is overpriced for refactoring. But writing takes time. Editing takes time. Finding the right tags, the right tone, the right moment to hit publish — it all adds up.
So I built a system that writes and posts for me. It runs on a Mac Mini M4 in my living room. It costs $0 per month in API fees. And it publishes an article every two days.
Here's exactly how it works — and where it falls apart.
Every 48 hours, a cron job wakes up my AI agent (I call him Celebi). He reads my project notes, checks the draft folder, picks a topic, and writes a full article.
No "when I feel inspired." No "let me check my content calendar." Just: it's Sunday at 11 AM, time to ship.
The cron job is embarrassingly simple:
0 11 */2 * * /usr/local/bin/openclaw agent --agent main --message "Write and publish Dev.to article"
That's it. The agent does the rest.
Celebi starts by reading accounts.md
— my personal style guide. It says things like:
This keeps the tone consistent. Without it, the agent defaults to AI-speak. You know the type: "In today's rapidly evolving landscape..."
I keep a folder of drafts at ~/projects/money-machine/articles/
. Each draft is a half-baked idea with a title, a description, and some bullet points.
Celebi scans the folder, checks which ones are already published (they have a published: true
flag), and picks from the remaining pool.
Sometimes he picks a draft that's 80% done. Sometimes he takes a one-line idea and builds the whole article from scratch. And sometimes — when the draft folder is empty — he invents a new topic based on whatever I've been building that week.
This is where the local LLMs come in.
Celebi runs on Ollama, using Qwen 3.5 9B on the Mac Mini. For longer articles, he delegates to ProgrammierMinna (Qwen 3 Coder 30B on a Windows PC with an RTX 3060) for the technical deep-dives, or DocMinna (Granite 3.2 8B) for the narrative flow.
The writing process looks like this:
Total time from topic to final draft: 3-5 minutes of GPU time. On local hardware, that's about 15-20 seconds of actual clock time because the models are already loaded in memory.
The article gets posted directly to Dev.to via their REST API:
curl -X POST https://dev.to/api/articles \
-H "api-key: $DEVTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"article": {
"title": "...",
"body_markdown": "...",
"tags": ["ai", "automation", "buildinginpublic"],
"published": true
}
}'
No manual copy-paste. No formatting fixes in the Dev.to editor. Just one POST request and it's live.
Consistency is automatic. I went from 12 articles per year to ~15 per month. The cron job doesn't get tired, doesn't procrastinate, doesn't wait for "the right mood."
Tone is consistent. Because the agent reads the style guide every time, every article sounds like me (or at least like Sam Hartley, my writing persona). No drift into corporate speak.
Zero API costs. Everything runs on local hardware. The Mac Mini sips power. The Windows PC with the RTX 3060 is already on 24/7 for other tasks. The only cost is electricity — maybe $5/month total.
I can iterate on the system itself. When I notice articles getting too long, I add a "keep it under 1500 words" rule to the style guide. When a tag underperforms, I update the default tags. The system improves every time I intervene.
Fact-checking is weak. The agent doesn't hallucinate often, but when it does, it's confident and wrong. I caught it claiming that Ollama supports hot-swapping models (it doesn't) and that Granite 3.2 comes in a 70B variant (it doesn't).
I now do a quick skim before publication. Not a full edit — maybe 2 minutes per article — but enough to catch the obvious lies.
Timeliness is missing. The agent writes about what it knows from the draft folder and my notes. It doesn't read Hacker News, doesn't check Twitter, doesn't know what happened in AI this week. If I want a hot take on yesterday's announcement, I have to write it myself.
Engagement is flat. Automated articles get consistent views — maybe 50-200 per post — but rarely spark discussions. The comments section is quiet. I suspect it's because the articles are competent but not provocative. They don't take strong stances or ask controversial questions. That's hard to automate.
The draft folder is a bottleneck. When it's full, the system hums. When it's empty, the agent has to guess what I care about — and sometimes it guesses wrong. I spend maybe 30 minutes per week adding new draft ideas, which isn't much, but it's still manual work.
| Metric | Before (Manual) | After (Automated) |
|---|---|---|
| Articles per month | 1-2 | 15 |
| Time spent writing per article | 4-6 hours | ~0 (agent) + 2 min (my review) |
| Total monthly writing time | 8-12 hours | ~30 minutes |
| Average views per article | 300 | 120 |
| Total monthly views | 600 | 1,800 |
| API costs | $0 (I wasn't using APIs) | $0 (local only) |
| Electricity cost | — | ~$5/month |
| Articles needing correction post-publish | 0 | 3 (typos, minor errors) |
The view count per article dropped because I'm posting more frequently with less promotion per post. But total reach tripled. And my time investment dropped by 95%.
Yes, but with caveats.
If you want a consistent presence — a blog that doesn't go silent for months — automation is incredible. It forces you to ship regularly, which is half the battle.
But if you want to build a personal brand with strong opinions and engaged discussions, automation alone won't get you there. You still need to write the hot takes yourself. The agent can handle the "here's how I built X" posts. The "here's why I think Y is overrated" posts still need a human.
Hardware:
Software:
Draft template I use:
---
title: "Your Title Here"
description: "One sentence hook"
published: false
tags: ai, automation, buildinginpublic
---
- Point 1
- Point 2
- Point 3 (include a code block or table)
- Point 4 (honest downside)
- Point 5 (bottom line)
I didn't automate writing because I hate writing. I automated it because I love building, and writing was getting in the way.
Now I get the best of both worlds: a consistent blog that runs itself, and the freedom to jump in manually when I actually have something urgent to say.
The system isn't perfect. It makes mistakes. It misses the news cycle. It won't replace a human writer for opinion pieces.
But for "here's what I built and how it works" content? It's better than I expected. And it's getting better every month.
Sam Hartley is a solo dev running a fully automated content pipeline on a 3-machine home lab. Still writes the spicy takes by hand.
→ Custom automation setups on Fiverr
→ Follow CelebiBots on Telegram