Что я узнал про GEO (Generative Engine Optimization) за 6 месяцев на ChatGPT

Маленький туроператор в Ушуае построил систему, чтобы попадать в ответы ChatGPT, Claude, Perplexity и YandexGPT — а не только в Google. Делюсь архитектурой, кодом, ценами и тем, что НЕ сработало.

ТЕКСТ для тех, кто не любит читать длинно

  • Google устаревает как точка контакта с клиентом. AI-поисковики (Perplexity, ChatGPT Search, YandexGPT) уже сейчас отвечают на 30-40% коммерческих запросов без перехода на сайт.- SEO больше не работает в одиночку.Нужен GEO — Generative Engine Optimization. Это другая дисциплина: ты оптимизируешь не под клик в SERP, а под цитирование в ответе LLM.- Я потратил 6 месяцев на эксперимент с собственным туроператором в Ушуае. Построил полноценную GEO-инфраструктуру: llms.txt, JSON-LD на 268 endpoint'ов, cron-бот, который правит Wikivoyage, IndexNow ping в Bing/Yandex, регистрация в Wikidata, OSM, Bing Places, Yandex Webmaster, Dzen, Telegram-канал.- Стоимость: ~$8-12/мес в Anthropic API + $0 за остальное (VPS уже был).- Открытый stack — весь код в open-source repos, можно повторить.

Кто я и зачем мне это

Меня зовут Иван. Вместе с женой Викой мы 6 лет водим туры из Ушуаи — самого южного города в мире, на Огненной Земле в Аргентине. Малая группа, авторские маршруты, русский язык. Аудитория — русскоговорящие путешественники, чаще всего те, кто едет в Антарктиду или делает большой тур по Патагонии.

Бизнес небольшой. Один сайт (magellania.net), один Google Business Profile, периодические упоминания в гайдах. Классический long-tail SEO.

В декабре 2025 я заметил странное: половина моих новых клиентов стала писать «увидел вас в ChatGPT». Не «в Google». Не «по рекомендации». Именно в ChatGPT.

И тут до меня дошло: search изменился. Запрос «русскоязычный гид в Ушуае» теперь часто не возвращает 10 синих ссылок — он возвращает прямой ответ языковой модели, со списком из 2-3 операторов, с ценами и контактами. Кликов нет. Атрибуции почти нет. Но кто оказывается в ответе — выигрывает рынок, а кто нет — становится невидимым.

Я начал копать. И за 6 месяцев построил то, что в индустрии называют GEO — Generative Engine Optimization. Параллельно осознал, что почти никто в туризме (и в малом бизнесе вообще) этим не занимается осознанно. А зря.

Делюсь архитектурой, граблями, цифрами.

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

SEO оптимизирует под Google: title-теги, обратные ссылки, скорость загрузки, авторитет домена. Цель — попасть в Топ-3 SERP и собрать клик.

GEO оптимизирует под языковую модель. Цель — стать цитируемым источником в ответе ChatGPT/Claude/Gemini/Perplexity/YandexGPT.

Это другая игра по правилам:

Что я узнал про GEO (Generative Engine Optimization) за 6 месяцев на ChatGPT

Главное различие: LLM учатся не на SERP, а на корпусе текстов. В корпус попадают: Wikipedia, государственные сайты, крупные новостные ресурсы, GitHub README, Stack Overflow, и (внимание!) — сайты, у которых есть машинно-читаемая структура.

Если твой сайт — это JavaScript-SPA без серверного рендеринга, без JSON-LD, без sitemap.xml — для LLM ты не существуешь. Точка.

Архитектура: три слоя

Я разбил систему на три слоя по принципу «где живёт сигнал»:

1. On-site — что есть на самом magellania.net

Это то, что AI-краулер увидит при заходе на сайт.

Базовое (SEO-инвариант):

  • Статический сайт на Astro 5 (output: static)
  • Server-side rendering всех страниц
  • 4 sitemap'а: основной + news + images + index
  • Permissive robots.txt (НЕ блокируем GPTBot, PerplexityBot, anthropic-ai — это критично, многие сайты по умолчанию блокируют AI краулеры и убивают свой шанс)

