Featured image of post Автоматическая генерация карточек товаров для Wildberries: описание и обложка через ИИ

Автоматическая генерация карточек товаров для Wildberries: описание и обложка через ИИ

Пошаговый гайд: настраиваем скрипт, который с помощью YandexGPT пишет продающие описания, а Kandinsky создаёт обложки — готовый пакет для загрузки на маркетплейс, без VPN и зарубежных карт.

Зачем автоматизировать создание карточек для Wildberries

Каждый селлер знает: хорошая карточка — это продающее описание и цепляющая обложка. Но вручную писать тексты для десятков товаров и рисовать картинки — бесконечная рутина. Две российские нейросети, YandexGPT и Kandinsky, умеют делать это за секунды. Настроив простой Python-скрипт, вы сможете по одному названию товара получать готовый контент для загрузки на маркетплейс. Бесплатные лимиты покрывают потребности небольшого магазина, а для работы не нужны VPN и иностранные карты.

В этом гайде мы шаг за шагом создадим генератор карточек: от установки библиотек до сохранения файлов с SEO-описанием и обложкой. Даже если вы никогда не писали код, инструкция проведёт вас по каждому действию.

Что понадобится

  • Компьютер с Python 3.8 или выше.
  • API-ключи от Яндекс.Облака (YandexGPT) и Fusion Brain (Kandinsky). Оба сервиса бесплатны в пределах стартовых лимитов: грант в 4000 ₽ от Яндекса и 100 генераций в день у Kandinsky.
  • Базовое понимание, как запускать программы в терминале.

Все шаги описаны максимально подробно, с готовыми фрагментами кода.

Шаг 1. Получаем ключи доступа

YandexGPT:

  1. Перейдите в консоль Яндекс.Облака, зарегистрируйтесь или войдите.
  2. Создайте платёжный аккаунт (деньги не спишутся, активируется пробный период с грантом).
  3. В разделе «Сервисные аккаунты» создайте новый аккаунт с ролью ai.languageModels.user.
  4. Создайте API-ключ для этого аккаунта — он выглядит как длинная строка символов. Сохраните её.
  5. Запишите идентификатор каталога (folder_id), он отображается в консоли.

Kandinsky:

  1. Зайдите на fusionbrain.ai, авторизуйтесь через почту или Сбер ID.
  2. Перейдите в раздел «API», создайте новый ключ, скопируйте его.

Ключи будем хранить в файле .env, чтобы не публиковать в коде.

Шаг 2. Установка окружения и библиотек

Создайте папку проекта, например wb_card_generator, и внутри неё файл .env с содержимым: YANDEX_API_KEY=ваш_ключ_яндекс YANDEX_FOLDER_ID=ваш_folder_id KANDINSKY_API_KEY=ваш_ключ_kandinsky

text

Откройте терминал в папке проекта и установите необходимые библиотеки:

pip install requests python-dotenv pillow
Теперь создадим файл generate_card.py — именно в нём будет вся логика.

Шаг 3. Генерация продающего описания через YandexGPT
В начале generate_card.py пропишем импорты и загрузку переменных окружения:

python
import os
import requests
import base64
from PIL import Image
from io import BytesIO
from dotenv import load_dotenv
import datetime

load_dotenv()

YANDEX_KEY = os.getenv("YANDEX_API_KEY")
YANDEX_FOLDER_ID = os.getenv("YANDEX_FOLDER_ID")
KANDINSKY_KEY = os.getenv("KANDINSKY_API_KEY")
Функция для отправки запроса к YandexGPT (модель yandexgpt-lite):

python
def ask_yandexgpt(prompt_text, temperature=0.6):
    url = "https://llm.api.cloud.yandex.net/foundationModels/v1/completion"
    headers = {
        "Authorization": f"Api-Key {YANDEX_KEY}",
        "x-folder-id": YANDEX_FOLDER_ID,
        "Content-Type": "application/json"
    }
    data = {
        "modelUri": f"gpt://{YANDEX_FOLDER_ID}/yandexgpt-lite",
        "completionOptions": {
            "stream": False,
            "temperature": temperature,
            "maxTokens": "1000"
        },
        "messages": [{"role": "user", "text": prompt_text}]
    }
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()
    return response.json()["result"]["alternatives"][0]["message"]["text"]
Теперь напишем функцию, которая генерирует описание по названию товара и ключевым характеристикам:

