Podcast RSS feed generator
Fill in the show, drop your episode audio in, and download feed.xml. The page reads each file's size and duration on your device. Upload the audio to any HTTPS host, put the feed next to it, and submit the feed URL to Apple Podcasts Connect and Spotify for Creators.
| Title | File | Duration | Publish date |
|---|
Episode guids are random UUIDs made once in this page. If you rebuild later, keep the old feed's guids (or use the CLI, which saves them in publish.json). A changed guid makes apps show the episode as new. Check the result with the Podcast Feed Validator.
Markdown to EPUB
Paste your manuscript in Markdown. Each # Heading starts a new chapter. You get an EPUB 3 file with a cover, a title page and a table of contents, ready for KDP, Apple Books, Kobo, Google Play Books and Draft2Digital. Files from the CLI pass W3C EPUBCheck.
Paperback spine width and cover size (KDP Print)
Audiobook file check (ACX / Audible)
Choose your chapter files in reading order. Each one is checked against ACX's published requirements: MP3, 192 kbps or higher, constant bitrate, 44.1 kHz, at most 120 minutes, and all mono or all stereo. For 16-bit WAV masters it also measures RMS, peak and noise floor. Files stay on your device.
More detail: ACX audiobook requirements, and how to check your files.
The command-line kit, for you or your AI agent
The same code as a zero-dependency Node.js CLI. One publish.json per project. Every command takes --json, and plan lists what is still missing and the next command to run, so Claude Code, Cursor or any agent can take a folder of audio or Markdown to a finished feed, EPUB, M4B or print PDF.
git clone --depth 1 https://github.com/duncan-haywood/oss-monorepo alias publish-kit="node $PWD/oss-monorepo/ventures/publish-kit/cli.mjs" publish-kit init podcast my-show && cd my-show publish-kit podcast add ep1.mp3 --title "Pilot" --description "Show notes" publish-kit plan --json # what's missing, what to run next publish-kit podcast build # dist/feed.xml + dist/index.html, validated publish-kit init ebook my-book # chapters/*.md → EPUB, print PDF, cover size publish-kit ebook build && publish-kit print interior --pdf && publish-kit print cover --pdf dist/my-book-print.pdf publish-kit init audiobook my-audiobook publish-kit audiobook check && publish-kit audiobook m4b --run && publish-kit audiobook feed
An agent skill file is included (skill/SKILL.md). Source and full docs: ventures/publish-kit on GitHub.
Questions
How do I make an RSS feed for my podcast without a hosting company?
Upload your MP3 files anywhere that serves them over HTTPS (your own site, GitHub Pages, an S3 or R2 bucket), then generate a feed that lists each file's URL, byte size, duration and publish date along with the show's title, description, cover art, category and language. This page does that from the audio files you drop in; the CLI does it from a folder. Host the feed.xml next to the audio and submit its URL to Apple Podcasts Connect and Spotify for Creators.
What does ACX require for audiobook files?
ACX's published audio submission requirements: each file is one chapter or section and no longer than 120 minutes; MP3 at 192 kbps or higher, constant bitrate, 44.1 kHz; all files mono or all stereo; RMS between -23 and -18 dB, peaks at or below -3 dB, and a noise floor at or below -60 dB RMS; opening and closing credits and a 1 to 5 minute retail sample as separate files; and a square cover of at least 2400 by 2400 pixels. Publish Kit checks the file-level rules and measures loudness on WAV masters.
How wide is the spine of my KDP paperback?
KDP multiplies the page count by a per-page paper thickness: 0.002252 inches for white paper and 0.0025 inches for cream. A 300-page book on white paper has a 0.676 inch spine, and a 6 by 9 inch book's full cover is then 12.926 by 9.25 inches including 0.125 inch bleed on each edge.
Can an AI agent publish my podcast or book with this?
Yes. The CLI keeps everything in one publish.json, every command accepts --json, and publish-kit plan returns what is still missing and the next command to run, so an agent such as Claude Code can loop until the project is ready. It never uploads or submits anything itself: you or your agent upload the files and submit the feed, under your own accounts.