AI-ассистент для селлеров Wildberries: автоматизация рутины на маркетплейсе
Проблема: селлер тонет в рутине
Продавать на Wildberries — это не просто выложить товар и ждать. Успешный селлер каждый день:
- Анализирует продажи: по артикулам, размерам, регионам
- Мониторит конкурентов: цены, рейтинги, остатки, отзывы
- Оптимизирует карточки: SEO-заголовки, описания, ключевые слова
- Отслеживает выкупы: процент выкупа, возвраты, проблемные позиции
- Планирует рекламу: какие товары продвигать, на какие ключевики
- Контролирует остатки: когда заказывать, сколько, на какой склад
На все это уходит 3-5 часов в день. И это только базовый анализ без глубокого погружения.
Решение: AI-ассистент с доступом к данным WB
Мы создали AI-ассистента, который:
- Подключается к API Wildberries и внутренним данным селлера
- Анализирует продажи, остатки, конкурентов
- Отвечает на вопросы на естественном языке
- Дает рекомендации по оптимизации
- Автоматически генерирует отчеты
Как это работает
┌─────────────────┐
Селлер задает вопрос ───────▶│ 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-20 | 3-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