{"id":32966131,"url":"https://github.com/madiele/vod2pod-rss","last_synced_at":"2026-02-24T14:01:27.808Z","repository":{"id":94392838,"uuid":"562457123","full_name":"madiele/vod2pod-rss","owner":"madiele","description":"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!","archived":false,"fork":false,"pushed_at":"2025-10-17T12:38:16.000Z","size":1646,"stargazers_count":325,"open_issues_count":22,"forks_count":13,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-10-18T15:47:34.112Z","etag":null,"topics":["audio-transcoding","docker","docker-compose","docker-image","podcast","podcast-rss","raspberry-pi","rss","rss-generator","rss-podcast","self-hosted","twitch","youtube","youtube-rss"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/madiele.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://www.buymeacoffee.com/madiele"]}},"created_at":"2022-11-06T12:29:24.000Z","updated_at":"2025-10-17T12:38:15.000Z","dependencies_parsed_at":"2023-10-03T13:27:53.631Z","dependency_job_id":"3f77ab5f-46af-496f-818b-596daa75bfcd","html_url":"https://github.com/madiele/vod2pod-rss","commit_stats":null,"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/madiele/vod2pod-rss","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madiele%2Fvod2pod-rss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madiele%2Fvod2pod-rss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madiele%2Fvod2pod-rss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madiele%2Fvod2pod-rss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/madiele","download_url":"https://codeload.github.com/madiele/vod2pod-rss/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madiele%2Fvod2pod-rss/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284263588,"owners_count":26975054,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-13T02:00:06.582Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-transcoding","docker","docker-compose","docker-image","podcast","podcast-rss","raspberry-pi","rss","rss-generator","rss-podcast","self-hosted","twitch","youtube","youtube-rss"],"created_at":"2025-11-13T03:00:21.460Z","updated_at":"2025-11-13T18:01:07.429Z","avatar_url":"https://github.com/madiele.png","language":"Rust","funding_links":["https://www.buymeacoffee.com/madiele"],"categories":["Install from Source","Software"],"sub_categories":["Podcasting","Media Streaming - Audio Streaming"],"readme":"# vod2pod-rss [![tests](https://github.com/madiele/vod2pod-rss/actions/workflows/rust.yml/badge.svg)](https://github.com/madiele/vod2pod-rss/actions/workflows/rust.yml) [![stable image](https://github.com/madiele/vod2pod-rss/actions/workflows/docker-image.yml/badge.svg?branch=stable)](https://github.com/madiele/vod2pod-rss/actions/workflows/docker-image.yml) [![beta image](https://github.com/madiele/vod2pod-rss/actions/workflows/docker-image-beta.yml/badge.svg)](https://github.com/madiele/vod2pod-rss/actions/workflows/docker-image-beta.yml)\n\nConverts a YouTube or Twitch channel into a full blown audio podcast feed.\n\n\u003ca label=\"example of it working with podcast addict\" href=\"https://user-images.githubusercontent.com/4585690/231301791-2f838fb3-4f6e-4382-bac4-c968bfe98c08.png\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/4585690/231301791-2f838fb3-4f6e-4382-bac4-c968bfe98c08.png\" align=\"right\" height=\"350\" \u003e\u003c/a\u003e\n\n# Features\n- Completely converts the VoDs into a proper podcast RSS that can be listened to directly inside the client.\n- The VoDs are not downloaded on the server, so no need for storage while self-hosting this app.\n- VoDs are transcoded to MP3 192k on the fly by default, tested to be working flawlessly even on a Raspberry Pi 3-4.\n- also works on standard rss podcasts feed if you want to have a lower bitrate version to save mobile data.\n\n## Limitations\n- Youtube channel avatar is not present and results are limited to 15 when no YouTube API key is set.\n\n# Usage\n\n## Web UI\n\u003ca label=\"frontend\" href=\"https://user-images.githubusercontent.com/4585690/234704870-0bf3023a-78e0-4ccc-adea-9d1f6ea2fabc.png\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/4585690/234704870-0bf3023a-78e0-4ccc-adea-9d1f6ea2fabc.png\" align=\"right\" width=\"400px\" \u003e\u003c/a\u003e\n- just go where you hosted vod2pod and you will find an easy to use UI to generate the feed\n## Manually Generate A Podcast URL\n- In a web browser go to where you hosted vod2pod, es: http://myserver.com/ or http://localhost/\n  - In the web page that opens paste the channel you want to convert to podcast and copy the generated link.\n- Optionally goto : http://myserver.com/transcodize_rss?url=channel_url\n  - An RSS will be generated.\n  - Replace `channel_url` with the URL of the YouTube or Twitch channel you want to convert into a podcast.\n    - YouTube: `http://myserver.com/transcodize_rss?url=https://www.youtube.com/c/channelname`\n    - Twitch: `http://myserver.com/transcodize_rss?url=https://www.twitch.tv/channelname`\n    - RSS/atom feed: `http://myserver.com/transcodize_rss?url=https://feeds.simplecast.com/aU_RzZ7j`\n      - Add the domain to the whitelist. See configurations [below](#configurations)\n\n## Add The URL To A Podcast Client\n- find a tutorial on how to add an rss feed to your favorite podcast app\n\n# Optional API Access\n- Twitch: Get your SECRET and CLIENT ID \u003chttps://dev.twitch.tv/console\u003e\n- YouTube: Enable more than 15 items in the RSS feed, channel avatar\n  - API key \u003chttps://developers.google.com/youtube/v3/getting-started\u003e\n  - Enable API Access \u003chttps://console.cloud.google.com/\u003e\n    - APIs \u0026 Services \u003e +Enable APIs and Services \u003e Search \"YouTube Data API\"\n\nSee configurations [below](#configurations)\n\n# Install\n## Clone This Repository  \n```\ngit clone https://github.com/madiele/vod2pod-rss.git\n```\n\n## Docker\n- Install [Docker Compose](https://docs.docker.com/compose/install/)\n- 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).\n\n### Docker Compose\n```\ncd vod2pod-rss\nnano docker-compose.yml\n```\nSee configurations [below](#configurations)\n```\nsudo docker compose up -d\n```\n\n#### Updating\n```\nsudo docker compose pull \u0026\u0026 sudo docker compose up -d\nsudo docker system prune\n```\n- 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)\n\n#### Switching to the Beta branch\n\nThe 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\n\nAlso 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\n\nTo switch open the compose docker-compose.yml and edit the vod2pod image section from \"latest\" to \"beta\", then follow the steps to update\n\n## Configurations\n### Web Server Port\n- `ports`: \"80:8080\" (optional) Change 80 to another port if you already use the port 80 on your host\n  - e.g. \"81:8080\" http://myserver.com:81/\n\n### Optional API Keys\n- `YT_API_KEY`: Set your YouTube API key (works without but the feed is limited to 15)\n  - e.g. YT_API_KEY=AIzaSyBTCCEOHm\n- `TWITCH_SECRET`: Set your Twitch secret\n- `TWITCH_CLIENT_ID`: Set your Twitch client ID\n\nNote: These can also be set using Docker [.env files](https://docs.docker.com/compose/environment-variables/env-file/) \n\n### Advanced YouTube Configuration\n- `YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS`: Additional arguments to pass to yt-dlp when extracting YouTube audio URLs\n  - This variable allows you to pass custom arguments to yt-dlp for advanced configurations\n  - Format: JSON array of strings, e.g. `[\"--arg1\", \"value1\", \"--arg2\", \"value2\"]`\n  - Useful for scenarios like:\n    - **Using a proxy**: `YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS=[\"--proxy\", \"http://proxy.example.com:8080\"]`\n    - **Custom user-agent**: `YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS=[\"--user-agent\", \"Mozilla/5.0 Custom Agent\"]`\n  - Note: These arguments are applied in addition to the default yt-dlp arguments used by vod2pod-rss\n  - Default: `[]` (empty array)\n\n### Environment\n- `TRANSCODE`: Set to \"false\" to disable transcoding, usefull if you only need the feeds (default: \"true\")\n- `MP3_BITRATE`: Set the bitrate of the trascoded stream to your client (default: \"192\")\n- `SUBFOLDER`: Set the the root path of the app, useful for reverse proxies (default: \"/\")\n- `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)\n- `CACHE_TTL`: (optional) Set the time to live of the cache in seconds, default is 600 seconds (10 minutes)\n- `YOUTUBE_YT_DLP_GET_URL_EXTRA_ARGS`\n\n# Honorable Mentions\n\nThese 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.\n* Youtube support was possible thanks to the cool [podtube fork project by amckee](https://github.com/amckee/PodTube) consider dropping him a star.\n* 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!\n\n## Donations\n\nThis is a passion project, and mostly made for personal use, but if you want to gift a pizza margherita, feel free!\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/madiele)\n\n## Contributing\n\ncheck the [CONTRIBUTING.md](CONTRIBUTING.md) to find a tutorial on how to setup your enviroment for develpment\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadiele%2Fvod2pod-rss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmadiele%2Fvod2pod-rss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadiele%2Fvod2pod-rss/lists"}