Александр Вахтин › avvahtin Сбер ID
AI-агенты, данные и веб-сервисы на Python: от идеи до продакшена
Рейтинг
217
№ 5 919 в каталоге
Отзывы
0
Профессионализм
-/10
Коммуникация
- /10
Город
Москва
Опыт работы
8 лет
На сайте с
2026 года
Юридический статус
ИП

SaaS для селлеров: видео и 4 варианта фона из одного фото

Используемые навыки JavaScript Next.js SaaS Веб-приложение Веб-разработка

Описание

Продавец на маркетплейсе продаёт картинкой. Покупатель листает выдачу и первым видит фото: чистый фон, сцену под сезон, короткое видео, где вещь показана в движении. За каждой такой карточкой стоят съёмка, ретушь фона и монтаж ролика, и так по каждой позиции. Для каталога в сотню артикулов это отдельный проект с дизайнером и монтажёром, поэтому видео часто не делают вовсе.

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

Ограничения, которые определили архитектуру:
— Видео генерируется минутами. Держать человека на открытой странице нельзя, а задача обязана пережить перезапуск сервера: каждая генерация у Google стоит денег.
— Доступ к API Google, на которых строится генерация, нужен стабильный и без настроек на стороне продавца: любая лишняя настройка — потеря клиента на первом шаге.
— Сервис должен сам не уходить в минус: тарифы, квоты, поштучная оплата, журнал списаний.
— Клиентов нужно приводить из поиска: посадочные страницы под площадки и блог.

Решение

Проект сделал в одиночку: архитектура, бэкенд, очередь задач, тарификация, шлюз к нейросетям, развёртывание. Интерфейс перенёс с прототипа на Next.js 15 и подключил к API.

ФОН
Удаление фона работает на своём сервере открытой нейросетевой моделью rembg — без внешних сервисов и без платы за каждый кадр, поэтому для продавца оно бесплатно. Поверх модели — альфа-маттинг для мягких краёв (волосы, мех), чистка мелких артефактов и растушёвка контура. Дальше товар ставится на цвет или на свою картинку с выравниванием и масштабом.

Новую сцену рисует нейросеть по фото-образцу: своему или из галереи фонов. Конвейер: кадр приводится к нужному формату, маска товара строится локально, Gemini описывает сцену образца — свет, окружение, настроение, — а Imagen 3 или Gemini 2.5 Flash Image дорисовывает новый фон. Четыре режима — базовая замена, по визуальному образцу, контекстная адаптация и творческая версия — запускаются разом, продавец выбирает лучший вариант. В первых трёх товар защищён маской и меняется только окружение; творческий может переработать кадр целиком. Десять форматов кадра: 21:9, 16:9, 4:3, 3:2, 1:1, 9:16, 3:4, 2:3, 5:4 и 4:5.

ВИДЕО
Ролик на 8 секунд генерирует Google Veo 3.1 по одной или двум фотографиям — первому и последнему кадру. Восемь готовых сценариев движения — поворот модели, облёт камерой, приближение, панорама, вращение на 360°, динамичное движение, поворот с улыбкой, лёгкое покачивание — плюс свои пожелания текстом. Из готового ролика сервер без новой генерации собирает вариации: ускорение в 1,5, 2 и 4 раза и петлю «вперёд-назад». Вариация стоит 1 кредит против 10 за новый ролик.

ОЧЕРЕДЬ И НАДЁЖНОСТЬ
Генерация вынесена в очередь Celery. Идентификатор операции Google сохраняется в базе сразу после запуска: если воркер перезапустился посреди работы, задача подхватывает уже запущенную операцию, а не заказывает новую, — оплаченная генерация не сгорает. Скачивание готового ролика повторяется при сбое. Галерея сама обновляет статусы, готовый файл появляется без перезагрузки страницы.

ДОСТУП К GOOGLE
Все обращения к нейросетям Google вынес в отдельный внутренний шлюз: основной бэкенд с API Google напрямую не работает, ключи и сетевые настройки живут в одном месте. Для отладки добавил служебный эндпоинт, который проверяет связь шлюза с внешними сервисами, — иначе поиск сетевых сбоев превращается в гадание.

ТАРИФИКАЦИЯ
Внутренняя валюта — кредиты. Четыре тарифа с месячными квотами на видео, вариации и новые фоны; когда квота кончилась, операция списывается с баланса поштучно, а без квоты и баланса генерация не запустится. Смена тарифа — с пропорциональным пересчётом: перед подтверждением пользователь видит расчёт, повышение действует сразу со смешанной квотой до конца периода, понижение и отмена — с нового периода. Продление и отложенные смены выполняет ежедневная фоновая задача. Каждое движение баланса пишется в журнал.

ХРАНЕНИЕ, ВХОД, АДМИНКА
Файлы лежат в S3-совместимом хранилище с дедупликацией по хешу содержимого: одно и то же фото не хранится дважды. Вход по JWT с обновлением токена, восстановление пароля по почте. Админка: пополнение баланса, тарифы, цены операций.

ПРОДВИЖЕНИЕ
Посадочные страницы под продавцов Wildberries, Ozon, Яндекс.Маркета и Lamoda и блог с редактором, публикацией и SEO-полями: сервису нужен приток из поиска, и это часть продукта.

РАЗВЁРТЫВАНИЕ
Девять сервисов в Docker Compose — база, брокер очереди, API, воркеры, планировщик, мониторинг задач, шлюз к нейросетям, интерфейс и служебные — в трёх изолированных сетях. Деплой при каждом пуше через GitHub Actions: секреты подтягиваются из Doppler, сервер обновляется по SSH.

Результат

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

Продавцу ничего не нужно настраивать: загрузил фото — получил результат. Все обращения к нейросетям идут через один внутренний шлюз.

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

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

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

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT 185 кабинетов Яндекс.Директа: отчёт без ручной сборки
185 кабинетов Яндекс.Директа: отчёт без ручной сборки
86
ИИ и Нейросети AI-агент по данным бизнеса: вопрос словами — готовый дашборд
AI-агент по данным бизнеса: вопрос словами — готовый дашборд
80
ИИ и Нейросети AI-агент ведёт Telegram-канал, а владелец только утверждает
AI-агент ведёт Telegram-канал, а владелец только утверждает
54
ИИ и Нейросети Сбой в рекламе — в Telegram в тот же день: движок алертов
Сбой в рекламе — в Telegram в тот же день: движок алертов
54