- Feed subscription and state tracking
- Built-in extractors (NPR, Democracy Now)
- Whisper fallback via openai-whisper (subprocess, crash-isolated)
- Atomic state writes (
os.replace) - Incremental persistence (
fetch --processcommits per-episode) - GUID fallback (
sha256(link + title)) for feeds without guids - Collision-proof transcript filenames (title + date + short hash)
-
skippedandfailedterminal states in the pipeline -
fetch --processcombined step -
read --format jsonoutput - Episode matching by guid, title substring, or index
-
--latestflag for agent-friendly ambiguity resolution - Cache size limit (
max_cache_gbconfig)
- Show episode duration in
listandstatusoutput (from RSS enclosure/itunes:duration) -
fetch --first Nto grab oldest episodes - User-defined extractor plugins (
~/.podreader/extractors/) -
podreader search <query>across saved transcripts -
podreader purge --older-than <days>cleanup command -
podreader remove <feed>unsubscribe - Orphan cache cleanup: startup sanity check removes cache files not being processed by an active PID
-
read --format srtoutput with timestamps - Extractor context injection (feed config, previous episode state)
- Structured transcript return from extractors (text + speaker labels)
- Migrate transcript storage from
.txtto JSON-formatted files (text + speaker labels + timestamps) —read --format jsonbecomes native rather than wrapping.txt
- Authenticated feeds and transcript sources
- Paginated / JS-rendered transcript support
- Historical backfill via podcast catalog APIs
- GPU device configuration for whisper