https://github.com/madiele/vod2pod-rss
Vod2Pod-RSS converts a YouTube or Twitch channel into a podcast with ease. It creates a podcast RSS that can be listened to directly inside any podcast client. VODs are transcoded to MP3 on the fly and no server storage is needed!
https://github.com/madiele/vod2pod-rss
audio-transcoding docker docker-compose docker-image podcast podcast-rss raspberry-pi rss rss-generator rss-podcast self-hosted twitch youtube youtube-rss
Last synced: 5 days ago
JSON representation
Vod2Pod-RSS converts a YouTube or Twitch channel into a podcast with ease. It creates a podcast RSS that can be listened to directly inside any podcast client. VODs are transcoded to MP3 on the fly and no server storage is needed!
- Host: GitHub
- URL: https://github.com/madiele/vod2pod-rss
- Owner: madiele
- License: mit
- Created: 2022-11-06T12:29:24.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-10-17T12:38:16.000Z (about 1 month ago)
- Last Synced: 2025-10-18T15:47:34.112Z (about 1 month ago)
- Topics: audio-transcoding, docker, docker-compose, docker-image, podcast, podcast-rss, raspberry-pi, rss, rss-generator, rss-podcast, self-hosted, twitch, youtube, youtube-rss
- Language: Rust
- Homepage:
- Size: 1.57 MB
- Stars: 325
- Watchers: 5
- Forks: 13
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- Self-Hosting-Guide - Vod2Pod-RSS
- fucking-awesome-selfhosted - vod2pod-rss - Convert YouTube and Twitch channels to podcasts, no storage required. Transcodes VoDs to MP3 192k on the fly, generates an RSS feed to use in podcast clients. `MIT` `Docker` (Software / Media Streaming - Audio Streaming)
- awesome-selfhosted - vod2pod-rss - Convert YouTube and Twitch channels to podcasts, no storage required. Transcodes VoDs to MP3 192k on the fly, generates an RSS feed to use in podcast clients. `MIT` `Docker` (Software / Media Streaming - Audio Streaming)
- awesome-selfhosted - vod2pod-rss - Convert YouTube and Twitch channels to podcasts, no storage required. Transcodes VoDs to MP3 192k on the fly, generates an RSS feed to use in podcast clients. `MIT` `Docker` (Software / Media Streaming - Audio Streaming)
- awesome-selfhosted - vod2pod-rss - Convert YouTube and Twitch channels to podcasts, no storage required. Transcodes VoDs to MP3 192k on the fly, generates an RSS feed to use in podcast clients. `MIT` `Docker` (Software / Media Streaming - Audio Streaming)
- awesome-selfhosted - vod2pod-rss - Convert YouTube and Twitch channels to podcasts, no storage required. Transcodes VoDs to MP3 192k on the fly, generates an RSS feed to use in podcast clients. `MIT` `Docker` (Software / Media Streaming - Audio Streaming)
- awesome-selfhosted - vod2pod-rss - Convert YouTube and Twitch channels to podcasts, no storage required. Transcodes VoDs to MP3 192k on the fly, generates an RSS feed to use in podcast clients. `MIT` `Docker` (Software / Media Streaming - Audio Streaming)
- awesome-selfhosted - vod2pod-rss - Convert YouTube and Twitch channels to podcasts, no storage required. Transcodes VoDs to MP3 192k on the fly, generates an RSS feed to use in podcast clients. `MIT` `Docker` (Software / Media Streaming - Audio Streaming)
README
# vod2pod-rss [](https://github.com/madiele/vod2pod-rss/actions/workflows/rust.yml) [](https://github.com/madiele/vod2pod-rss/actions/workflows/docker-image.yml) [](https://github.com/madiele/vod2pod-rss/actions/workflows/docker-image-beta.yml)
Converts a YouTube or Twitch channel into a full blown audio podcast feed.
# Features
- Completely converts the VoDs into a proper podcast RSS that can be listened to directly inside the client.
- The VoDs are not downloaded on the server, so no need for storage while self-hosting this app.
- VoDs are transcoded to MP3 192k on the fly by default, tested to be working flawlessly even on a Raspberry Pi 3-4.
- also works on standard rss podcasts feed if you want to have a lower bitrate version to save mobile data.
## Limitations
- Youtube channel avatar is not present and results are limited to 15 when no YouTube API key is set.
# Usage
## Web UI
- just go where you hosted vod2pod and you will find an easy to use UI to generate the feed
## Manually Generate A Podcast URL
- In a web browser go to where you hosted vod2pod, es: http://myserver.com/ or http://localhost/
- In the web page that opens paste the channel you want to convert to podcast and copy the generated link.
- Optionally goto : http://myserver.com/transcodize_rss?url=channel_url
- An RSS will be generated.
- Replace `channel_url` with the URL of the YouTube or Twitch channel you want to convert into a podcast.
- YouTube: `http://myserver.com/transcodize_rss?url=https://www.youtube.com/c/channelname`
- Twitch: `http://myserver.com/transcodize_rss?url=https://www.twitch.tv/channelname`
- RSS/atom feed: `http://myserver.com/transcodize_rss?url=https://feeds.simplecast.com/aU_RzZ7j`
- Add the domain to the whitelist. See configurations [below](#configurations)
## Add The URL To A Podcast Client
- find a tutorial on how to add an rss feed to your favorite podcast app
# Optional API Access
- Twitch: Get your SECRET and CLIENT ID
- YouTube: Enable more than 15 items in the RSS feed, channel avatar
- API key
- Enable API Access
- APIs & Services > +Enable APIs and Services > Search "YouTube Data API"
See configurations [below](#configurations)
# Install
## Clone This Repository
```
git clone https://github.com/madiele/vod2pod-rss.git
```
## Docker
- Install [Docker Compose](https://docs.docker.com/compose/install/)
- Precompiled images are available [here](https://hub.docker.com/r/madiele/vod2pod-rss/) for linux machines with arm64, amd64 and armv7 (raspberry pis are supported).
### Docker Compose
```
cd vod2pod-rss
nano docker-compose.yml
```
See configurations [below](#configurations)
```
sudo docker compose up -d
```
#### Updating
```
sudo docker compose pull && sudo docker compose up -d
sudo docker system prune
```
- To get notifications of new release follow [these instructions](https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications)
#### Switching to the Beta branch
The beta branch is a version of vod2pod that is always updated to the latest yt-dlp releases in a matter of days, if you have problems try it out first to see if they are fixed, then open an issue so that I can consider making a new stable release
Also by being on the beta branch you might help me find bugs before I make any new stable release, so you'll help the project too
To switch open the compose docker-compose.yml and edit the vod2pod image section from "latest" to "beta", then follow the steps to update
## Configurations
### Web Server Port
- `ports`: "80:8080" (optional) Change 80 to another port if you already use the port 80 on your host
- e.g. "81:8080" http://myserver.com:81/
### Optional API Keys
- `YT_API_KEY`: Set your YouTube API key (works without but the feed is limited to 15)
- e.g. YT_API_KEY=AIzaSyBTCCEOHm
- `TWITCH_SECRET`: Set your Twitch secret
- `TWITCH_CLIENT_ID`: Set your Twitch client ID
Note: These can also be set using Docker [.env files](https://docs.docker.com/compose/environment-variables/env-file/)
### Advanced YouTube Configuration
- `YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS`: Additional arguments to pass to yt-dlp when extracting YouTube audio URLs
- This variable allows you to pass custom arguments to yt-dlp for advanced configurations
- Format: JSON array of strings, e.g. `["--arg1", "value1", "--arg2", "value2"]`
- Useful for scenarios like:
- **Using a proxy**: `YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS=["--proxy", "http://proxy.example.com:8080"]`
- **Custom user-agent**: `YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS=["--user-agent", "Mozilla/5.0 Custom Agent"]`
- Note: These arguments are applied in addition to the default yt-dlp arguments used by vod2pod-rss
- Default: `[]` (empty array)
### Environment
- `TRANSCODE`: Set to "false" to disable transcoding, usefull if you only need the feeds (default: "true")
- `MP3_BITRATE`: Set the bitrate of the trascoded stream to your client (default: "192")
- `SUBFOLDER`: Set the the root path of the app, useful for reverse proxies (default: "/")
- `VALID_URL_DOMAINS`: (optional) Set a comma separated list of domain urls that are allowed to be converted into RSS (defaults to YouTube and Twitch urls)
- `CACHE_TTL`: (optional) Set the time to live of the cache in seconds, default is 600 seconds (10 minutes)
- `YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS`
# Honorable Mentions
These projects were fundamental for the success of vod2pod-rss, originally they handled the feed generation for youtube and twitch, now this is all done by vod2pod-rss internally so they are not used anymore, but were still helpful to get vod2pod-rss up and running fast.
* Youtube support was possible thanks to the cool [podtube fork project by amckee](https://github.com/amckee/PodTube) consider dropping him a star.
* Twitch support was possible thanks to [my fork](https://github.com/madiele/TwitchToPodcastRSS) of [lzeke0's TwitchRSS](https://github.com/lzeke0/TwitchRSS) drop a star to him too!
## Donations
This is a passion project, and mostly made for personal use, but if you want to gift a pizza margherita, feel free!
[](https://www.buymeacoffee.com/madiele)
## Contributing
check the [CONTRIBUTING.md](CONTRIBUTING.md) to find a tutorial on how to setup your enviroment for develpment
