🎙️ День 18 — AI подкаст на сайте: daily выпуск про homelab и self-hosted
✎Я давно хотел сделать формат, который можно потреблять без экрана: пока едешь, пока возишься с железом, пока на фоне крутятся обновления.
Так появился daily-подкаст про homelab и self-hosted: каждый день система сама собирает новости, делает редактуру и публикует выпуск на сайте.
Главная цель была простая: чтобы контент выходил регулярно, а процесс был управляемым (без ручной боли и без “модель сегодня решила пофантазировать”).
🧩 Как устроен конвейер (сверху вниз)
+------------------+
| RSS/Atom feed |
+------------------+
|
v
+------------------+
| Collect + Filter |
| (noise cut) |
+------------------+
|
v
+------------------+
| AI Editor (RU) |
| summarize/rank |
| + script build |
+------------------+
|
v
+------------------+
| TTS (2 voices) |
| dialog format |
+------------------+
|
+---------+------------------+
| |
v v
+------------------+ +------------------+
| MP3 + metadata | | Text transcript |
+------------------+ +------------------+
| |
+------------+---------------+
v
+----------------+
| Publish to site |
| + podcast RSS |
+----------------+
На выходе получается сразу три артефакта:
- 🎧 аудио (mp3)
- 📝 текстовая версия (по кнопке “Читать”)
- 📡 RSS подкаста (чтобы слушать в нормальном приложении)
✅ Что уже реализовано
1) 📰 Автосбор новостей
Источники берём из RSS/Atom по темам: homelab, self-hosted, инфраструктура, релизы.
2) 🧠 Редакторский AI пайплайн
Пайплайн проходит этапы:
- сбор и фильтрация новостей
- сжатие и структурирование
- ранжирование тем
- сборка сценария выпуска
3) ✍️ Формат сценария под озвучку
Самое важное в TTS-формате: не выглядеть как README.
Поэтому сценарий приводим к “разговорному” виду:
- без символов
#и* - без списка “1, 2, 3”
- с переходами вида: “Итак, первая новость…”, “Теперь следующая…”
- без финала “ссылка, ссылка, ссылка” (ссылки остаются в тексте на сайте)
4) 🗣️ Озвучка двумя голосами
Сделали диалоговый формат, чтобы выпуск звучал живее.
Починили кейс, когда один и тот же голос мог “представляться” разными именами.
5) 🌐 Публикация на сайт
На сайте появилась отдельная страница подкаста:
- архив выпусков карточками
- встроенный плеер
- RSS подкаста
- кнопка “Читать” для текстовой версии
(Смотри раздел Podcast на сайте.)
6) 📡 RSS и структура выпусков
Собираются feed.xml, mp3 и метаданные.
Исправили ссылки в карточках и RSS, чтобы “Читать выпуск” открывало именно текст, а не пустой переход.
7) 🧱 Надёжность ежедневного запуска
Ежедневный запуск работает по расписанию (локальное время).
И самое приятное: пайплайн стал устойчивее и не падает на типовых проблемах.
Исправили:
- ошибки чтения
.env - падение суммаризации, когда модель возвращала “почти JSON”
Если TTS недоступен по региону/правам, выпуск не срывается: включается fallback-озвучка.
🧠 Почему это полезно именно в homelab
- меньше “инфошума”, больше коротких полезных выжимок
- ежедневный ритм: легче следить за релизами и изменениями
- архив и RSS: всегда можно вернуться к выпуску
- текст рядом: можно быстро вытащить команды/названия/ссылки
🔜 Что дальше
Следующие шаги, которые хочется докрутить:
- “рубрики” внутри выпуска (релизы / security / self-hosted / железо)
- автоматический “changelog недели”
- более умная фильтрация дубликатов между источниками
Итог
Получился полноценный daily AI-подкаст: от поиска новостей до публикации на сайте и в RSS.
И главное, что мне в этом нравится: это не разовая “демка”, а эксплуатационный конвейер, который можно улучшать по шагам.