GEO-специфичное:

  • llms.txt — короткая markdown-карта сайта. Стандарт llmstxt.org. Это то, что LLM-краулер скачает первым, если он знает, что искать. У меня три языковые версии: /llms.txt, /en/llms.txt, /es/llms.txt.
  • llms-full.txt — полный machine-readable дамп всего контента (туры, блог, факты) в markdown. У меня это файл на 925 КБ для русской версии. LLM-краулер парсит один файл вместо 89 HTML-страниц.
  • JSON-LD endpoints — 268 машинно-читаемых JSON-документов. По одному на каждый тур (/data/tours/<slug>.json) и блог-пост (/data/blog/<slug>.json), × 3 языка. Каждый файл — это Schema.org markup типа TouristTrip или Article с полными данными: цена, продолжительность, FAQ, координаты.
  • Inline Schema.org JSON-LD на каждой странице — <script type="application/ld+json"> с типом, соответствующим странице (TravelAgencyна главной, TouristTrip на туре, Articleна блог-посте, FAQPage для секции FAQ, BreadcrumbList везде).
  • Markdown export для каждого тура и блог-поста: /tours/beagle.md, /blog/<slug>.md. LLM предпочитают чистый markdown HTML-парсингу.
  • RSS 2.0 + JSON Feed 1.1 для блога — auto-discovery в <head>.
  • Hreflang альтернативы — указывают LLM на ru/en/es версии страницы.
  • /facts/ knowledge hub — отдельные страницы с фактами: климат Ушуаи (нормы SMN 1991-2020), тарифы национального парка (с привязкой к Resolución), описание Канала Бигля. Это citation gold — LLM любят такой контент.
  • /press/ — журналистский kit с фактами, биографиями, лицензией изображений.
  • /open-data/ — наш CC-BY-4.0 датасет с Schema.org Dataset markup. Google Dataset Search сам индексирует.
  • /security.txt + /humans.txt — мелочи, но повышают доверие.

Всё это строится автоматически при npm run build. Никакой ручной работы после первоначальной настройки.

2. Off-site automation — cron-бот magellania-geo-bot

Это самая интересная часть. Я написал Node.js бота, который живёт на VPS и автоматизирует то, что иначе пришлось бы делать руками раз в неделю.

Что он делает:

  • 3 раза в неделю (пон/ср/пт 20:00 UTC + рандомный jitter) генерирует draft правки Wikivoyage через Anthropic Claude с включённым web_search. Тематика: только факты (тарифы парков, погода, расписания), никакого упоминания Magellania (anti-COI rule). Drafts через HedgeDoc + Telegram → я ревьюю в одном тапе → бот публикует правку в Wikivoyage через MediaWiki Action API + параллельно постит то же самое как блог-статью на magellania.net.
  • Auto-translate каждой публикации на английский и испанский через Anthropic API. Стоимость: ~$0.10-0.20 за пост.
  • IndexNow ping при каждой публикации — Bing/Yandex/Seznam получают пинг и индексируют новый URL за минуты вместо дней. Cascade в ChatGPT Search, Bing Copilot, YandexGPT.
  • Daily 06:00 UTC — health check 17 критичных URL'ов. Если что-то упало — алёрт в Telegram.
  • Daily 07:00 UTC — Schema.org валидатор. Если markup сломан — алёрт.
  • Sat 08:00 UTC — content audit (устаревшие годы, короткие body, плохие meta).
  • Sun 19:00 UTC — weekly digest в Telegram: что опубликовано, что запинговано, состояние health.
  • Weekly Wed — генерация поста для Google Business Profile в моём авторском стиле, отправка в Telegram с кнопкой «отправил в GBP-приложение» → ротация продвигается.

Самое важное: publish/edit Wikipedia через owner-only OAuth 2.0, edit appears как обычная правка пользователя IvanBogatiy, не флагается как bot. Это критично для community ethics в Wikimedia.

Стек: Node 20, undici, MediaWiki API, Anthropic SDK с web_search, HedgeDoc (selfhost) для review surface, Telegram Bot API, systemd timers.

Стоимость инфраструктуры:

Что я узнал про GEO (Generative Engine Optimization) за 6 месяцев на ChatGPT

Если бы я выделил каждый компонент в отдельный SaaS — вышло бы $300+ в месяц.

3. Off-site external — где живёт авторитет

Эти каналы я открывал руками (с помощью Claude в Chrome MCP), но один раз и навсегда:

  • Google Business Profile — стандарт. Карточка бизнеса + weekly посты через cron + 16 готовых вариантов в ротации.
  • Bing Places — импорт из GBP автосинхронизация каждую неделю.
  • OpenStreetMap — pin на Av. Maipú с тегами office=travel_agent, wikidata=Q140053365, language, start_date. OSM — это открытый источник для всего: MapBox, Maps.me, Komoot, и AI training corpora.
  • Wikidata — три Q-entity: Magellania Travel (Q140053365), я (Q140053462), Вика (Q140053463). Cross-link через P112 founder + P26 spouse. Wikidata — это прямой feed в Google Knowledge Graph и почти все LLM(Claude, ChatGPT, Gemini тренируются на Wikidata).
  • Yandex Webmaster — verified, 4 sitemaps submitted, 25 топ-URL'ов в priority crawl queue.
  • Dzen (бывший Yandex.Zen, теперь VK) — публичный канал dzen.ru/magellaniatravel с авторским описанием. Контент индексируется Yandex+Google → YandexGPT.
  • Telegram public channel @magellaniatravel — auto-cross-post через cron-бот: каждый новый блог-пост публикуется в канал с auto-unfurl preview (Telegram сам подтягивает og:image и og:title). Telegram public channels индексируются Yandex+Google.
  • Wikipedia main namespace — отдельный pipeline в моем боте, через тот же OAuth, для факт-обновлений ключевых статей (Tierra del Fuego National Park, Ushuaia, Beagle Channel) на en/es/ru. Со строгими COI правилами: Magellania в тексте не упоминается, только factual updates со secondary sources.

