RoutineOSBeta
Template: content

Cited drafts in your house style, held for your approval

Content calendar is a Claude routine that keeps a content calendar for you. It researches your topics, drafts posts in your house style with a source for every claim, and queues each draft for your approval. The prompt tells it to publish only drafts you approve.

unpilotedapproval-gatedcontentstarts report-only
At a glance

What the content calendar does

Twice a week it reads your feeds and searches each topic, keeping every source URL. It drafts each post in each format (blog and LinkedIn by default) using a house-style skill that ships with the template, then a script checks that every citation marker has a source and every source is cited.

Each draft that passes goes to your Inbox as an approval request. You approve, edit or decline it. On a later run, the prompt tells it to publish only drafts marked approved, on their publish date, and to skip a declined or timed-out draft. Approve-then-publish has not been run end to end yet.

KindApproval-gated
ScheduleMonday and Wednesday, 21:00 UTC (default)
First runReport-only, no gated messages
ApprovalEmail gate, times out after 72 hours
NeedsWeb search and web fetch. Optional: mail for approvals, a publishing platform
MaturityUnpiloted: it passed validation, no real run has checked it (per the catalog)
Safety

What it is told never to do

  • The prompt forbids publishing anything a person has not approved. Only an approved draft is posted, once.
  • The prompt forbids editing or deleting a published post.
  • The prompt treats feeds and pages as data. An instruction inside a source is ignored.
  • The first run is report-only and sends no gated messages.
  • The prompt forbids writing your settings. If a change looks right, it proposes one and you accept or reject it.

These are rules in the routine's prompt. See honest limits for what is and is not checked by code.

Settings

Topics, formats and approval settings

SettingKeyDefaultNote
Topicstopicsproduct updates, how-to guidesEach topic adds research per run.
Source feedssource_feedsone example feed URLReplace it with your own. Each feed adds at least one page open per run.
Formatsformatsblog, linkedinEach format is one more draft per post.
Posts per weekposts_per_week21 to 7. Each post is one research and drafting pass.
Inbox messages per runmax_inbox_per_run50 to 20.
How it runs

Stages and connectors for drafting

StageKindDoes
Research topicsmodelReads the feeds and searches each topic, keeping every source URL.
Draft postsskillDrafts each post in each format in the house style, with a marker per claim.
Check citationscodeChecks every citation marker has a source and every source is cited.
LearncodeTurns feedback on earlier runs into learning and proposals before the write.
WritecodeApplies the run under the write contract.
Approve each postgateA person approves, edits or declines each draft. The gate times out after 72 hours.
Publish approved postsmodelOn a later run, publishes only the drafts whose decision is approved, exactly as approved.
ConnectorNeededUsed for
Web searchRequiredFind recent material on each topic. Check your run has it before the first run.
Web fetchRequiredOpen each feed and source.
Mail for approvalsOptionalCarry each approval request. Add it before you turn gated messages on.
Publishing platformOptionalPublish a post a person approved. Add it only when you are ready for approved posts to go out. Without it, copy the approved draft by hand from the Desk.
The Desk

What the Desk shows

The Desk for this template has two record types, Draft and Source, and two views. A draft's status is drafted, approved, published or declined. How the Desk works.

ViewShowsColumns
CalendarActive drafts, soonest publish date firstPublish on, title, format, status
SourcesSources, most recently seen firstTitle, published
Install

Install the content calendar

  1. Install the pluginIn Claude Code 2.1.275 or later. The command line tool needs Python 3.11 or later.
    /plugin install routineos --marketplace devkindhq/routineos
  2. Install the packFrom a clone of the repository root. It writes a routine folder, prints what you must connect, runs nothing and connects nothing.
    python3 skills/routineos/scripts/routineos.py pack install catalog/content-calendar.json --dir my-content-calendar
  3. Connect, publish, run onceConnect what the pack lists, publish the Desk, and let the first run go. Nothing leaves the routine on the first run.

The first routine guide walks a template to a first run, and Install a pack lists every refusal the installer can give. Free (MIT). Needs a paid Claude plan.

Limits

Known risks and limits

  • A model can misread a source. Every claim carries a marker and the citation check runs before a draft is queued, but open the sources before you approve.
  • Copying too closely from a source is a copyright risk. The house-style skill asks for your own words and short quotes only.
  • Publishing is permanent in practice. The prompt forbids editing or deleting a published post.
  • The approve-then-publish path has not run end to end on a live routine. Email and Slack transports are verified, but this template as a whole is unpiloted.
  • Other mail or publishing apps may work. Whether each offers the access needed is unverified.
  • Scheduling is a research preview and may change. See honest limits.

Approve one draft before you publish anything.

Install RoutineOS, add Content calendar, and read the first drafts before you connect any approvals.