12 мин чтения Интернет-магазины

YML-фид: как выгрузить каталог магазина в Яндекс и не ошибиться

интернет-магазины
Содержание12

YML-фид — XML-файл, в котором магазин описывает себя и свои товары в формате Яндекса: категории, цены, наличие, ссылки и картинки. Файл лежит на сайте по постоянному адресу, а Яндекс сам забирает его и проверяет. Чтобы фид приняли, нужны уникальные постоянные id, данные, совпадающие с сайтом, и правильные заголовки сервера.

Что такое YML-фид и где он нужен

Товарный фид — это файл формата YML с информацией о магазине и товарах. YML, или Yandex Market Language, — собственный стандарт Яндекса, основанный на XML. Он нужен, чтобы Яндекс получил весь каталог одним файлом и не собирал данные со страниц сайта по одной.

Из одного каталога фиды получают разные сервисы. Яндекс Товары показывают предложения магазина в поиске, а Директ принимает товарные фиды для рекламных кампаний. У каждого сервиса свои требования к содержимому, но основа формата одна. Поэтому первая задача — собрать корректный файл, а вторая — проверить его по правилам нужного сервиса.

Для магазина фид — продолжение каталога на сайте. Если названия, цены и наличие в каталоге в порядке, фид получится почти автоматически. Если в каталоге хаос, фид его только покажет. Как устроены категории и разделы магазина, разобрано в статье про структуру интернет-магазина.

YML-фид — это каталог магазина в виде файла. Качество фида не выше качества данных в каталоге.

Из чего состоит YML-файл

YML-файл — это XML-документ с одним корневым элементом. В формате YML корневой элемент называется yml_catalog. Внутри него лежит блок shop с данными о магазине, списком валют, деревом категорий и списком товарных предложений.

  • yml_catalog — корень документа; атрибут date хранит время формирования файла.
  • shop — общие сведения: название магазина, адрес сайта, платформа.
  • currencies и categories — валюты и дерево категорий; их указывают перед списком предложений.
  • offers — контейнер, внутри которого каждый товар описан отдельным элементом offer.
  • offer — одно предложение: адрес страницы, цена, валюта, категория, картинки, название и описание.

Минимальный набросок файла выглядит так:

<yml_catalog date="2026-10-02T10:00:00+03:00">
  <shop>
    <name>Магазин</name>
    <url>https://shop.example.ru</url>
    <currencies><currency id="RUR" rate="1"/></currencies>
    <categories><category id="1">Чайники</category></categories>
    <offers>
      <offer id="1001">
        <url>https://shop.example.ru/catalog/chaynik-1001/</url>
        <price>2990</price>
        <currencyId>RUR</currencyId>
        <categoryId>1</categoryId>
        <name>Чайник электрический Бренд Модель</name>
      </offer>
    </offers>
  </shop>
</yml_catalog>

Пример учебный: адрес и товары условные. Полный список элементов и обязательность каждого берите из справки сервиса, в который отправляете фид: у Товаров, Директа и Маркета наборы различаются.

Два типа описания товара: name или vendor.model

Предложение можно описать двумя способами, и они различаются только способом передачи названия. В упрощённом типе название товара лежит в одном элементе name. В произвольном типе название собирается из трёх элементов: typePrefix, vendor и model, а в offer добавляется атрибут type="vendor.model".

В произвольном типе элементы vendor и model обязательны: нет производителя или модели — фид с этим товаром не примут. Если у вас нет этих характеристик, используйте упрощённый тип. Справка Яндекс Товаров считает оба типа равными по возможностям и советует выбрать тот, что удобнее поддерживать.

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

Название по любому из способов должно описывать товар, а не акцию. В название нельзя включать условия продажи: слова «скидка» или «бесплатная доставка». Для скидок есть отдельный элемент oldprice, для условий — sales_notes.

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

Факт. Справка Яндекс Товаров запрещает указывать в названии товара условия продажи, например «скидка» и «бесплатная доставка».

Идентификаторы товаров: уникальные и постоянные

Идентификатор id — главное поле предложения: по нему Яндекс узнаёт товар от выгрузки к выгрузке. Правил три, и ошибки в них самые дорогие.

  1. Уникальность

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

  2. Постоянство

    Идентификатор не меняется во всех версиях фида: сегодняшний id товара должен совпасть с завтрашним.

  3. Привязка к фиду

    Предложение не следует переносить из одного фида в другой: оно временно пропадёт из показов.

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

Если в магазине подключена электронная коммерция в рекламных сервисах, id товаров на сайте и в фиде тоже должны совпадать: это нужно для корректных рекомендаций и ретаргетинга. Решение, какой идентификатор использовать, лучше принять один раз и записать в техническое задание на каталог.

Как выгрузить фид из каталога

