22 сентября 2026 в репозитории Auriti-Labs/geo-optimizer-skill на GitHub вышла версия 4.18.3 GEO Optimizer. Это открытый инструмент под лицензией MIT, который ставит сайту оценку от 0 до 100: насколько его могут найти, разобрать и процитировать ChatGPT, Perplexity, Gemini, Claude и Google AI Overviews. После оценки он выдаёт список правок. Работает как CLI, Python-библиотека, MCP-сервер, GitHub Action и интеграция для Astro.
Вывод сразу: как технический чек-лист готовности к ИИ-поиску он полезен, как обещание цитирования нет. Это прямо написано в README: инструмент меряет сигналы и не гарантирует, что движок сошлётся на сайт. Я прогнал его по krivoshein.site и получил 76 из 100. Самое полезное нашлось не в баллах, а в одном обрыве соединения и в том, что предлагает автоисправление.
Чей проект и откуда слово skill
Репозиторий создан 18 февраля 2026, первый коммит в тот же день называется «GEO Optimizer skill, complete implementation». В нём лежали SKILL.md с четырьмя шагами для агента OpenClaw и три Python-скрипта: аудит, генератор llms.txt и вставка JSON-LD. Отсюда skill в имени. Потом проект вырос в пакет geo-optimizer-skill на PyPI, сейчас тоже версии 4.18.3, нужен Python 3.9 или новее. Автор Juan Camilo Auriti, его имя стоит в LICENSE. На 3 октября у репозитория 979 звёзд и 115 форков, последний коммит от 30 сентября.
Рядом с открытым кодом есть коммерческая часть: geoready.dev с бесплатным веб-аудитом и тарифами от $19 в месяц, плюс книга автора. По README движок там тот же, платформа добавляет мониторинг, историю оценок и командную работу. Для CLI ничего из этого не нужно, регистрации он не требует.
В 4.18.3 главное исправление про llms.txt за CDN или WAF. Раньше, если защита отвечала аудитору 403 или 406, инструмент писал, что файла нет, а geo fix --apply в этой ветке мог записать пустой llms.txt поверх настоящего. Теперь случай помечается как blocked_by_cdn, аудитор повторяет запрос с браузерным User-Agent, а fix собирает полный файл из sitemap.
Что проверяет: 8 разделов на 100 баллов
Оценка складывается из восьми разделов. Веса лежат в одном файле, models/config.py, и совпадают с таблицей в README:
- robots.txt, 18 баллов: пускает ли сайт 27 ИИ-ботов из трёх групп (обучение, поиск, запросы пользователя);
- llms.txt, 18: есть ли файл, заголовок, описание, разделы и ссылки;
- JSON-LD, 16: WebSite, Organization, FAQPage, Article и насколько разметка подробная;
- мета-теги, 14: title, description, canonical, Open Graph;
- контент, 12: H1, цифры, внешние ссылки, порядок заголовков, списки и таблицы;
- бренд и сущность, 10: одно имя везде, ссылки на Wikipedia, Wikidata, LinkedIn или Crunchbase, страница «о нас»;
- сигналы, 6: атрибут lang, RSS, свежесть через dateModified;
- AI Discovery, 6: файлы
/.well-known/ai.txt,/ai/summary.json,/ai/faq.json,/ai/service.json.
Пороги такие: до 35 критично, от 36 до 67 база, от 68 до 85 хорошо, от 86 отлично. Сверх основной оценки идёт десяток информационных проверок: пускает ли ботов CDN, виден ли текст без JavaScript, нет ли в странице prompt injection, как она режется на куски для RAG. Баллы из них снимают только «негативные сигналы», и не больше пяти.
16 команд, MCP-сервер и SKILL.md для агентов
В CLI 16 команд, это видно и в коде, и в geo --help. Главные: audit, fix, llms для генерации llms.txt из sitemap, schema для JSON-LD и citations, которая спрашивает реальные ИИ-движки, упоминают ли они бренд. Для citations нужны свои API-ключи, и README честно предупреждает: ответы меняются от запуска к запуску, поэтому есть --runs 5 с доверительным интервалом. Быстрый старт из README:
# без установки uvx --from geo-optimizer-skill geo audit --url https://yoursite.com # или установить pip install -U geo-optimizer-skill geo audit --url https://yoursite.com geo fix --url https://yoursite.com geo audit --url https://yoursite.com --threshold 70
Флаг --threshold 70 возвращает код 1, если оценка ниже порога, так проверку ставят в CI. Для агентов MCP-сервер ставится отдельной зависимостью и подключается к Claude Code одной командой, внутри 12 инструментов: geo_audit, geo_fix, geo_llms_generate, geo_check_bots и другие.
pip install "geo-optimizer-skill[mcp]" claude mcp add geo-optimizer -- geo-mcp
Сам навык лежит в корне, SKILL.md: шесть шагов от аудита до автоисправления, таблица проверок и список MCP-инструментов. Для Claude Projects, ChatGPT, Cursor, Windsurf и Kiro в папке ai-context есть готовые версии того же контекста под ограничения каждой платформы.
SKILL.md отстаёт от кода, последний раз его правили 22 апреля 2026. В нём 11 команд и 7 форматов вывода, а в CLI уже 16 команд, README перечисляет 8 форматов, среди них sarif и junit. Таблица методов там же обещает до +115% видимости за ссылки на источники. README в разделе исследований осторожнее: в работе KDD 2024 лучшие методы давали до 40%, а C-SEO Bench пришёл к выводу, что большинство приёмов переписывания текста не работают. Агенту, который читает SKILL.md, эти проценты лучше не принимать на веру.
Пример из README: 8 баллов против 91
В README два прогона за сентябрь 2026. example.com без robots.txt, llms.txt и разметки получает 8 из 100, geoready.dev, собранный на собственной Astro-интеграции, получает 91. Там же статистика по 1400 с лишним сайтам, проверенным через GeoReady: медиана 57 из 100, llms.txt есть у 58%. Автор сам оговаривает, что выборка добровольная и годится как ориентир, а не как перепись сети.
geo fix по умолчанию только показывает правки, файлы пишет с флагом --apply. Оценку «после исправлений» README называет прогнозом самого инструмента, а не замером.
Прогон по krivoshein.site: 76 из 100
3 октября 2026 в 23:10 по Москве я запустил аудит своего сайта командой из README, отработала версия 4.18.3:
uvx --from geo-optimizer-skill geo audit --url https://krivoshein.site
Итог 76 из 100, полоса GOOD. robots.txt пускает все 27 ботов, llms.txt найден, около 1750 слов, мета-теги полные, язык ru-RU и RSS на месте. В JSON-LD инструмент нашёл семь типов, от WebSite до ProfessionalService, не хватило только FAQPage. Профили по платформам: ChatGPT 50, Perplexity 60, Google AI 71. В списке следующих шагов девять пунктов.
Три находки, на которые стоит смотреть:
- OAI-SearchBot получил HTTP 0, соединение оборвалось без ответа. GPTBot, PerplexityBot, Claude-SearchBot, Googlebot и Applebot получили 200. Инструмент пишет про CDN или WAF, но ответы сайта отдаёт nginx, CDN в заголовках не видно. Повторил запрос через curl с User-Agent OAI-SearchBot: соединение рвётся, с GPTBot сайт отвечает 200. По SKILL.md именно OAI-SearchBot отвечает за ссылки в ChatGPT Search.
- AI Discovery: нет
/.well-known/ai.txt,/ai/summary.jsonи/ai/faq.json. При этом/ai.txtв корне есть и отвечает 200, на него ссылается robots.txt. Проверка смотрит только путь в/.well-known/. - Бренд 5 из 10. В sameAs у Person только Telegram, GitHub и страница MAX, а проверка ищет Wikipedia, Wikidata, LinkedIn или Crunchbase. Ссылки вида
/aboutили/teamна главной нет, контакты лежат на/contacts/.
Ниже среднего ещё два показателя: Trust Stack B, 17 из 25, и готовность к RAG 40 из 100. Второе считается по главной: 31 раздел, в среднем по 11,6 слова. Главная у меня лендинг, а не статья, и резать её на абзацы по 100 или 150 слов ради этой цифры я не буду.
geo fix без –apply: что взял бы, а что нет
Потом посмотрел, что инструмент предлагает исправить. Без флага --apply он только печатает план и содержимое файлов, на сайте и на диске ничего не меняется.
uvx --from geo-optimizer-skill geo fix --url https://krivoshein.site
План из трёх пунктов: сниппет FAQPage, /ai/summary.json и /ai/faq.json. robots.txt, llms.txt, мета-теги и контент пропущены как уже достаточные. Прогноз 82 из 100 вместо 76.
Как есть это ставить нельзя. В FAQPage вопросы на итальянском, «Cos’è krivoshein.site?» и «Come contattare krivoshein.site?», а ответ отправляет на /contatti, которого у меня нет, адрес отдаёт 404. Эта строка зашита в fixer.py. В summary.json поле lastModified осталось шаблоном {{ISO_DATE}}, в faq.json второй ответ заглушка «Visit https://krivoshein.site to get started». А /ai/service.json и /.well-known/ai.txt, которые аудит советует создать, в план исправлений не попали вовсе.
Перед правками проверил, откуда что берётся. robots.txt у меня статический файл: nginx отдаёт его с датой изменения 16 августа 2026, SEO-плагин его не генерирует. Из SEO-плагинов в списке активных The SEO Framework 5.1.4 и CrawlWP SEO. JSON-LD на главной разбит на три блока: граф WebSite, WebPage и Organization, отдельный граф Person и ProfessionalService и список услуг ItemList. Сниппет FAQPage поверх этого добавит четвёртый источник разметки, поэтому править надо там, где разметка рождается.
Что поправлю сам:
- выясню, почему рвётся соединение с OAI-SearchBot: правила nginx и фильтры ботов, плюс логи на предмет настоящих визитов бота. Запрос с подменённым User-Agent с чужого адреса и визит настоящего бота OpenAI могут обрабатываться по-разному, но для ChatGPT Search это главный пункт отчёта;
- отдам ai.txt и по пути
/.well-known/ai.txt, файл уже есть, нужен второй адрес; - добавлю в sameAs профили, которые у меня действительно есть, и dateModified на главную.
Что оставлю: сгенерированные FAQ и JSON с заглушками, страницу /about только ради проверки, атрибуты WebMCP на кнопках и формах и короткие разделы лендинга. Если FAQPage и появится, то из настоящих вопросов на странице, на русском и со ссылкой на /contacts/.
Итог: GEO Optimizer полезен как быстрый технический аудит готовности к ИИ-поиску. Он показывает доступ ботов, llms.txt, разметку и то, о чём обычный SEO-аудит не спрашивает, вроде обрыва соединения для одного конкретного бота. Код открыт под MIT, веса собраны в одном файле, geo fix по умолчанию ничего не пишет. Слабое место в автоисправлении: на русском сайте оно генерирует итальянские вопросы и ссылку на несуществующую страницу, поэтому --apply без чтения превью я бы не запускал. Про сами файлы для ИИ на сайте есть разбор llms.txt и llms-full.txt и история с AgentReady.