From a 345-video YouTube playlist to a news digest grouped by topic
Description and use
A pipeline processes 345 YouTube videos, fetches captions via Supadata, transcribes missing ones, summarizes each video with an LLM, groups summaries by topic, and outputs a single HTML page.
Problem
Watching all videos in a large YouTube playlist is impossible, so a pipeline is needed to summarize each video and group the summaries by topic for quick consumption.
Outcome
The pipeline summarized 343 of 345 videos, identified 43 topics, and produced a quick‑read HTML digest.
Workflow
- 1. Retrieve playlist videos and native captions via Supadata API using its Python SDK; cache transcripts on disk.
- 2. For videos lacking captions, download audio with yt-dlp and transcribe locally with faster-whisper (large‑v3‑turbo) on a 6 GB RTX 3060.
- 3. Summarize each transcript in Italian with an LLM (GLM 5.3 Flash), processing four videos at a time and splitting long transcripts into 6,500‑word chunks; optionally re‑summarize key videos.
- 4. Group summaries in batches of 20, then merge batches into a final list; large merge calls timed out, so the final merge was performed with Claude.
- 5. Convert the Markdown digest into a single HTML page with light and dark themes using a small script.
Evidence
The playlist IDs and the native captions come from the Supadata API through its Python SDK (client.youtube.playlist.videos() and client.transcript(..., mode="native", lang=...)).
Only those get their audio downloaded with yt-dlp and transcribed locally with faster-whisper (large-v3-turbo), batched, on a 6 GB RTX 3060: about 13 seconds for 12 minutes of audio.
Each transcript is summarized in Italian by an LLM (GLM 5.3 Flash in my setup), four videos at a time. Long transcripts are split into 6,500-word chunks.
The single merge call got too big and timed out twice, so for this run I did the final merge with Claude instead.
- Record date: 2026-10-08T23:40:49.700Z