FlowKit

Generating an automated podcast with AI in n8n: script, voice, and RSS feed

Published 12 August 2026 · 7 min read

A weekly digest nobody reads in their inbox becomes a ten-minute audio segment listened to on the way to the train station — same content, one less reading friction. A qualitative study on podcast use, Perks and Turner (2019), Podcasts and Productivity: A Qualitative Uses and Gratifications Study, published in Mass Communication and Society (see on Google Scholar), shows that podcasts appeal largely because they slot into tasks already underway — commuting, chores, exercise — where reading demands exclusive attention. That's exactly what makes the format worth repackaging content you've already produced (a blog post, an RSS digest, an internal summary) rather than starting from scratch. This guide builds a complete pipeline in n8n: an AI-written script, synthetic voice, hosting, and — the part most tutorials skip — the podcast-format RSS feed that Apple Podcasts and Spotify actually require to list anything at all.

The six-stage architecture

  1. Source — the starting written content (RSS feed, digest, internal note).
  2. Script — an LLM rewrites that content as text meant to be spoken.
  3. Voice — speech synthesis converts the script into an audio file.
  4. Hosting — the audio is placed on publicly reachable storage with a stable URL.
  5. Podcast RSS feed — an XML file in the iTunes/Podcasting 2.0 format references each episode.
  6. Distribution — Apple Podcasts and Spotify read that feed and republish automatically.

Stage 1 — Choose the content source

Any already-structured source works: a blog's RSS feed read via an RSS Feed Read node (as in an automated RSS watch), the digest already produced by the daily Slack digest workflow from the Inbox AI Pack, or content already generated for an RSS newsletter — in that last case, the podcast becomes an extra distribution format on top of the same collection pipeline, with no new sourcing logic to write.

Stage 2 — Write a script meant to be spoken

Text written to be read doesn't work as-is once synthesized: bullet lists, clickable links, and long sentences with nested clauses land poorly in speech synthesis. A Basic LLM Chain node (see the difference with the AI Agent node if you're unsure which to use) receives the source content with an explicit instruction: short sentences, spoken-style transitions ("next", "to wrap up"), no phrasing that assumes a visual aid. A Structured Output Parser forces a strict JSON shape — episode_title, script, short_summary — so downstream stages never have to parse free text. For a two-voice dialogue format, the prompt structures the script directly into tagged lines (HOST_A: ..., HOST_B: ...), handled separately at the next stage.

Stage 3 — Voice synthesis with ElevenLabs

The official ElevenLabs node or a simple HTTP Request converts the script into audio, using a voice chosen up front and kept consistent from one episode to the next. A monologue needs a single call. A two-voice dialogue requires looping over the lines with a different voice_id per speaker, which produces several audio segments that then need to be joined — n8n has no native audio-merge node, so an external service (a serverless function running ffmpeg, for instance) takes over via an HTTP Request call. This is the trickiest technical point in the pipeline: start with a monologue to validate the rest of the chain before adding this complexity.

Stage 4 — Host the audio on public storage

The n8n S3 node (Community Edition, unrelated to the internal binary storage mode reserved for Enterprise) uploads the generated audio file. Two points specific to podcasting, absent from a plain archiving setup:

  • The bucket or objects must be publicly readable — Apple Podcasts and Spotify fetch the audio via a plain HTTP request, with no authentication possible.
  • Each episode needs a unique, timestamped filename (episode-2026-08-12.mp3), never a fixed name overwritten on every run: Apple Podcasts silently ignores duplicate enclosure URLs across episodes.

For a file several dozen MB in size, switch internal binary storage to filesystem mode for the duration of the upload — see our guide to large files in n8n — so it doesn't sit entirely in RAM.

Stage 5 — Generate the podcast RSS feed

This is the stage most "AI podcast" automations skip — without a compliant RSS feed, no platform lists anything. A podcast feed is a standard RSS 2.0 file enriched with the iTunes namespace, with a mandatory <enclosure> tag per episode:

<item>
  <title>Digest for August 12, 2026</title>
  <guid isPermaLink="false">episode-2026-08-12</guid>
  <pubDate>Wed, 12 Aug 2026 06:00:00 GMT</pubDate>
  <enclosure url="https://cdn.your-domain.com/podcast/episode-2026-08-12.mp3"
             length="4821932" type="audio/mpeg"/>
  <itunes:duration>00:05:12</itunes:duration>
  <podcast:transcript url="https://cdn.your-domain.com/podcast/episode-2026-08-12.txt" type="text/plain"/>
</item>

A Code node builds this block on every run: url, type, and above all length (the file's byte size, available from n8n's binary data metadata before the upload). The workflow then downloads the existing feed.xml from S3 via HTTP Request, inserts the new <item> at the top, trims the list beyond a reasonable number of retained episodes (200, say), and writes it back to the same location with the S3 node — everything lives on the same bucket as the audio, with no database or extra backend needed.

At the <channel> level, the iTunes namespace additionally requires a square cover image (1400×1400 to 3000×3000 pixels), an official Apple <itunes:category>, and an <itunes:explicit> flag (true/false) — static elements set once at project start.

