GEO Optimizer: насколько ваш сайт виден ChatGPT и Perplexity

· 3 мин чтения
seo llm python cli mcp
📂 Исходный код на GitHub

GEO Optimizer — открытый инструмент на Python: аудит сайта по 8 категориям, оценка цитируемости по 47 проверкам, генерация robots.txt, llms.txt и JSON-LD, MCP-сервер и GitHub Action.

GEO Optimizer: насколько ваш сайт виден ChatGPT и Perplexity

GEO Optimizer: проверка сайта на готовность к ответам ИИ-поисковиков

Сайт может стоять на первом месте в Google и при этом не попасть ни в один ответ ChatGPT или Perplexity. Причина простая: классический поиск отдаёт десять ссылок и человек выбирает сам, а ИИ-поисковик собирает один короткий ответ и ставит рядом пару источников. Попасть в этот ответ — отдельная задача со своим набором правил.

Обычные SEO-инструменты про эту задачу ничего не знают: они считают позиции в выдаче, бэклинки и плотность ключевых слов. GEO Optimizer (репозиторий на GitHub) проверяет другое — может ли краулер ИИ дойти до страницы, разобрать её и процитировать.

Что это за проект

Набор инструментов на Python под лицензией MIT. Работает как CLI, как библиотека для Python, как MCP-сервер, как GitHub Action и как интеграция для Astro. Одна команда ставит сайту оценку от 0 до 100 и показывает, что именно чинить.

Автор — Хуан Камило Аурити (Juan Camilo Auriti). Проект написан на Python, требует версии 3.9 или новее, распространяется через PyPI как geo-optimizer-skill. На момент публикации — версия 4.18.3, 85 выпусков с февраля 2026 года, около тысячи звёзд на GitHub.

Внутри заявлены 16 CLI-команд, 8 категорий оценки, 27 ИИ-краулеров, 47 проверок содержимого, 12 MCP-инструментов, 8 форматов вывода и больше 2000 тестов (HTTP в тестах замокан, поэтому тесты не ходят в сеть).

Насколько это вообще проблема

Авторы проекта собрали данные по 1400+ сайтам, проверенным через их платный сервис GeoReady. Медианная оценка — 57 из 100. Файл llms.txt публикуют 58% сайтов. Выборка нерепрезентативная: это те, кто сам решил проверить свой сайт. Но порядок цифр показывает, что большинство сайтов к ИИ-поиску не готовы.

Для сравнения, из документации проекта: у example.com нет robots.txt, нет llms.txt и нет структурированных данных — 8 из 100. Сайт geoready.dev, собранный на собственной интеграции проекта для Astro, получает 91 из 100: разрешены все 27 краулеров, llms.txt найден, семь типов разметки.

Как запустить

Нулевая установка — через uvx:

uvx --from geo-optimizer-skill geo audit --url https://yoursite.com

Или обычная установка в окружение:

pip install -U geo-optimizer-skill

Дальше — базовые сценарии:

geo audit --url https://yoursite.com                   # score 0-100 + prioritized fixes
geo fix --url https://yoursite.com                     # preview robots.txt, llms.txt, schema, meta
geo audit --url https://yoursite.com --threshold 70    # exit 1 below 70 - use it as a CI gate
geo citations --brand "Acme" --domain acme.com         # does AI cite you?

geo fix по умолчанию только показывает, что он собирается записать. Файлы появляются на диске только с флагом --apply. Оценка после правок — это собственная оценка инструмента, а не измеренный результат: авторы это оговаривают прямо.

Как считается оценка

Восемь категорий, сумма — 100 баллов:

Категория Баллы Что проверяет
robots.txt 18 27 ИИ-ботов в трёх tiers (обучение, поиск, пользователь). Разрешены ли боты цитирования
llms.txt 18 Наличие, заголовок H1, цитата, разделы, ссылки, глубина. Есть ли llms-full.txt
Schema JSON-LD 16 WebSite, Organization, FAQPage, Article. Насыщенность атрибутами (5+)
Мета-теги 14 Title, description, canonical, Open Graph
Содержимое 12 H1, цифры, внешние ссылки, иерархия заголовков, списки и таблицы, важное в начало
Бренд и сущности 10 Согласованность названия, ссылки на Knowledge Graph (Wikipedia, Wikidata, LinkedIn, Crunchbase), страница about
Сигналы 6 <html lang>, RSS/Atom, свежесть dateModified
AI-обнаружение 6 .well-known/ai.txt, /ai/summary.json, /ai/faq.json, /ai/service.json

Разбалловка: 86–100 отлично, 68–85 хорошо, 36–67 база, 0–35 критично. Отдельно есть «негативные сигналы», которые могут снять до 5 баллов: перегруженные призывы к действию, попапы, тонкий контент, переспам ключевыми словами, отсутствие автора, большой процент шаблонного текста.

Веса живут в models/config.py — их можно прочитать и не согласиться. Полный разбор в SCORING_RUBRIC.md.

Цитируемость и наука за ней

