geo-sleuth — скилл
Скилл определяет место съемки фотографии без GPS по рельефу, картам OpenStreetMap, спутнику и панорамам улиц и приводит файлы-доказательства
- 4 480 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Запускает около двадцати скриптов на Python через uv и управляет браузером Chrome или Chromium, а ML-пакеты и веса моделей скачиваются при первом запуске
- Обратный поиск по картинке передает снимок поисковикам Baidu и Yandex, а остальные скрипты ходят в OpenStreetMap и сервисы панорам
- Инструмент двойного назначения: определяет место по снимку, в том числе чужому, поэтому личные фото и кадры с людьми требуют разрешения
Установка
- Работает в
Ручная установка
npx skills add Oldcircle/geo-sleuthАгентов выбирают в диалоге. Нужны Python 3.10 или новее, uv, curl и Chrome или Playwright Chromium.
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Запускает около двадцати скриптов на Python через uv и управляет браузером Chrome или Chromium, а ML-пакеты и веса моделей скачиваются при первом запуске
- Обратный поиск по картинке передает снимок поисковикам Baidu и Yandex, а остальные скрипты ходят в OpenStreetMap и сервисы панорам
- Инструмент двойного назначения: определяет место по снимку, в том числе чужому, поэтому личные фото и кадры с людьми требуют разрешения
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
geo-sleuth определяет место съемки фотографии по самому кадру, когда в нем нет ни вывесок, ни номеров, ни известных зданий. Команда `intake.py` за один проход читает метаданные EXIF, распознает текст, нарезает края кадра и запускает обратный поиск картинок в Baidu и Yandex. Результаты попадают на доску кандидатов, которую ведет `board.py`: она хранит улики, считает вес каждой версии, не дает исключить кандидата без вычисленного файла и подсказывает следующий шаг. Дальше агент выбирает ветку по тому, что видно на снимке. Тени и освещенные грани разбирает `sun.py`, линию горизонта и гор сверяет с рельефом `terrain.py`, а линии электропередач, железные дороги и мосты ищет в OpenStreetMap через `osm.py`. Спутниковые плитки ранжирует по описанию модель CLIP в `sat_scan.py`. Для проверки на месте `gsv.py` и `baidu_pano.py` находят панорамы улиц, а `match.py` сравнивает их со снимком по DINOv2 и SIFT. Всего в скилле около двадцати скриптов, у каждого одна задача. Скрипты ранжируют варианты, а модель выбирает среди нескольких лучших. Итог собирает `evidence.py`: координаты с радиусом ошибки, направление камеры, спутниковую картинку с веером обзора и градуированную уверенность. Каждое утверждение в отчете должно ссылаться на команду, выполненную в этой сессии, и на созданный ею файл. Без такой ссылки скилл требует писать «не проверено». Известность и численность города доказательством не считаются.
Для кого. Для журналистов, исследователей открытых источников и любителей угадывать места по фото, которые хотят, чтобы Claude Code, Codex или Cursor проверяемо определял место на своих фотографиях или на тех, на анализ которых есть разрешение.
Подходит, если
- Нужно найти, где снят ваш собственный кадр без метаданных GPS, и приложить к ответу спутниковую картинку-доказательство
- На снимке видны горный хребет, линия электропередач или железнодорожный мост, а надписей нет
- В кадре есть ряд одинаковых опор или пролетов, по расстоянию между которыми можно найти точку съемки
- Нужен отчет, где у каждого вывода есть команда и файл, и можно проверить, где рассуждение свернуло не туда
- Вы решаете головоломки на определение места и хотите подключить к ним рельеф, тени и панорамы улиц
Не подходит, если
- Снимок сделан не вами и разрешения на его анализ нет: автор просит не искать людей, которые не согласились на это
- На фото частный дом или несовершеннолетние: скилл сам спросит у вас о цели, и без законного основания его лучше не запускать
- Нужен быстрый ответ без установки: скрипты требуют Python 3.10 или новее, uv, curl и браузер Chrome или Chromium
- Вы хотите прочитать геотеги из EXIF: для этого хватит обычного просмотрщика метаданных, скилл заметно тяжелее
Пример запроса к агенту
Найди, где снята эта фотография: метаданных нет, надписей тоже, вдали гора и железнодорожный мостОграничения
- Применяйте скилл только к снимкам, на анализ которых у вас есть разрешение. Автор просит не использовать его для поиска людей, не давших на это согласия. Если на снимке частный дом или дети, скилл один раз спрашивает о цели.
- Точность в README указана для трех разобранных случаев: от 2 до 100 метров. Два сквозных перепрогона автор называет проверкой на регресс: оба снимка решались раньше, уроки из них уже вошли в скилл. Точность на новых фото не измерена, публичный набор для нее остается в планах.
- Каждый разобранный случай описывает один прогон одной модели. Какие запросы писать и сколько лучших вариантов смотреть, решает модель, и другая модель может не повторить ответ.
- Скрипты опрашивают OpenStreetMap и сервисы панорам по сети, данных OSM в репозитории нет. Обратный поиск идет через браузер, а при ответах 403, 429 или CAPTCHA автор советует посмотреть снимок экрана и повторить позже или работать вручную.
- Первый запуск тянет зависимости через uv, а `match.py` и `sat_scan.py` скачивают веса моделей, поэтому нужны время и место на диске. Инструкции, справка и отчеты в скилле на английском, исходный текст с кадра остается на языке оригинала.
Как отключить. Удалите папку `geo-sleuth` из каталога скиллов агента: `~/.agents/skills/` для Codex, Cursor, Gemini CLI, OpenCode и GitHub Copilot, `~/.claude/skills/` для Claude Code. Если скилл ставился через `npx skills add`, тот же инструмент умеет его снять. Рабочие папки `intake` и `rev`, которые скрипты создали рядом со снимком, удалите вручную.
Частые вопросы
Как определить место съемки фото без GPS и без вывесок?
Скилл строит поиск по геометрии кадра. Расстояние между одинаковыми опорами моста даст линейку, тень задаст азимут, а линию хребта сверяют с данными высот. По этим признакам `terrain.py` отбирает точки на карте, пока не останется одна. На разобранном примере с рисовым полем и виадуком так нашли камеру с точностью около 2 метров.
Чем geo-sleuth отличается от просмотра EXIF?
EXIF читает `exif.py`, но только как одну из улик: метаданные и подсказки скилл считает гипотезами и при конфликте с кадром верит кадру. Основная работа начинается там, где геотегов нет, и состоит из разбора кадра, поиска по карте и сверки с панорамами.
Нужен ли ключ или аккаунт для geo-sleuth?
В документации ключи и аккаунты не требуются. Нужны Python 3.10 или новее, uv, curl и Chrome или Playwright Chromium. Данные берутся из OpenStreetMap, плиток высот AWS Terrain и спутниковых плиток, панорамы из Google Street View и Baidu.
Что делать, если обратный поиск картинок выдает ошибку 403 или CAPTCHA?
Откройте сохраненный снимок экрана, повторите запуск позже или воспользуйтесь ручным поиском в браузере. Команда `intake.py` с флагом `--no-rev` обходится без обратного поиска и проверяет только метаданные, подготовку кадра и распознавание текста. Отсутствие совпадений в поиске автор не считает доказательством, что похожих картинок нет.
Почему скилл написал «не проверено» вместо координат?
Радиус ошибки до 100 метров допустим только при пересечении двух независимых ограничений или совпадении трех неизменных деталей на уровне земли. Если нужных команд в сессии не запускали, скилл требует пометить вывод непроверенным и дать диапазон с перечнем недостающих данных.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыСкилл веб-поиска, поиска по X и чтения страниц для моделей без выхода в сеть: без регистрации и ключа, ответ в JSON со ссылками на источники
Скилл веб-исследования: SearXNG ищет, Camofox читает страницы, CloakBrowser открывает сайты, которые проверяют посетителей
Скилл для сбора данных о компаниях из Google Maps: агент планирует запросы, запускает локальный сборщик и помогает с результатами
Скилл news-extractor достает из ссылки заголовок, текст, картинки и метаданные статьи с 12 новостных площадок и отдает JSON или Markdown без браузера
Скилл, который маршрутизирует вопрос к подходящей AI-платформе и через браузерную автоматизацию собирает ответ из ее родной поисковой выдачи
Скилл покупателя для поиска на Ozon
Ozon Shopper
Скилл для поиска товаров на Ozon с проверкой продавца, валидацией характеристик и детекцией скама по чеклисту признаков
Коротко о README
В репозитории лежит сам скилл: файл SKILL.md, около двадцати скриптов на Python, справочные материалы по сбору улик, геометрии, небу и поиску, таблицы кодов телефонов, стороны движения и территорий, а также региональные пакеты. На главной странице разобраны три случая с ответами в метрах, таблица скриптов и измерения отдельных операций. Отдельно описаны установка для шести агентов, требования и таблица неполадок. Есть папка examples со сценариями двух разобранных снимков и шаблоны обращений для замечаний о неверных результатах.