Что я узнал про 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.
Это другая игра по правилам:
Главное различие: 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.
Стоимость инфраструктуры:
Если бы я выделил каждый компонент в отдельный 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 автоматическим)
Что НЕ работает (и я честно об этом)
- JavaScript-only сайты — мёртвая зона. Я унаследовал старую SPA-версию сайта на чистом React-Babel из CDN. Для LLM она невидима. Пришлось переписать на Astro со static output. Это самое большое изменение и единственное, без которого остальное бессмысленно.
- AI любит факты, не маркетинг. Каждая туристическая страница в моём первоначальном тексте была пропитана "uniquely beautiful experience" и "unforgettable journey". Это антипаттерн для LLM. Они не цитируют такие тексты. Я переписал всё в фактологическом стиле: "7 часов, 14 км, 400 м подъём, $80 на группу". И парадокс: clickthrough тоже вырос, потому что реальные люди тоже не любят воду.
- Wikipedia — это медленно и опасно. Один неосторожный bot edit — community warning. Любая попытка добавить упоминание себя — COI flag и потенциальный topic ban. Wikipedia bot должен делать только factual updates на чужих статьях, не упоминая твою компанию вообще. Это контринтуитивно: «зачем я тогда туда хожу?» — затем что ты становишься citable secondary source в reference section, не самим объектом статьи.
- Apple Maps / Apple Business — другая лига.Их verification flow требует или D-U-N-S номер. Sole proprietor / monotributista в Аргентине без habilitación — серая зона. Я пока скипнул.
- 2GIS не покрывает мою страну. Просто факт.
- 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.
Что я бы сделал заново, начиная сегодня
- Сразу перейти на статический сайт. Не тратьте время на SEO, пока у вас SPA без SSR.
- Первый месяц — llms.txt + JSON-LD endpoints + permissive robots.txt. Это база. Без этого всё остальное бессмысленно.
- Второй месяц — Wikidata + GBP + Bing Places + OSM. 4 ручных регистрации, каждая ~30-60 минут. Это даёт критическую массу external authority signals.
- Третий месяц — cron-бот для IndexNow + Wikivoyage drafts. Это самая длинная часть, но один раз настроил — забыл.
- Четвёртый месяц — Yandex Webmaster + Telegram канал + Dzen. Для русскоязычной аудитории.
- Пятый-шестой месяцы — open dataset, Wikipedia editing (осторожно!), регулярный content.
- НЕ браться: 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) если будет интерес.