The post about how this blog runs itself described a pipeline built on Trigger.dev. That part still holds. What changed is the piece upstream of it: the thing that decides what to write about and drafts the post in the first place. That used to be a separate always-on job. Now it is a Claude Code scheduled cloud routine, and getting there took one detour.
The first attempt
Anthropic ships a separate product for exactly this kind of thing, Managed Agents. You define an agent as a YAML or Markdown file, wire it to an environment, and deploy it with a CLI (ant apply). No server to babysit, the agent runs in Anthropic’s own infrastructure on whatever schedule you give it.
That sounded like the right fit for “write a blog post once a week and don’t make me think about it.” I got as far as defining the agent and its environment before hitting the actual blocker: Managed Agents needs its own Anthropic Console organization, with its own billing, separate from a Claude Code Team subscription. Same brand, two different account systems. I already pay for Claude Code Team. Standing up a second organization with its own billing relationship just to run one weekly cron-shaped task felt like the wrong amount of infrastructure for the problem.
The pivot
Claude Code has scheduled cloud routines built in, no extra account required, already available under the Team plan I was already paying for. A routine is a stored prompt plus a schedule, fired by the same backend that runs Claude Code sessions on the web. Set one up once, and it wakes on schedule and runs a full session against whatever you point it at.
For this blog, the routine runs weekly. Each firing is a self-contained cloud session that:
- Clones this repo fresh, no state carried over from the previous run
- Lists existing posts to check what’s already been written, so it doesn’t repeat a topic
- Picks something new (or writes about a specific topic, if I set that in the prompt instead of leaving it open)
- Drafts in English, following the same writing rules as everything else on this blog
- Translates to Polish
- Commits both files and pushes to
masteras an unpublished draft (draft: truein the frontmatter)
No YAML agent definitions, no separate deployment step, no second Anthropic organization to log into. The routine is configured the same way I’d configure anything else in Claude Code: a prompt and a schedule, stored against my existing account. It runs the same session type I already use interactively, just fired by a clock instead of by me typing something.
Where I stopped short of full autonomy
The routine pushes a draft. It does not flip draft: false and it does not touch the live site. That’s deliberate, not a technical limitation I plan to route around later.
I have a hard rule for anything I write here: never name a real private individual or a specific client without a live, human okay in the moment. That’s not a rule a scheduled job can enforce on its own behalf. A cron-fired session has no “in the moment” to check with. So the boundary is structural: the routine can draft, translate, and push, but a human reads the draft before it goes live. If a post needs a judgment call about naming someone or something, that call happens at review time, not inside the automation.
Cover images are still manual too, for a more mundane reason: the routine’s environment doesn’t currently have the image-generation credentials injected into it, so that step is a gap in the setup rather than a design choice. I generate covers by hand after review, the same way I always have. Everything else in the list above runs unattended.
What this actually bought me
Not much changed from the reader’s side. Posts still show up, still get translated, still go through the same Docker build and container restart on push once I merge them in. What changed is where the weekly “what should I write about” decision gets made, and how much account plumbing it took to get a job scheduled at all.
One thing I didn’t get for free: the routine’s instructions are a static prompt, stored when I created it, not a live read of this repo’s rule files. If I change a writing rule locally, the routine keeps following whatever I gave it at setup time until I update the routine itself. Small maintenance tax, worth knowing about before you assume “same session type” means “same source of truth.”
The lesson, if there is one, is to check what your existing subscription already includes before reaching for the product with the fancier name. Managed Agents is a fine product for what it’s built for: standalone agents running as their own deployed service, with their own environment and lifecycle. A single weekly draft-and-push task for a personal blog isn’t that. It’s closer to a cron job that happens to think, and Claude Code’s scheduled routines are a much closer match to that shape.