Выгрузить фид можно тремя путями: модулем платформы, скриптом разработчика или вручную из таблицы. Выбор зависит от размера каталога и от того, как часто он меняется.

Справка Яндекс Товаров отмечает, что для популярных CMS доступны модули подключения. Их нужно использовать только для формирования фида и ссылки на него. Яндекс не отвечает за качество модулей, которые сделали сторонние разработчики, поэтому результат всё равно нужно проверять. В списке модулей справки есть и платформа 1С-Битрикс. Как каталог, заказы и учёт связываются в одной системе, описано на странице про 1С-Битрикс: интернет-магазин и CRM.

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

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

Как отдать фид Яндексу

Яндексу нужна ссылка на файл, а не сам файл. Фид лежит на сайте магазина по постоянному адресу, а ссылку на него добавляют в личном кабинете сервиса. Добавить ссылку можно только на фид с сайта, к которому у вас подтверждены права.

Яндекс Товары принимают YML-файл с расширением xml, yml или php. Сервер должен отдавать файл с корректным заголовком Content-type: допустимы application/xml, application/octet-stream или text/xml. Заголовок проверяют до загрузки: страница, которая отдаёт файл как text/html, фид сломает.

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

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

Совпадение фида и сайта: где отклоняют чаще всего

Яндекс сверяет фид с тем, что видит покупатель на сайте. Фид могут отклонить из-за различной информации в нём и на сайте: цена, наличие и название должны совпадать с карточкой товара.

Сведения о наличии, указанные в фиде, должны совпадать с информацией на странице перехода и на страницах оформления покупки. Если в фиде товар «в наличии», а на сайте «нет», это ошибка. Фид обновляется по расписанию, а сайт живёт постоянно: между выгрузками цены и остатки расходятся.

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

Проверка товаров идёт выборочно. Если более 25% проверенных товаров содержат ошибки, источник данных может быть полностью отключен от показов. Поэтому одна систематическая ошибка, например неверная валюта у всей категории, опаснее десятка случайных.

Факт. Если более 25% проверенных товаров содержат ошибки, Яндекс Товары могут полностью отключить источник данных от показов.

Отдельные фиды для Яндекс Товаров и Маркета

Фиды для Яндекс Товаров и Яндекс Маркета во многом схожи и часто формируются одним модулем CMS. Но некоторые элементы Маркета для Товаров необязательны или не используются, поэтому справка советует делать отдельные фиды.

Практическое правило: если вам нужны фиды для нескольких сервисов, формируйте их отдельно и храните по разным адресам. Один «универсальный» файл рано или поздно нарушит требования одного из сервисов, а исправление тут сломает другой. Правила разных сервисов стоит сверять с их текущей справкой: требования обновляются, и описание, верное год назад, может устареть.

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

Частые ошибки в YML-фиде

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

  • 01 Номер строки вместо id

    Идентификаторы меняются от выгрузки к выгрузке, и товары воспринимаются как новые.

  • 02 Скидка в названии

    «Чайник, скидка» вместо чистого названия и oldprice.

  • 03 Нет vendor или model при типе vendor.model

    Предложение игнорируется.

  • 04 Устаревшие остатки

    На сайте товар закончился, а в фиде он «в наличии».

  • 05 Неверный заголовок сервера

    Файл отдаётся как страница, а не как XML.

  • 06 Один фид на все сервисы

    Элементы одного сервиса ломают проверку другого.

Порядок запуска фида

Фид запускают по шагам, и первый шаг — не файл, а данные. Сначала проверьте каталог: у каждого товара есть уникальный артикул, название по единой схеме, актуальная цена и ссылка на живую страницу.

Затем выберите способ выгрузки и тип описания, определите id и соберите пробный файл на небольшом наборе товаров. Проверьте его валидатором и откройте несколько ссылок вручную. После этого выложите файл по постоянному адресу, подтвердите права на сайт и добавьте ссылку в личном кабинете сервиса.

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

Источники

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

Что такое YML-фид простыми словами?

Это файл с описанием магазина и всех его товаров в формате Яндекса. Яндекс забирает его по ссылке и использует для показа товаров в поиске и для рекламных кампаний.

Можно ли использовать один фид для Яндекс Товаров и Маркета?

Технически можно, но справка рекомендует делать отдельные фиды: часть элементов Маркета для Товаров не нужна или не используется. Раздельные файлы проще проверять и поддерживать.

Сколько раз можно отправлять фид на повторную проверку?

В справке Яндекс Товаров указано, что повторно отправить фид на проверку можно до шести раз. Поэтому перед каждой отправкой исправляйте все найденные ошибки, а не одну.

Поделиться
ВКонтакте Telegram MAX

Расскажите о задаче — посчитаем смету

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