Зафиксируйте условия отбора в Директе и примените их к сохранённой версии фида по каждому offer id. Получится ожидаемый список товаров: его можно сравнить с составом в кабинете после обработки. Так вы найдёте ошибку фильтра, даже если сам YML проходит проверку.
Этот разбор нужен магазину, который продвигает часть ассортимента: например, только кресла в наличии в определённом диапазоне цен. Проверяем состав выбранных товаров. Модерация, создание объявлений и фактические показы требуют отдельного контроля.
Сохраните файл и условия как одну проверяемую версию
Запишите URL источника, время получения и контрольную сумму YML. Рядом сохраните снимок настроек кампании: источник товаров, категорию, условие наличия, ценовые операторы и валюту. Укажите кампанию и время проверки. Если настройки изменились, старый список ожидаемых ID уже нельзя использовать для приёмки.
Начните с анализатора товарных фидов WiseLab: проверьте файл целиком в пределах его лимитов, разберите дубли и обязательные поля. Для общего счётчика есть отдельная инструкция о количестве товаров в YML. Здесь к исправным данным добавляется правило выбора рекламного ассортимента.
В справке запуска кампании по фиду Яндекс описывает совместное выполнение условий: товар должен соответствовать каждому из них. Доступные поля зависят от источника; для YML перечислены, в частности, категория, цена и наличие. Не переносите набор полей и логику одного сценария на другой тип кампании без проверки его настроек.
Переведите намерение в точное правило
Фраза «кресла средней цены, которые можно купить» допускает разные трактовки. Для учебной проверки запишем её так:
categoryId = 10
И available = true
И price >= 500
И price <= 1000Все цены примера — BYN, обе границы включены. Код BYN указан в поддерживаемых валютах YML. В кабинете проверьте эквивалентность операторов: больше 500 и не меньше 500 дадут разный результат для товара ровно за 500. Для смешанных валют сначала согласуйте единую базу сравнения; складывать или сравнивать исходные числа разных валют нельзя.
Категория тоже должна быть определена точно. В диагностике товарных объявлений Яндекс отдельно предупреждает о фильтре по пустой родительской категории: наличие товаров только в её подкатегориях само по себе не обеспечивает отбор. Сверяйте фактические categoryId офферов и выбранные в интерфейсе значения.
Для фильтра «Только в наличии» та же справка требует товары с available="true", соответствующие остальным условиям. В контрольном наборе используйте явные true и false. Отсутствующий атрибут или неизвестное наличие вынесите на разбор: приведённый ниже код намеренно останавливается на таких данных и не моделирует все значения по умолчанию Директа.
Учебный пример: восемь товаров, три подходят
Все товары и цены вымышлены. Предполагаем, что обязательные поля YML уже проверены, ID уникальны, а ниже показаны только данные для отбора.
| ID | Категория | Цена, BYN | В наличии | Результат по правилу |
|---|---|---|---|---|
| A | 10 | 499 | true | Ниже нижней границы |
| B | 10 | 500 | true | Подходит |
| C | 10 | 750 | true | Подходит |
| D | 10 | 1000 | true | Подходит |
| E | 10 | 1001 | true | Выше верхней границы |
| F | 10 | 750 | false | Нет в наличии |
| G | 20 | 750 | true | Другая категория |
| H | 20 | 1200 | false | Не выполнены три условия |
При последовательной проверке категории остаются шесть товаров, наличия — пять, цены — три: B, C и D. Это ожидаемый состав по нашему правилу, ещё до решения рекламной системы о создании и показе объявлений.
Порядок ступеней выбран для объяснения; при одновременном выполнении всех условий итоговый набор тот же. У исключений могут пересекаться причины: цену не проходят A, E и H, наличие — F и H, категорию — G и H. Получилось семь отметок нарушения у пяти разных товаров. Для отчёта об исключённом ассортименте считайте уникальные ID.
Если ошибочно заменить совместное выполнение условий на «подходит хотя бы одно», в нашем наборе пройдут семь товаров — все, кроме H. Поэтому одного итогового количества мало: даже совпавший счётчик может скрыть замену одних товаров другими.
Повторите отбор локально
Сохраните таблицу как products.csv с полями offer_id,category_id,price,currency,available. Значения наличия — true или false, ID — текст. Для учебного набора достаточно Python 3:
import csv
from decimal import Decimal as D
with open("products.csv", encoding="utf-8-sig", newline="") as src:
rows = list(csv.DictReader(src))
ids = [r["offer_id"] for r in rows]
assert rows and all(ids) and len(ids) == len(set(ids))
selected = []
for r in rows:
assert r["currency"] == "BYN"
assert r["available"] in {"true", "false"}
price = D(r["price"])
assert price.is_finite() and price > 0
if (r["category_id"] == "10"
and r["available"] == "true"
and D("500") <= price <= D("1000")):
selected.append(r["offer_id"])
print(sorted(selected))Результат — ['B', 'C', 'D']. Запускайте пример без отключения проверок assert. Код воспроизводит конкретное правило на подготовленной таблице; он не читает настройки аккаунта, не проверяет весь YML и не предсказывает модерацию. Для рабочего отчёта сохраняйте также причины исключения каждого ID.
Сверьте состав после обработки в Директе
Сначала подтвердите, что кабинет обработал нужный источник. По справке добавления фида файл, загруженный с компьютера, автоматически не обновляется; получение фида по URL и его обработка тоже не означают мгновенного применения изменений. Сохраните доступный статус и время обработки.
Затем сопоставьте ожидаемые ID с фактическим составом, доступным в вашем интерфейсе. Если полной выгрузки нет, честно укажите, что проверена выборка: превью нескольких объявлений не подтверждает весь ассортимент. В примере отдельно проверьте B и D на ценовых границах, A и E рядом с ними, а также F и G как отрицательные контроли.
Разность «ожидались, но не обнаружены» направляет проверку к версии фида, настройке или диагностике товара. Обратная разность «обнаружены, но не ожидались» — к другому источнику, изменившемуся правилу или исходным значениям. Это направления расследования; по одной разности нельзя установить причину и оценить потерянные продажи.
Передайте исправление с конкретным ID, версией файла, сохранённым условием, ожидаемым и фактическим результатом. Ошибку данных исправляет владелец выгрузки, ошибку отбора — специалист по рекламе. После изменения повторите тот же набор граничных товаров и пройдите приёмку исправленного фида, если менялся сам файл.
Проверка завершена, когда у выбранного состава есть точное правило, версия источника, список ID и объяснение расхождений. Метод можно выполнить локально в Беларуси; он не требует покупки нового сервиса. Доступность конкретного рекламного сценария и его управления подтверждайте в действующем аккаунте.
Источники
Материал подготовлен редакцией WiseLab с помощью AI. Источники и фактические утверждения проверены при подготовке.
Что думаете?
Загружаем комментарии…