GEO на практике: Как мы оптимизировали Zenitho.ai под ChatGPT и Perplexity в апреле 2026
За 48 часов (21–22 апреля 2026) мы прогнали собственный сайт через полный GEO-стек (Generative Engine Optimization): ускорили First Contentful Paint с 4,3 с до 1,7 с, добавили 17 JSON-LD блоков, зарегистрировали сайт в четырёх поисковиках, расширили robots.txt директивами для AI-краулеров и выпустили llms.txt. Ниже — каждый шаг, что сработало, что удивило, и цифры, которые мы реально замерили.
Уточнение сразу на старте. Эта статья документирует технический и структурный фундамент, который мы заложили за 48 часов — Core Web Vitals, индексация, JSON-LD,
robots.txt,llms.txt, IndexNow, middleware. Чего мы ещё не можем доказать: реальную частоту цитирования в ChatGPT, Perplexity и Gemini. Это измеряем в части 2 через 30 дней — AI-цитации требуют другого временного горизонта, чем одноразовый технический спринт. Так что читайте эту первую часть как «как мы построили взлётку», а не «сколько раз AI нас цитирует прямо сейчас».
Почему эта статья существует
В апреле 2026 каждое крупное чешское SEO-агентство опубликовало теоретический гайд по GEO — SEO Consult, MARF, Inpage, SEOkonzult, Symbho, Digichef. Тексты хорошие, но почти все заканчиваются одинаково: «вот определение, вот 10 советов». Чего между ними нет — так это конкретной имплементации с данными. Кого-то, кто реально сделал это на своём сайте и опубликовал цифры.
Поэтому мы решили это сделать. За два дня мы взяли Zenitho.ai — сайт, который до этого прошёл только лёгкую SEO-гигиену — и прогнали его через весь GEO-стек. Эта статья — буквальный дневник той работы: что мы меняли, почему выстроили именно в таком порядке, что сломалось, и какую пользу это несёт вам, если хотите то же самое на своём сайте.
Что такое GEO (и чем оно отличается от классического SEO)
GEO (Generative Engine Optimization) — это оптимизация контента и технического слоя сайта так, чтобы большие языковые модели вас цитировали — ChatGPT, Perplexity, Google AI Overviews, Gemini, Claude, Microsoft Copilot. Синонимы: AEO (Answer Engine Optimization), LLMO (Large Language Model Optimization), AIO (AI Optimization).
Отличие от классического SEO — в цели:
- SEO борется за позицию в SERP. Вы выигрываете, попав в топ-10 результатов.
- GEO борется за то, чтобы быть внутри ответа. Вы выигрываете, когда AI-модель берёт информацию с вашего сайта и цитирует вас как источник.
Почему это важно сейчас: к концу 2025 года более 40% запросов в Google (в США) заканчивались так называемым «zero-click» — пользователь получал ответ в AI Overview и ни на один результат SERP не кликал. В ČR цифра ниже, но тренд идентичен. Если AI-модели вас не цитируют, ваша видимость в ближайшие 12 месяцев будет падать, даже если классические SEO-позиции останутся теми же.
Исходное состояние Zenitho.ai (утро 21 апреля 2026)
Профиль сайта до вмешательства:
- 0 JSON-LD блоков на всём сайте
- Нет файла
llms.txt robots.txtбез директив для AI-краулеровsitemap.xmlбез подстраниц/sluzby/*- FCP 4,3 с, LCP «Error» (не измерялось), Speed Index 8,8 с (мобильный PageSpeed)
- Не проиндексирован в Google Search Console, Bing Webmaster Tools, Seznam WMT
- Только в Google Maps; в других каталогах отсутствует
- Баги доступности:
html lang="cz"(невалидный BCP 47), разрывы в иерархии заголовков
Иными словами: типичное состояние сайта, над SEO которого никто системно не работал. Хорошая стартовая точка для эксперимента — любое движение отсюда покажет, что вмешательства работают.
Стратегия: 5 слоёв, в таком порядке
Мы не хотели действовать наугад. Решили пройти по пяти чётко разделённым слоям, в таком порядке:
- Технический базис — Core Web Vitals, чистые URL, корректный язык
- Классическая индексация — Google, Bing, Seznam
- AI-специфичные файлы —
robots.txtдирективы для AI-ботов +llms.txt - Структурированные данные — JSON-LD схема на каждой странице
- Внешние сигналы и мониторинг — каталоги + детекция краулеров
Почему именно в таком порядке: скорость и индексация — это предпосылки. Если краулеры таймаутят или Google вас вообще не знает — всё остальное напрасно. Схема и AI-файлы — ядро: без них AI не получает структуру. Каталоги и детекция — усиливающий слой: повышают сигнал, но сами по себе не работают.
Реализация, шаг за шагом
Шаг 0: Технический базис (21.04.2026, 16:00–23:43)
Семь часов работы, 20+ коммитов. Самый болезненный слой, потому что PageSpeed не прощает.
До:
| Метрика (мобайл) | До |
|---|---|
| First Contentful Paint | 4,3 с |
| Largest Contentful Paint | Error (NO_LCP) |
| Total Blocking Time | Error (NO_LCP) |
| Speed Index | 8,8 с |
| Cumulative Layout Shift | 0 |
LCP вообще не измерялся. Причина: анимация fade-in на viewport использовала opacity: 0, а PageSpeed интерпретирует это как «никакого видимого LCP-кандидата». Решение: заменить на opacity: 0.01. Не измерялось → измерилось. И это была только первая из двадцати подобных оптимизаций:
- Inline критического CSS,
deferGoogle Fonts до взаимодействия - Self-host Iconify (убрали 300 kB внешнего JS)
- Defer Google Tag Manager до первого действия пользователя
- Заменили eager-embed YouTube на click-to-play facade (сэкономлено 7,9 MB render-blocking на
sluzby/web) - WebP варианты всех изображений в портфолио + hero
- Skip 1,5 MB hero-видео на мобильном (детекция через
matchMedia) - Локализация paper-texture SVG (вместо внешнего fetch)
После:
| Метрика (мобайл) | До | После | Изменение |
|---|---|---|---|
| First Contentful Paint | 4,3 с | 1,7 с | −60% |
| Largest Contentful Paint | Error | 4,2 с | измеряется |
| Total Blocking Time | Error | 0 мс | зелёное |
| Speed Index | 8,8 с | 1,8 с | −80% |
| CLS | 0 | 0,033 | зелёное |
LCP 4,2 с всё ещё в красном — это следующий этап. Но три из четырёх метрик зелёные, краулеры не таймаутят, и Googlebot может обойти весь сайт.
Почему это важно для GEO: AI-краулеры напрямую не измеряют скорость. Но AI Overviews берут данные из индекса Google, а Google весит Core Web Vitals как ранкинговый фактор. Медленный сайт = ниже в индексе = ниже шанс попасть в AI-ответ.
Шаг 1: Индексация в поисковиках
Недооценённый слой. Большинство GEO-гайдов его пропускает, а он критический: большинство AI-моделей (Gemini, AI Overviews, Copilot) берёт данные из индекса Google или Bing. Если вас там нет — AI вас не видит.
Что сделали:
- Чистые URL — убрали
.htmlрасширения на canonical./portfolioвместо/portfolio.html. Настройка через Vercel rewrites. sitemap.xml— добавили/sluzby/web,/sluzby/kliniky(их не было)html lang="cs"— исправили с невалидногоcz(BCP 47 требует двухбуквенный ISO 639-1 код языка;cz— код страны, а не языка)- Canonical + title — почистили на всех страницах
- Регистрация, submit sitemap:
- Google Search Console → submit sitemap, Request indexing каждой ключевой страницы
- Bing Webmaster Tools → submit sitemap (Bing важен и в ČR — Copilot оттуда)
- Seznam WMT → верификационный файл загружен в корень + meta-тег, submit sitemap
За 24 часа после Request indexing все ключевые страницы были в индексе Google. Seznam — 3 дня. Bing — 2.
IndexNow — автоматизированный push-сигнал
Вручную сабмитить sitemap в каждом WMT после каждого изменения — не масштабируется. Во второй день вечером (22 апреля, уже после публикации этой статьи) мы добавили IndexNow — открытый протокол, где один POST-запрос на api.indexnow.org форвардится в Bing, Seznam, Yandex и Naver. Пингуете один раз — получают все участвующие поисковики.
Почему это важно для GEO: плановый обход Bingbot/SeznamBot обнаружит новую версию страницы через дни или недели. IndexNow — это push, он говорит поисковику: «зайди сюда ещё раз, прямо сейчас». Быстрее индекс Bing = быстрее в Copilot, быстрее Seznam = быстрее видимость в чешских AI-ассистентах, которые его краулят.
Реализация: Python-скрипт на stdlib (0 зависимостей) + GitHub Actions workflow, триггер на каждый push в main, меняющий HTML или sitemap:
on:
push:
branches: [main]
paths: ['**.html', 'sitemap.xml']
workflow_dispatch:
jobs:
ping:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 2 }
- name: Wait for Vercel production deploy
run: sleep 90
- name: Ping IndexNow (changed URLs)
run: python3 indexnow.py
Ключевая деталь: sleep 90. Ждём 90 секунд перед пингом, чтобы Vercel успел задеплоить новую версию на CDN. Если пингануть сразу после merge, поисковик зафетчит ещё старую версию — и IndexNow сработает против нас. workflow_dispatch также позволяет вручную пингануть всю sitemap (python3 indexnow.py --all) — полезно после большой ревизии или добавления новой локализации.
Аутентификация через статичный ключ-файл в корне сайта (<key>.txt, содержимое = сам ключ). Поисковик его фетчит, чтобы подтвердить, что вы владелец домена — стандартный ownership proof.
Google IndexNow не принимает. У него своё Indexing API, но оно ограничено JobPosting и BroadcastEvent — для обычных страниц не подходит. Для Google остаётся классика: submit sitemap + Request indexing в Search Console. Не критично — Googlebot в любом случае самый агрессивный краулер из группы.
Итог: каждый merge в main теперь автоматически уведомляет Bing, Seznam и Yandex. Ноль ручных шагов, ноль шансов забыть — и эта статья, которую вы читаете, была первым URL, который workflow пингнул в проде.
Шаг 2: AI-специфичные файлы
robots.txt для AI-краулеров
Расширили robots.txt явными User-agent директивами для основных AI-краулеров:
GPTBot(OpenAI training)OAI-SearchBot(ChatGPT Search)ChatGPT-User(ChatGPT browsing в ответе)PerplexityBotClaudeBot/anthropic-aiGoogle-Extended(Gemini training — отдельный от Googlebot)Applebot-Extended(Apple Intelligence)
Явные Allow директивы AI-краулерам говорят «да, можете тренироваться и цитировать». OpenAI и Anthropic публично подтверждали, что robots.txt уважают.
llms.txt
llms.txt — неофициальный стандарт (Mintlify, апрель 2025). Цель: дать LLM-моделям структурированный текстовый обзор сайта — как robots.txt, но для контента. В наш файл положили:
- Краткое описание фирмы (1 абзац)
- Прайс услуг (24 900 – 64 900 Kč за сайты)
- Два контрастных кейса с реальными цифрами
- Bio команды (4 человека) с экспертизой
- Детали гарантий
- Контакты и дату последнего обновления
Важная оговорка: llms.txt пока официально не уважает ни один крупный AI-провайдер. Ни OpenAI, ни Anthropic, ни Google. Perplexity якобы экспериментально читает, но публично не подтверждали. Почему всё равно делаем: создание — 15 минут, и когда стандарт получит трекшн, мы готовы. Ставка с ассиметричным профилем risk/reward.
Шаг 3: Структурированные данные (17 JSON-LD блоков)
Ядро GEO-работы. Без схемы машина читает сайт как неструктурированный текст. С JSON-LD («это Organization, это её Service с прайсом, это FAQPage с 11 вопросами, это Person за фирмой») AI распознаёт сущности и связи — и их может цитировать.
Что добавили, по страницам:
| Страница | Типы schema |
|---|---|
index.html | Organization, WebSite, WebPage, ProfessionalService |
sluzby.html | BreadcrumbList, CollectionPage, ItemList (услуги) |
sluzby/web.html | BreadcrumbList, Service, 3× Offer (прайс Starter/Business/Premium) |
sluzby/kliniky.html | BreadcrumbList, Service, FAQPage (11 Q&A) |
portfolio.html | BreadcrumbList, CollectionPage, ItemList (6 кейсов) |
o-nas.html | BreadcrumbList, AboutPage, 4× Person с knowsAbout |
kontakt.html | BreadcrumbList, ContactPage, ContactPoint, OpeningHoursSpecification |
Всего 17 блоков, 0 ошибок в валидаторе Google Rich Results Test. Во втором заходе добавили optional поля: logo, address, image, priceRange (Google флагнул их как рекомендуемые, не обязательные).
Конкретный E-E-A-T трюк: в AboutPage → Person-записях используйте свойство knowsAbout со списком предметных навыков. Этот сигнал Google Knowledge Graph использует для определения авторитета сущности. У нас у каждого человека 3–5 knowsAbout-записей (например, «конверсионная оптимизация», «B2B lead generation», «маркетинг для клиник»).
Шаг 4: Edge Middleware для детекции AI-краулеров
Vercel Web Analytics фильтрует ботов by design (трекает людей через JS-пиксель, боты JS не выполняют). Для мониторинга AI-краулеров — бесполезен. Решение: Vercel Edge Middleware, 14 строк кода:
export const config = {
matcher: '/((?!assets|api|_vercel).*)'
};
const BOT_RE = /GPTBot|OAI-SearchBot|ChatGPT-User|PerplexityBot|ClaudeBot|anthropic-ai|Google-Extended|Googlebot|Bingbot|SeznamBot|Applebot/i;
export default function middleware(request) {
const ua = request.headers.get('user-agent') || '';
const match = ua.match(BOT_RE);
if (match) {
const path = new URL(request.url).pathname;
console.log(`[bot] ${match[0]} -> ${path}`);
}
}
Middleware срабатывает на каждом non-static запросе. Логи видны в Vercel Observability → Middleware. На Hobby-плане агрегированные (количество вызовов, пути, actions), на Pro — с текстом логов. За первый день увидели 14 middleware-вызовов: соотношение bot/human прослеживается, но детальный UA-текст остаётся за paywall.
Шаг 5: Внешние сигналы (каталоги и платформы)
Entity recognition в AI-моделях опирается на то, что о вас говорит остальной интернет. Чем больше независимых доменов цитируют сущность «Zenitho», тем сильнее entity signal.
Зарегистрировались:
- firmy.cz — важнейший чешский бизнес-каталог. Структурированная запись с услугами и контактами.
- Clutch.co — международный каталог агентств. B2B-крыло AI-моделей оттуда берёт.
- LinkedIn Company Page — с полной фирменной структурой, разделом услуг, тегами команды
- Google Business Profile (ранее My Business) — для локальных сигналов + Maps
Каждая платформа = ещё один authority-домен, подтверждающий «это агентство Zenitho, предлагает X, находится в Y». AI-модели при entity resolution эти cross-references собирают.
Результаты за 48 часов
| Область | До (утро 21.04) | После (вечер 22.04) |
|---|---|---|
| FCP (мобайл) | 4,3 с | 1,7 с |
| LCP (мобайл) | Error (NO_LCP) | 4,2 с |
| Speed Index | 8,8 с | 1,8 с |
| JSON-LD блоков на сайте | 0 | 17 |
| Schema errors (Rich Results Test) | — | 0 |
| Индексация в Google | Нет | Да (24 ч) |
| Индексация в Bing | Нет | Да (2 дня) |
| Индексация в Seznam | Нет | Да (3 дня) |
AI crawler директивы в robots.txt | 0 | 8 |
llms.txt | Не существовал | Выпущен, 4,4 kB |
| Регистраций в каталогах | 1 (Maps) | 5 |
| Мониторинг AI-краулеров | Нет | Edge Middleware |
Чего пока не измерили: реальную частоту цитаций в ChatGPT/Perplexity/Gemini. Это имманентно сложно: инструменты для этого (Otterly, Peec AI, AthenaHQ) платные и нужно 2–4 недели для значимого тренда. Опубликуем follow-up через 30 дней.
Что нас удивило
1) Vercel Web Analytics фильтрует ботов. Мы думали, включение Analytics покажет AI-краулеров. Не показало — Analytics трекает людей через JS-пиксель, боты JS не выполняют. Решение: Edge Middleware.
2) llms.txt официально не уважает никто. OpenAI, Anthropic, Google его официально не обходят. Perplexity якобы да (публично не подтверждали). Всё равно рекомендуем — минимальная инвестиция, асимметричный апсайд.
3) JSON-LD сам по себе недостаточен. Это, пожалуй, самое частое ментальное сокращение. Схема говорит машине структуру, но содержимое она всё равно читает. Если у вас схема Service, а описание услуги — шаблон («профессиональные сайты на заказ»), AI процитирует конкурента со слабой схемой, но уникальными данными и конкретными числами, а не вас.
4) Чешский рынок спит на практике. Большие CZ-агентства в 2026 году написали теоретические гайды по GEO. Но конкретную имплементацию с цифрами почти никто не опубликовал. Это пробел, который заполняет наша статья — и надеемся, вдохновляет вас на такую же открытость.
Ключевые выводы
- Скорость — предпосылка, а не GEO-фича. Без быстрого сайта краулеры таймаутят. Но сама по себе скорость вас не цитирует — контент цитирует.
- Индексируйтесь везде, откуда AI берёт. Google, Bing, Seznam. Без классической индексации вы невидимы для 80% AI-систем.
- Схема — must-have, но не серебряная пуля. 17 JSON-LD блоков сами по себе не увеличат AI-цитации. Нужен ещё контент, который стоит цитирования.
llms.txt— инвестиция в будущее. Сегодня официально не уважает никто. Через пару месяцев может быть иначе. 15 минут работы, пренебрежимый риск.- Детектируйте краулеров, не надейтесь. Без собственных логов вы не знаете, кто к вам ходит. Edge Middleware за 14 строк даст ответ.
Чеклист: 10 шагов для малого и среднего чешского бизнеса
- Прогоните сайт через PageSpeed Insights. Цель: FCP под 2 с, LCP под 2,5 с, CLS под 0,1.
- Исправьте
html lang="cs"(BCP 47) — неcz. - Введите чистые URL (без
.html). - Зарегистрируйте сайт в Google Search Console. Submit sitemap. Request indexing.
- Повторите для Bing Webmaster Tools и Seznam WMT.
- Дополните
robots.txtдирективамиUser-agent: GPTBot / PerplexityBot / ClaudeBot / Google-ExtendedсAllow: /. - Создайте
llms.txtв корне — краткий текстовый обзор фирмы, цен, людей, контакта. - Добавьте JSON-LD схему: минимум
Organization,ProfessionalService(сpriceRangeиareaServed),FAQPageесли есть часто задаваемые вопросы. - Валидируйте через Google Rich Results Test и Schema.org Validator. Цель: 0 ошибок.
- Зарегистрируйте фирму в firmy.cz, Clutch, LinkedIn Company Page, Google Business Profile.
Для продвинутых: Edge Middleware для детекции AI-краулеров (код выше).
Хотите GEO для своего сайта?
Мы Zenitho — чешское агентство, которое не только учит GEO, но и делает на практике. На собственном сайте и для клиентов из сферы частных клиник, B2B-услуг и локальных фирм.
Заказать GEO для сайтаЧасто задаваемые вопросы
Нужно ли малому бизнесу в ČR уже сейчас заниматься GEO?
Если вы работаете в B2B, профессиональных услугах или здравоохранении — да, начинайте сейчас. Доля пользователей, которые на чешском рынке привычно ищут информацию о компаниях в ChatGPT и Perplexity, заметно растёт год к году. В B2C e-commerce срочность меньше, но первые пять шагов (скорость, sitemap, JSON-LD, индексация в Google, чистые URL) окупаются и в классическом SEO — делайте их всё равно.
Каково соотношение усилий между классическим SEO и GEO?
На практике 80% работы — это «классика»: скорость, индексация, качество контента, схема. Оставшиеся 20% специфичны для GEO: llms.txt, директивы для AI-краулеров, упоминания сущности в каталогах. GEO не работает без крепкой классической SEO-базы.
А если AI-системы никогда не признают llms.txt?
Инвестиция: ~15 минут. Тривиальное обслуживание. Даже при полном отказе стандарта вы потратили не больше часа работы. Риск практически нулевой, апсайд ощутимый — поэтому рекомендуем.
Когда ждать результатов?
Классическое SEO (позиции в Google): 2–6 недель после переиндексации. GEO-цитации: очень трудно измерить. Рекомендуем составить таблицу из 20 релевантных запросов (например, «digitální agentura Praha pro kliniky») и раз в месяц тестировать их в ChatGPT, Perplexity и Gemini. Абсолютных чисел не получите, но тренд через 2–3 месяца увидите.
Есть ли инструмент, отслеживающий AI-цитации?
Да — Otterly.AI, Peec AI, AthenaHQ. Платные (~50–200 USD/мес), измеряют, в каких AI-ответах появляется ваш домен. Малому бизнесу окупаются только после 3–6 месяцев GEO-работы, когда есть что измерять.
А если у меня не Vercel?
Edge Middleware — специфика Vercel. Эквиваленты: Cloudflare Workers, AWS Lambda@Edge, Netlify Edge Functions. Концепция везде одинаковая — перехватить запрос, разобрать User-Agent, логировать совпадения с ботами. Код в любой из этих платформ умещается в те же 14 строк.