Иллюстрация: оптимизация сайта под поиск и AI-ответы

Как оптимизировать сайт под AI-поиск: GEO и SEO с ассистентом

Иван Юницкий · Обновлено

Часть людей больше не доходит до сайта: они спрашивают ChatGPT, Perplexity или других AI-агентов и получают ответ прямо в чате. Отсюда термин GEO — оптимизация под генеративные ответы. Ниже разбираем, что в этой истории реально работает, а что продают под видом работы, и как поручить механическую часть ассистенту, оставив себе решения. Всё, что здесь описано, мы делали на собственном сайте, поэтому цифры и грабли настоящие.

Перед стартом

Дальше будет много технических слов: краулеры, schema.org, JSON-LD, IndexNow. Выглядит страшнее, чем оно есть.

Этот гайд написан не только для вас, но и для вашего агента. Бо́льшую часть описанного не нужно делать руками: откройте Claude Code или другого ассистента с доступом к файлам сайта, дайте ему ссылку на эту страницу и попросите пройти по шагам. За вами остаются решения и проверка результата, а не набор команд в терминале.

Чем GEO отличается от SEO и чем не отличается

GEO расшифровывается как generative engine optimization — оптимизация под системы, которые отвечают текстом, а не списком ссылок: AI Overviews в Google, Нейро в Яндексе, ответы ChatGPT и Perplexity со ссылками на источники.

Отдельной механики у GEO нет. Чтобы модель процитировала вашу страницу, она должна сначала её найти и загрузить. Находит она её через тот же индекс и тот же обход, что и обычный поиск. Так что GEO надстраивается над SEO, а не отменяет его.

Модель не может процитировать страницу, которую не нашла. А ищет она там же, где и обычный поиск.

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

  • Доступ. Краулер должен физически получить вашу страницу, а не 403.
  • Понятность. Машина должна без догадок понять, что это за страница, кто автор и когда обновлено.
  • Цитируемость. В тексте должно быть что процитировать: цифры, команды, условия, сравнения.

Дальше по шагам, в том порядке, в котором это имеет смысл делать.


Шаг 1. Пустить AI-краулеров и проверить, что они правда проходят

Первое, что делают все: открывают robots.txt и разрешают AI-ботов. Это правильно, но недостаточно, и ниже расскажу почему.

Ботов сейчас несколько семейств, и они делают разные вещи. Одни ходят за данными для обучения, другие — за материалом для ответа прямо сейчас, третьи идут по прямой ссылке от пользователя. Закрыв не тот, вы выпадаете из ответов, но не из обучения, или наоборот.

Разные боты решают разные задачи: одни собирают материал для ответа сейчас, другие — данные для обучения.

А теперь про грабли, ради которых стоило это писать. Файл robots.txt — это просьба, а не пропуск. Хостинг может резать ботов раньше, чем дело дойдёт до robots.txt: на уровне веб-сервера, файрвола или антибот-защиты. Вы разрешаете, а сервер отдаёт 403, и вы об этом не знаете, потому что в браузере всё открывается.

Ровно это было у нас. Сайт стоял на reg.ru, robots.txt разрешал всё, а GPTBot и ClaudeBot получали отказ на уровне хостинга. Обнаружилось это одной командой:

Проверять нужно именно от имени бота: robots.txt разрешает, а сервер может отказывать.

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

Важно

Прогоните curl с User-Agent каждого бота из своего robots.txt и убедитесь, что приходит 200. Это одна минута работы, и она отменяет или подтверждает всё остальное.


Шаг 2. Разметка: связный граф вместо россыпи тегов

Schema.org — это способ сказать машине прямым текстом то, о чём иначе ей придётся догадываться по вёрстке: тип страницы, автор, дата, хлебные крошки, разобранные вопросы.

Типичная ошибка — накидать несколько независимых кусков JSON-LD, где Article ничего не знает про автора, а автор не связан с организацией. Машина видит набор разрозненных утверждений. Лучше собирать один граф и связывать узлы через @id: тогда «эта статья написана вот этим человеком, который работает вот в этой организации» становится явным фактом, а не совпадением имён.

Один граф со связями через @id вместо нескольких независимых блоков.

