---
title: "Podcast Episode Transcripts"
canonical: https://trickest.com/library/podcast-episode-transcripts
description: "List a public RSS feed, download each enclosure with yt-dlp, then transcribe the audio with Whisper. The report writes one text file per episode."
---

# Podcast Episode Transcripts

## Overview

YouTube caption APIs fail from cloud fleet IPs, and a parent job that says it succeeded can still hide an empty shard. When the show publishes an RSS enclosure, the reliable path is to download that audio and run speech-to-text. You need the spoken words as text, with a report that says which episodes produced a transcript.

This workflow lists the feed with [yt-dlp](/tools/yt-dlp), downloads each enclosure on its own worker, flattens the audio, then runs [whisper](/tools/whisper) on the folder. The report writes `transcripts/*.txt`, `transcripts.jsonl`, and `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 and writes at most 50 HTTP URLs to `urls.txt`.
3. Download each enclosure. [yt-dlp](/tools/yt-dlp) (`audio`) runs one worker per line and writes the media file into that shard.
4. Flatten the shards. `flatten` copies the audio files into one folder so Whisper can see them.
5. Transcribe the folder. [whisper](/tools/whisper) (`transcribe`) uses model `base` and language `en`, then writes txt, vtt, srt, tsv, and json per file.
6. Merge the texts. `report` copies the transcripts, joins them to the listed URLs, and writes `transcripts.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`.
- **Whisper model.** `base` on `transcribe`. `tiny` is faster. Larger models cost more CPU time per minute of audio.

## Outputs

- **transcripts/*.txt.** One plain-text transcript per episode.
- **transcripts.jsonl.** One row per episode with ok, backend, character count, and the text path.
- **report.md.** The same rows as a short markdown packet.

## Integrations

- [yt-dlp](/tools/yt-dlp) lists the RSS feed and downloads each enclosure.
- [whisper](/tools/whisper) transcribes the flattened audio folder.

## Sample output

From a completed run on the Managed fleet against the seeded NASA RSS feed with `playlist-items` set to `1:2`. Both MP3s transcribed. The report listed 2 URLs and wrote 2 text files (16,920 and 16,183 characters).

```text
# Podcast episode transcripts
- listed: 2
- rows: 2
- with_captions: 2
```

```jsonl
{"ok": true, "backend": "whisper", "char_count": 16920, "video_id": "NATIONALAERONAUTICSANDSPACEADMINISTRATION1980847908", "transcript": "transcripts/NATIONALAERONAUTICSANDSPACEADMINISTRATION1980847908.txt"}
{"ok": true, "backend": "whisper", "char_count": 16183, "video_id": "NATIONALAERONAUTICSANDSPACEADMINISTRATION6370129648", "transcript": "transcripts/NATIONALAERONAUTICSANDSPACEADMINISTRATION6370129648.txt"}
```

Opening lines from the first transcript:

```text
When I learned that it was okay to not know everything, that it's okay to ask questions and ask for understanding, allow myself to be mentored, that's when opportunities presented themselves, and that's when I gained the best experiences. Welcome to Small Steps Giant Leaps, the podcast for NASA's Academy of Program, Project and Engineering Leadership, or Apple.
```

## FAQ

### Why not fetch YouTube captions instead?

Cloud fleet IPs are often blocked on YouTube caption APIs. This graph downloads the RSS enclosure and runs [whisper](/tools/whisper) so the text comes from the audio you already have the right to copy.

### How long does Whisper take?

Two ~25 minute episodes on the `base` model took about 40 minutes on one Managed worker after the downloads finished. Larger models and longer shows take more time.

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

No. Read `transcripts.jsonl` and the Whisper output files. A parent node can report success while one file is missing.

### 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.

### Can I change the Whisper model?

Yes. Set `model` on `transcribe` to `tiny`, `small`, or larger. Keep `base` until you know the extra time is worth it.

## Related workflows

- [Podcast Episode Download](/library/podcast-episode-download) when you only need the audio files.
- [YouTube Transcript Summarizer](/library/youtube-transcript-summarizer) when one video already has captions and you want a written summary.
- [RSS News Podcast](/library/rss-news-podcast) when you want a spoken briefing script instead of transcripts of the source show.

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