The idea
A lightweight web app where podcast co-hosts collaboratively write and refine episode scripts before recording. Each speaker gets a color-coded block lane, scripts are stored per episode, and the app estimates running time as you type. The output is a clean PDF that reads like a TV script — speaker name on the left, dialogue on the right.
Current workflow for most co-hosted shows is a shared Google Doc with ad-hoc formatting, or no script at all. Neither works well when two or three hosts need to coordinate transitions, tee each other up, and know their cues without stumbling live.
Why build this
Podcasting has grown steadily but most tooling targets solo creators or post-production: editing, hosting, distribution. The pre-production scripting gap is real. Co-hosted shows need coordination that a blank Google Doc doesn't provide — Google Docs has no concept of a speaker, no timing estimate, no script-formatted export.
The underlying tech is mature and cheap: Yjs handles real-time collaborative state over WebSockets, Tiptap gives a polished block editor out of the box, and PDF generation from HTML is a solved problem. A solo developer could ship v1 in a few weekends.
Stack sketch
- Frontend: Next.js (App Router) with Tiptap editor, extended with a custom speaker-block node type
- Real-time sync: Yjs with a y-websocket server — a single persistent Node.js process running alongside the app
- Storage: Postgres via Prisma — shows, episodes, scripts, collaborators
- Auth: NextAuth.js with email magic links; no OAuth required in v1
- PDF export: Puppeteer running headless Chromium server-side, styled with a CSS script template (two-column layout)
- Deploy: Fly.io — needs a persistent WebSocket process, so skip Vercel for this one
Scope for v1
- Create a show and invite co-hosts by share link (no account required for collaborators)
- Block-level speaker assignment: click a block, pick the speaker from a dropdown, block takes that speaker's color
- Live word count and running-time estimate with a configurable words-per-minute rate per show
- Export to PDF (script format) and plain text
- Episode list with three statuses: Draft, Ready to Record, Done
Deliberately out of v1: AI outline generation, teleprompter mode, audio/video sync, integration with podcast hosting platforms
Where it could go
The most natural next feature is an AI-assisted outline generator: give it a topic, the show's format (interview, debate, co-hosted commentary), and a handful of past episode titles, and it drafts a segment structure the hosts can flesh out. Claude's long context makes it easy to pass in several past scripts as style examples.
A second expansion is a teleprompter mode — full-screen display that auto-scrolls at a configurable pace with the active speaker's lines highlighted. Podcasters who record video (YouTube, live streams) would find this valuable enough to pay for on its own.
Watch out for
The y-websocket server is stateful and cannot run serverless — you need a long-lived process with sticky connections. On Fly.io, pin WebSocket sessions to a single machine or swap in a Redis-backed Yjs provider so reconnects do not silently drop unsaved state mid-session.