MinusPod: Podcast Ad Blocker
Audio advertisement blocking with local AI models
I successfully deployed MinusPod, a podcast feed proxy that scrubs ads from your podcasts, and I can’t describe to you how happy I am every time I hear evidence of a missing ad break.
For context, this matters a lot to me, because I listen to podcasts while commuting and running errands on my bike, so I can’t manually scrub through the ads like I do when I’m driving. I purchased a cheap low-power Bluetooth audio controller that I mounted to my handlebars to skip ads manually. However, I have multiple bikes, and it often fails to reconnect in time to skip the ad. So, I’ve been meaning to investigate automated solutions for a while now. I’d considered trying the Podly Pure Podcasts project, but it hasn’t been updated in five months. I saw MinusPod pop up on my feed, so I decided to give it a try.
I set up MinusPod in my little Talos Kubernetes homelab, with my extremely weird consumer hardware. The MinusPod service mainly runs on my full-size ATX machine, which has an NVIDIA GTX 1080 Ti (Pascal generation, 2017). That machine runs Whisper locally to transcribe the podcast audio into time-stamped text transcripts. Those transcripts are then submitted to the ollama LLM to identify ad break text with specific timestamps, which are then used to produce new audio clips. I run ollama on my Framework desktop with the AMD Ryzen AI Max 395+ chip, which runs qwen3.6 with some quantization. I don’t run Talos as the base OS on the Framework, because it was intended to be a workstation + living room gaming PC. Instead, I run Talos in a libvirt VM on the Framework, mainly so that I can do resource management via the Talos dashboard. It’s not possible to virtualize consumer APUs/iGPUs, so ollama unfortunately has to run outside of Talos/kubernetes in a systemd quadlet container running on the base kernel. This creates annoying external service log management overhead, but it’s acceptable. MinusPod then creates a new RSS feed URL that you can drop into your favorite podcast app, effectively creating an RSS feed proxy that serves edited audio. The current system takes about 90 minutes to clip 2-4 ad breaks from a 60-minute podcast, which is acceptable, but could use improvement.
It’s… pretty darn awesome to do all this on my own hardware! It really gives me that sense of control and sovereignty over my computing and information environment that technologists and digital rights advocates crave. The emotional satisfaction from this project is so much more than eliminating some 60-second ad breaks from my daily commute.
The git history strongly suggests that LLMs are used heavily to aid development of this software, which raises new questions for me. I have no sense of how much commitment the author has to this software, and whether they will maintain it going forward. That said, I’m very grateful that they pulled it together. It makes me think of Nelson Elhage’s prediction that we’ll see a resurgence of “personal software” going forward.