Google Maps
Google Maps integration for OpenClaw with Routes API. Use for: (1) Distance/travel time calculations with traffic prediction, (2) Turn-by-turn directions, (3...
MIT-0 · Free to use, modify, and redistribute. No attribution required.
⭐ 4 · 3.1k · 20 current installs · 20 all-time installs
byshaharsh@Shaharsha
MIT-0
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
Name/description, the declared env var (GOOGLE_API_KEY), the documented APIs (Routes, Places, Geocoding) and the included Python code all align. The functionality (distance, directions, matrix, geocoding, places) matches the code and required APIs; there are no unrelated credentials or tools requested.
Instruction Scope
SKILL.md instructs running the included Python script and to set GOOGLE_API_KEY (and optional GOOGLE_MAPS_LANG). The instructions reference running python3 against lib/map_helper.py (and once reference a longer path 'skills/google-maps/lib/map_helper.py') — a minor path inconsistency but not security-critical. I inspected the start of map_helper.py; it performs only API calls to Google endpoints and local processing. I saw no instructions to read arbitrary host files, other env vars, or to exfiltrate data to unknown endpoints.
Install Mechanism
Registry metadata lists this as instruction-only (no formal install spec), but SKILL.md metadata includes an install entry to 'pip install requests'. The code imports requests, so that is reasonable. This is low-risk (standard PyPI dependency) but you should ensure requests is available in your runtime or install it from your trusted package manager rather than running arbitrary install commands from an untrusted source.
Credentials
Only GOOGLE_API_KEY (primary) and an optional fallback GOOGLE_MAPS_API_KEY plus GOOGLE_MAPS_LANG are referenced. These are appropriate and expected for a Maps integration. No unrelated secrets (AWS, GitHub tokens, etc.) are requested.
Persistence & Privilege
The skill is not marked always:true and does not request elevated or persistent platform privileges. It uses allowed-tools: exec to run the Python helper (expected). It does not modify other skills or system-wide configs in the files I saw.
Assessment
This skill looks coherent and limited to Google Maps functionality, but before installing: (1) Only provide a Google Maps API key with the minimal enabled APIs (Routes, Places, Geocoding) and quota/billing limits you accept. (2) Install the requests package from your trusted environment (do not run arbitrary pip commands supplied by unknown parties). (3) Review or run the included lib/map_helper.py in a sandbox if you want to audit behavior fully (the file is straightforward and calls official Google endpoints). (4) Note the skill can execute the helper via exec — only enable the skill for agents you trust. If you need higher assurance, ask the author for a full file review or a signed release/source repository.Like a lobster shell, security has layers — review code before you run it.
Current versionv3.1.2
Download zipdirectionsdistancegooglelatestlocationmapsnavigationplacessearch
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
Runtime requirements
🗺️ Clawdis
EnvGOOGLE_API_KEY
Primary envGOOGLE_API_KEY
SKILL.md
Google Maps 🗺️
Google Maps integration powered by the Routes API.
Requirements
GOOGLE_API_KEYenvironment variable- Enable in Google Cloud Console: Routes API, Places API, Geocoding API
Configuration
| Env Variable | Default | Description |
|---|---|---|
GOOGLE_API_KEY | - | Required. Your Google Maps API key |
GOOGLE_MAPS_API_KEY | - | Alternative to GOOGLE_API_KEY (fallback) |
GOOGLE_MAPS_LANG | en | Response language (en, he, ja, etc.) |
Set in OpenClaw config:
{
"env": {
"GOOGLE_API_KEY": "AIza...",
"GOOGLE_MAPS_LANG": "en"
}
}
Script Location
python3 skills/google-maps/lib/map_helper.py <action> [options]
Actions
distance - Calculate travel time
python3 lib/map_helper.py distance "origin" "destination" [options]
Options:
| Option | Values | Description |
|---|---|---|
--mode | driving, walking, bicycling, transit | Travel mode (default: driving) |
--depart | now, +30m, +1h, 14:00, 2026-02-07 08:00 | Departure time |
--arrive | 14:00 | Arrival time (transit only) |
--traffic | best_guess, pessimistic, optimistic | Traffic model |
--avoid | tolls, highways, ferries | Comma-separated |
Examples:
python3 lib/map_helper.py distance "New York" "Boston"
python3 lib/map_helper.py distance "Los Angeles" "San Francisco" --depart="+1h"
python3 lib/map_helper.py distance "Chicago" "Detroit" --depart="08:00" --traffic=pessimistic
python3 lib/map_helper.py distance "London" "Manchester" --mode=transit --arrive="09:00"
python3 lib/map_helper.py distance "Paris" "Lyon" --avoid=tolls,highways
Response:
{
"distance": "215.2 mi",
"distance_meters": 346300,
"duration": "3 hrs 45 mins",
"duration_seconds": 13500,
"static_duration": "3 hrs 30 mins",
"duration_in_traffic": "3 hrs 45 mins"
}
directions - Turn-by-turn route
python3 lib/map_helper.py directions "origin" "destination" [options]
Additional options (beyond distance):
| Option | Description |
|---|---|
--alternatives | Return multiple routes |
--waypoints | Intermediate stops (pipe-separated) |
--optimize | Optimize waypoint order (TSP) |
Examples:
python3 lib/map_helper.py directions "New York" "Washington DC"
python3 lib/map_helper.py directions "San Francisco" "Los Angeles" --alternatives
python3 lib/map_helper.py directions "Miami" "Orlando" --waypoints="Fort Lauderdale|West Palm Beach" --optimize
Response includes: summary, labels, duration, static_duration, warnings, steps[], optimized_waypoint_order
matrix - Distance matrix
Calculate distances between multiple origins and destinations:
python3 lib/map_helper.py matrix "orig1|orig2" "dest1|dest2"
Example:
python3 lib/map_helper.py matrix "New York|Boston" "Philadelphia|Washington DC"
Response:
{
"origins": ["New York", "Boston"],
"destinations": ["Philadelphia", "Washington DC"],
"results": [
{"origin_index": 0, "destination_index": 0, "distance": "97 mi", "duration": "1 hr 45 mins"},
{"origin_index": 0, "destination_index": 1, "distance": "225 mi", "duration": "4 hrs 10 mins"}
]
}
geocode - Address to coordinates
python3 lib/map_helper.py geocode "1600 Amphitheatre Parkway, Mountain View, CA"
python3 lib/map_helper.py geocode "10 Downing Street, London"
reverse - Coordinates to address
python3 lib/map_helper.py reverse 40.7128 -74.0060 # New York City
python3 lib/map_helper.py reverse 51.5074 -0.1278 # London
search - Find places
python3 lib/map_helper.py search "coffee near Times Square"
python3 lib/map_helper.py search "pharmacy in San Francisco" --open
details - Place information
python3 lib/map_helper.py details "<place_id>"
Traffic Models
| Model | Use Case |
|---|---|
best_guess | Default balanced estimate |
pessimistic | Important meetings (worst-case) |
optimistic | Best-case scenario |
Regional Notes
Some features may not be available in all countries:
| Feature | Availability |
|---|---|
--fuel-efficient | US, EU, select countries |
--shorter | Limited availability |
--mode=two_wheeler | Asia, select countries |
Check Google Maps coverage for details.
Multilingual Support
Works with addresses in any language:
# Hebrew
python3 lib/map_helper.py distance "תל אביב" "ירושלים"
python3 lib/map_helper.py geocode "דיזנגוף 50, תל אביב"
# Japanese
python3 lib/map_helper.py distance "東京" "大阪"
# Arabic
python3 lib/map_helper.py distance "دبي" "أبو ظبي"
Language configuration:
- Set default via env:
GOOGLE_MAPS_LANG=he(persists) - Override per-request:
--lang=ja
# Set Hebrew as default in OpenClaw config
GOOGLE_MAPS_LANG=he
# Override for specific request
python3 lib/map_helper.py distance "Tokyo" "Osaka" --lang=ja
Help
python3 lib/map_helper.py help
Files
2 totalSelect a file
Select a file to preview.
Comments
Loading comments…
