Converts a YouTube or Twitch channel into a full blown audio podcast feed.
- 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.
- Youtube channel avatar is not present and results are limited to 15 when no YouTube API key is set.
- just go where you hosted vod2pod and you will find an easy to use UI to generate the feed
- 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_urlwith 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
- YouTube:
- find a tutorial on how to add an rss feed to your favorite podcast app
- Twitch: Get your SECRET and CLIENT ID https://dev.twitch.tv/console
- YouTube: Enable more than 15 items in the RSS feed, channel avatar
- API key https://developers.google.com/youtube/v3/getting-started
- Enable API Access https://console.cloud.google.com/
- APIs & Services > +Enable APIs and Services > Search "YouTube Data API"
See configurations below
git clone https://github.com/gerrydoro/vod2pod-rss.git
- Install Docker Compose
- Precompiled images are available here for linux machines with arm64, amd64 and armv7 (raspberry pis are supported).
cd vod2pod-rss
nano docker-compose.yml
See configurations below
sudo docker compose up -d
sudo docker compose pull && sudo docker compose up -d
sudo docker system prune
- To get notifications of new release follow these instructions
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.
Also by being on the beta branch you might help find bugs before 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.
VoD2Pod-RSS can be installed as a NixOS module using flakes. Add the following to your /etc/nixos/flake.nix:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
vod2pod-rss.url = "github:gerrydoro/vod2pod-rss";
};
outputs = { self, nixpkgs, vod2pod-rss, ... }: {
nixosConfigurations.your-hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
vod2pod-rss.nixosModules.default
];
};
};
}Then configure the service in your NixOS configuration:
{
services.vod2pod-rss = {
enable = true;
port = 65001;
settings = {
ytApiKey = "your-youtube-api-key"; # Optional, for >15 items
useBestAudioQuality = true; # Use best audio from yt-dlp
audioCodec = "OPUS"; # MP3, OPUS, or OGG_VORBIS
};
};
}Rebuild your system:
sudo nixos-rebuild switch --flake .#your-hostnameFor non-NixOS systems with Nix installed:
nix run github:gerrydoro/vod2pod-rssOr add to your configuration.nix or home.nix:
environment.systemPackages = [
(inputs.vod2pod-rss.packages.${system}.default)
];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/
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 secretTWITCH_CLIENT_ID: Set your Twitch client ID
Note: These can also be set using Docker .env files
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"]
- Using a proxy:
- Note: These arguments are applied in addition to the default yt-dlp arguments used by vod2pod-rss
- Default:
[](empty array)
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
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 - consider dropping a star.
- Twitch support was possible thanks to lzeke0's TwitchRSS - drop a star to him too!
Check the CONTRIBUTING.md file for a tutorial on how to set up your environment for development.