Отдельно от общей оценки считается Citability Score — 0–100 по 47 проверкам содержимого. Девять из них взяты напрямую из методов, которые проверили в исследовательской работе:

  • GEO: Generative Engine Optimization (KDD 2024, arXiv 2311.09735) — 9 методов на бенчмарке GEO-bench из 10 000 запросов. Лучшие приёмы (ссылки на источники, цитаты, статистика) поднимали видимость источника до 40%, и сильнее всего — для сайтов с низкими позициями.
  • AutoGEO (ICLR 2026, arXiv 2510.11438) — правила извлекаются автоматически из предпочтений ИИ-поисковиков, прирост до +50,99% к сильнейшему базовому варианту из KDD.
  • C-SEO Bench (NeurIPS Datasets & Benchmarks 2025, arXiv 2506.11097) — большинство приёмов переписывания текста не работает. Позиция источника значит больше, чем его переписывание.

Последний вывод хорошо совпадает с тем, как устроены веса у GEO Optimizer: основной вес у инструмента отдаётся доступности и разбираемости страницы, а переписывание текста — меньшему рычагу. Список всех проверок с источниками — в docs/geo-methods.md.

Цитирует ли вас ИИ на самом деле

Оценка готовности — это про вход, а не про выход. Команда geo citations спрашивает настоящие ИИ-поисковики те вопросы, которые задают покупатели, и смотрит, упоминают ли они ваш бренд, ставят ли ваш домен как источник и кого цитируют вместо вас.

Две честные оговорки встроены в инструмент:

  • Ответы недетерминированы. Один и тот же вопрос может дать разные источники. Флаг --runs 5 опрашивает каждый запрос пять раз и показывает доверительный интервал, а не одно «да/нет».
  • Не все API отдают источники. Perplexity Sonar возвращает настоящие URL источников. OpenAI, Anthropic и Groq показывают только то, что модель уже знает о вашем бренде. Google AI Overviews — это элемент выдачи, а не модель, поэтому для него есть отдельный провайдер --provider serpbase, который смотрит на реальную страницу результатов Google.

Интеграции

GitHub Action — ломает сборку, когда готовность падает. Отчёт в формате sarif попадает во вкладку Security:

# .github/workflows/geo.yml
- uses: Auriti-Labs/geo-optimizer-skill@v4.18.3
  with:
    url: https://yoursite.com
    min-score: 70        # fail the build below 70
    format: sarif        # findings in the GitHub Security tab

Подойдёт любой CI, где есть Python: GitLab, Jenkins, CircleCI. Форматы вывода: text, json, rich, html, pdf, sarif, junit, github. JSON считается стабильным контрактом для интеграций, описание — в docs/json-contract.md.

MCP-сервер подключается к Claude, Cursor, Windsurf и любому другому MCP-клиенту:

pip install "geo-optimizer-skill[mcp]"
claude mcp add geo-optimizer -- geo-mcp

Дальше промпт «проверь мой сайт и почини, чего не хватает» делает всю работу. Полный список из 12 инструментов (geo_audit, geo_fix, geo_llms_generate, geo_citability, geo_schema_validate, geo_compare, geo_gap_analysis, geo_ai_discovery, geo_check_bots, geo_trust_score, geo_negative_signals, geo_factual_accuracy) — в docs/mcp-server.md.

Как библиотека:

from geo_optimizer import audit

result = audit("https://example.com")
result.score                    # int, 0-100
result.band                     # S1 | S2 | S3 | S4
result.citability.total_score   # int, 0-100
result.score_breakdown          # {S5: ..., S6: ..., ...}
result.recommendations          # list of prioritized fixes

Интеграция для Astro генерирует llms.txt, /.well-known/ai.txt и /ai/summary.json прямо на этапе сборки и не трогает файлы, которые вы правили руками. В npm её пока нет — папку integrations/astro-geoready/ нужно скопировать в проект:

// astro.config.mjs
import geoReady from './integrations/astro-geoready/index.mjs';
export default defineConfig({
  site: 'https://yoursite.com',
  integrations: [geoReady({ siteName: 'Your Site' })],
});

Свои проверки добавляются через точку входа geo_optimizer.checks, пример — в examples/example_plugin.py.

Честные ограничения

Инструмент честно очерчивает границы того, что он измеряет:

  • Гарантий цитирования нет. Он показывает, каких сигналов не хватает, чтобы ИИ-поисковик мог дойти до страницы и разобрать её. Дальше решают вопрос, конкуренты и сам поисковик.
  • llms.txt — не фактор ранжирования. Это Markdown-файл в корне сайта со списком важных страниц. Ни один ИИ-поисковик не документировал, что он улучшает цитируемость. Оценка засчитывается потому, что файл дешёвый и задуман как сигнал структуры.
  • Только вход, а не выход. Кроме лёгкой проверки geo citations инструмент не наблюдает, что поисковики говорят о бренде. Для этого есть отдельный стандарт — OpenGEO, про разницу написано в issue #534.
  • Китайские поисковики не покрыты. Doubao, Qwen и Yuanbao вне зоны видимости. DeepSeek доступен как провайдер для geo citations.

Кому это нужно

Стоит попробовать, если у вас есть сайт, который должен попадать в ответы ИИ-поисковиков: документация продукта, блог компании, страницы услуг. Логика простая — сначала оценка, потом geo fix, потом порог в CI, чтобы оценка не падала со временем.

Что важно помнить: инструмент оценивает готовность, а не результат. Место в ответе ChatGPT зависит ещё и от того, как выглядит выдача конкурентов. Но список конкретных недочётов он даёт, и это уже половина работы.

Источник: https://github.com/Auriti-Labs/geo-optimizer-skill