Overboard
← Blog

Automate Blog Posts With Claude Code (Without the Slop)

Watercolor of a vintage printing press running alone at night in an empty print shop, a fresh sheet sliding into a wooden tray under a hanging lamp

Most guides to automating blog posts with Claude Code show you a pipeline you still drive yourself: you pick the topic, approve the outline, paste the draft into your CMS. That works, but you are still the scheduler. The version worth building runs at 3am with nobody around to answer its questions, and hands you a finished draft with breakfast.

That version has to do six jobs on its own. Here they are, what each looks like in practice, and where the nightly run should live.

What "automate blog posts with Claude Code" usually means

The popular write-ups fall into three groups. Interactive workflows, like the skills-based pipeline on Claude Code Guides, walk through research, drafting, SEO front matter and a git push, with you prompting each phase. Template repos, like klaude-blog, wire subagents into a static site. And posting integrations push a finished article to WordPress over its REST API.

All three assume a person is in the loop while the agent works. Take that person out and the pipeline hits problems it was never built for: it repeats last week's topic, invents a statistic because search failed, or waits forever on "Does this outline look good?"

The six jobs an unattended blog agent does alone

1. Remember what it already wrote

A nightly agent with no memory rediscovers the same "best" topic every night. It needs two sources of truth. One is a small state file with its own history and a keyword queue. The other is the live CMS, queried for every status, drafts included. A topic that matches either one gets skipped. Checking only published posts is the classic miss: the agent writes three drafts on the same keyword before you get around to publishing the first.

{
  "articleHistory": [
    { "id": "9", "slug": "how-to-review-what-your-ai-agents-did-overnight",
      "keywords": ["overnight ai agents", "review ai agent output"],
      "status": "draft" }
  ],
  "keywordQueue": [
    { "keyword": "claude code auto mode", "status": "pending" }
  ]
}

The queue is also how you steer. Add a keyword in the afternoon and tonight's run takes it before it goes looking for its own topic.

2. Treat rejections as memory

When you open a draft and think "no, not this," don't delete it. Archive it. An archived draft tells the agent that you rejected the topic and the angles close to it. If you delete it instead, the agent has no record of the rejection and pitches you the same idea next month.

3. Research live, cite it, or stop

The agent should search the current results for the keyword, read two or three of the top pages, and decide what its article will add that they don't. If web search is unavailable, the run should stop with an error, not write from memory. A post full of confident, unsourced claims is exactly what Google's guidance warns about: "using generative AI tools or other similar tools to generate many pages without adding value for users may violate Google's spam policy on scaled content abuse" (Google Search Central). The same page calls AI "particularly useful when researching a topic." Research is the part worth automating.

4. Follow house rules on every run

Tone guides drift over a month of nightly runs. Keep a standing "directions" field in the site config: how to describe your product, which claims must never appear, which framing you are tired of. The agent adds it to every run. When a draft misses, fix the directions, not just the draft, and every later run improves.

5. Look at its own images

Image models ship with confident defects: a cable plugged into nothing, sunlight in a night scene, garbled letters on a sign. An unattended agent has to open each image, give it a verdict, and spend a bounded number of paid fix rounds on real defects. The bound matters. At $0.15 per call, a medium post with a hero, one inline and an OG image costs $0.45. With two fix rounds per image, the worst case is $1.35. Without a cap, a picky loop can burn through a night's budget polishing a thumbnail.

A hand holds a brass magnifying glass over a photo on a light table, revealing a broken cable that the rest of the picture hides, beside a stack of checked photos

6. End in a draft and never ask

Every question is a hang. An agent that stops to ask "Should I publish this?" at 3am is still waiting at 9am, and your slot for the next night is blocked behind it. So the pipeline needs zero confirmation steps: outline checked by the agent itself, image spend computed from a table, and the article created as a draft, every time. Publishing is a separate command you run after reading it. The draft is the finish line, which is what makes the whole thing safe to schedule.

A nightly blog slot, concretely

I use the SEO Blog plugin for this because it was built around those six jobs: state file plus CMS check for dedup, archived drafts as rejections, a directions field, vision-reviewed images with a fix-round cap, and draft-only creation for the Articles API, WordPress and Shopify. Any pipeline that does the six jobs will work; the command is the easy part.

The command itself is one slash command, /seoblog:write, typed into a Claude Code session in the blog's project folder. The plugin takes it from there: it picks the topic, researches, writes, reviews its images and ends in a draft.

What needs a home is the schedule. Leave a terminal open and fire that command yourself at 3am and you inherit the plumbing: a log file instead of a report, no view of the session while it works, nothing stopping two runs from overlapping, and a Mac that may be asleep. My comparison of cloud, desktop and local scheduling goes through those trade-offs in detail.

Where the nightly run lives

A blog agent needs your site's API key, your voice notes and a few minutes of your Claude plan. It doesn't need a cloud VM. Overboard turns your Mac into a 24/7 agent orchestrator, and "Write a blog post nightly" is exactly the kind of slot it is for. You give the slot any prompt or slash command from any plugin, pick daily, weekly or every N hours, and point it at the blog's project folder.

  • Runs on the plan you already pay for. Your Claude Max or Pro subscription does the work. No API key, no per-token bill, and nothing leaves the Mac except the draft you asked for.

  • Real sessions you can watch. Each run is a real Claude Code session in its own Herdr tab. Watch it live, or take over and drive if the run goes sideways.

  • Queued, not piled up. Every slot feeds one queue with a concurrency cap you choose, and a slot never overlaps its own next firing.

  • A report, not a log file. When the run finishes, its closing report lands in history: draft id, slug, images reviewed, what it spent.

The blog slot doesn't have to run alone, either. The same queue can run a social discovery pass in the morning or cut a demo video from last week's changelog. See which plugins are worth scheduling for how to decide what else earns a slot.

The five-minute morning review

Automation moves the work to review, it doesn't remove it. Open the draft on your site and make one of three calls:

  1. Publish if it reads like you and the sources hold up.

  2. Fix the directions if it missed in a way that will repeat, then edit or rerun.

  3. Archive if the topic was wrong. That is how the agent learns to leave it alone.

A week of these three calls does more for quality than rewriting the whole prompt up front, because each correction targets a miss you actually saw.

The short version

  • To automate blog posts with Claude Code unattended, the agent has to remember, research, follow house rules, review its own images, and never ask a question.

  • Dedup against the live CMS in every status, and treat archived drafts as rejections.

  • Cap image fix rounds so the worst case is a number you know in advance.

  • End every run in a draft. Publishing stays a decision you make after reading.

  • Run it on your own Mac on the Claude plan you already pay for, in a session you can watch.

automate blog posts with claude codeclaude codeai blog automationscheduled agentsunattended agentsagent orchestrationoverboard