MinusPod: Remove Ads From Podcasts With Whisper and an LLM
MinusPod sits between you and your podcast feeds and removes the ads before you listen. You subscribe to MinusPod’s version of a feed in any podcast app, and each episode arrives already cut.
How it works
- Whisper transcribes each new episode, either locally or through a remote Whisper API
- An LLM reads the transcript and identifies ad segments
- FFmpeg removes them, and MinusPod serves a re-cut RSS feed with the edited audio
Supported LLM providers include Anthropic Claude, OpenRouter, Ollama, and any OpenAI-compatible endpoint, switchable at runtime. Using Ollama keeps the whole pipeline on your own hardware.
Features
- Learns from corrections: fix a missed or wrong cut and it applies the pattern to later episodes
- Audio analysis alongside the transcript, including loudness, silence gaps, and dynamic ad insertion transitions
- A web UI with a waveform editor, a review queue for low-confidence cuts, and cost analytics for paid LLM APIs
- Per-feed choice to remove, beep, or keep detected segments
- Podcasting 2.0 output: regenerated transcripts, chapters, and AI-content disclosure
- A REST API, and optional encryption of stored provider credentials
Deployment
MinusPod runs in Docker, with a GPU image for fast local Whisper and a CPU image, which can also offload transcription to a remote Whisper server. Configuration lives in an .env file with your LLM keys and the public BASE_URL your podcast app will fetch from. The repository’s compose file is the starting point.
Transcribing every episode of every feed is the expensive part. A GPU makes a large difference, and with a paid LLM API, the cost dashboard is worth watching. The whisper.cpp project is a lighter-weight option for the transcription server.
Things to consider
Ads fund most podcasts. Many shows offer ad-free feeds through a subscription, which pays the people making them; MinusPod is best for the feeds where that option does not exist.
License
MIT.