google-maps · imoonkey — Claude Code skill: place search and directions
An agent skill for Google Maps: find places, pull details, reviews and photos, get directions, and turn addresses into coordinates.
npx skills add imoonkey/openweb --skill google-maps -a claude-codeWhat google-maps does
The google-maps skill hands your agent a set of Google Maps operations. searchPlaces takes a query and returns a placeId along with the name, address and rating. That identifier then feeds getPlaceDetails, getPlaceReviews, getPlacePhotos, getPlaceHours and getPlaceAbout, which cover opening hours, website, phone, reviews, description and category.
Directions are split by travel mode: getDirections for driving, getTransitDirections for public transit, and separate operations for walking and cycling. Geocoding goes both ways through geocode and reverseGeocode. For area lookups there is nearbySearch by category and location, and getAutocompleteSuggestions handles type-ahead. Extraction runs through adapters that read internal APIs and the SPA DOM.
Every call goes through the CLI, for example openweb google-maps exec searchPlaces '{"query": "..."}'. Arguments arrive as a single JSON string, so quotes inside values need escaping. The openweb binary has to be on your machine first, otherwise nothing runs.
What it helps with
- find coffee shops in a neighbourhood and compare their ratings
- collect reviews for a venue with author names
- pull the weekly opening schedule for a place
- plan a public transit route between two addresses
- convert a street address into coordinates
Example prompts for the agent
- Search coffee shops in San Francisco with
searchPlacesand list the ratings - Take the
placeIdfrom that search and fetch the reviews and opening hours - Get walking directions from Union Square to Golden Gate Park
How to install google-maps
1Skills CLI (Vercel)
npx skills add imoonkey/openweb --skill google-maps -a claude-code2Manually: put the files in place
~/.claude/skills/google-maps/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/google-maps/
1Skills CLI (Vercel)
npx skills add imoonkey/openweb --skill google-maps -a codex2Manually: put the files in place
.agents/skills/google-maps/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add imoonkey/openweb --skill google-maps -a cursor2Manually: put the files in place
.cursor/skills/google-maps/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install imoonkey/openweb google-maps2Manually: put the files in place
.github/skills/google-maps/SKILL.md1Skills CLI (Vercel)
npx skills add imoonkey/openweb --skill google-maps -a gemini-cli2Platform CLI
gemini skills install https://github.com/imoonkey/openweb --path src/sites/google-mapsManually: put the files in place
.devin/skills/google-maps/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add imoonkey/openweb --skill google-maps -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about google-maps
How do I install google-maps in Claude Code?
Run npx skills add imoonkey/openweb --skill google-maps -a claude-code. The skill lands at ~/.claude/skills/google-maps/SKILL.md.
What does google-maps do?
It searches for places, retrieves details, reviews, photos and opening hours, builds routes for four travel modes, and handles forward and reverse geocoding.
How do I call one of its operations?
Through the CLI: openweb google-maps exec searchPlaces '{"query": "coffee shops in San Francisco"}'. Arguments go in as one JSON string.
Source text
SKILL.md · MIT
# Google Maps
## Overview
Google Maps — location search, place details, directions, and geocoding. Adapter-based extraction from internal APIs and SPA DOM.
## Workflows
### Find a place and get details
1. `searchPlaces(query)` → `placeId`, name, address, rating
2. `getPlaceDetails(placeId)` → name, address, rating, hours, website, phone, reviews
3. `getPlaceReviews(placeId)` → reviews with author, rating, relative time
4. `getPlacePhotos(placeId)` → photo URLs with dimensions
5. `getPlaceHours(placeId)` → weekly operating schedule
6. `getPlaceAbout(placeId)` → description, category, attributes
Steps 2–6 all use `placeId` from step 1.
### Search nearby and compare
1. `nearbySearch(category, location)` → `placeId`, name, address, rating
2. `getPlaceDetails(placeId)` per result → compare ratings, hours, prices
### Get directions between locations
- `getDirections(origin, destination)` → driving routes with distance, duration
- `getTransitDirections(origin, destination)` → public transit routes
- `getWalkingDirections(origin, destination)` → walking routes
- `getBicyclingDirections(origin, destination)` → cycling routes
All are entry points — pick the travel mode needed.
### Geocoding
- `geocode(address)` → `lat`, `lng`, `placeId` from address string
- `reverseGeocode(lat, lng)` → address, place name from coordinates
## Operations
| Operation | Intent | Key Input | Key Output | Notes |
|-----------|--------|-----------|------------|-------|
| searchPlaces | search places by query | query | placeId, name, address, rating, lat/lng | entry point, SPA nav |
| getPlaceDetails | full place details | placeId ← searchPlaces | name, rating, hours, website, phone, reviews | preview API |
| getPlaceReviews | detailed reviews | placeId ← searchPlaces | reviews[].text, authorName, rating, relativeTime | preview API |
| getPlacePhotos | photo URLs | placeId ← searchPlaces | photos[].url, width, height | preview API |
| getPlaceHours | operating schedule | placeId ← searchPlaces | status, schedule[].day, hours | preview API |
| getPlaceAbout | description + attributes | placeId ← searchPlaces | description, category, rating, website, phone | preview API |
| getDirections | driving directions | origin, destination | routes[].name, distanceText, durationText | entry point, SPA nav |
| getTransitDirections | transit directions | origin, destination | routes[].name, durationText | entry point, SPA nav |
| getWalkingDirections | walking directions | origin, destination | routes[].name, distanceText, durationText | entry point, SPA nav |
| getBicyclingDirections | cycling directions | origin, destination | routes[].name, distanceText, durationText | entry point, SPA nav |
| nearbySearch | search by category near location | category, location | placeId, name, address, rating, lat/lng | entry point, SPA nav |
| getAutocompleteSuggestions | type-ahead suggestions | input | suggestions[].text, placeId, description | entry point, suggest API |
| geocode | address to coordinates | address | lat, lng, placeId, formattedAddress | entry point, SPA nav |
| reverseGeocode | coordinates to address | lat, lng | address, name, placeId | entry point, SPA nav |
## Quick Start
```bash
# Search for places
openweb google-maps exec searchPlaces '{"query": "coffee shops in San Francisco"}'
# Get place details (use placeId from search results)
openweb google-maps exec getPlaceDetails '{"placeId": "0x80858135f0db680b:0x47e714bf5f0080a3", "query": "The Coffee Berry SF"}'
# Get driving directions
openweb google-maps exec getDirections '{"origin": "San Francisco, CA", "destination": "Los Angeles, CA"}'
# Get transit directions
openweb google-maps exec getTransitDirections '{"origin": "Union Square, San Francisco", "destination": "Golden Gate Park, San Francisco"}'
# Search nearby
openweb google-maps exec nearbySearch '{"category": "restaurants", "location": "Times Square"}'
# Geocode an address
openweb google-maps exec geocode '{"address": "1600 Amphitheatre Parkway, Mountain View, CA"}'
# Reverse geocode coordinates
openweb google-maps exec reverseGeocode '{"lat": 37.7749, "lng": -122.4194}'
```
© imoonkey · MIT · imoonkey/openweb
Similar skills
All skills for Agent setup: memory, context, orchestration →google-maps by other authors comes first.