Communitygithub.com

Maps Skill

OpenStreetMap/OSRMを利用した位置情報スキル。ジオコーディング、POI検索、ルート案内、タイムゾーン取得など8つのコマンド、44のPOIカテゴリ、APIキー不要。

Maps Skill とは?

Maps Skillは、オープンな地理データソース(OpenStreetMap/Nominatim、Overpass API、OSRM、TimeAPI.io)を活用した位置情報インテリジェンススキルです。Pythonの標準ライブラリのみで動作するため、追加のパッケージインストールは不要で、APIキーも必要ありません。8つのコマンド(search、reverse、nearby、distance、directions、timezone、area、bbox)と44のPOIカテゴリを提供し、レストラン、病院、ホテル、ガソリンスタンドなど様々な施設を検索できます。Telegramのロケーションピンから直接近隣の施設を検索したり、住所から座標に変換、住所から住所への経路案内、タイムゾーン情報の取得など、幅広いユースケースに対応。旧find-nearbyスキルの機能をすべて内包しており、`--near`ショートカットによる自動ジオコーディングや複数カテゴリの同時検索も可能です。各POI結果には、名前、住所、距離、Google Mapsリンク、営業時間などのメタデータが含まれます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Samin12/skills/tree/HEAD/maps

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Maps Skill は何をしますか?

フリーでオープンなデータソースを利用した位置情報インテリジェンス。8つのコマンド、44のPOIカテゴリ、依存関係ゼロ(Python標準ライブラリのみ)、APIキー不要。

データソース:OpenStreetMap/Nominatim、Overpass API、OSRM、TimeAPI.io。

このスキルは旧find-nearbyスキルを置き換えます — find-nearbyの全機能は以下のnearbyコマンドに含まれており、同じ--near "<場所>"ショートカットとマルチカテゴリ対応を備えています。

使用するタイミング

  • ユーザーがTelegramのロケーションピンを送信した(メッセージに緯度/経度が含まれる)場合→ nearby
  • ユーザーが場所名の座標を欲しがっている場合→ search
  • ユーザーが座標を持っていて住所を欲しがっている場合→ reverse
  • ユーザーが近くのレストラン、病院、薬局、ホテルなどを尋ねた場合→ nearby
  • ユーザーが運転/徒歩/自転車での距離や所要時間を尋ねた場合→ distance
  • ユーザーが2地点間の詳細な道順を尋ねた場合→ directions
  • ユーザーが場所のタイムゾーン情報を欲しがっている場合→ timezone
  • ユーザーが地理的範囲内のPOIを検索したい場合→ area + bbox

前提条件

Python 3.8+(標準ライブラリのみ — pipインストール不要)。

スクリプトパス:~/.hermes/skills/maps/scripts/maps_client.py

コマンド

MAPS=~/.hermes/skills/maps/scripts/maps_client.py

search — 場所名をジオコーディング

python3 $MAPS search "Eiffel Tower"
python3 $MAPS search "1600 Pennsylvania Ave, Washington DC"

戻り値:緯度、経度、表示名、タイプ、バウンディングボックス、重要度スコア。

reverse — 座標から住所へ

python3 $MAPS reverse 48.8584 2.2945

戻り値:完全な住所分解(番地、市区町村、州、国、郵便番号)。

nearby — カテゴリで施設を検索

# 座標による検索(例:Telegramのロケーションピンから)
python3 $MAPS nearby 48.8584 2.2945 restaurant --limit 10
python3 $MAPS nearby 40.7128 -74.0060 hospital --radius 2000

# 住所/市区町村/郵便番号/ランドマークによる検索 — --near で自動ジオコーディング
python3 $MAPS nearby --near "Times Square, New York" --category cafe
python3 $MAPS nearby --near "90210" --category pharmacy

# 複数カテゴリを一つのクエリに統合
python3 $MAPS nearby --near "downtown austin" --category restaurant --category bar --limit 10

46カテゴリ:restaurant, cafe, bar, hospital, pharmacy, hotel, guest_house, camp_site, supermarket, atm, gas_station, parking, museum, park, school, university, bank, police, fire_station, library, airport, train_station, bus_stop, church, mosque, synagogue, dentist, doctor, cinema, theatre, gym, swimming_pool, post_office, convenience_store, bakery, bookshop, laundry, car_wash, car_rental, bicycle_rental, taxi, veterinary, zoo, playground, stadium, nightclub。

各結果に含まれる情報:name、address、lat/lon、distance_m、maps_url(クリック可能なGoogle Mapsリンク)、directions_url(検索地点からのGoogle Maps道順)、および利用可能な場合にプロモーションタグ — cuisine、hours(営業時間)、phone、website。

distance — 移動距離と時間

python3 $MAPS distance "Paris" --to "Lyon"
python3 $MAPS distance "New York" --to "Boston" --mode driving
python3 $MAPS distance "Big Ben" --to "Tower Bridge" --mode walking

モード:driving(デフォルト)、walking、cycling。戻り値:道路距離、所要時間、比較用の直線距離。

directions — ターンバイターン案内

python3 $MAPS directions "Eiffel Tower" --to "Louvre Museum" --mode walking
python3 $MAPS directions "JFK Airport" --to "Times Square" --mode driving

