I Automated My Entire Blog with AI. It Was a Disaster (At First). A developer automated their entire blog, Karya Semi, using an AI agent called Hermes, but encountered multiple failures including excessive em dashes, deployment blocks due to git config mismatch, broken images from Pollinations.ai, and timezone issues with cron scheduling. After debugging, the developer implemented fixes such as a mandatory anti-AI audit step, correct git email configuration, User-Agent header for image requests, and explicit UTC timestamp handling. I run a technical blog called Karya Semi https://karya-semi.vercel.app . It's built on Next.js, deployed on Vercel, and the content lives as MDX files in a Git repo. Standard stuff. But I don't write most of the articles by hand anymore. An AI agent handles the pipeline: it researches topics, drafts the post, generates a cover image, schedules publication, and pushes to Git when the timer hits. Vercel picks up the commit and deploys. The whole thing runs while I'm doing other stuff. Sounds neat on paper. The reality was a lot more chaotic. The stack is simple. Karya Semi uses Velite to compile MDX content, Next.js App Router for the frontend, and Tailwind for styling. Content is just markdown files in content/posts/ with YAML frontmatter. The agent I use is Hermes, an open-source AI assistant that runs on a VPS. It has terminal access, file system access, cron scheduling, and a Telegram bot interface. I talk to it through Telegram, tell it what to write about, and it does the rest. The workflow looks like this: draft: true to draft: false I can also batch schedule. Told it to publish 3 articles with 15-minute intervals this morning. Took about 30 seconds to set up. The agent has a writing style guide loaded. 51 banned words, structural patterns to avoid, a whole anti-AI-slop system. I'm sensitive to AI writing patterns because I read a lot of AI-generated content for work. I told it to write 5 articles in one session. It had the humanize-writing skill loaded the whole time. I published them, shared the links, felt good about it. Then I read them properly. Every single article had 40+ em dashes. The skill says "max 1 per 500 words." The agent loaded the skill, acknowledged the rules, and then just... didn't follow them. Five articles, all with the same problem. I had to go back and manually edit all five. Now the article skill has a mandatory anti-AI audit step that runs before anything gets saved. The agent checks itself, and if it finds violations, it rewrites before I ever see the draft. Lesson: loading a skill and applying a skill are different things. The blog deploys through Vercel's GitHub integration. Push to main, Vercel builds and deploys. Simple. Except the agent's git config had the wrong email. My GitHub account is iyop666 , but the git config was set to a different email than the one tied to my GitHub account. Vercel saw the commit came from an email that wasn't a team member and blocked the deployment. Silently. No error in the terminal. The push succeeded, but Vercel just... didn't build. I spent two hours debugging this. Checked the Vercel dashboard, saw "Deployment created" but status was stuck. Eventually noticed the commit author mismatch. Fixed the git config, force-pushed, and it worked. Now the agent's memory has a big note: "Git config MUST match the GitHub account." I wanted automatic cover images for each article. Started with Gemini's image generation. Worked great for two days, then the free tier quota ran out. Switched to Pollinations.ai. Free, no API key needed, decent quality. But the images sometimes came back as broken files. The agent would save a 0-byte file and the blog would show a broken image. Turns out Pollinations needs a User-Agent header. Without it, some requests get blocked or return empty responses. Added User-Agent: Mozilla/5.0 to the request and it's been stable since. This one bit me twice. The cron scheduler on the VPS uses the system timezone CST, UTC+8 . I'm in Jakarta, which is WIB UTC+7 . When I told the agent "publish at 8 AM WIB," it would convert to UTC correctly but then the cron timestamp would be interpreted as VPS-local time, not UTC. Result: articles publishing 1 hour early. The fix was adding a Z suffix to all UTC timestamps so the scheduler interprets them as UTC regardless of the system timezone. Sounds obvious now, but debugging a "why did this publish at 7 AM instead of 8 AM" problem when you're half asleep is not fun. One morning I scheduled 4 articles to publish in sequence. The first one went fine. The second one failed because the git push from article 1 was still in progress when article 2 tried to push. The agent got a merge conflict. Instead of pulling and retrying, it panicked and created a new branch. The article never published. I found it on a branch called publish-ai-tools-2026 sitting there doing nothing. Now all publish jobs do git pull --rebase before pushing, and there's a 15-minute buffer between scheduled publications. This is the part I care about most. I've been writing professionally for years published at Mojok, a major Indonesian outlet , and I can spot AI writing instantly. Most people can, they just don't know what they're looking for. The agent has a writing ruleset with 51 banned words across three tiers. Tier 1 words like "delve," "tapestry," and "pivotal" are instant tells. Tier 2 words like "robust" and "seamless" are suspicious. Tier 3 transition words like "Furthermore" and "Moreover" are capped at 2 per article. Beyond vocabulary, there are 10 banned structural patterns. Parallel negation "Not X, but Y" , tricolons groups of 3 , em dash overuse, rhetorical questions followed by immediate answers. These are the patterns that make writing feel "off" even when the individual sentences are fine. Does it work? Mostly. The 5-article em dash incident was a failure, but after adding the mandatory self-audit step, the output has been clean. I still read every article before it goes live and make small edits. The agent writes about 85% of the content. I add the remaining 15%: personal anecdotes, opinions I want to make sure land right, and anything that requires lived experience. Start with the writing quality system from day one. I spent the first two weeks focused on the technical pipeline Git, Vercel, cron, scheduling and treated the writing as an afterthought. That was backwards. The content is the product. The pipeline is just plumbing. Also, don't trust the agent to self-audit without verification. The em dash incident proved that. Now I have a script that scans for banned patterns before the article gets saved. The agent can't bypass it because it's a separate script, not instructions the agent chooses to follow. The blog runs itself now, mostly. I spend maybe 30 minutes a day reviewing drafts and tweaking articles before they publish. Before this setup, writing one article took me 3-4 hours. Is the content as good as what I'd write entirely by hand? No. But it's close enough that most readers can't tell. And the consistency matters more than perfection. The blog publishes on schedule, every day, without me having to carve out writing time. The agent handles the grunt work. I handle the voice and the final say. That's the split that works for me. If you're thinking about building something similar: start small. One article, one topic, manual review. Get the quality right before you automate the scheduling. And for the love of everything, check your git config before you wonder why Vercel isn't deploying.