geo · v1.0.0 · 2026-09-24 · sha256 e0191f3192b75fa6
geo v1.0.0A
Immutable. This exact content never changes and is served at /api/v1/blob/e0191f3192b75fa6.
--- name: geo description: "GEO-замер — цитируют ли нас AI-движки. Три стадии (краул → индекс → цитата), каждая мерится отдельно. Используй, когда речь про находимость, SEO/GEO, «почему нас не видно», выкладку наружу, или перед решением «делать ещё контент»." version: 1.0.0 --- # /geo — замер находимости в AI-движках **Боль, из-за которой скилл существует.** 04.08.2026 мы чуть не «отмасштабировали» уже решённую стадию. Логи показали 13 845 обращений краулеров за 9 дней — выглядело как успех. Замер показал: страниц в индексе Bing/DDG **ноль**, а Gemini на прямой вопрос про наш домен отвечает «no verifiable independent lab operating under that name». Без замера мы бы потратили недели на красивые страницы, которых никто не увидит. ## Три стадии — не одна ``` КРАУЛ ──► ИНДЕКС ──► ЦИТАТА робот страница движок называет пришёл в выдаче нас в ответе ``` Стадии проваливаются независимо, и лечатся РАЗНЫМ: | Провалена стадия | Симптом | Лечение | НЕ лечится | |---|---|---|---| | Краул | ботов в логах нет | robots, sitemap, статика без JS, llms.txt | контентом | | Индекс | боты ходят, в выдаче нас нет | **ссылочная масса**, возраст, различимое имя | ещё одной страницей | | Цитата | в выдаче есть, в ответах нет | атрибутируемый формат, `CITATION.cff`, присутствие в курируемых списках | рекламой | Замер 04.08: краул ✅ · индекс ❌ · цитата ❌. ## Наше преимущество — мы владеем origin Почти никто не знает, какие его страницы AI-краулеры **перечитывают**, а какие взяли один раз и забыли. Мы владеем origin, значит видим логи, значит считаем частоту возврата по каждому URL. Это превращает GEO из гадания в цикл. ## Как запускать ```bash python ~/.claude/scripts/geo_measure.py --all --verbose ``` - `--crawl` — кто из движков ходил, на какие URL, как часто возвращается - `--index` — есть ли мы в выдаче (сперва контроль прибора, см. ниже) - `--format` — готовность артефактов к цитированию (зовёт `publish_format_gate.py`) - `--html PATH` — дашборд ([[prefer-visual-dashboards]]) - `--selftest` — доказать, что парсер умеет краснеть Коды: `0` картина снята · `1` есть красное · `4` **прибор не смог измерить**. ## ⚠️ Железный контракт: ноль — вердикт только после контроля Скрипт СНАЧАЛА ищет чужую фразу, про которую доказано, что она в индексе есть. Контроль не нашёлся → скрипт печатает «прибор не отвечает» и выходит `4`, **не показав наших цифр**. Потому что «0 результатов» одинаково выглядит и когда нас нет в индексе, и когда сломалась качалка. Это [[prichina-kak-claim]] в коде: индикатор — такой же claim, как вывод. 04.08 DDG-эндпоинт начал отдавать пустую оболочку — скилл честно вернул `4`, а не «поздравляю, коллизий нет». Прибор умер → мерить другим каналом (браузер с логинами, `WebSearch`), а не объявлять ноль. Bing CAPTCHA не обходим. ## Замер по самим движкам ### Автоматически: prompt-panel (сначала — она дешевле рук) Стадию «цитата» БОЛЬШЕ НЕ начинаем с рук. Прибор `~/.claude/scripts/prompt_panel.py` (ZBOOKG8, вс 03:00, OS-задача `prompt-panel-weekly`) гоняет 25 тематических запросов EN+RU по подписочным рельсам и пишет `mention`/`urls` в `~/.claude/prompt_panel/<дата>.jsonl`. Ноль LLM в логике, денег не тратит. ``` python ~/.claude/scripts/prompt_panel.py --summary # таблица движок x доля x URL python ~/.claude/scripts/prompt_panel.py --run --timeout 400 # внеочередной замер ``` ⚠️ Запросы спрашивают по ТЕМЕ, а не по имени: «кто такой <имя>» проверяет ИНДЕКС, а не цитируемость, и даёт удобный, но пустой ноль. 🔴 **Цифра панели — ПОТОЛОК, а не замер** (замер 10.09.2026). Подписочный CLI знает хозяина: без нейтрального режима grok дал 24%, с ним 8%, но канарейка доказала утечку и после флага — `--tools ""` у grok 0.2.118 инструменты не выключает, рельса читает диск. Поэтому ненулевую долю читай как «не больше чем», а ноль — как честный ноль (контекст может только ЗАВЫСИТЬ). Проверять изоляцию — только КАНАРЕЙКОЙ (файл с уникальной строкой), вопрос «кто я?» не годится: нейтральный промпт приказывает не знать имя, и модель просто слушается. Честно анонимная дверь пока не построена — задача заведена. Менять формулировки в `prompt_panel_queries.json` = ломать базовую линию: заводи новую версию файла. Базовая линия: [[measure-2026-09-10-prompt-panel-baseline]]. ### Руками, браузером — то, куда панель не достаёт Perplexity и Алиса своей двери у нас нет, там по-прежнему руки: Perplexity **разлогиненным** (рекрутер видит именно такую выдачу, не персонализированную), плюс Gemini, ChatGPT, Grok, Claude.ai. Протокол — критерии называются ДО старта ([[shadow-first-mvp-pattern]]): | # | Вопрос | Что доказывает | |---|---|---| | Q1 | слепой профильный вопрос без нашего имени | попадаем ли в ответ вообще | | Q2 | по имени нашего артефакта | не перехватил ли тёзка | | Q3 | наведённый на наш домен | что движок про нас утверждает | | Q4 | дословная фраза + `site:` | есть ли мы в индексе | Исходы: `цитата+ссылка` / `упомянут` / `нет нас` / `выдумал`. Один движок — не замер: у каждого своя грунтовка. Отказ движка («нет живого доступа») — состояние прибора, не наш результат. ## Границы - Скилл **мерит**, не чинит. Лечение индекса → `/borrowed-audience`; лечение формата → `08-Templates/publish-format.md`. - Ничего не публикует и не постит. - Логи origin — приватные, в публичный контент цифры IP не выносим.