Что такое YML-фид и как выгружать товары в Директ и маркетплейсы
YML-фид — это файл, в котором магазин регулярно отдаёт площадке сведения о товарах в структурированном виде. Не фотографию каталога и не таблицу «как получилось», а набор полей по правилам: идентификатор, название, цена, ссылка, изображение, категория, наличие и характеристики.
Площадка читает файл по URL и обновляет объявления или карточки. Благодаря этому не нужно вручную менять цену в нескольких кабинетах. Но автоматизация полезна только тогда, когда фид точен: ошибка размножается так же быстро, как правильные данные.
Откуда берутся данные
Источником может быть CMS магазина, 1С, CRM поставщика или отдельная таблица. Я стараюсь генерировать фид из системы, где данные уже поддерживаются в актуальном состоянии. Ручная копия каталога быстро расходится с сайтом.
До настройки определяем хозяина каждого поля. Цена и остаток часто приходят из учётной системы, описание и изображения — с сайта. Генератор собирает их в один документ по расписанию.
Ключевые части фида
Идентификатор предложения
ID должен быть уникальным и стабильным. Если он меняется при каждой выгрузке, площадка воспринимает знакомый товар как новый, теряет историю и создаёт дубли.
Категории
Сначала передаётся дерево категорий, затем каждый товар ссылается на существующий узел. Внутренняя структура магазина и классификатор площадки могут различаться, поэтому иногда нужен отдельный маппинг.
Название и описание
Поля должны помогать узнать товар и отличить вариант, но не превращаться в перечень рекламных лозунгов. Ограничения конкретной площадки меняются; генератор должен уметь чистить недопустимую разметку и контролировать длину.
Цена, старая цена и валюта
Цена в фиде обязана совпадать с посадочной страницей. Если акция закончилась на сайте, а старый файл ещё доступен, объявление вводит человека в заблуждение и может быть отклонено. При генерации я проверяю положительное значение и понятные правила скидки.
Наличие
Логическое «есть/нет» не всегда отражает реальность: товар может быть под заказ или доступен только на одном складе. Формат выбирается с учётом требований получателя, а внутри проекта хранится более точная модель.
Ссылки и изображения
URL должен открываться без авторизации, редиректов и параметров тестовой среды. Изображение — быть достаточного качества, без заглушек и водяных знаков, если правила площадки их запрещают. Для вариантов полезно передавать правильную фотографию цвета, а не общую обложку.
Варианты товара
Размеры и цвета можно передавать отдельными предложениями, объединёнными в группу. У каждого варианта собственные ID, цена, остаток и ссылка. Если выгрузить одну строку «футболка, все размеры», площадка не узнает, что размер M закончился.
Чем YML отличается от CSV и API
CSV удобен человеку и простым импортам, но хуже описывает вложенные категории и сложные параметры. YML — XML-формат с определённой структурой, который площадка периодически забирает. API позволяет отправлять изменения почти сразу и получать ответы по каждому объекту, но требует авторизации, очередей и более сложной обработки ошибок.
Выбор зависит от требований получателя. Иногда один каталог отдаётся в YML для рекламы, CSV поставщику и API маркетплейсу.
Валидация до публикации
Проверка синтаксиса XML — только первый слой. Файл может быть технически валидным, но содержать товар без изображения, отрицательную цену или ссылку на удалённую категорию. Я добавляю бизнес-проверки:
- уникальные и непустые ID;
- существующие категории;
- корректные цена и валюта;
- доступные URL товаров и изображений;
- обязательные параметры для выбранной категории;
- разумное изменение количества товаров между запусками.
Автоматическое обновление без неприятных сюрпризов
Генерация идёт по расписанию во временный файл. После успешной проверки новый файл атомарно заменяет предыдущий. Если источник вернул пустой каталог, рабочая версия остаётся на месте, а администратор получает уведомление. Так краткий сбой не удаляет все предложения из рекламы.
В журнале сохраняются время, количество товаров, предупреждения и ошибки. Для большого каталога полезен отчёт об изменениях: резкое падение цен или исчезновение половины позиций видно до того, как это заметят покупатели.
Один фид не всегда подходит всем
У рекламной системы и маркетплейса отличаются обязательные поля, категории и правила названий. Вместо одного перегруженного файла надёжнее создать профили выгрузки из общего источника. Товары можно включать по категории, остатку, марже или отдельному признаку.
Для такой работы я сделал продукт MW1 Feeds, а настройку конкретных каналов можно включить в работу с маркетплейсами или интеграционный проект. Начать стоит с образца исходных данных и требований площадки — по ним сразу видно, чего каталогу не хватает.