Автоматический рендер видео в After Effects через API
API превращает шаблоны After Effects и данные в готовые видео на управляемой рендер-ферме.
- Область
- Медиа, автоматизация видеопроизводства
- Наша роль
- Архитектура, бэкенд и воркфлоу, скрипты для After Effects, интеграция рендер-фермы, фронтенд
- Год
- 2025
Мы построили облачный API, который собирает готовые MP4 из шаблонов Adobe After Effects и структурированных данных — без моушн-дизайнера в процессе. Платформа ведёт весь путь: регистрацию шаблона, загрузку ассетов, генерацию футажа с помощью AI, рендер на удалённых Windows-нодах и выдачу результата через S3-совместимое хранилище. Каждый шаг отслеживается, показывает прогресс и может быть перезапущен.
Задача
- Короткие ролики с AI-ведущим, B-roll, музыкой и переходами делались вручную: дизайнер открывал проект, менял футаж, правил тайминг и экспортировал каждое видео.
- Рендерить можно только на лицензированных Windows-машинах, к которым приходится подключаться через интернет и прокси.
- Дизайнеры постоянно меняют композиции, поэтому структуру слоёв нельзя зашивать в бэкенд.
- Рендер идёт минутами и может упасть на скачивании, рендере или выгрузке — при этом машина не должна остаться занятой, а задача — зависнуть.
- Часть исходников генерируют внешние AI-сервисы, которые работают асинхронно и медленно.
Решение
Шаблон в системе — это типизированный контракт: проект .aep, скрипт ExtendScript и список слоёв (видео, фото, аудио, данные) с пометкой «обязательный» или «необязательный». Задача заполняет этот контракт футажом и настройками слоёв, и API не запустит рендер, пока не заполнены все обязательные слои. Сам рендер — это устойчивый воркфлоу на Inngest из отдельных шагов с контрольными точками: выделить ноду, разложить ассеты, отрендерить, выгрузить, освободить ноду. Внутри After Effects скрипт читает параметры задачи и сам собирает композиции, поэтому один проект даёт много разных видео. По желанию весь ролик собирается из одного запроса: LLM пишет план и идеи для B-roll, сервис аватаров записывает озвучку, text-to-video модель параллельно генерирует клипы.
Архитектура
Что умеет система
- API шаблонов и задач
- Создание и редактирование шаблонов и слоёв, загрузка файлов напрямую в хранилище по presigned-ссылкам, задачи с настройками каждого слоя: тайминг, трансформации, прозрачность, громкость, переходы.
- Рендер одним запросом
- POST /render/{job_id} ставит задачу в очередь, а результат приходит ссылкой на скачивание, которая действует 7 дней.
- Прогресс в три фазы
- Загрузка ассетов, рендер и выгрузка результата показывают свой процент, который берётся с ноды в реальном времени.
- Управление рендер-нодами
- Ноды добавляются и удаляются через API или админский CLI, SSH-доступ проверяется при добавлении, а монитор раз в минуту проверяет их доступность.
- Генерация ролика целиком
- План контента, видео с аватаром, идеи и параллельная генерация B-roll, сборка слоёв, рендер и выгрузка — в одном воркфлоу.
- Веб-приложение
- React-приложение, которое работает и как Telegram Mini App: шаблоны, задачи, генерация аватара и B-roll, монтажный таймлайн, рендер и просмотр.
Инженерные решения
- Каждый этап рендера — отдельный шаг Inngest с контрольной точкой: упавший шаг повторяется сам по себе, а уже выполненные не запускаются заново. Ошибки, которые повтор не исправит, например отсутствующий файл проекта, помечаются как неповторяемые.
- Если любой шаг падает, компенсирующий шаг освобождает ноду и переводит задачу в статус failed — упавший рендер никогда не держит машину занятой.
- Бэкенд управляет Windows-хостами по асинхронному SSH: создаёт рабочую папку задачи, пишет манифест nexrender, запускает CLI и построчно разбирает его вывод, чтобы показывать живой прогресс. У каждого удалённого вызова есть таймаут.
- Тяжёлое медиа не проходит через API: ноды сами скачивают исходники и выгружают MP4 в S3-совместимое хранилище по короткоживущим presigned-ссылкам.
- Медленные AI-сервисы опрашиваются с фиксированным интервалом и жёстким таймаутом; B-roll генерируется параллельно, не больше четырёх клипов на видео, чтобы держать расходы под контролем.
Интерфейс
Схемы
Стек
- Python
- FastAPI
- PostgreSQL
- SQLAlchemy
- Inngest
- asyncssh
- Adobe After Effects
- ExtendScript
- nexrender
- FFmpeg
- S3-compatible storage
- React
- TypeScript
- Docker
Что это показывает
- Десктопный After Effects превращён в headless-сервис с API, который собирает видео без ручной работы дизайнера.
- Дизайнеры меняют шаблоны без правок в бэкенде: контракт слоёв и скрипты внутри After Effects развязывают креатив и код.
- Облачный control plane надёжно управляет удалённой Windows-фермой с повторами, компенсацией и отчётом о прогрессе.
- Несколько AI-сервисов — LLM, аватары и text-to-video — собраны в один конвейер с ограничением расходов.
Вопросы по кейсу
Нужно ли переписывать бэкенд, когда дизайнер меняет шаблон?
Нет. Бэкенд передаёт в After Effects только параметры слоёв, а композиции и слои собирает скрипт ExtendScript внутри проекта. Дизайнер может править шаблон без изменений в коде.
Что происходит, если рендер падает посреди задачи?
Упавший шаг повторяется отдельно, уже выполненные шаги не запускаются заново. Если ошибку повтором не исправить, компенсирующий шаг освобождает ноду, задача получает статус failed, а полный лог рендера сохраняется.
Можно ли рендерить на своих машинах?
Да. Рендер-ферма — это пул Windows-машин с After Effects и nexrender CLI, которые регистрируются через API или CLI. Платформа подключается к ним только по SSH, поддерживает прокси и отправляет задачи только на исправные ноды.