Overview
Discover what makes vod2pod-rss powerful
`vod2pod-rss` is a Rust‑based microservice that transforms any public YouTube or Twitch channel into an RFC‑compatible podcast RSS feed. The application fetches the list of video-on-demand (VoD) items via the platform’s public APIs or RSS feeds, streams the audio directly from the source URL, and transcodes it to MP3 (192 kbps) on‑the‑fly using `ffmpeg`. Because the transcoding occurs in memory, the server never persists media files, making it lightweight and ideal for constrained environments such as Raspberry Pi or edge servers. The resulting feed is fully consumable by any podcast client, and developers can optionally request a lower‑bitrate version to save bandwidth.
Language & Runtime
Web Framework
Transcoding Engine
Configuration
Overview
vod2pod-rss is a Rust‑based microservice that transforms any public YouTube or Twitch channel into an RFC‑compatible podcast RSS feed. The application fetches the list of video-on-demand (VoD) items via the platform’s public APIs or RSS feeds, streams the audio directly from the source URL, and transcodes it to MP3 (192 kbps) on‑the‑fly using ffmpeg. Because the transcoding occurs in memory, the server never persists media files, making it lightweight and ideal for constrained environments such as Raspberry Pi or edge servers. The resulting feed is fully consumable by any podcast client, and developers can optionally request a lower‑bitrate version to save bandwidth.
Technical Stack
- Language & Runtime: Rust (stable 1.70+), compiled to a single statically linked binary for maximum portability.
- Web Framework: Actix‑web, chosen for its async performance and mature middleware ecosystem.
- Transcoding Engine:
ffmpeginvoked via theffmpeg-cli-wrappercrate; streams are piped directly to the HTTP response without temporary storage. - Configuration: TOML‑based config files with environment variable overrides; supports API keys for YouTube Data API and Twitch OAuth tokens.
- Testing & CI: GitHub Actions with Rust’s built‑in test harness; Docker image builds for both stable and beta branches.
- Containerization: Alpine‑based Docker images (≈ 15 MB) expose a single port; ready for Kubernetes, Docker‑Compose, or standalone deployment.
Core Capabilities
- Dynamic RSS Generation: Exposes endpoints
/transcodize_rssand/transcode_feedthat accept a channel URL or RSS feed, returning a fully formed podcast XML. - On‑the‑Fly Transcoding: Converts HLS/MP4 streams to MP3 (192 kbps) or optionally lower‑bitrate AAC, with minimal CPU overhead.
- API Key Management: Integrates YouTube Data API and Twitch OAuth to lift the 15‑item limit on feeds and retrieve channel avatars.
- Customizable Feed Metadata: Allows overriding title, description, image, and episode order via query parameters or configuration.
- Whitelist & Rate‑Limiting: Prevents abuse by whitelisting domains and limiting request frequency per IP.
Deployment & Infrastructure
vod2pod-rss is designed for self‑hosting with minimal footprint:
- Hardware: Runs on ARM (e.g., Raspberry Pi 3/4) or x86_64; CPU usage peaks during transcoding but remains below 50 % on a Pi 4 with 2 GB RAM.
- Storage: Zero persistent storage; all media streams are processed in memory and discarded after streaming.
- Scalability: Stateless architecture allows horizontal scaling behind a load balancer. Docker Compose can spin up multiple replicas, and Kubernetes deployments can leverage pod autoscaling based on CPU load.
- High Availability: The binary is deterministic; container restarts recover instantly. Health checks expose
/healthfor orchestration tools.
Integration & Extensibility
- Plugin Hooks: The codebase exposes a trait
FeedProcessorthat can be implemented to add custom post‑processing (e.g., adding ID3 tags, embedding transcripts). - Webhooks: Developers can subscribe to the
/webhookendpoint to receive notifications when a new episode is generated. - Extensible Feed Sources: Beyond YouTube and Twitch, the feed generator accepts any standard RSS/Atom source; developers can extend the parser to support additional platforms.
- API Documentation: Auto‑generated Swagger UI (via
paperclip) is available at/api-docs, detailing query parameters, response schemas, and authentication flows.
Developer Experience
- Configuration: Simple
config.tomlwith clear defaults; environment variables (YOUTUBE_API_KEY,TWITCH_CLIENT_ID,TWITCH_SECRET) override file settings. - Documentation: Comprehensive README, code comments, and inline API docs. The project’s GitHub repository hosts a detailed contribution guide.
- Community: Active issue tracker; pull requests are reviewed promptly. The CI pipeline ensures new features do not regress performance or API compatibility.
- Licensing: MIT, encouraging commercial use without copyleft obligations.
Use Cases
| Scenario | Why Developers Choose It |
|---|---|
| Personal Podcasting | Generate a podcast from a hobby channel without hosting video or audio files. |
| Enterprise Training | Convert internal YouTube training videos into a lightweight audio feed for employees on mobile. |
| IoT Edge Streaming | Run on a Raspberry Pi in a smart home to stream live Twitch streams as audio-only feeds. |
| API‑First Applications | Embed the /transcodize_rss endpoint in a larger content aggregation platform, providing audio feeds on demand. |
Advantages Over Alternatives
- Zero Storage Footprint: Unlike services that download and store media,
vod2pod-rssstreams directly from the source. - Open‑Source & Self‑Hosted: Full control over data, no vendor lock‑in, and compliance with privacy regulations.
- Performance: Rust’s async runtime delivers low latency; transcoding is efficient enough for single‑core devices.
- Extensibility: The plugin system and webhook support make it a drop‑in component for
Open SourceReady to get started?
Join the community and start self-hosting vod2pod-rss today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Shhh
Secure secret sharing, no email leaks
PrivateBin
Secure, client‑side encrypted pastebin for self‑hosted use
Lago
Open‑source usage‑based billing for SaaS and subscription services
Bracket
Manage tournaments effortlessly
Davis
Modern, feature‑packed DAV server with admin UI
HumHub
Modular social intranet for teams and communities