Что НЕ заработало (или сейчас в паузе):

  • Apple Business Connect — Apple требует email на верифицируемом домене (gmail vs @magellania.net). Sole proprietors с monotributo без habilitación municipal — тонкий случай. Скипнул в пользу более высоких ROI.
  • 2GIS — карта Аргентины у них не покрыта. Не наш регион.
  • Yandex Business — Yandex Sprav требует +7 RU номер для SMS verify. AR номер отвергает. Можно обойти RU номером для verify → потом замена на AR, но в очереди.
  • Wikipedia main bot — первый edit edge case. Первая правка статьи "Tierra del Fuego National Park" прошла через AbuseFilter (я переключился с full-page replacement на section-level edit), но LLM в моём pipeline сгенерировал новое содержимое секции "Tourism" не сохранив nested subsection "End of the World train" → правка случайно удалила фактический параграф про поезд. Self-revert в браузере + apology на talk page community editor'у, который заметил. Урок: section edits в Wikipedia опасны если в section есть level-3 subsections. Bot на паузе до фикса prompt и validation (сравнение headings/refs before/after submit).

Что измерено (и что нет)

Честно: я в начале пути. Большая часть инфраструктуры только живёт месяц-два, и эффект от GEO измеряется месяцами, не днями.

Baseline AI-search citation тест (проведён через 2 недели после первоначальной настройки):

Я запросил у Claude, ChatGPT и Perplexity вопросы типа:

  • "Русскоязычный гид в Ушуае"
  • "Тур-операторы для русскоговорящих в Аргентине"
  • "Где найти русского гида для круиза в Антарктиду"

Результаты на baseline: Magellania не упоминалась ни в одном ответе. ChatGPT придумывал имена несуществующих компаний. Perplexity показал 2-3 турагентства, ни одно из которых не работает с русскими.

Это была мотивирующая отправная точка.

Через 4-6 месяцев планирую повторить тест.Логичный KPI: попасть в ответы хотя бы 2 из 3 крупных LLM по релевантным запросам.