python
def generate_description(product_name, features=""):
    prompt = (
        f"Ты — профессиональный копирайтер для Wildberries. Напиши продающее описание товара "
        f"'{product_name}'. Характеристики: {features if features else 'стандартные'}.\n"
        "Требования:\n"
        "- Длина: 300-400 символов.\n"
        "- Структура: выгоды, технические детали, призыв купить.\n"
        "- Тон: доверительный, грамотный.\n"
        "- Используй ключевые слова: 'купить {product_name}', 'цена', 'доставка'.\n"
        "Не используй шаблонные фразы 'добро пожаловать', 'здравствуйте'."
    )
    return ask_yandexgpt(prompt, temperature=0.7)
Проверить можно так (после объявления функций, в конце файла):

python
if __name__ == "__main__":
    test_desc = generate_description("Умная колонка Яндекс Станция Лайт", "цвет синий, голосовой помощник Алиса")
    print(test_desc)
Запустите python generate_card.py и посмотрите на результат. Нейросеть выдаст готовый текст, пригодный для поля «описание» в карточке.

Шаг 4. Генерация обложки товара через Kandinsky
Добавим функцию, которая создаёт изображение по описанию товара. Чтобы обложка подходила под требования Wildberries (предметная, без лишнего фона), мы сформулируем строгий промпт:

python
def generate_cover(product_name, output_path):
    prompt = (
        f"Professional product photo of {product_name}, isolated on white background, "
        "studio lighting, high resolution, 3/4 angle, clean and sharp details, "
        "no text, no watermarks, no labels"
    )
    
    url = "https://api-key.fusionbrain.ai/key/api/v1/txt2img"
    headers = {
        "X-Key": f"Key {KANDINSKY_KEY}",
        "Content-Type": "application/json"
    }
    payload = {
        "model_id": 4,
        "params": {
            "type": "GENERATE",
            "style": "UHD",
            "width": 900,    # квадратное изображение
            "height": 900,
            "num_images": 1,
            "negativePromptUnclip": "текст, буквы, водяные знаки, логотипы, подписи",
            "generateParams": {
                "query": prompt
            }
        }
    }
    resp = requests.post(url, headers=headers, json=payload)
    resp.raise_for_status()
    img_base64 = resp.json()["images"][0]
    img = Image.open(BytesIO(base64.b64decode(img_base64)))
    img.save(output_path, "WEBP")
    print(f"Обложка сохранена: {output_path}")
Обратите внимание: размер 900x900 пикселей — стандарт для Wildberries. Если нужен другой, просто измените width и height.

Шаг 5. Собираем всё в единый генератор
Теперь объединим обе функции в одну процедуру, которая создаёт полный пакет для карточки:

python
def create_wb_card(product_name, features=""):
    timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
    safe_name = product_name.replace(" ", "_").lower()
    
    # Генерируем описание
    desc = generate_description(product_name, features)
    desc_filename = f"{safe_name}_desc_{timestamp}.txt"
    with open(desc_filename, "w", encoding="utf-8") as f:
        f.write(desc)
    print(f"Описание сохранено: {desc_filename}")
    
    # Генерируем обложку
    cover_filename = f"{safe_name}_cover_{timestamp}.webp"
    generate_cover(product_name, cover_filename)
    
    print("\nГотово! Карточка для товара готова:")
    print(f"Описание: {desc[:100]}...")
    print(f"Обложка: {cover_filename}")

if __name__ == "__main__":
    product = input("Введите название товара: ")
    features = input("Введите характеристики (можно пропустить): ")
    create_wb_card(product, features)
Сохраните файл. Запустите скрипт:

bash
python generate_card.py
Введите название товара, например «Беспроводные наушники Xiaomi Redmi Buds 4». Через несколько секунд в папке проекта появятся два файла: текстовое описание и квадратная обложка.

Шаг 6. Как обрабатывать много товаров сразу
Чтобы автоматизировать массовую генерацию, положите список товаров в CSV-файл products.csv со столбцами name и features. Модифицируйте скрипт:

python
import csv

def process_csv(file_path):
    with open(file_path, "r", encoding="utf-8") as f:
        reader = csv.DictReader(f)
        for row in reader:
            create_wb_card(row["name"], row.get("features", ""))
Теперь можно запускать:

python
if __name__ == "__main__":
    process_csv("products.csv")
За один прогон скрипт подготовит десятки карточек — останется только загрузить их в личный кабинет Wildberries.

Возможные улучшения
Добавить генерацию SEO-заголовков и ключевых слов через YandexGPT.

Подгружать реальные фотографии, если есть (Kandinsky пока не всегда идеально воспроизводит конкретный товар, но для бюджетных ниш работает отлично).

Автоматически заполнять Excel-шаблон Wildberries через библиотеку openpyxl.

Полезные ссылки:

Яндекс.Облако https://cloud.yandex.ru/

Fusion Brain https://fusionbrain.ai/
Создано при помощи Hugo
Тема Stack, дизайн Jimmy