podvid — консольная утилита на Go: превращает видео в эпизод подкаста. Скачивает ролик через yt-dlp, вытаскивает звук, конвертирует в MP3, заливает в S3-совместимое хранилище и обновляет RSS-ленту — на неё подписываешься в любом подкаст-приложении.
Ролик с YouTube (или с одной из 1800+ площадок, которые знает yt-dlp) часто хочется послушать как подкаст — в дороге, без картинки, в своём плеере. podvid собирает из ролика эпизод с обложкой и метаданными и кладёт его в ленту в твоём бакете.
Как это работает
Весь путь от ссылки до эпизода в ленте — один конвейер:
- Загрузка. Видео скачивается через yt-dlp. Параллельно вытягиваются метаданные: заголовок, описание, обложка, длительность, дата публикации.
- Извлечение звука. ffmpeg достаёт аудиодорожку и конвертирует её в MP3 с выбранным битрейтом.
- Загрузка в S3. MP3 и обложка заливаются в S3-совместимое хранилище (AWS, Yandex Object Storage, MinIO, Selectel).
- RSS-лента. Обновляется
feed.xmlв формате iTunes RSS 2.0 с расширениями — с этого момента эпизод виден в подкаст-приложениях.
yt-dlp при необходимости ставится сам — в изолированный Python venv, так что руками его готовить не нужно.
Два режима
Интерактивный TUI
Терминальный интерфейс на Bubble Tea — для ручной работы: выбрать подкаст, вставить ссылку, проследить за прогрессом.
CLI
Для автоматизации и скриптов. Базовый поток:
podvid config init
podvid podcast create --name "Мой подкаст"
podvid episode add my-podcast <video-url>
Дальше подписываешься в подкаст-клиенте на URL получившейся ленты.
Установка
go install github.com/grigory51/podvid/cmd/podvid@latest
Или сборка из исходников:
git clone https://github.com/grigory51/podvid.git
cd podvid
go build ./cmd/podvid/
Требования
- Go 1.21+
- ffmpeg в
PATH - Python 3 (или заранее установленный бинарь yt-dlp)
Конфигурация
Настройки лежат в ~/.config/podvid/config.yaml: эндпоинт и бакет S3, битрейт аудио, доступы. Креды задаются тремя способами — в конфиге, через переменные окружения или флаги командной строки; для CI удобнее переменные.
Стек
Целиком на Go (1.21+). Внешние зависимости — yt-dlp для скачивания и ffmpeg для конвертации. Лицензия MIT.