---
title: "Podcast Episode Download"
canonical: https://trickest.com/library/podcast-episode-download
description: "List a public RSS feed, then download each enclosure with yt-dlp on its own worker. The report copies the media and writes downloads.jsonl."
---

# Podcast Episode Download

## Overview

A public RSS feed already lists enclosure URLs. Pulling those files one at a time does not scale once the show has more than a handful of episodes, and a parent job that says it succeeded can still hide an empty shard. You need the media files themselves, with a report that says which URLs produced a file and which did not.

This workflow lists the feed with [yt-dlp](/tools/yt-dlp), caps the URL file at 50 lines, then runs one download worker per enclosure. The report copies the audio into `media/` and writes `downloads.jsonl` plus `report.md`. Use it on shows you have the right to copy. You can inspect the same node handoffs in [visual workflows](/platform/workflows) before you raise the cap.

## Pipeline

1. List the feed. `list` ([yt-dlp](/tools/yt-dlp)) reads the RSS URL with `--flat-playlist --skip-download --print-to-file url urls.txt` and `--playlist-items` set to `1:2` on the seeded run.
2. Cap the URL file. `episodes` strips yt-dlp smuggle fragments, keeps HTTP URLs, and writes at most 50 lines to `urls.txt`.
3. Download each enclosure. [yt-dlp](/tools/yt-dlp) (`download`) runs one worker per line and writes the media file into that shard.
4. Merge the shards. `report` copies media files, joins them to the listed URLs, and writes `downloads.jsonl` plus `report.md`.

## Inputs

- **Feed URL.** A public RSS URL on the `list` node. The default is NASA Small Steps, Giant Leaps on Megaphone.
- **Playlist items.** `1:2` on `list` for a cheap first run. Raise it toward `1:50` when you want more of the feed. The hard cap is 50 URLs in `episodes`.
- **Output template.** `%(id)s.%(ext)s` on `download` so filenames stay short.

## Outputs

- **Media files.** One audio file per successful enclosure, copied into `media/`.
- **downloads.jsonl.** One row per episode with ok, ext, title, and file paths.
- **report.md.** The same rows as a short markdown packet, including listed URLs that produced no file.

## Integrations

- [yt-dlp](/tools/yt-dlp) lists the RSS feed and downloads each enclosure.

## Sample output

From a completed run on the Managed fleet against the seeded NASA RSS feed with `playlist-items` set to `1:2`. Both download shards wrote an MP3. The report copied both files.

```text
# Podcast episode download
- listed: 2
- rows: 2
- with_media: 2
```

```jsonl
{"ok": true, "ext": "mp3", "title": "NATIONALAERONAUTICSANDSPACEADMINISTRATION6370129648", "files": ["media/NATIONALAERONAUTICSANDSPACEADMINISTRATION6370129648.mp3"]}
{"ok": true, "ext": "mp3", "title": "NATIONALAERONAUTICSANDSPACEADMINISTRATION1980847908", "files": ["media/NATIONALAERONAUTICSANDSPACEADMINISTRATION1980847908.mp3"]}
```

## FAQ

### Does a green parent run mean every episode downloaded?

No. Read `downloads.jsonl` and the download shard files. A parent node can report success while one worker wrote nothing.

### Can I point this at a YouTube playlist?

The graph is built for RSS enclosure URLs. Cloud fleet IPs are often blocked on YouTube. Use a feed whose enclosures are ordinary HTTP files.

### How many episodes can one run take?

`episodes` writes at most 50 URLs. The seeded `playlist-items` value is `1:2` so a first copy-run stays small.

### Does this bypass a login wall or DRM?

No. [yt-dlp](/tools/yt-dlp) downloads files the feed already serves. A challenge page or empty shard is a failed fetch.

## Related workflows

- [Podcast Episode Transcripts](/library/podcast-episode-transcripts) when you need Whisper text from those same enclosures.
- [RSS News Podcast](/library/rss-news-podcast) when you want a spoken briefing script instead of the source audio files.
- [YouTube Transcript Summarizer](/library/youtube-transcript-summarizer) when one video's captions are enough and you do not need the media file.

---
_Markdown source of https://trickest.com/library/podcast-episode-download._
