Changes:
- Podcasts source is now always available when yt-dlp is installed (same as
YouTube). Previously required explicit opt-in via INCLUDE_SOURCES or
--search=podcasts.
- Smarter mention matching: extract key terms from multi-word topics and
use max count across terms. "Kanye West Bully album" now matches
episodes mentioning "Kanye" 85 times (previously 0 due to exact phrase).
- SKILL.md: add podcast channel resolution to Step 0.55, include
--podcast-channels in execution command, update ACTIVE_SOURCES_LIST.
Tested: Kanye West query now finds 5 podcast hits including hidden
mentions in off-topic episodes (Lost Civilizations, Mike WiLL Made-It).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New "podcasts" source that discovers podcast content by scanning transcripts
from LLM-resolved YouTube channels. Finds content invisible to title-based
search — Acquired's "The NFL" episode mentions Taylor Swift 18x, ESPN 117x,
Netflix 102x, none in the title.
Architecture:
- LLM resolves 6-12 podcast channel @handles per topic
- Engine fetches recent episodes via yt-dlp (no video download)
- Downloads auto-captions and greps for topic keywords
- Episodes with 5+ mentions become podcast results with highlights
- Runs in parallel, ~15-20s latency, invisible in 3-min research run
Pipeline integration:
- New source module: scripts/lib/podcast_yt.py
- Registered in pipeline, normalizer, signals, planner, render
- CLI flag: --podcast-channels=AcquiredFM,lexfridman,...
- SOURCE_QUALITY: 0.88 (above YouTube's 0.85)
- Opt-in via INCLUDE_SOURCES=podcasts or --search=podcasts
Zero new API keys. Zero new dependencies. Reuses yt-dlp + transcript pipeline.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>