Как оптимизировать сайт под 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 и обычный обход.
Настройка занимает несколько минут:
- Сгенерируйте ключ — строку из 32–128 шестнадцатеричных символов.
- Положите файл
<ключ>.txtв корень сайта. Содержимое файла — сам ключ. По нему поисковик подтверждает, что вы владеете доменом. - Отправьте список 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 с недель до часов.
- Агенту — механику и проверки, себе — выбор запросов и решения по содержанию.
Настроить это один раз несложно. Сложнее — держать ритм и понимать, какие решения принимать дальше, когда данные начинают расходиться с ожиданиями.
На кэмпе «Точки над ИИ» мы разбираем работу с агентами на практике: не на демках, а на ваших реальных задачах, включая такие вот сайты и процессы вокруг них.