prapi.dev
§ 00 · EDITORIAL CALENDAR

Plan, draft, and publish content across every brand — from one grid.

One editorial calendar for the whole portfolio. PRAPI proposes the plan from each brand's brief.md, drafts every slot in that brand's voice with its sources cited, and ships to social, your newsletter, or your blog when the date arrives. You approve every step.

Live · web · REST · MCP · CLI
§ 01 · ONE GRID

Every brand on one calendar.

Stop running a separate calendar per brand. Plan slots and topic fanouts for the whole portfolio from one grid, with each brand keeping its own voice and cadence.

Slots & topic fanouts

Plan individual slots or fan one topic out across brands and channels. Recurring weekly slots keep a cadence running without rebuilding it each week.

Approval state machine

Every slot moves slotted → drafted → approved → published. Nothing publishes unreviewed unless you approve it ahead of time.

Cadence tracking

Target vs actual, per brand and per channel, so you can see at a glance which brand is behind its publishing rhythm.

Reschedule with guardrails

Move a slot and PRAPI respects each brand’s blackout dates, so nothing lands on a day you’ve marked off.

§ 02 · STRATEGY, GENERATED

Don't start from an empty grid.

Ask PRAPI for a strategy and it proposes a full editorial slate for a brand — weeks, channels, and cadence — grounded in that brand's brief.md. The proposal is just a proposal: nothing is committed to the calendar until you accept it. Run it per brand, or loop it across the whole portfolio.

§ 03 · DRAFTS THAT SHOW THEIR SOURCES

Voice-true drafts, with the receipts.

Generate a draft for any slot and PRAPI writes it in the brand's voice using the same brief.md rules as PR-Pitch. The difference from a generic AI writer: every draft carries its citations, and any factual claim that needs checking is flagged for verification before you approve. You edit inline, approve, or reject.

In the brand’s voice

Banned phrases, required elements, and tone come straight from the brand’s brief.md — the same source of truth that drives its pitches.

Citations attached

Each draft records the sources behind it, so a claim is traceable rather than asserted.

Claims flagged to check

Anything that reads like a fact the engine can’t ground is surfaced for verification, not quietly shipped.

§ 04 · PUBLISH EVERYWHERE

One approve, the right channel.

An approved slot publishes to its channel when the date arrives, through PRAPI's channel-publisher dispatcher. Configure channels per brand; a per-brand daily publish cap keeps a runaway recurring rule from flooding a feed.

Social

LinkedIn (personal, company, carousel) and X, via Buffer. Per-brand Buffer profiles keep each brand posting from its own account.

Email newsletter

Render and send to your own subscriber list, with a self-serve unsubscribe and compliant formatting.

Blog

Publish to your own markdown site as a pull request — the post lands in your repo, in your control.

Webhook / custom API

A generic publisher posts to any endpoint, so a channel PRAPI doesn’t adapt natively can still be driven from the same calendar.

§ 05 · THE LOOP

Content that learns from its own results.

Publishing isn't the end of the slot. For social posts, PRAPI syncs engagement back from Buffer on a schedule and keeps the curve over time. That signal, plus your per-brand cadence, feeds the next strategy proposal — so the calendar reflects what actually performed, not just what was planned.

§ 06 · EVERY SURFACE

The whole calendar, from a shell or an agent.

Slots, strategy, drafts, publishing, and engagement are all available over REST, MCP, and the CLI — the same bearer token as the dashboard, the same engine underneath.

# Propose a plan, review it, commit the slots you want (CLI)
prapi calendar strategy generate --brand prapi --weeks 4 | jq '.slots[].title'
prapi calendar strategy commit --brand prapi --slots slot_abc,slot_def

# Draft a slot, then publish on approval (REST)
curl -X POST https://app.prapi.dev/api/v1/calendar/$SLOT/generate-drafts \
  -H "Authorization: Bearer $PRAPI_KEY"
  → draft ready · in your voice · citations attached · awaiting review

# What landed, and how it's doing (MCP)
mcp call list_top_engagement { "brand": "prapi" }
  → ranked by reach · curve synced from Buffer
§ 07 · FAQ

What is the PRAPI Editorial Calendar?

One content calendar for a whole portfolio of brands. You plan slots on a cross-brand grid; PRAPI proposes the strategy from each brand’s brief.md, drafts each slot in that brand’s voice, and publishes to the right channel on the scheduled date — with you approving along the way.

Does it publish automatically?

A slot auto-publishes when its date arrives — but only after it has been approved. The state machine is slotted → drafted → approved → published, so nothing goes out unreviewed unless you choose to approve it ahead of time. A per-brand daily publish cap stops a misconfigured recurring rule from flooding a channel.

Which channels can it publish to?

Social via Buffer (LinkedIn personal, company, and carousel; X), email newsletter to your own list, and your blog (published as a pull request to your markdown site). A generic webhook / custom-API publisher covers anything else. Channels are configured per brand.

Does PRAPI write the content?

It drafts each slot in the brand’s voice using the same brief.md voice rules as PR-Pitch. Every draft carries its citations, and any claim that needs checking is flagged for verification before you approve. You review and edit inline — the engine drafts, you decide.

How does it keep voice consistent across brands?

The same brief.md that drives a brand’s pitches drives its calendar drafts — banned phrases, required elements, tone. One source of truth per brand, so brand five reads like brand five, not like a house style.

Can I drive the calendar from the API, CLI, or an AI agent?

Yes — it is a first-class surface. The same calendar (slots, strategy, drafts, publishing, engagement) is available over REST at /api/v1/calendar, as MCP tools, and via the prapi CLI, behind the same bearer token as the dashboard.

How does the engagement loop work?

For social posts, PRAPI syncs engagement back from Buffer on a schedule and keeps the curve over time. That signal, plus per-brand cadence (target vs actual), feeds the next strategy proposal — so the calendar reflects what actually performed, not just what was planned.

§ 99 · NEXT

Same brief.md. Same voice. One more surface.

The Editorial Calendar shares the brief.md, voice rules, and citation discipline that drive PR-Pitch. One workspace, one bill per portfolio, every module reading the same source of truth.