google-maps-skills.
Two Claude Code / agent skills that research the best places in a city and file them into your Google Maps, through your own logged-in Chrome.
#What it is
Two skills that split the job into brain and hands. map-scout is the brain: give it a city, region or radius, and it researches candidates from three source families (Google Maps, TripAdvisor, independent blogs), scores them with a Bayesian rating adjustment plus a percentile fairness step, and produces ranked shortlists with finished note texts, 🥇🥈🥉 included. google-maps is the hands: a Playwright-over-CDP workflow plus a build engine (maps_lists.py) that creates the Saved Lists, sets emoji icons, saves places in ranked order, writes per-place notes, and verifies the result with a hard reload. map-scout without google-maps has nowhere to put its results, and google-maps without map-scout has nothing to file. That is why they ship as one repo. MIT licensed.
#The itch
Google Maps has no official API for Saved Lists, the lists behind the "Saved" tab in the app. If you want an agent to maintain them, the only route is the UI, in a browser signed in to your account. I wanted to say "scout Kyoto, we're there for a week in October" and have the lists just appear on my phone: toggleable, shareable, with notes. Making that UI route reliable enough for real use is what this repo is.
You: "scout Kyoto, we're there for a week in October"
- map-scout
- 5 categories x 3 source families -> ranked shortlists + note texts
- maps_lists
- build: 5 Saved Lists + ⭐ Top Picks, ranked pins, notes, verified
- Your phone
- the lists are just there: toggleable, shareable, with notes
#How it works
UI automation against Maps fails in non-obvious ways, and the engine exists so a build is one command instead of an afternoon of debugging:
| Failure mode | What the engine does |
|---|---|
| Phantom save: the click lands in the wrong panel, looks fine, persists nothing | scopes to the panel containing the Save button, restarts every search from the base URL |
| First save after list creation silently lost (backend sync lag) | creates all lists first, waits, retries, verifies each save via the menu row's aria-checked |
| Rerunning a build un-saves places (the save menu toggles) | idempotency anchor on aria-checked; checked rows are left alone |
| Ranked order comes out wrong (Maps shows newest first) | saves in reverse rank order, checks the final order, auto-repairs by re-toggling |
| Notes vanish on reorder | writes notes only after the order check and repair pass |
| Wrong branch of a same-named place | anchor validation: phone or street+number must appear on the place page |
The contract between the two skills is a single data.json: map-scout ends by producing it, google-maps starts by consuming it. Everything a build needs is in the file, so a crashed build can simply rerun.
#In real use
This is UI automation without an API underneath. Google changes the Maps DOM regularly; two selector breaks are documented between 2026-05 and 2026-07 alone, and fixes are usually one selector. The selector strings assume the English Maps interface. The share-link dialog renders inconsistently between sessions, and the My Maps flows are the most brittle part. Developed and used on Windows; the Python engine is cross-platform in principle but macOS/Linux is untested. A 5-list build also waits generously for the Maps backend and takes minutes, not seconds; that is the price of the verify guarantees.
The repo is explicit about the account question too: the skills drive your own browser, signed in to your own account, doing things you could do by hand at hand-like speed. Automating a Google account is still your call and your responsibility.
Version 1.0.0 shipped on 2026-07-17 with both skills, the build engine and the documented failure-mode table.
#Install
$ git clone --depth=1 https://github.com/belschak/google-maps-skills.git
$ mkdir -p ~/.claude/skills
$ cp -r google-maps-skills/google-maps google-maps-skills/map-scout ~/.claude/skills/
$ pip3 install playwright
Then launch Chrome with remote debugging on a dedicated profile (Chrome 136+ refuses CDP on the default profile) and sign in once; a launcher script is included for Windows, on macOS/Linux it is one command. No Playwright browser download needed: the scripts attach to your existing Chrome over CDP.
#Links
Related: web-research-cascade; map-scout's research stage hits exactly the blocks it escalates through, TripAdvisor most of all