Stage 6 — Submit the feed and let it run

Once the first episode is live, submit the feed.xml URL once to Apple Podcasts Connect (podcasters.apple.com) and Spotify for Podcasters — both free, no paid developer account required. Each platform then re-reads the feed automatically at regular intervals: publishing a new episode simply means letting the scheduled n8n workflow run (a weekly Schedule Trigger, for example), with no manual republishing anywhere.

Podcasting 2.0: two tags to add at no extra cost

The Podcasting 2.0 namespace (xmlns:podcast="https://podcastindex.org/namespace/1.0") extends the iTunes format with tags now widely supported by newer podcast apps. Two are particularly easy to fill in with this pipeline, since the data already exists:

  • <podcast:transcript> — the script generated at stage 2 is already a full text aligned with the audio: publishing it as-is as a transcript costs one extra upload, no additional AI call, and improves both accessibility and the episode's discoverability.
  • <podcast:person> — useful for explicitly crediting the voices used, including when they're synthetic.

Making the synthetic voice transparent from the start

A podcast fully generated by AI — script and voice both — raises a different question than a single automated voice message: over time, the listener builds familiarity with a recurring voice. A recent study, Rettberg (2026), AI-generated podcasts: Synthetic intimacy and cultural mistranslation in audio overviews from Google's NotebookLM, published in Media, Culture & Society (see on Google Scholar), analyzes exactly this "synthetic intimacy" phenomenon: AI voices designed to sound warm create a form of closeness with the listener even though no human is actually behind the words. The simplest safeguard is transparency: mention in the podcast description, and ideally in each episode's intro, that the content is AI-generated.

Costs and guardrails

  • LLM (script) — a few cents per episode with a cost-efficient model.
  • ElevenLabs (voice) — the bulk of the cost, billed per character synthesized; cap script length and track spend with our guide to tracking AI call costs.
  • S3 — a few cents per GB per month, negligible while the audience stays modest.
  • Non-blocking errors — an error workflow keeps a failed synthesis or upload from leaving the RSS feed pointing at a file that doesn't exist.

Going further with a FlowKit pack

This pipeline reuses the sorting and summarizing logic already running in the Inbox AI Pack (€79) — the same LLM Chain plus Structured Output Parser architecture as the Slack or Telegram digest, rewired toward audio output. For a document base already vectorized with the Assistant RAG Pack (€119), the same pattern produces a weekly summary episode from ingested documents, with no new connector.

Getting-started checklist

  • Already-structured content source (RSS feed, digest, or document export).
  • Strict script prompt: short sentences, spoken-style transitions, JSON output via Structured Output Parser.
  • Publicly readable S3 bucket, unique timestamped audio filename per episode.
  • feed.xml regenerated on every run: new <item> at the top, history trimmed to a reasonable episode count.
  • Cover image, category, and an explicit AI-generated-content disclosure set once in the <channel>.
  • Feed submitted once to Apple Podcasts Connect and Spotify for Podcasters.

The piece most "AI podcast" tutorials leave out isn't the script or the voice — ElevenLabs handles most of that in one call — it's the compliant RSS feed without which no platform lists the episode at all. Once that file is generated correctly on every run, publishing an automated podcast comes down to letting one more Schedule Trigger run on an n8n instance you already have in place.

FAQ

Frequently asked questions

Do you need a paid developer account to publish on Apple Podcasts and Spotify?

No. Apple Podcasts Connect (podcasters.apple.com) and Spotify for Podcasters are both free: you submit your RSS feed URL once, and each platform then re-reads it automatically on every new publication. Expect a few days of review the first time on Apple, and near-instant updates afterward on both.

Is n8n's S3 node enough, or do you need a dedicated podcast host?

A publicly readable S3 node reproduces the core mechanism of a podcast host (a stable audio URL plus an RSS feed) for the price of object storage — a few cents per GB. A dedicated host (Transistor, Buzzsprout, Acast) adds detailed listening analytics, automatic distribution, and a no-code feed builder — worth it if episode volume or analytics needs justify the monthly fee; otherwise S3 plus n8n does the job.

How much does generating one episode cost with this pipeline?

For a 5-10 minute episode: a few cents of LLM cost for the script (a cost-efficient model like gpt-4o-mini), and most of the cost comes from ElevenLabs, billed per character synthesized — on the order of a few tens of cents depending on length and plan. S3 storage and delivery bandwidth stay negligible as long as the audience stays modest.

Can you generate a two-voice dialogue podcast instead of a monologue?

Yes for the script (a prompt can structure a two-speaker dialogue), but synthesis needs an extra stage: call ElevenLabs once per line with a different voice_id per speaker, then concatenate the resulting audio segments. n8n has no native way to merge multiple audio files into one binary: that assembly step runs through an external service (a serverless function with ffmpeg, or an audio-editing API) called via HTTP Request from the workflow — the trickiest technical part of this pipeline.

Bundle FlowKit Complet

€269