Что я уже могу измерить сейчас:

  • ✅ Yandex Webmaster показывает crawl моих топ-страниц (25 URL'ов в очереди, обработка идёт)
  • ✅ IndexNow 200 OK на каждый publish (Bing/Yandex/Seznam подтверждают приём)
  • ✅ Wikidata Q140053365 уже видна в Google Knowledge Panel при поиске «Magellania Travel»
  • ✅ OSM pin визуально появляется в MapBox / Maps.me — это значит он попадёт в их dataset exports
  • ✅ Dataset на GitHub проиндексирован Google Dataset Search (schema:Datasetmarkup на странице делает discovery автоматическим)

Что НЕ работает (и я честно об этом)

  1. JavaScript-only сайты — мёртвая зона. Я унаследовал старую SPA-версию сайта на чистом React-Babel из CDN. Для LLM она невидима. Пришлось переписать на Astro со static output. Это самое большое изменение и единственное, без которого остальное бессмысленно.
  2. AI любит факты, не маркетинг. Каждая туристическая страница в моём первоначальном тексте была пропитана "uniquely beautiful experience" и "unforgettable journey". Это антипаттерн для LLM. Они не цитируют такие тексты. Я переписал всё в фактологическом стиле: "7 часов, 14 км, 400 м подъём, $80 на группу". И парадокс: clickthrough тоже вырос, потому что реальные люди тоже не любят воду.
  3. Wikipedia — это медленно и опасно. Один неосторожный bot edit — community warning. Любая попытка добавить упоминание себя — COI flag и потенциальный topic ban. Wikipedia bot должен делать только factual updates на чужих статьях, не упоминая твою компанию вообще. Это контринтуитивно: «зачем я тогда туда хожу?» — затем что ты становишься citable secondary source в reference section, не самим объектом статьи.
  4. Apple Maps / Apple Business — другая лига.Их verification flow требует или D-U-N-S номер. Sole proprietor / monotributista в Аргентине без habilitación — серая зона. Я пока скипнул.
  5. 2GIS не покрывает мою страну. Просто факт.
  6. Yandex Sprav (бизнес-карточка) требует +7 номер. AR номер не принимает. Workaround есть, но не быстрый.

Тех-стек, если хочешь повторить

Весь код open source, мой репозиторий приватный (он содержит секреты), но основные модули можно повторить за выходные:

Содержание apex-сайта (Astro):

  • Astro 5 output: static
  • @astrojs/sitemap integration
  • Кастомные endpoint'ы Astro для /data/*(JSON-LD per page)
  • Кастомные endpoint'ы для /llms.txt, /llms-full.txt, RSS, JSON Feed, /tours/<slug>.md
  • Helper-функции для Schema.org markup по типу страницы
  • Astro <Image> component везде, alt-атрибуты строго осмысленные

Cron-бот (Node.js):

  • Anthropic SDK с web_search_20250305 tool
  • undici для долго-running fetch с keep-alive
  • MediaWiki Action API через OAuth 2.0 owner-only consumer (регистрируется на meta.wikimedia.org за 5 минут)
  • HedgeDoc (Docker self-host) для review surface — это бесплатный markdown editor с realtime collaboration
  • Telegram Bot API
  • systemd timers вместо node-cron (надёжнее, лучше logging)
  • IndexNow API (api.indexnow.org/indexnow) — POST с массивом URL

Open dataset на GitHub:

  • 3 JSON-файла с фактами (тарифы парка, климат, сезон пингвинов)
  • LICENSE: CC BY 4.0
  • README с источниками каждого факта
  • Schema.org Dataset markup на странице /open-data/ сайта, ссылающейся на repo

Стоимость стека для повтора: $5-20/мес в Anthropic API в зависимости от объёма публикаций. Всё остальное — free tier.

Открытый датасет

Я выложил наши факты в open-source формате под CC BY 4.0:

Содержит:

  • tdf-national-park-tariffs.json — официальные тарифы национального парка по годам, со ссылками на Resolución APN- ushuaia-climate-normals.json — климатические нормы 1991-2020 по данным SMN- magellanic-penguin-season.json — сезонность пингвиньей колонии на Isla Martillo

Используйте свободно. Если знаете какие-то факты лучше — присылайте PR.

Что я бы сделал заново, начиная сегодня

  1. Сразу перейти на статический сайт. Не тратьте время на SEO, пока у вас SPA без SSR.
  2. Первый месяц — llms.txt + JSON-LD endpoints + permissive robots.txt. Это база. Без этого всё остальное бессмысленно.
  3. Второй месяц — Wikidata + GBP + Bing Places + OSM. 4 ручных регистрации, каждая ~30-60 минут. Это даёт критическую массу external authority signals.
  4. Третий месяц — cron-бот для IndexNow + Wikivoyage drafts. Это самая длинная часть, но один раз настроил — забыл.
  5. Четвёртый месяц — Yandex Webmaster + Telegram канал + Dzen. Для русскоязычной аудитории.
  6. Пятый-шестой месяцы — open dataset, Wikipedia editing (осторожно!), регулярный content.
  7. НЕ браться: Apple Business для AR moнотрибутистов без habilitación, 2GIS не покрывающий регион, Yandex Sprav если нет RU номера. Это не «плохие каналы», это «не наша лига».

Итог

GEO — это не новая магия. Это возврат к фундаменту веба: машинно-читаемые данные, правильные форматы, авторитетные источники, прозрачная атрибуция. То, что должно было быть в SEO с самого начала, но Google своим PageRank-эффектом задрафтил всех в линкбилдинг.

Теперь LLM считают не ссылки. Они читают и понимают.

Если у тебя есть факт, который полезен — структурируй его, дай ссылку на источник, выложи в открытое поле, и он окажется в ответе ChatGPT через 3-6 месяцев. Без денег за продвижение. Без линкбилдинга. Без серых хаков.

Если вы маленький бизнес — у вас сейчас окно возможностей: большие конкуренты ещё не заметили GEO, они продолжают платить агентствам за обратные ссылки. Вы можете зашить факты в LLM-память до того, как этот рынок станет конкурентным.

А когда станет — будете уже в ответе по умолчанию.

Иван Богатый, Magellania Travel.Сайт: magellania.netTelegram: @magellaniatravelDzen: dzen.ru/magellaniatravelOpen dataset: github.com/bogisis/ushuaia-tierra-del-fuego-facts

Если этот пост был полезен — буду благодарен за репост или комментарий. Также напишите, что вам интересно: следующий пост может быть про конкретный модуль (cron-бот, JSON-LD endpoints, или Wikipedia integration) если будет интерес.

1
Начать дискуссию