Content

Podcast Episode Download

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.

AuthorTrickest
100%

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, 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 before you raise the cap.

Pipeline

  1. List the feed. list (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 (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 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.

# Podcast episode download
- listed: 2
- rows: 2
- with_media: 2
okexttitlefiles
truemp3NATIONALAERONAUTICSANDSPACEADMINISTRATION6370129648media/NATIONALAERONAUTICSANDSPACEADMINISTRATION6370129648.mp3
truemp3NATIONALAERONAUTICSANDSPACEADMINISTRATION1980847908media/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 downloads files the feed already serves. A challenge page or empty shard is a failed fetch.

Get a personalized demo

See Trickest in Action

A 30-minute walkthrough. We map the platform to your stack and answer pricing and deployment questions for your environment.