AI-ассистент для селлеров Wildberries: автоматизация рутины на маркетплейсе

AI-ассистент для селлеров Wildberries: автоматизация рутины на маркетплейсе


Проблема: селлер тонет в рутине

Продавать на Wildberries — это не просто выложить товар и ждать. Успешный селлер каждый день:

  • Анализирует продажи: по артикулам, размерам, регионам
  • Мониторит конкурентов: цены, рейтинги, остатки, отзывы
  • Оптимизирует карточки: SEO-заголовки, описания, ключевые слова
  • Отслеживает выкупы: процент выкупа, возвраты, проблемные позиции
  • Планирует рекламу: какие товары продвигать, на какие ключевики
  • Контролирует остатки: когда заказывать, сколько, на какой склад

На все это уходит 3-5 часов в день. И это только базовый анализ без глубокого погружения.

Решение: AI-ассистент с доступом к данным WB

Мы создали AI-ассистента, который:

  1. Подключается к API Wildberries и внутренним данным селлера
  2. Анализирует продажи, остатки, конкурентов
  3. Отвечает на вопросы на естественном языке
  4. Дает рекомендации по оптимизации
  5. Автоматически генерирует отчеты

Как это работает

                              ┌─────────────────┐
Селлер задает вопрос  ───────▶│  AI Assistant   │
"Какой товар хуже всего        │  (GPT-4/Claude) │
продавался на этой неделе?"    └────────┬────────┘

                               ┌────────▼────────┐
                               │  LLM Agent      │
                               │  + Tool calling │
                               └────────┬────────┘

              ┌─────────────────────────┼─────────────────────────┐
              │                         │                         │
      ┌───────▼────────┐     ┌──────────▼─────────┐   ┌──────────▼───────┐
      │ WB API         │     │ Internal DB        │   │ Competitor       │
      │ - Продажи      │     │ - История          │   │ Parser           │
      │ - Остатки      │     │ - Себестоимость    │   │ - Цены, рейтинги │
      │ - Карточки     │     │ - Поставки         │   └──────────────────┘
      └────────────────┘     └────────────────────┘

                               ┌────────▼────────┐
                               │  Ответ селлеру  │
                               │  + рекомендации │
                               └─────────────────┘

Кейс: селлер одежды с оборотом 3 млн ₽/мес

Исходная ситуация:

  • 120 SKU (товары)
  • 15-20 новых поставок в месяц
  • Владелец тратил 4 часа в день на аналитику
  • Excel-таблицы для всех расчетов
  • Упускал возможности (не замечал проблемные позиции)

Что внедрили

1. Интеграция с API Wildberries

from typing import Dict, List
import requests

class WBAPIClient:
    """Клиент для API Wildberries"""

    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://suppliers-api.wildberries.ru"

    def get_sales(self, date_from: str, date_to: str) -> List[Dict]:
        """Получение продаж за период"""
        url = f"{self.base_url}/api/v1/supplier/sales"
        headers = {"Authorization": self.api_key}
        params = {"dateFrom": date_from, "dateTo": date_to}

        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        return response.json()

    def get_stocks(self) -> List[Dict]:
        """Получение остатков на складах"""
        url = f"{self.base_url}/api/v1/supplier/stocks"
        headers = {"Authorization": self.api_key}

        response = requests.get(url, headers=headers)
        response.raise_for_status()
        return response.json()

    def get_orders(self, date_from: str) -> List[Dict]:
        """Получение заказов"""
        url = f"{self.base_url}/api/v1/supplier/orders"
        headers = {"Authorization": self.api_key}
        params = {"dateFrom": date_from}

        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        return response.json()

2. AI-агент с доступом к данным

from langchain.agents import create_openai_functions_agent
from langchain.tools import Tool
from langchain_openai import ChatOpenAI

