voxify

module
v1.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2026 License: Apache-2.0

README

Voxify logo

Voxify

A Telegram bot that converts YouTube videos and other online content into podcast feeds. Voxify allows you to create personalized RSS podcast feeds from your favorite video content, making it easy to listen to educational videos, interviews, and other content in podcast format.

About

Voxify transforms your favorite video content into audio-only podcast episodes that you can listen to anywhere. It's built for personal setups and small shared use—great for you, your family, or a few friends. Simply send YouTube links or other supported video URLs to the Telegram bot, and it will:

  • Download the video content using yt-dlp
  • Extract high-quality audio in your preferred format (MP3, M4A, etc.)
  • Generate episode thumbnails and metadata
  • Add episodes to your personal RSS podcast feed
  • Create a landing page with episode cards
  • Make the content accessible through any podcast player

The bot maintains a single RSS feed for your deployment, collecting episodes from the allowed users you configure. Perfect for listening to educational content, tech talks, interviews, or any video content during commutes, workouts, or while multitasking.

Usage

  1. Get your Telegram user ID: Message @userinfobot on Telegram to find your user ID
  2. Create a Telegram bot: Message @BotFather to create a new bot and get the bot token
  3. Configure and deploy the Voxify bot (see Installation section below)
  4. Start using the bot:
    • Send YouTube or other supported video URLs to your bot
    • The bot will process the video and add it to your podcast feed
    • View your episodes at https://yourdomain.com/ (landing page with episode cards)
    • Access your RSS feed at https://yourdomain.com/rss.xml
    • Subscribe to the feed in your favorite podcast player
Bot commands
  • /start — Shows a quick introduction and how to use the bot.
  • /info — Displays current feed details: title, description, author, language, categories, keywords, explicit flag, website and artwork links (if set), episodes count, and your RSS URL.
  • /build — Manually rebuilds the RSS feed file (rss.xml) from all stored episodes. Useful after changing feed metadata or if you need to regenerate the file. If there are no episodes yet, you'll get a notice instead.

Note: Only users listed in TELEGRAM_ALLOWED_USERS can interact with the bot.

Currently Supported Platforms
  • YouTube

More platforms will be added in future releases.

Installation

The easiest way to deploy Voxify is using the pre-built Docker image with Docker Compose.

  1. Create a data directory:

    mkdir -p /path/to/voxify-data/{db,public,downloads}
    
  2. Download the example docker-compose.yaml:

    wget https://raw.githubusercontent.com/ofstudio/voxify/main/docker-compose-example.yaml -O docker-compose.yaml
    
  3. Create environment file:

    wget https://raw.githubusercontent.com/ofstudio/voxify/main/.env-example -O .env
    
  4. Edit the configuration:

    • Update .env with your bot token, user IDs, and other settings
    • Modify docker-compose.yaml to replace placeholders with your actual values:
      • Replace </path/to/data> with your actual data directory path (e.g., /path/to/voxify-data)
      • Replace </path/to/letsencrypt/data> with path for Let's Encrypt certificates storage
      • Replace <mydomain.com> with your domain name
      • Replace <my@email.org> with your email for Let's Encrypt
      • Set VERSION to the latest release version
  5. Deploy:

    docker-compose up -d
    

The example includes Traefik reverse proxy and Nginx for serving files over HTTPS with automatic Let's Encrypt certificates.

Available Docker Images

Pre-built images are available at:

  • ghcr.io/ofstudio/voxify:latest - Latest stable release
  • ghcr.io/ofstudio/voxify:v1.x.x - Specific version tags

Check packages for the latest version.

Environment Variables

Variable Description
TELEGRAM_BOT_TOKEN Required. Telegram bot token from @BotFather. Example: 123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ
TELEGRAM_ALLOWED_USERS Required. Comma-separated list of allowed Telegram user IDs. Example: 123456789,987654321. Note: you can find your user ID using @userinfobot
PUBLIC_URL Required. Public URL where feed and media files are accessible. Example: https://example.com/podcasts
DB_FILEPATH Required. Path to SQLite database file. Default: ./data/voxify.db
PUBLIC_DIR Required. Path to public directory for feed and media files. Default: ./data/public
DOWNLOAD_DIR Required. Path to temporary download directory. Default: ./data/downloads
DOWNLOAD_TIMEOUT Optional. Timeout for downloading media. Default: 1h (formats: 30s, 10m, 1h)
DOWNLOAD_FORMAT Optional. Media download format. Default: mp3 (options: mp3, m4a, etc.)
DOWNLOAD_QUALITY Optional. Audio quality for downloaded media. Default: 192k
DOWNLOAD_WORKERS Optional. Number of concurrent download workers. Default: 2
THUMBNAIL_SIZE Optional. Size of square thumbnail in pixels. Default: 3000
YT_DLP_PATH Optional. Path to yt-dlp executable. Default: yt-dlp
FFMPEG_PATH Optional. Path to ffmpeg executable. Default: ffmpeg
FEED_FILENAME Optional. Name of the RSS feed file. Default: rss.xml
FEED_TITLE Optional. Title of the RSS feed. Default: Voxify Podcast
FEED_DESC Optional. Description of the RSS feed. Default: Voxify Podcast description
FEED_IMAGE Optional. URL of the RSS feed cover image. Example: https://example.com/cover.jpg
FEED_LANGUAGE Optional. Language code for the RSS feed. Default: en
FEED_CATEGORIES Optional. Primary categories (comma-separated). Default: Technology
FEED_CATEGORIES2 Optional. Additional categories (comma-separated). Example: Science,Astronomy
FEED_CATEGORIES3 Optional. Additional categories (comma-separated). Example: Education
FEED_IS_EXPLICIT Optional. Whether feed contains explicit content. Default: false (options: true, false)
FEED_AUTHOR Optional. Author of the RSS feed. Example: John Doe
FEED_LINK Optional. Link to the website of the RSS feed. Default: https://github.com/ofstudio/voxify
FEED_KEYWORDS Optional. Comma-separated keywords for the RSS feed. Example: podcast,tech,news,interviews

Acknowledgments

License

Apache License 2.0

Contributing

Feel free to open an issue or a pull request.

Author

Oleg Fomin @ofstudio

Directories

Path Synopsis
cmd
voxify-bot command
internal
app
pkg
cancelgroup
Package cancelgroup provides a synchronization primitive similar to sync.WaitGroup, but with built-in support for cancellation via context.Context.
Package cancelgroup provides a synchronization primitive similar to sync.WaitGroup, but with built-in support for cancellation via context.Context.
feedcast
Package feedcast provides a comprehensive toolkit for generating RSS podcast feeds that comply with Apple Podcast specifications and modern podcast standards.
Package feedcast provides a comprehensive toolkit for generating RSS podcast feeds that comply with Apple Podcast specifications and modern podcast standards.
files
Package files provides utility functions for file and directory operations.
Package files provides utility functions for file and directory operations.
randtoken
Package randtoken - provides a random token generator.
Package randtoken - provides a random token generator.
shutdown
Package shutdown provides a way to gracefully shutdown the application.
Package shutdown provides a way to gracefully shutdown the application.
telegram
Package telegram provides a tiny, testable wrapper around github.com/go-telegram/bot.
Package telegram provides a tiny, testable wrapper around github.com/go-telegram/bot.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL