MCPSERV.CLUB
vod2pod-rss

vod2pod-rss

Self-Hosted

Turn YouTube or Twitch channels into podcast feeds

Active(92)
326stars
0views
Updated 1 day ago
vod2pod-rss screenshot

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: ffmpeg invoked via the ffmpeg-cli-wrapper crate; 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_rss and /transcode_feed that 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 /health for orchestration tools.

Integration & Extensibility

  • Plugin Hooks: The codebase exposes a trait FeedProcessor that can be implemented to add custom post‑processing (e.g., adding ID3 tags, embedding transcripts).
  • Webhooks: Developers can subscribe to the /webhook endpoint 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.toml with 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

ScenarioWhy Developers Choose It
Personal PodcastingGenerate a podcast from a hobby channel without hosting video or audio files.
Enterprise TrainingConvert internal YouTube training videos into a lightweight audio feed for employees on mobile.
IoT Edge StreamingRun on a Raspberry Pi in a smart home to stream live Twitch streams as audio-only feeds.
API‑First ApplicationsEmbed 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-rss streams 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

Weekly Views

Loading...
Support Us

Featured Project

$30/month

Get maximum visibility with featured placement and special badges

Repository Health

Loading health data...

Information

Category
other
License
MIT
Stars
326
Technical Specs
Pricing
Open Source
Docker
Official
Supported OS
LinuxDocker
Author
madiele
madiele
Last Updated
1 day ago