class WBAnalyticsAgent:
    """AI-агент для анализа данных Wildberries"""

    def __init__(self, wb_client: WBAPIClient):
        self.wb_client = wb_client
        self.llm = ChatOpenAI(model="gpt-4-turbo", temperature=0)

        # Определяем инструменты (tools) для агента
        self.tools = [
            Tool(
                name="get_sales_by_article",
                func=self._get_sales_by_article,
                description="""
                Получить продажи по артикулу за период.
                Аргументы: article (артикул WB), days (число дней назад, по умолчанию 7)
                """
            ),
            Tool(
                name="get_top_products",
                func=self._get_top_products,
                description="""
                Получить топ товаров по продажам за период.
                Аргументы: limit (количество товаров, по умолчанию 10), days (дней)
                """
            ),
            Tool(
                name="get_worst_products",
                func=self._get_worst_products,
                description="""
                Получить товары с худшими продажами / нулевыми продажами.
                Аргументы: limit, days
                """
            ),
            Tool(
                name="analyze_returns",
                func=self._analyze_returns,
                description="Анализ возвратов и выкупаемости по товарам"
            ),
        ]

        self.agent = create_openai_functions_agent(
            llm=self.llm,
            tools=self.tools,
            prompt=self._get_prompt()
        )

    def ask(self, question: str) -> str:
        """Задать вопрос ассистенту"""
        return self.agent.run(question)

    def _get_sales_by_article(self, article: str, days: int = 7):
        """Продажи конкретного товара"""
        # Логика получения данных через WB API
        ...

    def _get_worst_products(self, limit: int = 10, days: int = 7):
        """Худшие товары по продажам"""
        sales_data = self.wb_client.get_sales(
            date_from=(datetime.now() - timedelta(days=days)).isoformat(),
            date_to=datetime.now().isoformat()
        )

        # Группируем по артикулу
        sales_by_article = {}
        for sale in sales_data:
            article = sale['supplierArticle']
            sales_by_article[article] = sales_by_article.get(article, 0) + 1

        # Сортируем по возрастанию
        worst = sorted(sales_by_article.items(), key=lambda x: x[1])[:limit]

        return {
            "worst_products": [
                {"article": art, "sales_count": count}
                for art, count in worst
            ]
        }

3. Telegram-бот для доступа

from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler

class WBAssistantBot:
    """Telegram-бот с AI-ассистентом"""

    def __init__(self, token: str, agent: WBAnalyticsAgent):
        self.agent = agent
        self.app = Application.builder().token(token).build()

        # Обработчики команд
        self.app.add_handler(CommandHandler("start", self.start))
        self.app.add_handler(MessageHandler(filters.TEXT, self.handle_message))

    async def start(self, update: Update, context):
        await update.message.reply_text(
            "Привет! Я AI-ассистент для анализа Wildberries.\n\n"
            "Задавай любые вопросы:\n"
            "• Какие товары лучше всего продаются?\n"
            "• Какой процент выкупа у артикула X?\n"
            "• Сколько осталось товаров на складах?\n"
            "• Покажи динамику продаж за неделю"
        )

    async def handle_message(self, update: Update, context):
        user_question = update.message.text

        # Показываем, что обрабатываем
        await update.message.reply_text("🤔 Анализирую данные...")

        # Получаем ответ от AI-агента
        answer = self.agent.ask(user_question)

        await update.message.reply_text(answer)

    def run(self):
        self.app.run_polling()

Примеры вопросов и ответов

Вопрос: “Какие товары плохо продавались на этой неделе?”

Ответ:

📉 Товары с низкими продажами за последние 7 дней:

1. Футболка "Classic White" (арт. 123456)
   - Продажи: 2 шт
   - Остаток: 48 шт
   - Средняя цена конкурентов: 890₽ (у вас: 1190₽)
   💡 Рекомендация: снизить цену или запустить рекламу

2. Худи "Urban Black" (арт. 789012)
   - Продажи: 0 шт
   - Остаток: 35 шт
   - Средний рейтинг: 4.2 (мало отзывов)
   💡 Рекомендация: улучшить фото, добавить отзывы

3. Джинсы "Slim Fit" (арт. 345678)
   - Продажи: 1 шт
   - Остаток: 22 шт
   💡 Рекомендация: проверить карточку (SEO, ключевики)

Вопрос: “Посчитай мою прибыль за вчера”

Ответ:

📊 Финансы за вчера (17 января):

Выручка: 142 350 ₽
Себестоимость: 68 420 ₽
Комиссия WB (12%): 17 082 ₽
Логистика: 8 340 ₽
Реклама: 5 200 ₽

💰 Чистая прибыль: 43 308 ₽
📈 Рентабельность: 30.4%

Топ-3 товара по прибыли:
1. Толстовка "Winter Warm" — 12 400 ₽
2. Футболка "Basic Navy" — 8 650 ₽
3. Худи "Premium Gray" — 7 320 ₽

