Как я написал AI-генератор коротких видео (Shorts/Reels) на Python с Clean Architecture

Привет, Хабр! ????

В этой статье я хочу поделиться опытом разработки пет-проекта, который превратился в полноценный инструмент для автоматической генерации коротких видео (Shorts, Reels, TikTok). Идея проста: на входе — тема (например, "История Римской Империи за 1 минуту"), на выходе — готовый видеоролик с озвучкой, субтитрами и сгенерированным видеорядом.

Но вместо того, чтобы накидать "спагетти-код" в одном файле main.py, я решил подойти к задаче как инженер и построить систему на принципах Clean Architecture.

???? Зачем?

Генерация видео — это сложный пайплайн:

1.  Написать сценарий.

2.  Придумать визуальный стиль.

3.  Сгенерировать картинки (Midjourney, Flux).

4.  Оживить картинки в видео (Kling, Runway, Sora).

5.  Озвучить текст (TTS).

6.  Собрать всё вместе с субтитрами.

API меняются, модели выходят новые каждую неделю. Сегодня лучший визуал у Flux, завтра у Midjourney v7. Сегодня видео делаем в Runway, завтра в Kling. Жесткая привязка к конкретным API убила бы проект через месяц.

Поэтому Clean Architecture здесь не роскошь, а необходимость.

???? Архитектура

Проект разбит на слои, следуя классической "луковой" архитектуре:

1.  Domain (Entities): Pydantic-модели, описывающие суть (VideoScript, Scene, Character). Они ничего не знают о внешнем мире.

2.  Interfaces: Абстрактные классы (VideoGenerator, ScriptGenerator). Контракты, которые должны соблюдать внешние сервисы.

3.  Services (Use Cases): Бизнес-логика. Здесь живут "Агенты": Сценарист, Арт-директор, Режиссер монтажа.

4.  Infrastructure: Реализации интерфейсов (API клиентов Comet, Yandex, OpenAI и т.д.).

Читать далее

Читайте на сайте