Repurpose Studio
Write once, publish everywhere.
The problem
One Substack essay had to be reshaped for LinkedIn, X, Instagram, Threads, Bluesky and video, then scheduled and published through separate tools. The repeated work also risked sanding the writing down into a generic AI voice.
What it does
A zero-cost, self-hosted content engine. It ingests long-form writing, rewrites it in the author’s own voice per-platform, generates carousel images and TTS video voiceovers, then publishes directly through each platform’s native API on a self-built scheduler. It learns from every edit you make, so the voice stays yours.
Generation runs through Claude in headless mode — no per-call API billing, no third-party tools in the loop. Ships two ways: a clean product ZIP buyers run themselves, or hosted behind a signup-code gate.
Why it is built this way
I built the whole loop locally: ingest once, generate per-platform drafts, learn from my edits, render the assets and publish through each platform's own API. Claude Code headless uses the subscription I already have, so there is no per-call bill or third-party scheduler; Instagram stays manual because Meta requires a publicly hosted image URL that a private local app cannot provide.
What was hard
Windows path escaping broke ffmpeg's subtitle filter, so video rendering switches to relative filenames and a controlled working directory. The ship-ready pass also had to guard malformed model output after it produced `undefined` drafts and fix missing follower snapshots that rendered as `undefined` in the planner.
Outcomes
- 5 platforms from one draft
- Zero API spend
- Learns from your edits
Stack
PRODUCT IN USE
The Desk — every piece in one queue
Calendar — what ships, and when
Voice — the profile drafts are written against
Pulse — what the writing actually did
Calendar
Engage
Ideas
Pieces
Planner
Pulse
Signin
Voice
Write