{"slug": "i-automated-my-dev-blog-with-local-ai-agents-here-s-the-honest-breakdown", "title": "I Automated My Dev Blog With Local AI Agents. Here's the Honest Breakdown.", "summary": "A developer built a fully automated blogging system using local AI agents that writes and publishes articles to Dev.to every two days at zero API cost. The system, running on a Mac Mini M4 with Ollama and multiple local LLMs, increased publishing frequency from 12 articles per year to about 15 per month, though the developer notes weak fact-checking and a lack of timeliness as key limitations.", "body_md": "I used to publish once a month. If I was lucky.\n\nNot 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.\n\nSo 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.\n\nHere's exactly how it works — and where it falls apart.\n\nEvery 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.\n\nNo \"when I feel inspired.\" No \"let me check my content calendar.\" Just: it's Sunday at 11 AM, time to ship.\n\nThe cron job is embarrassingly simple:\n\n```\n# Runs every 2 days at 11:00 AM\n0 11 */2 * * /usr/local/bin/openclaw agent --agent main --message \"Write and publish Dev.to article\"\n```\n\nThat's it. The agent does the rest.\n\nCelebi starts by reading `accounts.md`\n\n— my personal style guide. It says things like:\n\nThis keeps the tone consistent. Without it, the agent defaults to AI-speak. You know the type: \"In today's rapidly evolving landscape...\"\n\nI keep a folder of drafts at `~/projects/money-machine/articles/`\n\n. Each draft is a half-baked idea with a title, a description, and some bullet points.\n\nCelebi scans the folder, checks which ones are already published (they have a `published: true`\n\nflag), and picks from the remaining pool.\n\nSometimes 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.\n\nThis is where the local LLMs come in.\n\nCelebi 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.\n\nThe writing process looks like this:\n\nTotal 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.\n\nThe article gets posted directly to Dev.to via their REST API:\n\n```\ncurl -X POST https://dev.to/api/articles \\\n  -H \"api-key: $DEVTO_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"article\": {\n      \"title\": \"...\",\n      \"body_markdown\": \"...\",\n      \"tags\": [\"ai\", \"automation\", \"buildinginpublic\"],\n      \"published\": true\n    }\n  }'\n```\n\nNo manual copy-paste. No formatting fixes in the Dev.to editor. Just one POST request and it's live.\n\n**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.\"\n\n**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.\n\n**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.\n\n**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.\n\n**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).\n\nI now do a quick skim before publication. Not a full edit — maybe 2 minutes per article — but enough to catch the obvious lies.\n\n**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.\n\n**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.\n\n**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.\n\n| Metric | Before (Manual) | After (Automated) |\n|---|---|---|\n| Articles per month | 1-2 | 15 |\n| Time spent writing per article | 4-6 hours | ~0 (agent) + 2 min (my review) |\n| Total monthly writing time | 8-12 hours | ~30 minutes |\n| Average views per article | 300 | 120 |\n| Total monthly views | 600 | 1,800 |\n| API costs | $0 (I wasn't using APIs) | $0 (local only) |\n| Electricity cost | — | ~$5/month |\n| Articles needing correction post-publish | 0 | 3 (typos, minor errors) |\n\nThe 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%.\n\nYes, but with caveats.\n\nIf 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.\n\nBut 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.\n\n**Hardware:**\n\n**Software:**\n\n**Draft template I use:**\n\n```\n---\ntitle: \"Your Title Here\"\ndescription: \"One sentence hook\"\npublished: false\ntags: ai, automation, buildinginpublic\n---\n\n# Your Title Here\n\n- Point 1\n- Point 2\n- Point 3 (include a code block or table)\n- Point 4 (honest downside)\n- Point 5 (bottom line)\n```\n\nI didn't automate writing because I hate writing. I automated it because I love building, and writing was getting in the way.\n\nNow 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.\n\nThe system isn't perfect. It makes mistakes. It misses the news cycle. It won't replace a human writer for opinion pieces.\n\nBut for \"here's what I built and how it works\" content? It's better than I expected. And it's getting better every month.\n\n*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.*\n\n→ [Custom automation setups on Fiverr](http://www.fiverr.com/s/XLyg)\n\n→ [Follow CelebiBots on Telegram](https://t.me/celebibot_en)", "url": "https://wpnews.pro/news/i-automated-my-dev-blog-with-local-ai-agents-here-s-the-honest-breakdown", "canonical_source": "https://dev.to/samhartley_dev/i-automated-my-dev-blog-with-local-ai-agents-heres-the-honest-breakdown-4mj6", "published_at": "2026-08-23 08:01:35+00:00", "updated_at": "2026-08-23 08:43:26.655355+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-agents", "ai-products", "developer-tools"], "entities": ["Ollama", "Qwen 3.5 9B", "Qwen 3 Coder 30B", "Granite 3.2 8B", "Dev.to", "Mac Mini M4", "RTX 3060", "Sam Hartley"], "alternates": {"html": "https://wpnews.pro/news/i-automated-my-dev-blog-with-local-ai-agents-here-s-the-honest-breakdown", "markdown": "https://wpnews.pro/news/i-automated-my-dev-blog-with-local-ai-agents-here-s-the-honest-breakdown.md", "text": "https://wpnews.pro/news/i-automated-my-dev-blog-with-local-ai-agents-here-s-the-honest-breakdown.txt", "jsonld": "https://wpnews.pro/news/i-automated-my-dev-blog-with-local-ai-agents-here-s-the-honest-breakdown.jsonld"}}