Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

Заказчик
Компания «ШинСнаб.рф» — поставщик автомобильных шин и дисков в Самаре.
Задача
Представить на Ozon товары из каталога, включающего более 15000 SKU от поставщиков с разными складскими остатками, условиями доставки и ценообразованием, не имеющего единого формата данных.

Наш клиент — шинный центр «ШинСнаб.рф» — сотрудничает с различными поставщиками шин и дисков и имеет несколько собственных удаленных складов. У каждого поставщика свой формат представления данных: у кого-то есть API, кто-то в XML выгружает, а кто-то по старинке шлет в Excel на почту. Конечно, же состав данных, значения характеристик и прочее не имеют никакого унифицированного формата, каждый как может, так и делает.

У каждого поставщика — порядка 6000 наименований шин и 9000 наименований дисков. 75% товаров у разных поставщиков совпадают между собой, остальные — уникальные. Как правило, это либо остатки по складу, либо непопулярные бренды, каждый из которых представляет только один поставщик.

Итак, мы имеем: разные поставщики, разные форматы данных, разные значения свойств одного и того же товара, разные складские остатки, условия доставки и ценообразования.

Задача: используя сайт компании (отдельный технический инфоблок на нем), импортировать в единую базу данных товары от разных поставщиков, уникализировать их, сопоставляя товары по артикулу, привести все данные к формату, установленному Ozon для товаров, дополнить информацию о товарах из других источников, а также от себя, сгенерировать изображения, как принято на маркетплейсах, выгрузить все массово через API Ozon Seller, настроить обновление информации (товары, остатки, цены) в дальнейшем, выгрузку на сайт заказов с Ozon, получение уведомлений о новых заказах в Telegram.

Решение задачи

Сразу заметим, что готового комплексного решения нам не удалось найти, поэтому поставленную задачу решали с помощью комбинации готовых решений, собственных разработок, а также опыта полученного при работе по интеграции с 1С.

Получаем данные от поставщика

Для примера опишем интеграцию с одним поставщиком — сервисом «Форточки» (4tochki.ru). Он дает возможность настроить выгрузку с нужных нам складов интересующих нас позиций, отобранных по их фильтру, и выполнять экспорт товаров раз в сутки по постоянной ссылке в разных форматах. Мы выбрали удобный для нас XML.

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

Для обработки полученного файла создали технический инфоблок на переработанном ранее нами сайте компании, работающем под управлением «1С-Битрикс» в редакции «Бизнес», и задали необходимые свойства для преобразования и последующего экспорта.

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

Импорт и преобразования реализуем с помощью уже 1000 раз нами испробованному продукту E-solutions: «Импорт из XML». Это сильнейшее решение, способное привести что угодно в заданный формат.

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

Какие проблемы удалось решить с помощью решения:

  • Формат XML, мягко говоря, неоптимален для работы с товарами. К примеру, каждая позиция описана не как привычно для формата CommerceML – информация по товару , а с указанием для каждой категории товаров своего тега, например, — для шин, — для дисков и так далее. Это ломает массовый перебор товаров в секции offers, поэтому пришлось создавать разные профили и грузить сначала теги — для шин — сразу автоматом создавая для них категорию «Шины», для удобства, а диски уже через другой профиль импорта, с обработкой тэгов .
  • Контроль уникальности от разных поставщиков путем проверки по уникальному коду – артикулу. Если товар уже создан в нашей базе по артикулу, то информацию о нем от другого поставщика не применяем, только остатки раскидываем по своим складам, и цены преобразовываем, если их образование не совпадает с общей ценовой политикой. Таким образом мы объединяем информацию от всех поставщиков с контролем дубликатов по артикулу.
  • Цены и остатки приходят в одной и той же секции: <price_samara2>, и тут же —<rest_samara2>. Конечно же, такой файл не обработать. С остатком решение простое: каждый склад сопоставляем с нашим складом на сайте и прогружаем остатки по складам. А вот с ценой — беда. Если товара нет на каком-то из складов – то тега с ценой этого склада вообще нет. На сайте можно, конечно, использовать разные цены – но в конечном итоге в Ozon нужно отправить только одну. Поэтому решением стала проверять последовательно наличие цены и исходя из этого принимать решение, перезаписывать ее или нет. Нас это спасло: если цена не указана для склада в Самаре, но указана, например, для склада в Казани, мы записываем ту, что есть, учитывая, что цены идентичны.
  • Изображения. Чуть далее расскажем про «чудо-генератор» для картинок, но для начала нам нужно было просто загрузить детальное изображение и привести его к единому стандарту, формату и размеру. Дополнительно то же самое изображение загружали в свойство с доп. картинками — это нужно на будущее, чтоб то самое чудо заработало.
  • Описания для товаров. Тут много пришлось поиграть с преобразованиями. Сначала нужно было получить текст по внешней ссылке, в нашем xml-файле описание модели содержится в таком виде «https://www.4tochki.ru/descriptions/models/viatti/Brina_Nordico_V-522/info.html».
    Это описание скачали в формате html и далее применили череду преобразований.
    Это описание скачали в формате html и далее применили череду преобразований: вырезали лишний код, тэги, стили, лишние слова (Ozon запрещает использовать ссылки в описании, названия каналов разных и не только), плюс убрали специфические моменты: длинные слова, спецсимволы (например, TM), вставку изображений в текст описания и так далее. Одним из массовых интеллектуальных решений стало применение преобразований описания в зависимости от свойств товара. Так, например, описание для всей модельной линейки одно, и в ней есть две шины полностью идентичные по параметрам, но одна с технологией RunFlat, другая — без. Ozon ругается: говорит, это одинаковый товар, пообщавшись с техподдержкой приняли решение преобразовывать описание при импорте. Если технологии RunFlat нет – значит, мы вырезаем из описания абзац про эту технологию и вставляем свой текст. Так удалось избежать штрафов от Ozon.
  • Преобразование для поддержания актуальности списка товаров: при отсутствии в последующем в файле информации по товару, он деактивируется. Это важно — ведь если в файле перестанет приходить информация по товару, то он будет болтаться в Ozon с неактуальными данными по цене, остатку и так далее. Затем его кто-то купит, и магазин будет оформлять возврат, что снизит рейтинг и вызовет негодование со стороны покупателя.
  • И, конечно же, множество преобразований свойств, которые у поставщиков записаны по-разному. Не «летняя», а «Лето», не «с шипами», а «Шипованная», не «Pirelli Formula», а «Formula». Потому что Ozon имеет свои справочники свойств, и для импорта значения характеристик должны совпадать буква в букву.