Дополнительные функции

SEO-оптимизация карточек

def optimize_product_card(article: str, current_title: str, current_description: str):
    """AI анализирует карточку и предлагает улучшения"""

    prompt = f"""
    Проанализируй карточку товара на Wildberries и предложи улучшения:

    Текущий заголовок: {current_title}
    Текущее описание: {current_description}

    Задачи:
    1. Предложи SEO-оптимизированный заголовок (до 60 символов)
    2. Выдели ключевые слова, которые стоит добавить
    3. Улучши описание для повышения конверсии

    Учитывай правила WB: запрещены эмодзи, восклицания, слова "лучший", "топ" и т.д.
    """

    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )

    return response.choices[0].message.content

Мониторинг конкурентов

def monitor_competitors(article: str, competitor_articles: List[str]):
    """Сравнение с конкурентами"""

    my_product = get_product_info(article)
    competitors = [get_product_info(art) for art in competitor_articles]

    analysis = {
        "price_comparison": {
            "my_price": my_product['price'],
            "avg_competitor_price": np.mean([c['price'] for c in competitors]),
            "min_competitor_price": min([c['price'] for c in competitors]),
        },
        "rating_comparison": {
            "my_rating": my_product['rating'],
            "avg_competitor_rating": np.mean([c['rating'] for c in competitors]),
        },
        "reviews_comparison": {
            "my_reviews": my_product['reviews_count'],
            "avg_competitor_reviews": np.mean([c['reviews_count'] for c in competitors]),
        }
    }

    return analysis

Результаты за 3 месяца

МетрикаДоПосле
Время на аналитику в день4 часа30 минут
Скорость принятия решений1-2 дня< 1 часа
Оборот3.0 млн ₽4.2 млн ₽
Рентабельность22%28%
Количество проблемных позиций15-203-5

ROI: 420% за первые 3 месяца

Эффекты

  • Экономия времени: 3.5 часа × 30 дней × 3000 ₽/ч = 315 000 ₽/мес
  • Рост оборота: +1.2 млн ₽/мес × 28% рентабельность = +336 000 ₽ прибыли
  • Меньше ошибок: автоматизация исключила человеческий фактор

Что можно добавить

1. Автоматические алерты

# Примеры событий для уведомлений:
- Резкое падение продаж товара (> 30% за день)
- Товар закончился на складе (out-of-stock)
- Конкурент снизил цену ниже вашей
- Негативный отзыв (рейтинг < 3)
- Высокий процент возвратов (> 15%)

2. Прогнозирование спроса

# ML-модель для прогноза продаж на 7-30 дней
- Сколько заказать на следующую поставку
- Когда товар закончится на складе
- Какой будет выручка в следующем месяце

3. Автоматизация рекламы

# AI подбирает ключевые слова и управляет ставками
- Анализ конверсии по ключевикам
- Автоматическое отключение неэффективных кампаний
- Оптимизация бюджета между товарами

Технический стек

  • AI/LLM: GPT-4 Turbo, Claude 3.5 Sonnet
  • Agent Framework: LangChain
  • API Integration: WB Suppliers API, requests
  • Database: PostgreSQL (история данных)
  • Bot: python-telegram-bot
  • Monitoring: Grafana + Prometheus

Стоимость содержания

  • API ключи LLM: 15 000 - 30 000 ₽/мес (зависит от нагрузки)
  • Хостинг: 5 000 - 10 000 ₽/мес
  • WB API: бесплатно

Итого: 20 000 - 40 000 ₽/мес

При экономии 315 000 ₽/мес на времени селлера — окупается в 3-5 дней.

Заключение

AI-ассистент для Wildberries:

  • ✅ Экономит 3-4 часа в день на рутине
  • ✅ Помогает принимать решения быстрее
  • ✅ Выявляет проблемы, которые селлер мог упустить
  • ✅ Увеличивает оборот и прибыль на 20-40%

Подходит для селлеров с оборотом от 500 тыс. ₽/мес.


Хотите AI-ассистента для вашего бизнеса на маркетплейсах?

Мы разрабатываем AI-помощников для Wildberries, Ozon, Яндекс.Маркет. Интегрируем с вашими данными, настраиваем автоматические отчеты и рекомендации.

📞 +7 (924) 547-36-78 📧 info@bi-ai.ru 💬 Telegram: @bi_ai_team