Что стоит размечать в первую очередь:

  • Article или TechArticle на каждом материале — с датами, автором и mainEntityOfPage.
  • Person с полем sameAs на ваши реальные профили. Это то, что связывает безымянного «автора статьи» с существующим человеком, у которого есть канал, выступления и история.
  • BreadcrumbList — дешёвый способ показать структуру раздела.
  • FAQPage — если на странице действительно есть вопросы и ответы. Размечать выдуманный FAQ ради разметки не надо.

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

Совет

Проверяйте результат в Rich Results Test и валидаторе Schema.org после каждой правки. Невалидный JSON-LD игнорируется целиком, а не частично, и увидеть это по внешнему виду страницы невозможно.


Шаг 3. Даты: свежесть, которую нельзя подделывать

Для запросов вида «как пользоваться X в 2026» свежесть — сильный сигнал. Инструменты меняются каждый месяц, и поисковик закономерно предпочитает свежий материал старому.

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

Рабочий подход простой:

  • datePublished ставится один раз и больше не трогается.
  • dateModified двигается только тогда, когда изменился текст, а не вёрстка или мета-теги.
  • Дата дублируется в видимом тексте страницы, а не только в разметке.

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


Шаг 4. Писать так, чтобы было что процитировать

Это самая недооценённая часть, и одновременно та, где разница между сайтами больше всего.

Модель не пересказывает рассуждения. Она пересказывает факты.

Если в тексте написано «сервис предлагает гибкие тарифы под разные задачи», взять оттуда нечего. Если написано «бесплатный тариф, дальше 8, 20, 100 и 200 долларов в месяц» — есть что процитировать, и в ответе появится ссылка на вас.

Что повышает шансы попасть в ответ:

  • Числа и условия. Цены, лимиты, версии, сроки, требования к системе.
  • Команды и код целиком. Не «команда установки есть в документации», а сама команда. Отправляя человека в первоисточник, вы отдаёте цитату первоисточнику.
  • Таблицы сравнения. Из таблицы легко извлекается пара «вариант — для чего подходит».
  • Самодостаточные абзацы. Кусок текста должен читаться, если вырвать его из контекста, потому что именно так его и возьмут.
  • Прямые ответы на вопрос в первом предложении. Сначала ответ, потом объяснение, а не наоборот.

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


Шаг 5. IndexNow, чтобы страница попадала в индекс за часы

Можно всё разметить и написать, а потом две недели ждать, пока робот дойдёт. У нас так и было: восемь гайдов выложены 15 июня, обход в тот же день, а в поиск Яндекса они попали с 22 по 30 июня.

IndexNow — открытый протокол, который решает ровно эту задачу. Вы кладёте в корень сайта файл-ключ и отправляете один POST-запрос со списком URL. Уведомление расходится по участникам протокола: Яндекс, Bing, Seznam, Naver. Google протокол не поддерживает, у него по-прежнему sitemap.xml и обычный обход.

Настройка занимает несколько минут:

  1. Сгенерируйте ключ — строку из 32–128 шестнадцатеричных символов.
  2. Положите файл <ключ>.txt в корень сайта. Содержимое файла — сам ключ. По нему поисковик подтверждает, что вы владеете доменом.
  3. Отправьте список URL POST-запросом на api.indexnow.org/IndexNow.

Ключ должен быть уже на проде: пока файл недоступен по https, запрос вернёт 403.

Важно

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

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


Что из этого делать агентом, а что руками

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

Что работает на практике:

Положите правила в файл проекта

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

Просите план до правок

Массовые изменения по десяти файлам — это то место, где ошибка размножается мгновенно. Сначала план и список файлов, потом выполнение.

Требуйте проверку, а не отчёт

«Проставил даты на всех страницах» — это утверждение. «Прогнал все девять JSON-LD через парсер, все валидны, вот вывод» — это проверка. Разница принципиальная: разметка ломается молча, внешне страница выглядит нормально.

Совет

Просите ассистента подтверждать результат командой, а не словами: распарсить JSON, дёрнуть curl, показать вывод. Формулировка «проверь и покажи вывод» экономит часы отладки.

Что оставить себе

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


Что не работает

