Как выгрузить товары с сайта в Excel для маркетплейса

Магазин два года продавал через сайт, каталог вырос до 800 позиций — и вот решение: выходить на Ozon или WB. В кабинете маркетплейса встречает Excel-шаблон на двадцать колонок, а весь каталог живёт в админке сайта. Переносить товары руками — неделя копипасты и гарантированные опечатки. На деле почти вся работа уже сделана: каталог на сайте и есть прайс, осталось выгрузить его и привести к чужому шаблону.

Откуда взять выгрузку каталога

Почти любая CMS умеет отдавать товары файлом. Искать надо в разделе каталога или настроек магазина, обычно под именем «Экспорт», «Выгрузить» или «Экспорт товаров»:

  • Конструкторы (Tilda и подобные) — экспорт каталога в CSV из раздела управления товарами.
  • WordPress с WooCommerce — штатный экспорт товаров в CSV, включая произвольные атрибуты и мета-поля.
  • InSales и похожие SaaS-платформы — экспорт в CSV, иногда дополнительно в YML.
  • Самописный сайт — кнопки экспорта может и не быть. Тогда разработчика просят выгрузить товары из базы сразу в CSV или Excel: это работа на полчаса, а не на неделю.

Если сайт отдаёт YML-фид для рекламных систем — это тоже выгрузка каталога, просто в XML-обёртке. Как такой файл превратить в таблицу, разобрано в статье про конвертацию XML в Excel. На выходе любого из этих путей должна получиться таблица: строка — товар, колонки — поля.

Почему выгрузка сайта — не шаблон маркетплейса

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

  • описания с HTML-разметкой: <p>, <strong>, списки, ссылки — сайт показывал их как форматирование, а в Excel они лежат текстом;
  • SEO-поля: title страницы, meta description, человеко-понятный URL;
  • ссылки на картинки вместо самих картинок;
  • служебные ID: id товара в базе, id категории, признак «показывать на сайте», порядок сортировки;
  • путь категории сайта слэшами — «Обувь/Кеды/Женские», который не совпадает с категориями площадки.

Маркетплейс же ждёт свой минимум: артикул продавца, наименование, бренд, цена, штрихкод и характеристики своей категории. Имена колонок другие, порядок другой, лишние колонки шаблону не нужны — загрузка с ними либо упадёт, либо забьёт карточки мусором. Какие колонки вообще стоит держать в рабочем прайсе, разобрано в статье как составить прайс-лист.

Экспорт каталога из CMS: тридцать колонок, из которых маркетплейсу нужны пять
Типичный экспорт из CMS: SEO-поля, id, ссылки на картинки — всё это пойдёт под нож

Приводим выгрузку к шаблону конвертером

Ручной вариант — удалить двадцать колонок в Excel, переименовать оставшиеся, вычистить теги — занимает вечер и ломается при следующей выгрузке. Быстрее прогнать файл через конвертер прайс-листов: загружаете CSV или XLSX и идёте по шагам с живым превью.

Структура. Если экспорт приехал с «красивой» шапкой — название магазина первой строкой, пустые строки-разделы — на этом шаге указываете, с какой строки начинается таблица, и убираете лишнее.

Колонки. Основная работа здесь:

  • удаляете всё сайтовое: SEO-поля, id, признаки видимости, URL картинок;
  • переименовываете оставшееся под шаблон площадки: «Название товара» в «Наименование», «Артикул (SKU)» в «Артикул продавца»;
  • переставляете колонки в порядке шаблона;
  • при необходимости собираете название склейкой по шаблону — «{Бренд} {Наименование}».
Шаг «Колонки»: лишние поля удалены, оставшиеся переименованы под шаблон площадки
Шаг «Колонки»: от тридцати полей сайта остались те, что ждёт маркетплейс

Чистка описаний. HTML-теги убираются действием «Заменить текст»: тег меняется на пустую строку. Один нюанс — замена работает по точному совпадению, поэтому каждый тег убирается отдельным действием: <p>, </p>, <br>, <strong> и так далее. Обычно хватает пяти-семи замен, чтобы покрыть всю типовую разметку. Смотрите на превью: если в тексте остались угловые скобки, значит, какой-то тег ещё не добавлен в список.

Фильтры. Отсекаете лишние строки: товары со статусом «скрыт», позиции без цены, архивные категории. Условий может быть несколько сразу.

Артикулы и цены: где чаще всего ломается

Артикул — это ключ. Если на сайте артикул «KB-1042», то и на маркетплейсе у этого товара должен быть тот же «KB-1042». Разные артикулы на сайте и площадке превращают каждое обновление цен в квест «найди соответствие», а автоматическую синхронизацию — в рассадник дублей карточек. Правило простое: латиница, цифры, дефис, без пробелов — и одно значение везде.

Цена на сайте — не цена для площадки. На сайте обычно лежит итоговая цена со скидкой, а маркетплейс просит «цену до скидки», от которой сам рисует зачёркнутую. Логика простая: либо берёте из выгрузки колонку со старой ценой, либо накручиваете нужную величину действиями «Умножить» и «Округлить» до рублей. Точные требования к ценовым полям проверяйте в актуальном шаблоне своей площадки — у каждой свои поля и названия.

Дальше файл становится источником для всех площадок сразу: тот же каталог переодевается под шаблон Ozon, WB или Маркета сменой настроек. Как это устроено, написано в статье про один прайс для разных площадок. А сохранённые шаблоны настроек (доступны после регистрации) превращают повторную выгрузку в минуту: обновили каталог на сайте — экспорт — конвертер — загрузка.

Экспорт готового файла: XLSX со значениями под шаблон маркетплейса
На выходе — XLSX со значениями, который площадка примет с первого раза

Частые вопросы

В админке сайта нет кнопки экспорта — что делать?

Значит, каталог лежит в базе, и его нужно выгрузить оттуда. Попросите разработчика или поддержку платформы отдать товары в CSV или Excel: это штатная операция, а не доработка. Параллельно проверьте, не отдаёт ли сайт YML-фид для рекламных систем — он тоже содержит весь каталог и конвертируется в таблицу.

Выгрузка пришла в CSV, а маркетплейс просит XLSX

Это не проблема: конвертер читает CSV и отдаёт XLSX со значениями, без формул. Заодно решается вопрос с лишними колонками и тегами — вы всё равно проходите шаги приведения, а не просто меняете расширение файла.

Как полностью вычистить HTML из описаний?

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

Артикулы на сайте и на маркетплейсе не совпадают — это критично?

Для разовой загрузки — терпимо, для регулярной работы — нет. Совпадающий артикул — единственный надёжный способ сопоставить товар на сайте с карточкой на площадке. Без него обновление цен и остатков превращается в ручной поиск соответствий, а автоматизация даёт дубли карточек. Приведите артикулы к единому правилу до первой загрузки.