dmilyin.ru AI-разработка · Нижний Новгород · обновлено 2026-07-09


Кейсы Свой продукт

Конвейер карточек для Wildberries: из PSD-шаблона и таблицы моделей — пачка готовых каруселей без Photoshop

Свой инструмент: из PSD-шаблона и таблицы моделей одним запуском собирает пачку готовых карточек Wildberries — карусели + строки импорта, без Photoshop. Обкатан на пилоте продавца дисплеев.

Обложка кейса: Конвейер карточек для Wildberries: из PSD-шаблона и таблицы моделей — пачка готовых каруселей без Photoshop

Задача

Продавец на маркетплейсе с большим ассортиментом однотипных товаров (запчасти, аксессуары, дисплеи) заводит сотни почти одинаковых карточек: у каждой модели свой заголовок и пара параметров, а слайды карусели, блок гарантии и оформление — общие. Вручную это делает дизайнер в Photoshop: 700–1500 ₽ за карточку, 6–10 штук в день, и каждая новая модель — снова открыть макет, поменять текст, экспортировать слайды, вбить строку в шаблон импорта. На потоке в сотни SKU это не масштабируется и съедает бюджет.

Типичный заказчик — продавец WB или Ozon с каталогом из десятков-сотен вариаций одного товара, где карточки различаются моделью и пунктом-двумя, а не дизайном.

Решение

Я собрал конвейер, который из одного PSD-шаблона и таблицы моделей штампует всю партию карточек за один запуск. Photoshop не нужен — рендер идёт на psd-tools и Pillow.

Рендер главного слайда из PSD без Photoshop. В шаблоне прячем переменные текстовые слои (модель, бейдж качества), рендерим композит с эффектами слоёв (psd-tools[composite]), затем поверх рисуем текст Pillow’ом точно в координатах спрятанного слоя. Так макет остаётся дизайнерским, а подставляемый текст — программным. Слайды 2–4 статичные: берутся из шаблона, слайд 2 отдаётся в варианте «с рамкой» или «без» по флагу модели.

Таблица моделей как единственный вход. Одна запись модели в models.json описывает три вещи: render (текст модели, бейдж, флаг рамки), wb (колонки шаблона импорта) и PROVERIT — поля под ручную проверку клиентом. Спорные значения не угадываются, а помечаются флагом «проверить» и всплывают в отчёте — честная граница между автоматикой и решением человека.

Сборка карусели и шаблон импорта. Готовые слайды собираются в карусель нужного WB-формата, а sheet-шаг заполняет строки в ШАБЛОН.xlsx (импорт WB) и складывает card.txt с текстом. На выходе — папка на каждую модель (outputs/<модель>/) плюс единый cards_import.xlsx на всю партию.

Батч-оркестрация. CLI на Typer (run / render / carousel / sheet) прогоняет весь список за раз с таймингом. Один запуск — вся партия: 3 модели или 300, разница только во времени прогона, а не в ручном труде.

Архитектура конвейера: PSD-шаблон и models.json через батч-раннер превращаются в слайды, карусели и шаблон импорта WB; спорные поля — во флаги «проверить»

Главный слайд карточки, отрендеренный конвейером из PSD-шаблона: текст модели подставлен программно, без Photoshop

Стек

Python 3.11 · uv · Typer (CLI mp-card) · psd-tools[composite] (рендер PSD) · Pillow (наложение текста) · openpyxl (шаблон импорта WB) · fpdf2 (отчёты) · pydantic-settings (конфиг)

Результат

Инструмент обкатан на реальном пилоте — продавце дисплеев на WB. По его материалам (PSD, статичные слайды, шаблон импорта, списки моделей Vivo) конвейер за один прогон собрал карусели и строки импорта на трёх моделях (Vivo T1 / V29 / Y36 в рамке), доказав, что рендер из PSD без Photoshop работает и масштабируется на весь каталог.

Отраслевой ориентир для оценки эффекта (нормы рынка оформления карточек WB, 2026):

  • ручное оформление карточки с инфографикой — 700–1500 ₽, серия из 40 карточек — 60–120 тыс. ₽;
  • дизайнер-оформитель — порядка 6–10 карточек в день;
  • конвейер сводит партию к одному запуску: шаблон настраивается один раз, дальше добавление модели — это строка в таблице, а не открытие макета.

Инфографика «вручную vs конвейер»: 700–1500 ₽ и 6–10 карточек в день против одного запуска на всю партию без Photoshop

Что не сработало

Демо было доказательством принципа, а не финалом по качеству — и клиент это считал. Первую партию я собрал быстро, чтобы показать, что поток автоматизируется, и получил предметную критику из шести пунктов. Она стала дорожной картой инструмента: артикулы — по схеме клиента, а не с кодами моделей; описания — по его промпту и эталонам, без угадывания; сертификат — по каждой модели из его документов, не «один на всех»; спорные параметры — в справочник характеристик; вместо пустых полей — флаг PROVERIT. Урок на будущее: на бюджет-чувствительном клиенте сырое демо без сразу названной цены читается как неготовность — рамку качества и вилку нужно давать вперёд.

Вес шрифта на наложенном тексте «плывёт». Вариативный Montserrat при наложении Pillow’ом может выйти легче начертания макета. Боевой фикс — рендерить все надписи одним движком на фон без текстовых слоёв либо точно матчить вес начертания; зафиксировано в Known issues, для витринных примеров текст выравнивается вручную.

Автозаливки в WB пока нет. Конвейер готовит карусели и строки шаблона импорта, но саму заливку продавец делает руками. В планах — WB Content API через готовый SDK (create_cards / upload_media); WB API для продавцов бесплатен, так что это операционка клиента без доп. затрат на разработку.