Генерация описаний товаров для Wildberries и Ozon через нейросеть
Python-скрипт, который берёт характеристики товаров из CSV, генерирует описания через Zukko, отсеивает тексты с нарушениями и сохраняет результат.
5 мин · · бизнес · автоматизация
Когда в ассортименте сотни позиций, писать описание к каждой карточке на Wildberries и Ozon вручную долго, а описания из каталога поставщика часто сводятся к списку характеристик. Генерация описаний товаров через нейросеть решает это за один прогон: скрипт берёт характеристики из таблицы, модель пишет связный текст, а автоматическая проверка отсеивает явные нарушения. Ниже — готовый скрипт на Python, расчёт стоимости и порядок загрузки на площадки.
Как устроен процесс
- Подготовка данных — CSV с артикулом, категорией, названием и характеристиками.
- Генерация — для каждого товара характеристики уходят модели с подробным заданием.
- Проверка — длина, запрещённые формулировки, контакты и ссылки в тексте.
- Выгрузка — CSV с описаниями и статусом проверки; дальше — загрузка в кабинет продавца или через API площадки.
Модель пишет только на основе того, что вы ей дали. Чем точнее характеристики, тем меньше в тексте общих слов и тем меньше риск, что модель «додумает» несуществующие свойства.
Подготовка CSV
Файл products.csv в кодировке UTF-8:
product_id,category,name,characteristics
A-1001,Электроника,Смартфон X15,"Экран 6,5 дюйма, аккумулятор 5000 мАч, основная камера 50 Мп, 128 ГБ памяти"
A-1002,Электроника,Наушники LP12,"Bluetooth 5.3, активное шумоподавление, до 30 часов работы"
A-1003,Дом и сад,Лампа светодиодная 10 Вт,"Цоколь E27, холодный свет 6500 К, 900 лм"Поля:
product_id— ваш артикул, по нему потом сопоставляются результаты;category— категория товара;name— название;characteristics— всё, что известно о товаре: размеры, материалы, комплектация, особенности.
Python-скрипт генерации описаний
Зависимость одна: pip install requests. Ключ — в переменной окружения ZUKKO_API_KEY.
import csv
import os
import re
import sys
from concurrent.futures import ThreadPoolExecutor
import requests
API_URL = "https://api.zukko.pro/v1/chat/completions"
MODEL = "glm-5.3-flash"
MIN_LEN, MAX_LEN = 800, 2000 # границы длины в символах, поставьте свои
FORBIDDEN = ["лучший", "№1", "гарантированно", "100%", "не имеет аналогов"]
CONTACTS_RE = re.compile(Что в нём важно:
- Параллельность.
ThreadPoolExecutorобрабатывает до четырёх товаров одновременно, а не по одному. Если начнутся ответы429, уменьшитеmax_workers. - Ошибки не роняют прогон. Сбой на одном товаре попадает в колонку
statusкакerror: ..., остальные продолжают обрабатываться. - Проверка не заменяет человека. Статус
check: ...значит, что текст нужно посмотреть глазами. Статусok— что явных нарушений не нашлось, но фактические ошибки скрипт не поймает. - Учёт токенов. Колонка
tokensберётся из поляusageответа — по ней видно реальный расход.
Запуск
pip install requests
export ZUKKO_API_KEY=fetch_ваш_ключ
python generate_descriptions.pyРезультат — descriptions.csv с колонками product_id, name, description, status, tokens. Откройте его в табличном редакторе, отфильтруйте строки со статусом, отличным от ok, и поправьте их вручную или перезапустите для них генерацию.
Расчёт стоимости
Для русского текста токенов обычно больше, чем слов, поэтому прикиньте с запасом: около 300 входных токенов (задание и характеристики) и около 600 выходных на один товар. На 1000 товаров это 0,3M входных и 0,6M выходных токенов.
| Модель | Цена вход/выход за 1M | Расчёт | 1000 товаров | 10 000 товаров |
|---|---|---|---|---|
glm-5.3-flash | $0.04 / $0.04 | 0,3 × 0,04 + 0,6 × 0,04 | $0.036 | $0.36 |
gpt-5.6-luna | $0.1 / $0.1 | 0,3 × 0,1 + 0,6 × 0,1 | $0.09 | $0.90 |
claude-sonnet-5 | $0.3 / $0.3 | 0,3 × 0,3 + 0,6 × 0,3 | $0.27 | $2.70 |
После первого прогона замените оценку на реальные цифры из колонки tokens. Какая модель пишет приемлемые тексты для ваших категорий, проверьте сами: сгенерируйте описания для 20 товаров двумя-тремя моделями и сравните их бок о бок. Актуальный список моделей — GET https://api.zukko.pro/v1/models или страница «Модели» в кабинете, параметры запроса — в документации Chat Completions.
Загрузка на Wildberries и Ozon
Самый надёжный путь для первых партий — загрузить готовые описания через кабинет продавца (массовое редактирование карточек через шаблон таблицы): вы видите, что именно меняется.
Для автоматической загрузки у обеих площадок есть API: Content API у Wildberries (документация на dev.wildberries.ru) и Seller API у Ozon (docs.ozon.ru/api/seller). Названия методов, версии и идентификаторы атрибутов там меняются, поэтому берите их только из актуальной документации, а не из примеров в статьях. Перед массовым обновлением проверьте две вещи:
- перезаписывает ли метод карточку целиком — если да, сначала получите текущую карточку и меняйте в ней только описание;
- проходит ли изменённая карточка модерацию — начните с нескольких товаров.
Требования площадок
Правила для описаний у Wildberries и Ozon свои и периодически обновляются: допустимая длина, запрет на контакты и ссылки, ограничения на рекламные формулировки. Сверьте их с актуальными правилами в кабинете продавца и перенесите в скрипт: границы длины — в MIN_LEN и MAX_LEN, запрещённые слова — в FORBIDDEN, сами требования — в текст задания PROMPT.
Частые вопросы
Описания получаются похожими друг на друга — что делать?
Дайте модели больше конкретики. Вместо «смартфон с большим экраном» укажите «экран 6,5 дюйма, аккумулятор 5000 мАч, вес 185 г, цвет чёрный». Чем больше уникальных характеристик в CSV, тем сильнее тексты различаются. Можно добавить в CSV колонку с особенностями товара или целевой аудиторией и подставить её в задание.
Как обработать 10 000 товаров?
Скрипт выше справится, но запускайте частями по 500–1000 строк: так проще проверять результат и перезапускать ошибки. Задайте ключу дневной лимит расходов в кабинете — он защитит от неожиданного перерасхода, если что-то пойдёт не так.
Маркетплейс отклонил описание — почему?
Частые причины: текст длиннее допустимого, в нём есть запрещённые формулировки, контакты или утверждения, которые не подтверждаются характеристиками. Добавьте найденные слова в FORBIDDEN, а требование — в задание.
Можно ли генерировать описания по фотографии товара?
Это отдельная задача: нужна модель с поддержкой изображений и другой формат запроса — уточните в документации, какие модели это поддерживают. Для описаний надёжнее опираться на характеристики из карточки поставщика: так модель меньше домысливает.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- Нейросеть для тестировщика: тест-кейсы, чек-листы и баг-репортыКак QA-инженеру использовать модель для тест-кейсов, чек-листов и баг-репортов, проверять полноту покрытия и не получить придуманные требования.
- Обезличивание данных перед отправкой в нейросеть: практический подходПерсональные данные не нужно отправлять модели, чтобы она обработала документ. Показываем, как заменять их метками, возвращать в ответ и проверять, что ничего не просочилось.
- Нейросеть для HR: вакансии, письма кандидатам и разбор резюмеМодель может готовить черновики вакансий и писем и делать первичный разбор резюме. Разбираем, что отдавать, как работать с персональными данными кандидатов и как не допустить предвзятых решений.
- Генерация FAQ нейросетью: вопросы из обращений и ответы по базе знанийХороший FAQ строится на том, что клиенты правда спрашивают. Показываем пайплайн: группируем обращения, отвечаем по базе знаний со ссылкой на источник и проверяем результат.