← Назад ко всем проектам

Личный проект8 мин чтения

Hypeoslav - AI-медиахолдинг

Hypeoslav - AI-медиахолдинг

Технологии

PythonGolangMicroservicesTelegramApiAIChatGPTGeminiRecraftComfyUIElevenlabsKokoroMidjourneyDallEBlenderFFmpegGoogle Drive APIYouTubeAdSense

Услуги

  • →Архитектура и разработка ИИ-конвейера (Python)
  • →Интерфейс управления конвейером на базе Telegram-бота
  • →Интеграция множества ИИ-сервисов (изображения, текст, аудио)
  • →Сборка постов и автоматизация публикации на нескольких платформах
  • →Настройка монетизации YouTube и интеграция AdSense

Результаты

  • ✓Децентрализованный конвейер генерации контента, запускаемый из Telegram
  • ✓Интеграции: Midjourney, DALL·E, Recraft, ChatGPT, Gemini, ElevenLabs
  • ✓Время производства: с 2 - 3 часов и затем до менее чем 5 минут на пост
  • ✓Несколько монетизируемых каналов, работающих параллельно при одном операторе

Задача

Стал сооснователем Hypeoslav - медиахолдинга на базе AI, где несколько контент-каналов производят изображения, тексты и аудио в промышленных масштабах. Экономика сходится только при себестоимости поста, близкой к нулю. Ручные процессы в Midjourney, ChatGPT, ElevenLabs и инструментах публикации отнимали по 2 - 3 часа на пост. Это был не медиабизнес, а студия ручного производства.

Исследование

Разбор процесса производства контента показал, что каждый шаг механический: написать промпт и затем сгенерировать изображение, написать подпись, сгенерировать озвучку, собрать пост и затем опубликовать в канал. Ни один из этих шагов не требует творческого решения человека, как только сформулировано задание. Узким местом была не креативность, а оркестрация.

Анализ конкурентов

Прежде чем собирать свой конвейер, мы изучили конкурентов и прогнали через их софт тестовые проекты. Задача была взять то, что у них уже работает, доработать то, что нам не нравилось, и найти места, где нашему конвейеру нужно собственное решение. На скриншотах один из таких инструментов: десктоп-приложение, которое делит сценарий на сцены и к каждой сцене ставит промпт для картинки и текст озвучки. Редактор может улучшить промпт, перегенерировать картинку или принять сцену и перейти к следующей. Название продукта скрыто.

Редактор сцен конкурента: промпт для картинки и озвучка для каждой из 20 сцен, название продукта скрыто
Тот же редактор на первой сцене: сгенерированный горный пейзаж с промптом и озвучкой, название продукта скрыто

Редактор сцен у конкурента, название продукта скрыто

Рассмотренные варианты

  1. No-code инструменты автоматизации (Zapier, Make) - рассмотрены. Не справлялись с многошаговыми вызовами AI API, обработкой ошибок и условной маршрутизацией между сервисами генерации.
  2. Собственная веб-панель - отклонена. Редакторы не хотели ещё одну вкладку для управления; интерфейс должен был находиться там, где они уже работают.
  3. Telegram-бот как интерфейс управления + бэкенд-конвейер на Python - выбран. Редакторы уже пользовались Telegram; команды бота давали мгновенный доступ к конвейеру с любого устройства.

Решение

Оркестрирующий слой на Python подключается ко всем AI API. Интерфейсом служит Telegram Bot API: редактор отправляет контент-задание, конвейер параллельно распределяет его по нужным сервисам генерации, собирает результат и либо публикует автоматически, либо показывает превью на согласование. Каждый тип канала (с упором на изображения, на текст, на аудио) имеет собственный вариант конвейера.

Реализация

Интегрированы Midjourney (через автоматизацию Discord API), DALL·E и Recraft для генерации изображений, ChatGPT и Gemini для подписей и сценариев, а также ElevenLabs для озвучки. У каждого сервиса свой асинхронный обработчик с логикой повторов и резервной маршрутизацией - если Midjourney работает медленно, конвейер автоматически переключается на Recraft.

