20 прайсів постачальників в один формат: як влаштована контент-машина маркетплейсу

20 прайсів постачальників в один формат

У великого маркетплейсу є проблема, про яку зовні не здогадуються: контент. Щоб товар з’явився на порталі, його треба отримати від постачальника, привести до внутрішнього формату, розкласти по категоріях і регулярно оновлювати. Постачальників десятки, і кожен віддає дані по-своєму.

Почали з одного прайсу. Зараз працює близько двадцяти джерел, і нові додаються регулярно.

20 прайсів постачальників в один формат

Модель роботи: платіж за джерело

Домовилися одразу: оплата рахується за кожне джерело окремо, щомісяця. Ця схема виявилася зручною обом сторонам, і я тепер часто її пропоную.

  • Замовнику зрозуміло, за що платить. Додали постачальника – додався платіж. Постачальник відвалився – платіж пішов. Ніяких переговорів про перегляд загальної суми.
  • Легко почати. Перший прайс коштує стільки ж, скільки один прайс, а не як “проєкт інтеграції”. Поріг входу низький.
  • Виконавцю чесно. Кожне джерело – це реальна робота і реальний ризик поломки. Двадцять джерел вимагають у двадцять разів більше уваги, ніж одне.
  • Зростання відбувається само. Замовник не питає дозволу і не запускає процес узгодження бюджету, він просто пише: “ось ще один постачальник”.

Ще один плюс такої схеми: якщо бізнесу потрібно тимчасово скоротити витрати, можна зупинити частину джерел, а не весь проєкт, і потім так само легко їх повернути.

Що приходить від постачальників

Двадцять джерел – це чотири принципово різні типи.

XML-фіди за посиланням

Найзручніший варіант. Постачальник дає адресу, за якою лежить актуальний файл. Складність тільки в тому, що структура у всіх різна: різні назви полів, різна вкладеність, різна логіка категорій і характеристик.

Google Таблиці

Приблизно чверть джерел ведеться руками в таблицях. Це найнепередбачуваніший формат: люди додають колонки, міняють порядок, пишуть примітки в комірках з цінами, вставляють порожні рядки-роздільники. Обробка таких джерел має бути параноїдальною і не вірити нічому.

Особисті кабінети з авторизацією

Постачальник видає доступ до свого кабінету, звідки треба забирати каталог. Скрипт заходить під виданими даними і збирає інформацію. Тут головне – акуратність: сесія, ліміти, коректна поведінка. Роботу від імені клієнта з його ж доступом я роблю тільки за прямим дорученням.

Звичайні сайти

Іноді у постачальника немає ніякого вивантаження, є тільки сайт. Тоді дані збираються прямо з нього.

Єдиний внутрішній формат – головне архітектурне рішення

Спокуса написати двадцять окремих скриптів “з джерела одразу у формат порталу” велика. Це помилка, яка стає очевидною на п’ятому джерелі.

Правильна схема – два шари:

  1. Адаптер джерела. Знає тільки одне: як дістати дані з конкретного постачальника і привести їх до єдиної внутрішньої структури.
  2. Формувач вивантаження. Знає тільки внутрішню структуру і вимоги порталу.

Що це дає:

  • портал змінив вимоги до фіда – правиться один формувач, а не двадцять скриптів;
  • новий постачальник – пишеться тільки адаптер, решта вже готова;
  • перевірки якості даних пишуться один раз і працюють для всіх джерел;
  • новий адаптер додається швидко і без переробки решти.

Саме тому додавання нових прайсів у цьому проєкті йде потоком і не викликає у мене паніки.

Перевірки, без яких не можна

Коли джерел двадцять, руками перевіряти неможливо. Тому кожне вивантаження проходить автоматичний контроль:

  • кількість товарів різко впала порівняно з попереднім разом – стоп і сповіщення;
  • у більшості позицій зникла ціна – стоп;
  • з’явилися нульові або від’ємні ціни – позиції відкидаються;
  • дублі за артикулом усередині одного джерела – зводяться за заданим правилом;
  • кодування і спецсимволи – перевіряються перед формуванням файлу.

Принцип простий: краще не оновити каталог зовсім, ніж оновити його сміттям. Порожній прайс на порталі помітять за годину, а тихо зіпсовані ціни можуть жити тижнями і коштувати грошей.

Оновлення раз на дві години

Частота підібрана під бізнес: дані мають бути свіжими, але постійне довбання джерел нікому не потрібне. Двадцять джерел оновлюються за розкладом, рознесеним у часі, щоб не створювати піків навантаження ні на сервері, ні у постачальників.

Окремо варто сказати про різні швидкості. Не всі джерела потрібні однаково часто: у когось прайс міняється кілька разів на день, у когось раз на тиждень. Розклад під кожне джерело налаштовується окремо.

Що це дає бізнесу

  • Контент-команда не займається механічною роботою. Люди працюють над якістю карток, а не над перекладанням колонок.
  • Новий постачальник підключається швидко. Це прямо впливає на швидкість зростання асортименту.
  • Дані однорідні. Усі товари на порталі виглядають однаково незалежно від того, від кого прийшли.
  • Проблеми видно одразу. Якщо постачальник зламав свій прайс, про це відомо в той самий день, а не коли поскаржиться покупець.

Кому підходить така схема

Маркетплейсам, агрегаторам, дистриб’юторам і будь-яким магазинам, що працюють більш ніж з трьома-чотирма постачальниками. Точка, після якої ручна обробка стає дорожчою за автоматизацію, настає дуже швидко – зазвичай на третьому-четвертому джерелі.

Ознака, що вам це вже потрібно: у компанії є людина, яка значну частину тижня займається перекладанням прайсів у потрібний формат.

Опишіть, скільки у вас постачальників і в якому вигляді вони віддають дані. Я скажу, скільки часу займе перше джерело і як буде виглядати підключення наступних. Детальніше про формати – на сторінці конвертація прайс-листа постачальника в YML.

Часті питання

Чому не писати окремий скрипт під кожного постачальника?+
Тому що на п'ятому джерелі це стає некерованим. Правильна схема - два шари: адаптер джерела і формувач вивантаження. Тоді зміна вимог порталу правиться в одному місці, а не в двадцяти.
Що станеться, якщо постачальник віддасть зіпсований прайс?+
Спрацюють перевірки: різке падіння кількості товарів, зникнення цін, нульові значення. Оновлення зупиняється, приходить сповіщення. Краще не оновити каталог, ніж оновити його сміттям.
Чому оплата рахується за кожне джерело окремо?+
Так зрозуміло обом сторонам, за що платять. Додали постачальника - додався платіж, відвалився - платіж пішов. Починати можна з одного прайсу без узгодження великого бюджету.
Як часто оновлюються дані?+
Базово раз на дві години, але розклад під кожне джерело налаштовується окремо - у когось прайс міняється кілька разів на день, у когось раз на тиждень.
Схожа задача?

Опишіть її - за 15-20 хвилин скажу, чи вирішується вона, яким шляхом і скільки орієнтовно коштуватиме. Без зобов'язань.

Обговорити задачу →