CleanCast

CleanCast

Docker app from ikoyhn's Repository

Overview

This is a GO application that will take any podcast that is on Youtube and will generate a RSS feed with the audio only and all sponsored sections auto removed. View docs here https://github.com/ikoyhn/clean-cast/blob/main/README.md

Contributors Forks Stargazers Issues MIT


Logo

CleanCast

Podcasting, purified
Explore the docs »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Local Development
  6. Contributing
  7. License
  8. Contact
  9. Acknowledgments

About The Project

This is a GO Docker application that will take any podcast that is on Youtube and will generate a RSS feed with the audio only and all sponsored sections auto removed. The actual podcasts episodes are downloaded on demand from youtube when the user requests the specific episode then it is served to the user seamlessly.

(back to top)

Built With

  • Golang

(back to top)

Getting Started

Below is a guide to get the application running

Prerequisites

  1. Generate a Youtube api v3 key here
  2. Install Docker
  3. Need some podcasts you like

Running the App

  1. Build out your Docker run command (For more Docker variables and compose examples go here)

    • docker run -p 8080:8080 -e GOOGLE_API_KEY=<api key here> -v /<audio download path here>:/config ikoyhn/clean-cast
      
  2. Run the command to start the app up

  3. Copy the properties.yml into your /config folder. In here you'll find settings such as NTFY notification setup.

  4. Restart application after making any changes to properties.yml.

(back to top)

Usage

  1. Find your ID

  2. Build your URL

    • Playlist: If you are building a podcast URL using a playlist use the /rssendpoint. * Following the TigerBelly example where this app is running on http://localhost:8080 the url would be http://localhost:8080/rss/PLbh0Jamvptwfp_qc439PLuyKJ-tWUt222

    • Channel: If you are building a podcast URL using a channel ID use the /channel endpoint. An example would be http://localhost:8080/channel/UCoj1ZgGoSBoonNZqMsVUfAA

      • WARNING: When using the channel endpoint you can easily max your Youtube API v3 quota. To reduce the chance use the URL param date=MM-DD-YYYY, this will give you an RSS feed of all videos published AFTER the date. Example url would look like http://localhost:8080/channel/UCoj1ZgGoSBoonNZqMsVUfAA?date=06-01-2025
  • NOTE: If you have the docker var -e TOKEN=<secure token> set you must add the token as a query param to this url. Ex: http://localhost:8080/rss/PLbh0Jamvptwfp_qc439PLuyKJ-tWUt222?token=secureToken
  1. With this URL you can now add this to any of your favorite podcast apps that accept custom RSS feeds (Apple Podcasts app, VLC Media Player, etc)

IOS Users

Shortcut created by Noah Kiss can be found here in the discussions tab to allow for generating your RSS feeds easier. View the comments to ensure you are using the most up-to-date version of the shortcut. Please post any issues related to the shortcut in the discussion.

(back to top)

Issues Connecting Your Favorite Podcast App?

  • If you are having issues using your favorite podcast client first check the Discussions to see if there is a guide to set it up already created, if there isn't please create an new Issue.
  • If you have a guide you would like to write to help out others go ahead and create a new discussion with the title template of {app you are using} App - Setup Guide

Roadmap

  • Playlists
  • Channels
  • Add UI for easier URL generation
    • Discovery Page of new podcasts based on Apple Podcast API
    • Managing saved podcasts
    • Allow user to set docker variables in UI
  • Improve YT API Efficiency
    • Add user defined max videos to grab (by date)
    • Allow for multiple YT API keys
  • Implement proper authenticaton (Username/Password)
  • Implement Ntfy Notifications
  • Create IOS App (stretch goal)
  • Create Android App (stretch goal)

See the open issues for a full list of proposed features (and known issues).

(back to top)

Running Locally

(NON-Windows only for now)

  1. Install latest Golang version for your system
  2. Install Delve
  3. Create .env in root of the project a. Set GOOGLE_API_KEY and CONFIG_DIR in env. You can set more such as the properties from the yml for testing.
  4. Run using launch.json

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Top contributors:

contrib.rocks image

License

Distributed under the MIT. See LICENSE.txt for more information.

(back to top)

Contact

Jared Lynch - jaredlynch13@gmail.com

(back to top)

Acknowledgments

(back to top)

Install CleanCast on Unraid in a few clicks.

Find CleanCast in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for CleanCast Review the template variables and paths Click Install

Download Statistics

2,141
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
ikoyhn/clean-cast
Last Updated2026-03-27
First Seen2025-06-30

Runtime arguments

Web UI
http://[IP]:[PORT:8080]/
Network
bridge
Shell
sh
Privileged
false

Template configuration

config*Pathrw

This is where your config for this app will live. ex: mnt/user/appdata/go-podcast-sponsor-block

Target
/config
Default
/mnt/user/appdata/go-podcast-sponsor-block
Youtube v3 API Key*Variable

https://developers.google.com/youtube/v3/getting-started

Target
GOOGLE_API_KEY
PortPorttcp
Target
8080
Default
8080
TRUSTED HOSTSVariable

OPTIONAL | List of approved hosts to call this app. Should be a list of hosts separated by a comma

Target
TRUSTED_HOSTS
TOKENVariable

OPTIONAL | Optional parameter for securing the endpoints. Will need to add a query param to the calls with this value if set. Query param: ?token=

CRON ScheduleVariable

OPTIONAL | CRON is used to auto cleanup episode files that havent been accessed, default is set to run once every week.

Target
CRON
SponsorBlock CategoriesVariable

OPTIONAL | Set which categories to remove. Must be categories split by commmas ex: sponsor,outro. If not set 'sponsor' will be used.

Target
SPONSORBLOCK_CATEGORIES
Custom Cookies FileVariable

OPTIONAL | Set custom cookies for YT-DLP. Cookies file should be stored in root config folder

Target
COOKIES_FILE