Сборка поста объединяет сгенерированные материалы в нативные для платформ форматы: каналы Telegram, YouTube Shorts и Instagram. Планирование публикаций реализовано через очередь, распределяющую посты по оптимальным окнам выхода. Монетизация YouTube AdSense настроена по всем видеоканалам.

Результат

Время производства контента упало с 2 - 3 часов до менее чем 5 минут на пост. Несколько каналов работают параллельно при одном операторе. Инфраструктура ведёт творческий конвейер от начала до конца - за человеком остаётся постановка задания и контроль качества, а не само производство.

Лендинг и бренд

Для Hypeoslav сделали продуктовый лендинг и собрали айдентику. В её центре девушка в кокошнике с кнопками YouTube на щеках; ниже несколько вариантов логотипа с названием на кириллице и латинице и на разных подложках. Через сайт можно было связаться с нами, написать на почту, посмотреть состав команды и примеры наших видео. Позже мы вошли в партнёрство с другими производителями виральных видео: обсуждали с ними ниши и работали совместно.

Логотип Hypeoslav: девушка в красном кокошнике с кнопками YouTube на щеках, название кириллицей на тёмной плашке
Вариант логотипа Hypeoslav с названием латиницей
Вариант логотипа Hypeoslav с красной кириллической надписью на тёмной плашке
Надпись-логотип Хайпослав красными кириллическими буквами

Варианты логотипа и надпись-логотип

‹›
aA🔒www.hypeoslav.com/
⇧▢+
Home

Static snapshot — scrollable Safari preview

Айдентика каналов

Для каждого тематического канала мы делали свою айдентику: аватар и фоновый баннер, с опорой на практики виральных заголовков и обложек. Одна тематика выходила сразу на нескольких языках, поэтому один и тот же бренд встречается с надписями на корейском, английском и немецком. Названия адаптировали, а не переводили дословно: английский «The Mental Key» в корейской версии звучит как «Открыть дверь в кору мозга».

Аватар канала: герой в маске и красном худи снимает селфи над крышами города
Аватар канала: герой в очках ведёт прямой эфир с крыши
Аватар канала: герой в маске и наушниках с камерой на моноподе
Аватар канала: герой в оранжевых очках на фоне вывески LIVE
Логотип корейского канала: силуэт головы с мозгом и ключом, надпись на корейском
Логотип немецкого канала: фигура в капюшоне с зелёным ключом, надпись Cortexus
Аватар канала: мозг с вилкой питания и значком сигнала на тёмно-синем фоне
Аватар канала: медитирующая фигура на фоне тёплого оранжевого солнца
Аватар канала: живописный портрет девушки с крыльями и перьями
Аватар канала: портрет в золотом круге с пером и цифрой один
Аватар канала: мужчина в костюме под всевидящим оком на психоделическом фоне

Аватары каналов

Баннер английского канала: надпись The Mental Key и ключ с замочной скважиной
Баннер английского канала: золотой мозг с ключом рядом с надписью The Mental Key
Баннер канала: розовый мозг с золотым ключом в замке
Баннер канала: оранжевый мозг, подключённый к вилке питания
Баннер канала: светящийся значок сигнала на фоне звёздного неба
Баннер канала: силуэт головы с деревом внутри
Баннер канала: медитирующая фигура на закате в обрамлении осенних листьев

Баннеры каналов

Конвейер в Blender

Промежуточный этап конвейера, снятый в Blender. Сцена собирается автоматически: картинки расставлены и выровнены, поверх наложен аватар, добавлен эффект дыма (ранняя версия). Все картинки и сцены в ролике сгенерированы LLM. Субтитры накладывались отдельно, уже вне Blender.

