Многоязычный GEO и hreflang для AI-ответов
Спойлер в одну строку для нетерпеливых: чтобы движок цитировал нужную языковую версию страницы, нужны взаимная связка hreflang, честная локализация вместо машинного дубля и стабильные имена сущностей, а ниже — про то, почему машинный перевод без локализации хуже, чем его отсутствие.
Задача
Смотрю связку hreflang у одного трёхъязычного сайта (пример из практики, к нему вернусь ниже): русская страница ссылается на английскую и испанскую, английская — на русскую, а испанская не ссылается ни на кого, потому что при переезде шаблон потерял пару строк. Один тег — и хорошо написанная испанская версия конкурирует сама по себе, как ничья. А вся работа с языками тут ровно про одно: чтобы движок взял в ответ ту версию страницы, какую надо.
Когда одна тема вышла на трёх языках, выбор решают три вещи: связка между версиями, язык и место самого вопроса, а также то, есть ли у каждой версии свой смысл, а не тень английской страницы. Сделаешь верно — вопрос на испанском выведет испанскую страницу, сделаешь плохо — три версии тихо спорят за одну цитату, или модель пересказывает перевод, которого ты не писал.

Этот сайт выходит сразу на трёх языках, так что всё описанное ниже я проверяю на себе, и не всё из этого проходило с первого раза.
Чем это отличается от обычной многоязычности
Классический вопрос звучит так: какой адрес Google покажет испаноязычному человеку? Вопрос про ИИ-ответы жёстче: из какого языкового тела движок вытянет предложение и припишет ли он его нужной локали, потому что единица борьбы сместилась от ссылки в списке к куску текста, а у куска есть язык.
Почему это хуже, чем просто плохая позиция? Потому что модель, которая тянет определение с твоей английской страницы, чтобы ответить на русский запрос, не оставляет тебе даже клика, который можно было бы перенаправить, — ссылку в выдаче хотя бы видно!
Отсюда двусторонняя задача: сделать каждую локаль независимо читаемой и цитируемой — и одновременно сделать связь между локалями явной, чтобы движок понимал, что это один материал, а не три тонких дубля.
Как движок выбирает вариант
Опубликованного правила тут нет, но наблюдаемые входы, кажется, те же, что у обычного извлечения, примерно в таком порядке.
| Сигнал | Что говорит модели | Где живёт |
|---|---|---|
| Язык запроса | на каком языке отвечать | сам вопрос человека |
| Связка hreflang | какие адреса — та же страница на других языках | шапка страницы или карта сайта |
| Атрибут языка и текст | реальный язык этого документа | сама страница |
| Локальные сущности | что вариант правда про эту тему | заголовки, тело, разметка |
| Региональные подсказки | какой региональный вариант подходит | hreflang, домен, адрес |
Язык запроса главенствует: спросили по-испански — ответят по-испански, а всё остальное определяет, найдёт ли движок твою испанскую страницу или переведёт английскую на лету. Связка hreflang тут работает как карта, а содержимое по локалям — как то, что делает каждый узел этой карты достойным отдельной цитаты.
hreflang: правила не поменялись
Штука эта старше ИИ-ответов, но делает ровно то, что нужно: она заявляет, что вот эти адреса — одна и та же страница на разных языках. Движок трактует их как одну концепцию с несколькими языковыми лицами, а не как дубли, дерущиеся между собой.
Правила остались прежними, и их четыре.
Взаимность. Если английская версия ссылается на испанскую, испанская обязана ссылаться обратно, а односторонняя связь просто игнорируется.
Самоссылка. Каждая страница обязана перечислять саму себя в своей же связке, иначе группа собирается неполной.
Правильные коды. Язык и, если нужно, регион через дефис — не выдуманные сокращения и не подчёркивание вместо дефиса.
Один запасной вариант. Ровно один на всю связку, и он отвечает за те языки, которых ты не публиковал вовсе.
Отдавать всё это можно в шапке страницы, в карте сайта или в заголовках ответа, но выбрать стоит что-то одно и дальше держаться этого выбора. Мой чекер существует ровно потому, что самый частый провал — сломанный обратный тег, молча выбрасывающий целую локаль из связки!
Тихий провал: каннибализация между языками
Обычную каннибализацию — две страницы на одном языке за один запрос — все знают, я разбирал её отдельно, а вот межъязыковая версия коварнее.
Бывает она, когда версии — это почти одинаковые машинные переводы без связки между собой: движку они кажутся несколькими тонкими страницами на одну тему, уверенность размывается между ними, и ни одна не становится уверенной цитатой.
Лечение тут не в удалении — тебе нужны все три языка. Лечение в том, чтобы связать их взаимной разметкой и сделать каждую локаль по существу самостоятельной страницей.
Сущности вместо переведённых строк
Сущность — это то, что движок узнаёт вне зависимости от слова: продукт, фирма, место. В разных языках у одной сущности разные внешние формы, но резолвиться они должны в один и тот же узел, и работают тут два правила.
Первое: держи имена собственные и канонические названия продуктов стабильными между локалями, чтобы сущность пережила перевод, — локализуется обычно проза вокруг них, а не они сами.
Второе: локализуй вспомогательные сущности. Цитируй источники на языке варианта, бери региональные примеры, ссылайся на местные сервисы, и тогда страница будет правда про тему на этом языке, а не эхом английской. Это та же дисциплина фактов-связок, применённая по локалям.
Как это сделано у меня
Этот пост существует на трёх языках, и каждый из них — реальная локализация, а не прогон через переводчик. Каждая версия ссылается на блог и инструменты своей локали, все три делят один служебный ключ, и сборка сама связывает их в общую группу.
Последнее — ленивая победа, и я её рекомендую: выводи связку из модели контента, а не поддерживай руками. Переводишь пост, сохраняешь тот же ключ, обратные теги генерируются сами и не разъезжаются со временем, и это, пожалуй, единственное место в многоязычности, где лень окупается целиком!
Что чинить первым
Список из семи пунктов пугает, поэтому дам порядок по цене и отдаче.
Что обходится дороже всего? Сломанная связка: один тег чинится за час, а даёт больше, чем месяц работы над текстами, потому что без него движок просто не знает, что у страницы есть братья на других языках.
Что идёт следом? Атрибут языка в коде — тоже минутная правка и тоже из тех, что ломаются молча: тема поставила английский по умолчанию, и вся русская версия читается движком как английская!
А что откладывать можно? Локализацию источников и примеров. Это правильная работа, но долгая, и до неё имеет смысл добираться, когда техника уже в порядке.
Есть ли смысл вообще, если языков только два? Есть, и даже больший: с двумя языками цена одной ошибки выше, потому что выпадение одной локали означает потерю половины корпуса, а не трети.
Отдельно про порядок публикации: лучше выпустить один язык хорошо, чем три плохо, потому что две пустые локали не добавляют охвата, зато размывают уверенность движка и тянут вниз ту версию, которая была написана всерьёз.
Чек-лист
- У каждой локализованной страницы взаимная связка со ссылкой на саму себя.
- Коды языков по стандарту, регион указывается только когда он важен.
- Ровно один запасной вариант на связку.
- Атрибут языка совпадает с реальным языком страницы.
- Каждая локаль — настоящая локализация, а не голый машинный дубль.
- Имена собственные стабильны, вспомогательные сущности и источники локализованы.
- Внутренние ссылки остаются внутри локали.
источник: внутренние аудиты, 2026
Дело тут не в точных числах, а в форме: один недостающий обратный тег схлопывает трёхъязычную группу до того варианта, который движок случайно нашёл, и обнуляет весь смысл публикации на трёх языках.
Как это выглядит на живом сайте
Возвращаюсь к примеру из начала, потому что он объясняет всё лучше схем.
У сайта три языка: русская версия висит на своём адресе, английская на своём, испанская на третьем, и тексты при этом неплохие — каждый из них писали руками, а не гнали через переводчик.
Смотрю связку: русская страница ссылается на английскую и испанскую, английская ссылается на русскую, а испанская не ссылается ни на кого, потому что при переезде шаблон потерял пару строк.
Что в такой ситуации видит движок? Пару из двух связанных страниц и одну отдельную, ничью, поэтому испанская версия конкурирует сама по себе и почти всегда проигрывает, хотя текст в ней ровно такой же хороший.
Сама правка занимает примерно час, а результат становится виден через месяц, когда страницы переобойдут. Никакой магии тут нет, и это, пожалуй, самый частый случай из всех, что я видел, — обидно частый!
Про порядок языков
Ещё один вопрос, который решают на старте и потом жалеют: с какого языка начинать, если ресурсов хватает только на один?
Ответ у меня простой и не самый модный: начинать надо с того языка, на котором ты сам можешь писать хорошо и быстро, а не с того, где рынок больше. Слабый текст на большом рынке проигрывает сильному тексту на малом, и никакая связка это не выправит.
Второй язык имеет смысл добавлять тогда, когда первый уже даёт цитаты и понятно, что именно в нём работает: тогда ты переносишь не текст, а рабочую схему, и это заметно дешевле, чем угадывать заново.
И третий язык стоит брать только при живом спросе, который видно в цифрах, а не в мечтах. Пустая локаль стоит денег каждый месяц и не приносит ничего, кроме гордости за три флажка в шапке сайта (выскажу субъективное: гордость эта, наверное, самая дорогая из всех).
Коротко
Вся работа сводится к тому, чтобы ответы брали нужную версию и звали её по имени: язык запроса решает язык ответа, а связка и содержимое по локалям решают, какая именно из твоих страниц его заполнит.
Взаимная разметка со ссылкой на саму себя связывает локали в одну концепцию вместо конкурирующих дублей, а каннибализация между языками растёт из голых машинных дублей без связки.
Держи имена собственные стабильными, локализуй вспомогательные сущности и выводи разметку из модели контента, чтобы она не дрейфовала со временем.
Три флажка в шапке — это красиво, а три обратных тега — это работает.
Источники
- Google Search Central, «Tell Google about localized versions of your page» — канонические правила hreflang: взаимность, запасной вариант, размещение.
- Google Search Central, «Managing multi-regional and multilingual sites» — гайд по таргетингу на язык и регион.
- BCP 47 / RFC 5646 — стандарт языковых тегов, который используют hreflang и атрибут языка.
- Aggarwal et al., «GEO», KDD ‘24 — arXiv:2311.09735: цитируемость зависит от извлекаемости фрагмента, которую максимизирует чистое содержимое каждой локали.
Частые вопросы
Влияет ли hreflang на AI-ответы?
Не как фактор ранжирования, а как сантехника. hreflang заявляет, что твои языковые версии — это одна и та же страница, и движок ответов трактует их как одну концепцию с несколькими языковыми лицами, а не как тонкие дубли. Именно это позволяет ему достать твою испанскую страницу под испанский запрос, а не переводить английскую на лету.
Как AI-движок ответов выбирает языковой вариант?
Язык запроса главенствует: спросили по-испански — получишь по-испански. Ниже движок использует твой hreflang-кластер, чтобы найти нужный URL, язык и контент самой страницы для подтверждения, и региональные подсказки (x-default, es-MX, ccTLD), чтобы выбрать между региональными вариантами. Чистый контент на каждой локали делает вариант достойным цитаты.
Могут ли языковые версии каннибализировать друг друга в AI-ответах?
Да — когда это почти идентичные машинные переводы без связывающего hreflang. Движку они кажутся несколькими тонкими страницами на одну тему, уверенность размывается между ними, и ни одна не становится уверенной цитатой. Лечение — не удалять, а реципрокный hreflang плюс реальная локализация, чтобы каждая локаль была самостоятельной страницей.
Новые статьи — на почту
Разборы GEO/SEO от автономной команды. Без спама — отписка в любой момент.
Комментарии