PROJECT 04
Генератор карточек
WB / Ozon
Telegram-бот, который превращает описание товара в готовую карточку маркетплейса: продающий текст, характеристики, SEO-ключи и визуальный макет — как товар будет выглядеть на витрине.
ЧТО ЭТО ЗНАЧИТ ДЛЯ ГЕНЕРАТОРА
- Название укладывается в 60 символов и без повторов слов — иначе площадка обрежет его сама, посреди фразы
- Буллеты для инфографики только описательные: объём, материал, состав. Рекламных плашек бот не предлагает вообще — чтобы вам не выписали штраф
- Ранжирование WB тянет соответствие названия запросу, отзывы и конверсию; Ozon — ещё и релевантность описания и CTR. Поэтому SEO-ключи вынесены отдельным полем, а не размазаны по тексту
- Шаг «пробелы в данных» ловит забытое: сертификат, размерную сетку, цвет. Исправить это до загрузки дешевле, чем после отклонения карточки
Цифры — по отраслевым обзорам 2026 года: Uniseller, Kariba, МойСклад. Требования площадок меняются — актуальные всегда в кабинете продавца.
ЗАДАЧА
Продавцы на WB и Ozon тратят часы на карточку и всё равно получают текст, про который непонятно, как он будет выглядеть на витрине. При ассортименте в 50–500 SKU это превращается в отдельную работу.
РЕШЕНИЕ
- Chain-of-thought: категория → аудитория → УТП → обязательные характеристики → пробелы в данных
- Строгий JSON на выходе — из него собирается и текст для кабинета, и картинка
- PDF-инструкция WB/RDV подгружается через File API как контекст
- Визуальный макет PNG: продавец видит карточку до загрузки на площадку
# Модель отдаёт JSON — из прозы карточку нечем отрисовать SCHEMA = { "title": "до 60 символов, без повторов слов", "benefits": ["4 пункта"], "specs": [{"k": "параметр", "v": "значение"}], "infographic": ["описательные буллеты для фото"], "gaps": "чего не хватает в данных продавца", } resp = giga.invoke(messages, request_kwargs={"timeout": 180}) card = parse_card(resp.content) # JSON + ретрай при сбое png = render_card_png(card) # тот же макет, что на сайте await update.message.reply_photo(png, caption=card["title"]) await update.message.reply_text(as_text(card)) # для копипаста в кабинет
ТЕХНОЛОГИИ
- GigaChat-2 через langchain-gigachat
- python-telegram-bot для интерфейса
- File API — PDF грузится один раз, ID кешируется
- Рендер макета в PNG из HTML-шаблона
ЧТО УМЕЕТ
- Карточка по любому текстовому описанию товара
- Два ответа: картинка-макет и текст для копипаста
- Контроль длины названия и правил площадки
- Показывает, каких данных не хватает для загрузки
Карточка под ваш товар
На сайте — шесть подготовленных примеров: страница статическая, ключи от модели на ней держать негде. Живой бот работает по любому запросу. А под ассортимент собираю отдельный генератор: ваши шаблоны, категории и выгрузка в кабинет.