Blender целиком управляется из Python. Скрипт собирает таймлайн, раскладывает клипы и оверлеи по каналам, компонует кадр и накладывает эффекты, например Ken Burns: плавный зум со случайной точкой фокуса на каждой статичной картинке.

Рабочее пространство Video Editing в Blender под управлением Python-скрипта: клипы сцен, оверлеи аватара и фоновые эффекты разложены по каналам секвенсора
Python-код рядом с Blender: генератор субтитров в VS Code и функция эффекта Ken Burns в текстовом редакторе Blender

Таймлайн, композицию и эффекты собирает Python-код

Анимированные субтитры

Субтитры анимированные, в караоке-стиле: текущее слово подсвечивается по ходу озвучки. Blender нормально с субтитрами не работал, поэтому сшивка шла через ffmpeg - из Blender выходил чистый рендер, а дорожка с субтитрами накладывалась отдельным проходом. Позже стили доработали: добавили тень, а шрифт дорисовали недостающими глифами, чтобы он держал другие языки, в том числе корейский и японский. У исходной версии с ними были проблемы.

Субтитры генерируются автоматически в нескольких стилях, среди них караоке, где каждое слово подсвечивается в момент озвучки.

Субтитр в стиле караоке поверх кадра, произносимые слова подсвечены красным

Стиль субтитров «караоке»

Интро на разных языках и виральные обложки

Сгенерированные интро на нескольких языках вместе с обложками, с которых начинаются видео. Дольше всего искали голос: прогнали кучу локальных моделей для озвучки, в том числе на базе Kokoro и решений от Facebook, а основным инструментом в итоге выбрали ElevenLabs.

Под обложки сделали отдельный набор промтов. Они описывают не картинку, а то, что уже сработало: разобрали референсные превью, которые залетели, и перенесли их приёмы в генерацию.

Файлы сценариев по языкам

Структура файлов, с которой работает конвейер: переписанные сценарии плюс мета, отдельный набор под каждый язык. Форму задало требование, чтобы видео получалось примерно одной длительности независимо от финального языка, поэтому сценарии адаптируются под хронометраж, а не переводятся построчно. Дословный перевод уплывает: при одинаковом количестве слов одни языки звучат заметно дольше других, и тайминг под картинку рассыпается.

Генерация аватаров

Аватары генерируются в ComfyUI на разных моделях, а конвейер забирает оттуда видео через интеграцию, а не обращается к платному сервису. Это заметно сэкономило деньги - внешняя генерация была самой дорогой статьёй - и заодно отдало качество генерации под прямой контроль: модель, настройки и число шагов подкручиваются под канал, вместо того чтобы принимать то, что отдаст чужой эндпоинт.

ComfyUI выбрали, потому что результаты других интерфейсов нас не устраивали, и собрали в нём свой конвейер генерации аватаров. Аватары поддерживали намеренно: ведущий в кадре повышает доверие зрителя и удержание видео.

Очередь генерации в ComfyUI с шестью готовыми аватарами: альпинист, римский полководец, королева в короне, мужчина в тёмной рубашке, девочка и солдат в каске, у каждого указано время рендера
Нода предпросмотра в ComfyUI с аватаром рептилии 512 на 512

Аватары, сгенерированные нашим конвейером в ComfyUI

Телеграм-бот управления

Работа 24/7 означала, что конвейером надо рулить с телефона, на ходу, поэтому пультом стал телеграм-бот. Работа многопоточная: задачи кладутся в очередь, слейвы разбирают их по мере освобождения, а не одна задача держит всю очередь за собой.

Генерация видео идёт поэтапно, и этапы, которым нужен человеческий глаз, останавливаются на проверку. Бот рапортует, что этап выполнен, и переключается на другую работу, а не простаивает. Пользователь заходит, смотрит результат в Google Cloud - поэтому проверка возможна даже с телефона - и отвечает «принять» или «переделать», причём перед повтором можно поменять промт. Итоговое видео уезжает на Google Drive.

