ИИ рассказывает покупателям неправду о вашем товаре и ссылается на ваш же сайт. Разбор каталога на 1900 страниц

У компании типичная проблема. Забиваешь артикул товара в поиске — а тебе выдают заголовок одного товара, картинку второго и описание третьего. Открываешь саму страницу на сайте — там всё правильно. Каждая буква на месте.

Это производитель складского оборудования, интернет-магазин при собственном производстве. Название и домен не назову, работаем под NDA. Каталог на 1900 с лишним страниц, десять веток: колёса, тележки, штабелёры, стеллажи.

Версия у нас была очевидная. Незадолго до этого им внедрили генератор статических страниц. Поменяли рендеринг, поехали метаданные, дело житейское. Я уже почти написал «виноват генератор».

И на всякий случай спросил, когда началось. Ответ: «да это и до него было».

В итоге источников оказалось три. Независимых. И разметкой лечится только один из них.

Пробежался глазами по живому сайту: главная, три категории, листинг серии, карточка товара, четыре соседние вариации одной серии, две статьи, robots.txt, llms.txt, sitemap на 1994 адреса, HTTP-заголовки. Смотрел исходник страницы — то, что реально получает бот, а не то, что рисует браузер. Нашел несколько причин проблемы.

Причина первая: вариации-близнецы

Берём одну серию колёс. Три размера: 50, 60 и 75 миллиметров. У каждого колеса свой артикул, своя цена, своя страница.

По отдельности каждая карточка сделана правильно. Свой заголовок. Своё фото. Canonical на саму себя. Product и Offer в разметке, цена, наличие. Придраться не к чему — я и не придрался, пока смотрел их по одной.

А потом положил две соседние рядом. Совпадение тела — 99%. Всё различие между страницами — девять слов. Описание для поиска вообще одно предложение, в которое подставили другое число:

75 мм: «...поворотную опору на штыре (75 мм, 60 кг, арт. ...)» 60 мм: «...поворотную опору на штыре (60 мм, 50 кг, арт. ...)» 50 мм: «...поворотную опору на штыре (50 мм, 40 кг, арт. ...)»

Меняем 75 на 60 — получаем вторую страницу. Меняем на 50 — третью. И так по всему каталогу.

Поиск видит десяток почти одинаковых страниц и делает ровно то, чему его учили: считает их одной сущностью. Склеивает в кластер. А дальше собирает сниппет из того, что показалось уместным — заголовок отсюда, картинку оттуда. Это не сбой. Поиск честно отработал на том, что ему дали.

С ИИ то же самое, только заметнее. Модель отвечает покупателю не сниппетом, а фразой: «такой-то артикул, диаметр столько-то, держит столько-то». И характеристики она берёт из кластера, где три размера уже перемешались в один.

Причина вторая: метаданные, слетевшие после смены рендеринга

Генератор статики всё-таки был виноват. Просто не в главном.

Что он натворил: на статьях обнулился head. У всех страниц один и тот же заголовок вкладки — название компании. Нет описания. Нет картинки для превью. Нет даже видимого заголовка на странице.

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

Сверху кэш: stale-while-revalidate на неделю. То есть даже после правки старое сидит в индексе ещё семь дней, и ты не понимаешь, почему ничего не изменилось.

Мораль скучная, и поэтому её никто не соблюдает. Любая перекладка рендеринга — статика, новый шаблон, CDN, переезд на фреймворк — это в первую очередь риск для метаданных. Проверять надо в исходнике. В браузере всё будет выглядеть прекрасно, потому что браузеру ваш head не очень-то и нужен. А боту нужен только он.

Причина третья: ваш же текст на чужих доменах

Третий слой всплыл случайно. Клиент прислал ссылку на перепродавца: «вот у них картинка в выдаче встаёт верно». И правда встаёт. У реселлера одна страница на товар, без вариаций — склеивать нечего.

А текст на этой странице — их собственный. Слово в слово с сайта производителя. Что, вообще-то, нормально: реселлеры берут описания у поставщика, так устроен рынок, никто ничего не воровал.

Только поиск не знает, кто здесь производитель. Он видит один и тот же текст на пяти доменах, выбирает одного «владельца», остальных приглушает. И владельцем не обязательно становится тот, кто товар делает.

И находка, из-за которой ИИ врал

На четвёртом проходе по сайту поймал вещь, которую в отчётах обычно не пишут, потому что она формально не про видимость и ИИ.

На карточке колеса на 60 миллиметров в видимом заголовке стояли характеристики соседа: «50 мм, 40 кг». При этом title страницы верный. Разметка верная. Цена верная. Ошибся только шаблон, подставивший в заголовок данные предыдущей вариации. И это не одна страница — подтвердилось на двух разных сериях, то есть системно.

Для человека это опечатка. Он всё равно смотрит на таблицу характеристик ниже. Для ИИ это источник: заголовок страницы модель читает первым, он же главный. И на вопрос «какая грузоподъёмность у такого-то артикула» она бодро ответит покупателю неправду. Со ссылкой на сайт производителя.

Вот это, по-моему, самое неприятное во всей истории. Не то, что вас не видно. А то, что вас видно — и вы врёте.

Что помогло, а что нет

Технический слой закрыли за два месяца, по волнам: доступ ботам, Product и Offer на карточках, автор и дата на статьях, дата обновления на всех 1994 адресах карты сайта, вернувшийся постраничный head, свои превью на категориях, кэш на границе, заголовки безопасности.

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

А вот тело страниц по-прежнему совпадает на 94,5%. Заголовок разный — смысл один. Склейка не снята. Так что честно: задача закрыта наполовину, и вторая половина — это уже не разметка. Это 1900 разных описаний, которых руками никто не напишет.

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

Кто станет «владельцем» текста между доменами — решается другим: кто раньше попал в индекс, у кого авторитетнее домен, прописана ли в разметке сущность производителя и как быстро вас переобходят.

А единственное, что реселлер физически не скопирует — это ваша фактура. Фото со своего производства. Реальные данные испытаний. Инженерные подробности, которых у посредника просто нет. Всё остальное у вас перепишут за неделю.

Проверьте свой каталог за пятнадцать минут

  1. Откройте три соседние вариации одной серии и сравните описания. Если различие только в цифре — для поиска это одна страница, а не три.
  2. Сверьте видимый заголовок карточки с заголовком вкладки. Данные должны совпадать. У клиента в двух сериях не совпадали, и никто этого не замечал.
  3. Проверьте, есть ли у категорий своя картинка для превью. Нет своей — поиск возьмёт любую со страницы, и это будет не тот товар.
  4. Возьмите предложение из своего описания и закиньте в поиск в кавычках. Посмотрите, сколько доменов его показывают и кто идёт первым.
  5. После любой смены рендеринга смотрите исходник страницы, а не браузер. Head едет первым и молча.

И один запрет

Не ставьте canonical с вариаций на одну «представительную» страницу.

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

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

В сухом остатке

Каталог — отдельный жанр, и это почти нигде не проговаривается. Все статьи про видимость в ИИ написаны про сайты, где страницы разные по смыслу: блог, услуги, о компании. Там работают привычные советы — пустите ботов, отдавайте текст сразу в HTML, разметьте schema.

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

Разметка описывает контент. Она его не заменяет.

Клиент, кстати, пришёл не с этим. Он пришёл с «нам бы в ChatGPT попадать». А чтобы попадать в ChatGPT, надо сперва перестать быть для него тремя одинаковыми страницами.

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

Полная версия с разметкой и FAQ — у меня в блоге: romandenisov.com/ru/blog/ai-mixes-up-your-products