Skip to content
Back to skills

Geo

ASecurity

GEO-замер — цитируют ли нас AI-движки. Три стадии (краул → индекс → цитата), каждая мерится отдельно. Используй, когда речь про находимость, SEO/GEO, «почему нас не видно», выкладку наружу, или перед решением «делать ещё контент».

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 25, 2026
ai-agentspythonbashgit

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add tonydzi/second-brain-starter-kit --skill geo --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Geo?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Geo
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tonydzi-geo/badge)](https://www.skillsdirectory.com/skills/tonydzi-geo)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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`
(LAPTOP-1, вс 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 не выносим.


<!--kit-footer-->

---

**Like this skill?** It is one of 100 in [second-brain-starter-kit](https://github.com/tonydzi/second-brain-starter-kit): the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with `npx skills add tonydzi/second-brain-starter-kit`. Everything is open source and free, so take what you need.

Flagships worth a look on their own: [secondop-panel](https://github.com/tonydzi/secondop-panel) (a second opinion from a panel of external models), [claude-memory-tidy](https://github.com/tonydzi/claude-memory-tidy) (stop your agent's memory from rotting), [telegram-mcp-kit](https://github.com/tonydzi/telegram-mcp-kit) (your own Telegram over MCP in about 15 minutes).

Author: **Anton Dziatkovskii**, Palo Alto AI Research Lab. Telegram [@tonydzi](https://t.me/tonydzi) - WhatsApp [+1 341 222 9178](https://wa.me/13412229178) - X [@Tony_Stef_](https://x.com/Tony_Stef_)

**Engineers: want to test-drive this setup?** Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…