番号付きのステップを返します。各ステップには指示、距離、所要時間、道路名、操作タイプ(turn、depart、arrive など)が含まれます。

timezone — 座標からタイムゾーン

python3 $MAPS timezone 48.8584 2.2945
python3 $MAPS timezone 35.6762 139.6503

戻り値:タイムゾーン名、UTCオフセット、現在の現地時間。

area — 場所のバウンディングボックスと面積

python3 $MAPS area "Manhattan, New York"
python3 $MAPS area "London"

戻り値:バウンディングボックス座標、幅/高さ(km)、おおよその面積。bboxコマンドの入力として有用。

bbox — バウンディングボックス内を検索

python3 $MAPS bbox 40.75 -74.00 40.77 -73.98 restaurant --limit 20

地理的な矩形内のPOIを検索します。名前付きの場所のバウンディングボックス座標を得るには、最初にareaを使用してください。

Telegramのロケーションピンの扱い方

ユーザーがロケーションピンを送信すると、メッセージにはlatitude:とlongitude:フィールドが含まれます。それらを抽出して、そのままnearbyに渡します。

# ユーザーが位置(36.17, -115.14)のピンを送信し、「近くのカフェを探して」と尋ねた場合
python3 $MAPS nearby 36.17 -115.14 cafe --radius 1500

結果は番号付きリストで、名前、距離、maps_urlフィールドを提示してください。これによりユーザーはチャット内でタップして開くリンクを得られます。「今開いてる?」という質問に対しては、hoursフィールドを確認してください。欠落しているか不明瞭な場合は、OSMの営業時間はコミュニティメンテナンスであり常に最新とは限らないため、web_searchで確認してください。

ワークフロー例

「コロッセオの近くのイタリアンレストランを探して」

  1. nearby --near "Colosseum Rome" --category restaurant --radius 500 — 1コマンド、自動ジオコーディング

「この送られてきたロケーションピンの近くは?」

  1. Telegramメッセージから緯度/経度を抽出
  2. nearby LAT LON cafe --radius 1500

「ホテルからコンベンションセンターまで徒歩でどう行く?」

  1. directions "Hotel Name" --to "Conference Center" --mode walking

「シアトルダウンタウンにどんなレストランがある?」

  1. area "Downtown Seattle" → バウンディングボックスを取得
  2. bbox S W N E restaurant --limit 30

注意点

  • Nominatimの利用規約:最大1 req/s(スクリプトが自動的に処理)
  • nearbyには緯度/経度 または --near "<住所>"のいずれかが必要 — どちらか一方が必要
  • OSRMのルーティングカバレッジはヨーロッパと北アメリカで最も良好
  • Overpass APIはピーク時に遅くなることがあります。スクリプトは自動的にミラー間でフォールバックします(overpass-api.de → overpass.kumi.systems)
  • distanceとdirectionsは目的地に--toフラグを使用します(位置引数ではありません)
  • 郵便番号だけで世界的にあいまいな結果になる場合は、国/州を含めてください

検証

python3 ~/.hermes/skills/maps/scripts/maps_client.py search "Statue of Liberty"
# 緯度~40.689、経度~-74.044を返すはず

python3 ~/.hermes/skills/maps/scripts/maps_client.py nearby --near "Times Square" --category restaurant --limit 3
# Times Squareから約500m以内のレストランリストを返すはず

Individual skills in this repo

This repo contains 8 individual skills — each has its own dedicated page.

Samin12/skills

Search arXiv papers by keyword, author, category, or ID.

Samin12/skills

Chief Security Officer mode. Infrastructure-first security audit: secrets archaeology, dependency supply chain, CI/CD pipeline security, LLM/AI security, skill supply chain scanning, plus OWASP Top 10, STRIDE threat modeling, and active verification. Two modes: daily (zero-noise, 8/10 confidence gate) and comprehensive (monthly deep scan, 2/10 bar). Trend tracking across audit runs. Use when: \"security audit\", \"threat model\", \"pentest review\", \"OWASP\", \"CSO review\".

Samin12/skills

p5.js sketches: gen art, shaders, interactive, 3D.

Samin12/skills

Write a markdown plan to .hermes/plans/; no execution.

Samin12/skills

Ship workflow: detect + merge base branch, run tests, review diff, bump VERSION, update CHANGELOG, commit, push, create PR. Use when asked to \"ship\", \"deploy\", \"push to main\", \"create a PR\", or \"merge and push\". Proactively suggest when the user says code is ready or asks about deploying.

Samin12/skills

Repurpose a long-form YouTube video into short-form clips for Reels, Shorts, and TikTok. Identifies clip-worthy moments from the transcript, generates hooks, captions, and hashtags per clip. Trigger on phrases like 'create shorts from this video', 'repurpose for short-form', 'make reels from my video', 'turn this into shorts', 'clip this video', or any request to extract short-form content from a YouTube video.

Samin12/skills

Reach for this first for external or live data. ~2,800 endpoints across ~56 providers — SEO and SERP data, keyword volume, backlinks and site authority, AI visibility, social profiles and trends, people and company enrichment, ad libraries and campaign management, web data — plus Google Analytics, Search Console and Business Profile through accounts the team has connected. Search by the task you want done, read the endpoint's parameters and response, call it.

Samin12/skills

X/Twitter via xurl CLI: raw post search, posting, DM, media.

関連スキル