На боте же висит и путь отказа: упавшая задача не тонет в очереди молча, а приходит с текстом ошибки, и перезапустить её можно прямо из чата.

Полный проход по шагам, с одобрением промежуточных результатов на каждом этапе.

Как устроен бот

Бот работает на собственном веб-сервисе на нашем сервере. Он слушает команды, распределяет задачи между исполнителями и пишет ответ обратно в чат. Все промежуточные файлы, по которым нужно решение человека (принять или переделать), загружаются в Google Cloud, поэтому администрировать конвейер можно удалённо, на ходу. Для модерации изображений на ПК сделали отдельное десктоп-приложение RenderOrc, о нём ниже, в разделе «Десктоп-клиент для правки визуала».

Референсное видео в командном чате с пометкой тематики, контакты скрыты
Очередь референсных видео в Google Таблице по тематикам: просмотры и статус done или running, ссылки на файлы скрыты
Запрос бота на согласование: отчёт и папка в Google Cloud, кнопки принять, отклонить, повторить, перезапустить, удалить или передать задачу Windows- или Mac-исполнителю, ссылки на папки скрыты
Упавший шаг озвучки в чате: трейсбек, correlation ID и предложение повторить

Приём референсов, запрос на согласование и отчёт об ошибке с повтором

Инструкция для команды

Для остальных членов команды написали сопроводительную документацию, чтобы они тоже могли генерировать видео на лету. В инструкции описано, как поставить задачу боту, что делать с запросами на согласование и ошибками и как работать в десктоп-клиенте RenderOrc. В опубликованной версии ссылки на облачные папки и имя бота скрыты.

Инструкция Hypeoslav: как управлять конвейером через бота и RenderOrcСкачать PDF
Загрузка…

Распределённые исполнители

Рабочая сторона той же очереди. К одному серверу задач подключается несколько исполнителей: берут очередную задачу - сгенерировать текст, транскрибировать аудио, сгенерировать картинки - и выполняют её. На пике одновременно работало до пяти устройств в моей локальной сети, включая Steam Deck: на каждом крутился клиент, который цеплялся к серверу, забирал задачи и выполнял их.

macOS, Windows и Linux

Разработка шла на macOS, но клиент должен был работать и на Windows, и на Linux, поэтому стек для него выбирали под все три платформы. В итоговом конвейере исполнители были вперемешку: часть машин на macOS, часть на Linux, часть на Windows. На скриншотах Windows-исполнитель, которым управляют с Mac через удалённый рабочий стол: сначала ставится Python-окружение с зависимостями, затем исполнитель рендерит видео через Blender и обрабатывает звуковую дорожку.

Настройка Windows-исполнителя через удалённый рабочий стол с Mac: идёт установка VS Code, в терминале скачиваются Python-пакеты
PowerShell на Windows-исполнителе ставит Python-зависимости в виртуальное окружение проекта
Windows-исполнитель на шаге Blender: в логе добавляются кадры видео и обрабатывается звуковая дорожка

Windows-исполнитель: настройка окружения, зависимости, рендер в Blender

Кузница контента

В итоге контента за день было так много, что пришлось докупить терабайт на Google Drive, чтобы забивать очередь на загрузку. Буквально кузница контента, конвейер и завод контента. На выходе получались видео на нескольких языках и разной длины со всей сопроводительной метаинформацией, которая нужна для загрузки на YouTube.

Google Drive с десятками архивных папок задач; в одной папке видео на немецком, корейском, японском и английском, обложки для каждого языка, превью, meta.json, summary.csv и report.html
Одна готовая задача: видео и обложки по языкам, метаданные и отчёт

Десктоп-клиент для правки визуала

