Почему Яндекс не загружает картинки из YML-фида: проверяем <picture>, URL и сервер

5 минут чтения 0 просмотров
Цепочка загрузки картинки из YML-фида через picture, URL и сервер в Яндекс с отметкой ошибки

YML-фид загружается, товары в кабинете есть, но изображения не появились — или загрузились только у части предложений. В такой ситуации весь файл обычно исправлять не нужно. Начать лучше с одного проблемного offer и ссылки на его картинку.

Путь короткий: YML → <picture> → URL изображения → HTTP-ответ сервера → требования площадки. Ошибка на любом из этих этапов выглядит одинаково: товар есть, а фотографии нет.

1. Сначала проверьте значение <picture>

Внутри предложения ссылка обычно выглядит так:

<offer id="123">
  ...
  <picture>https://example.ru/images/product-123.jpg</picture>
</offer>

Проверьте сам элемент, не переходя пока к настройкам сервера:

  • значение не пустое;
  • указан полный адрес с http:// или https://, а не путь вида /images/product-123.jpg;
  • в домене, каталоге и имени файла нет опечатки;
  • по адресу возвращается изображение, а не HTML-страница товара, форма входа или заглушка;
  • в URL нет пробелов и случайных кавычек.

Если у ссылки есть параметры, не забудьте про XML. Амперсанд внутри текста элемента записывается как &amp;: например, image.jpg?size=large&amp;color=black. Неэкранированный & способен сломать XML раньше, чем площадка доберётся до картинки.

2. Картинка открывается в браузере — этого недостаточно

Ваш браузер может отправлять cookie, проходить проверку CDN и обращаться с домашнего IP. Робот площадки приходит без вашей сессии и получает другой ответ. На практике проблема часто оказывается не в самом теге <picture>, а в том, что сервер не отдаёт файл внешнему клиенту.

Типичные причины: защита от ботов, WAF или CDN блокирует запрос; включена защита от хотлинков; файл доступен только после авторизации; временная подписанная ссылка уже истекла; сервер нестабилен; редирект ведёт на страницу входа или другой закрытый домен.

Для первой проверки достаточно двух команд:

curl -I -L "https://example.ru/images/product-123.jpg"
curl -L -o /dev/null -sS -w "%{http_code} %{content_type}\n" "https://example.ru/images/product-123.jpg"

Первая показывает заголовки и цепочку переходов, вторая выполняет обычный GET-запрос и выводит конечный статус с типом содержимого. Если результат плавает, проверьте журналы CDN и веб-сервера в момент запроса. Подробная схема сетевой диагностики есть в статье про ошибки 403, 404, 500 и редиректы.

3. Проверьте HTTP-ответ самой картинки

Нормальный ориентир — конечный ответ 200 OK и содержимое изображения. Статусы 301 и 302 сами по себе не означают ошибку: имеет значение, куда заканчивается переход и можно ли получить файл без cookie и авторизации.

  • 403 Forbidden — сервер понял запрос, но отказал в доступе;
  • 404 Not Found — файла нет по указанному адресу;
  • 429 Too Many Requests — защита ограничивает частоту запросов;
  • 500–504 — ошибка или недоступность сервера;
  • 200 OK с text/html — часто страница-заглушка вместо картинки.
Схема мест, где может прерваться загрузка изображения из YML-фида
Проверяйте цепочку сверху вниз: от значения picture до ответа площадки.

4. Сверьте формат и параметры изображения

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

Яндекс Директ

По актуальным требованиям к YML-фиду Директа, URL в <picture> должен начинаться с HTTP или HTTPS. Допустимы JPG, PNG, WebP и GIF; ширина и высота — не меньше 450 пикселей каждая; файл — не больше 10 МБ. Можно передать несколько элементов <picture>, а Яндекс рекомендует пять изображений товара.

Яндекс Маркет

Маркет тоже принимает несколько элементов <picture> внутри <offer>. Для товарных изображений разрешены JPG/JPEG, PNG, HEIC и WebP; минимальный размер — 300 × 300 пикселей; максимальный вес — 10 МБ. Эти значения приведены в отдельной справке Маркета об изображениях.

Не объединяйте списки форматов. GIF указан у Директа, но не в текущем списке Маркета; HEIC указан у Маркета, но не у Директа. Если один YML используется для обеих площадок, выбирайте формат, который поддерживают обе.

Есть ещё один практический нюанс: если вы заменили файл, сохранив прежний URL, площадка может продолжить показывать старую версию. В справке Яндекса для обновления изображения рекомендуется опубликовать его по новой ссылке и изменить <picture> в фиде.

5. Почему не загрузилась только часть картинок

Если из 1 000 товаров без фотографий остались 37, искать одну общую ошибку во всём YML обычно бессмысленно. Выгрузите ID этих предложений и сравните их с несколькими рабочими offer.

  • Не лежат ли проблемные файлы на другом домене или CDN?
  • Нет ли у них другого расширения, размера или веса?
  • Содержат ли URL параметры, пробелы, кириллицу или короткоживущую подпись?
  • Совпадают ли конечный HTTP-статус и Content-Type?
  • Существует ли файл физически и доступен ли без браузерной сессии?
  • Не объединяет ли проблема одну категорию, поставщика или генератор ссылок?

Так быстрее находится закономерность: например, все 37 ссылок ведут на старый поддомен, только WebP-файлы отдаются как application/octet-stream или один узел CDN отвечает 403. Если вместе с изображениями исчезают сами позиции, используйте отдельную диагностику пропавших товаров по offer ID.

В большом файле вручную искать пустые и относительные ссылки неудобно. ФидСторож скачивает публичный YML, проверяет XML и структуру предложений, находит пустой <picture> и ссылку без HTTP(S), затем показывает путь к проблемному элементу. Доступность каждой картинки, её размер и вес сервис сейчас не проверяет — эти пункты нужно пройти отдельно.

Проверить YML-фид

6. Быстрый чек-лист

  1. Найдите один проблемный offer по стабильному ID.
  2. Проверьте, что <picture> не пуст и содержит полный HTTP(S)-URL.
  3. Убедитесь, что URL корректно записан в XML и ведёт к изображению.
  4. Проверьте конечный HTTP-статус, редиректы и Content-Type.
  5. Повторите запрос без cookie и авторизации; при необходимости посмотрите логи CDN/WAF.
  6. Сверьте формат, размеры и вес с требованиями нужной площадки.
  7. Сравните проблемное предложение с рабочим и найдите общее отличие.
  8. После исправления обновите фид и дождитесь его повторной обработки Яндексом.

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

Официальные источники

 Вернуться в блог

Оформление подписки недоступно

В данный момент оформить подписку нельзя. Попробуйте позже.