Вокруг GEO много обещаний, поэтому отдельно про то, на что не стоит тратить время.

  • llms.txt. Файл-манифест «для языковых моделей». Google публично заявил, что не использует его, другие крупные системы официально не подтверждали. Держать можно, ждать эффекта — нет.
  • Разметка как множитель. Schema.org не поднимает позиции сама по себе. Она снимает неопределённость и даёт расширенный сниппет, то есть влияет на CTR и цитируемость, а не на позицию.
  • Ключевые слова россыпью. Плотность вхождений перестала быть рычагом задолго до генеративного поиска. Запрос имеет смысл закрывать структурой материала, а не повторами.
  • Массовая генерация страниц. Сто пустых страниц под сто запросов создают раздутый индекс и роняют оценку сайта целиком.

Работает скучное: доступность для роботов, честная структура, конкретика в тексте, понятное авторство и регулярность публикаций.


Как мерить, что всё это дало

Проблема измерения GEO в том, что ответы генеративных систем не отдают статистику. Что реально можно смотреть:

  • Search Console и Яндекс.Вебмастер — показы, позиции, попадание страниц в индекс. База, без которой остальное не имеет смысла.
  • Логи запросов от AI-ботов. Видно, ходят ли GPTBot, ClaudeBot и PerplexityBot и по каким страницам.
  • Ручная проверка цитируемости. Раз в месяц задайте своим целевым запросом вопрос ChatGPT и Perplexity и посмотрите, появляетесь ли вы в источниках.

И ориентир по срокам. Одна наша страница из раздела гайдов за первый месяц дала 803 показа и 23 клика при CTR 2,9% — выше, чем в среднем по сайту. Это не взрывной рост, это нормальная динамика информационной страницы на молодом домене. Ждать результата раньше, чем через несколько недель после индексации, не стоит.


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

Чем GEO отличается от SEO?
GEO — оптимизация под ответы генеративных систем: AI Overviews в Google, Нейро в Яндексе, ChatGPT, Perplexity. Отдельной механики у неё нет: чтобы модель процитировала страницу, она сначала должна её найти и загрузить, а это обычный поиск и обычный краулинг. Поэтому GEO не замена SEO, а надстройка: та же техническая база плюс фактическая плотность текста и понятное авторство.
Нужен ли файл llms.txt?
Как рычаг ранжирования — нет. Google публично говорит, что не использует llms.txt, остальные крупные системы официально его тоже не подтверждали. Файл ничего не ломает и его можно держать как карту сайта для людей и агентов, но рассчитывать, что он поднимет цитируемость, не стоит. Время лучше вложить в robots.txt, разметку и качество текста.
Схема Schema.org поднимает позиции?
Напрямую нет. Разметка не множитель ранжирования, а способ снять с машины догадки: кто автор, когда обновлено, что это за тип страницы, какие вопросы разобраны. Практическая польза — расширенные сниппеты и то, что языковой модели проще извлечь из страницы факты и атрибуцию. Это влияет на CTR и цитируемость, а не на позицию саму по себе.
Как быстро новая страница попадает в индекс?
Без уведомления — от нескольких дней до нескольких недель: робот придёт, когда дойдёт очередь. Наши восемь гайдов были выложены 15 июня, а в поиск Яндекса попали с 22 по 30 июня. С протоколом IndexNow один POST-запрос ставит URL в очередь Яндекса и Bing за минуты. Google IndexNow не поддерживает — там работает sitemap.xml и обычный обход.
Можно ли отдать всё SEO агенту и не проверять?
Нет. Агент хорошо делает механическую часть: разметку, мета-теги, sitemap, проверку кодов ответа, единообразие по десяткам страниц. Но он не знает, какой запрос вам действительно нужен, и охотно проставит красивую дату обновления там, где текст не менялся. Решения о ключах, датах и формулировках остаются за человеком.

Что запомнить

  • GEO не отдельная дисциплина: без обычной поисковой базы модель просто не найдёт вашу страницу.
  • Проверьте curl с User-Agent каждого AI-бота — robots.txt разрешает, а хостинг может отдавать 403.
  • Собирайте разметку одним графом со связями через @id, а не россыпью независимых блоков.
  • Дату обновления двигайте только при реальном изменении текста, иначе сигнал работает против вас.
  • Цитируют конкретику: цифры, команды, условия. Рассуждение процитировать нельзя.
  • IndexNow сокращает попадание в индекс Яндекса и Bing с недель до часов.
  • Агенту — механику и проверки, себе — выбор запросов и решения по содержанию.

Настроить это один раз несложно. Сложнее — держать ритм и понимать, какие решения принимать дальше, когда данные начинают расходиться с ожиданиями.

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

→ Узнать о кэмпе