Править один неудачный кадр через чат-бота неудобно, поэтому под визуал сделали отдельный desktop-клиент RenderOrc. Он открывает проект, вычитывает его и раскладывает картинки всех сцен рядом с промтами, которыми они сгенерированы. Промт можно переписать и тут же перегенерировать конкретную сцену, не перезапуская конвейер и не выискивая нужный кадр в папке.

RenderOrc работал и на Windows, и на macOS. Кроме перегенерации, он стилизовал картинку под видео: аватарам добавляется тень, контентным изображениям тень и скругление углов, а картинка меньше Full HD вписывается в фон с текстурой бумаги. У каждой картинки указано время начала и конца сцены, поэтому её можно сверить с конкретным моментом видео и по смыслу, и по стилю. На скриншотах путь клиента от раннего окна с промтом до готового приложения, ниже варианты заставки, сгенерированные для него.

Раннее окно RenderOrc: картинка сцены с художницей в мастерской над промтом, по которому она сгенерирована, кнопки перегенерации и сохранения
Стартовый экран RenderOrc с неоновой киберпанк-героиней, путём к проекту и кнопками Open project и Set Backgrounds
Редактор фонов RenderOrc в тёмной теме: сцена с придорожной закусочной в пустыне, кнопки удаления, замены, перегенерации и сохранения, время начала и конца сцены и промт
Редактор фонов RenderOrc в светлой теме: сцена на палубе круизного лайнера с таймингом и промтом

RenderOrc от первого окна с промтом до готового редактора

Вариант заставки RenderOrc: неоновый киберпанк-портрет
Вариант заставки RenderOrc: неоновый киберпанк-портрет
Вариант заставки RenderOrc: неоновый киберпанк-портрет
Вариант заставки RenderOrc: неоновый киберпанк-портрет
Вариант заставки RenderOrc: неоновый киберпанк-портрет
Вариант заставки RenderOrc: неоновый киберпанк-портрет

Варианты заставки, сгенерированные для RenderOrc

Мониторинг трендов

Чтобы решать, что делать дальше, нужны были данные, а не вкусовщина, поэтому отдельный микросервис на Go следит за списком добавленных каналов и собирает информацию о видео, которые там залетели. Эти ролики и образуют пул референсов, из которого потом строятся задания и промты для обложек - именно оттуда берутся виральные приёмы, о которых сказано выше.

Сам вотчер в работе, по отслеживаемым каналам.

Увеличение лимитов YouTube API

Мониторинг такого масштаба упирается в квоту YouTube API, поэтому обратились в Google за увеличением лимитов на граббинг статистики. Обращение прошло успешно. Вскоре после этого проект заморозили, так что поднятая квота в полную силу поработать не успела.

Проекты

Traffic Connect - оркестрация ИИ-контента для сайтов на WordPress

Traffic Connect - оркестрация ИИ-контента для сайтов на WordPress

До: генерацию статей с помощью ИИ нужно было вести на множестве сайтов на WordPress, и управлять ею из одного места было нельзя. После: одна админ-панель ставит задачи в очередь для каждого сайта, а сайт сам забирает свои задачи через плагин. Систему я собрал с нуля примерно за месяц.

PREZA - сайты школьных презентаций с более чем 80 000 сгенерированных PDF

PREZA - сайты школьных презентаций с более чем 80 000 сгенерированных PDF

До: сайтам школьных презентаций нужны были десятки тысяч готовых файлов, сделать которые вручную было невозможно. После: грабберы, парсеры и автоматическая многопоточная генерация дали больше 80 000 PDF, которые хранятся в холодном S3 Selectel и опубликованы на preza.kz и preza.top.

AtomPk Grabber - выгрузка списка товаров в CSV по требованию

AtomPk Grabber - выгрузка списка товаров в CSV по требованию

До: партнёру нужно было раз за разом вручную собирать список товаров с сайта в CSV. После: исполняемый файл, который запускается двойным кликом, сам обходит каталог и пишет CSV - без установки Python и без настройки.

Открыт для работы по контракту

Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.

Записаться на 30-минутный звонок