В итоге мы загрузили все товары от разных поставщиков в наш временный инфоблок с товарами:

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

«Чудо-генератор» фото: автоматическая генерация изображений в формате маркетплейсов

Многие видели, наверное, или даже обращались по объявлениям наподобие: «наполнение карточек 100 руб/штука». Отличное предложение! А что делать если у нас 15 000 SCU? Тратить на добавление 1 500 000 р. и год труда? Можно, наверное, как-то использовать ИИ там, или детский труд, но мы поступили по-своему.

Учитывая, что у нас есть изображение шины или диска от поставщика в таком формате:

https://api-b2b.pwrs.ru/15068/pictures/tyres/Antares/Ingens_A1/src/big_0.png

которое выглядит так:

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

и понимая, что шаблон для карточки будет один, в него лишь необходимо подставлять свои для каждого товара значения, мы стали писать код.

Логика работы:

Cкрипт перебирает все товары, подходящие под заданные условия. Они могут быть любыми, к примеру: id инфоблока, раздел, свойство и так далее. Для каждого товара скрипт приводит изображение к стандартной для Ozon пропорции 3:4, преобразовывает в формат .PNG, выполняет кадрирование и наложение поверх картинки данных, полученных из свойств инфоблока. Холст мы создаем заранее: для шин — свой, для дисков — свой. Также берем иконки типов шин из подготовленной базы: шипы, лето, зима и так далее. Далее обрабатываем последовательно каждый элемент и вставляем данные в наш шаблон. Получаем итоговое изображение в стиле карточки маркетплейса и сохраняем его в свойство товара «Картинка для Ozon». Запуск скрипта и отчет оформляем во внешний обработчик.

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

При необходимости изменить картинки выполняем повторный запуск. Он обновляет созданные изображения, создавая новую копию взамен старой. Скрипт максимально универсальный, чтобы количество элементов, располагаемых поверх картинки, можно было варьировать, добавляя свойства и их значения, как при верстке. Стиль текста, картинок и так далее можно прописать аналогично CSS и легко менять потом. Например, можно изменить цвет, размер шрифта, заменить иконку шипа и так далее. Условия задаются через стандартную конструкцию «if else», то есть если свойство «сезонность — лето», то ставим иконку-солнышко, если «зима» — значит снежинку и так далее.

На выходе получаем:

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

Генерация 15 000 картинок занимает около 2 часов. По идее, можно создавать новые шаблоны, менять свойства и так далее в зависимости от бренда или сезона, но для первичной задачи мы оставили единый шаблон для всех шин. И обложки карточек товаров теперь выглядят так:

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

 

Поместив полученное с помощью скрипта изображение в свойство товара «Картинка для Ozon», и добавив, как писали ранее, исходное изображение в «Доп. изображения» мы решили задачу по повышению качества наполняемости карточки в Ozon. Его алгоритмы проверяют наполненность карточки, и наличие 2 и более изображений дает больше баллов, чем только 1 картинка.

Экспорт итоговых обработанных/приведенных данных через API Ozon Seller

Для этой задачи мы использовали решение от студии «ВебПростор»: «Интеграция с Ozon (Озон) через SELLER API: выгрузка товаров, обновление цен и остатков, заказы FBS». Решение интересное, многофункциональное, но сложное в первичной настройке. Зато поддержка решения позволяет получить быстро помощь, а при необходимости ребята могут дописать решение и его функционал под конкретные задачи, сделав модуль еще более функциональным.

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

Что нам удалось решить с помощью этого модуля:

  • Непосредственно сама выгрузка товаров, остатков и цен. Начало настройки интеграции обманчиво простое: получили токен, ключ ввели, и API Озон готово дружить с нами. Далее настройка происходит мучительно долго, приходится сопоставлять каждую характеристику Ozon со свойством нашего товара. Из особенностей настройки: так как Ozon имеет для каждой категории свою специфичность свойств и требований, то нужно чтобы каждый профиль соответствовал одной категории. В нашем случае один профиль с мы используем для шин, еще один — для дисков.
  • Модуль позволяет дорабатывать и дополнять отсутствующие данные шаблонными значениями по умолчанию. К примеру, так мы заполнили ключевые слова, хештеги, размер упаковки и так далее. Обогащая карточку товара данными, мы улучшаем качество наполненности и объем информации, а значит, увеличиваем рейтинг магазина, видимость товара и так далее.
  • Отличным решением стало преобразование ценовой политики. Мы от поставщика получаем входную цену и можем разными формулами привести ее к той цене, по которой она будет продаваться на Ozon. Скидки и прочие условия также могут подтягиваться из условий торгового каталога. К примеру, если активируется «Скидка дня» на товары, цена будет скорректирован и на Ozon и в нашем интернет-магазине. Для этого мы применили простую формулу, прибавляющую % к базе.
  • Связка товаров со схожей характеристикой в серию. У нас товары в рамках одной серии абсолютно идентичны, поэтому в одной карточке удобно показывать другие модели этой же серии.
    Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram
  • Вишенкой на торте стал фильтр, отбирающий, что экспортировать на Ozon. По умолчанию сейчас на Ozon можно отправить только 500 товаров. Нам удалось получить квоту в 20 000 товаров, включая архивные позиции, за все время. Учитывая наш объем в 15 000 SCU только от двух поставщиков — не разбежишься. Решением стал отбор товаров, подходящих под определенные правила, так мы отобрали товары с базовой ценой менее 15 000 р., а также доступные в наличии в количестве более четырех штук — считаем, что большинство людей покупают комплектом. А для штучных продаж есть наш интернет-магазин и офлайн-магазины в городе.

    Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

Важный момент. Учитывая, что мы производим загрузку остатков с разных складов, а в фильтр необходимо ставить значение общего доступного количества, мы сделали еще одно преобразование, выполняемое при периодическом импорте в наш инфоблок. Мы считаем остатки по всем складам и записываем итоговое значение в свойство «Доступное количество». Так мы можем применить нужное условие, и работать складами в Ozon.

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

Дальнейшая обработка остатков, деактивация товаров, списание остатков, возврат из архива, и другие процессы настроены отдельными профилями и зациклены в cron — автоматически запускаются с интервалом раз в сутки. Итого: поставщики формируют свои файлы раз в сутки, сайт кроном забирает их раз в сутки, преобразовывает и вносит в нашу БД, далее по таймеру запускаются процессы экспорта товаров с целью создания/обновления товаров, остатков и цен. Картинка генерируется по событию добавления нового товара. Если товар новый – то для него создаем основное изображение нашим генератором картинок для Ozon.

Итог наполненной карточки можно посмотреть тут.

Выгрузка заказов в админку сайта и уведомления в Telegram

Оперативность и удобство обработки информации в одном окне – пожалуй, не менее важная задача, чем автоматизация бизнес-процессов. С помощью решения по интеграции мы не только экспортируем товары в Ozon, но и получаем заказы в стандартную, привычную для менеджеров компании, админ-панель интернет-магазина. Новый заказ приходит с полностью заполненными данными.

Выход на Ozon с автоматизацией всего: импорт 15000 товаров + генерация фото + заказы в Telegram

Наконец, мы направляем оповещение о новом заказе в специально созданную для этого группу Telegram. В нее добавлены менеджеры и обработка нового заказа происходит в течение максимально короткого времени, ведь если занят один – то заказ увидит второй, нет – третий и так далее. О интеграции с Telegram для бизнеса мы писали подробно здесь.

Резюме

Все это позволило организовать размещение товаров на одном из крупнейших маркетплейсов в автоматическом режиме, без участия человека. Целая плеяда процессов происходит в считанные секунды, автоматизированное следование заданному регламенту обеспечивает точность его соблюдение, устраняя человеческий фактор и его последствия. Поэтому наш клиент может сконцентрироваться исключительно на продажах!


Перейти на сайт

В карточку агентства

Письмо автору кейса

Пользуйтесь реальным опытом в IT и следите за успехами потенциальных подрядчиков и конкурентов
Подпишитесь на рассылку
Читайте также
Кейсы по теме#Авто, мото, спецтехника