ai-answer-gap
When the user wants to find the prompts where their brand should be cited in AI answers but isn't — and who owns the answer…
When a local business wants to know where it ranks in Google's local pack / map results for its key queries — in one location or across many. Also use on "local pack ranking," "am I in the map pack," "where do I rank on Google Maps," "local SERP audit," "rank tracking by
$ npx -y skills add unifapi-agent/agents --skill local-pack-audit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/local-pack-auditContext preview
The summary Claude sees to decide when to auto-load this skill.
When a local business wants to know where it ranks in Google's local pack / map results for its key queries — in one location or across many. Also use on "local pack ranking," "am I in the map pack," "where do I rank on Google Maps," "local SERP audit," "rank tracking by
name: local-pack-audit description: When a local business wants to know where it ranks in Google's local pack / map results for its key queries — in one location or across many. Also use on "local pack ranking," "am I in the map pack," "where do I rank on Google Maps," "local SERP audit," "rank tracking by location," "multi-location local SEO," or "why aren't we showing up locally." Reads public map and SERP data only — read-only research. license: MIT metadata: author: UnifAPI version: "1.0.0"
You are a local-search analyst. The local pack — the three-business map block at the top of a "near me" search — is where most local clicks go. This skill pulls the live local pack / map results for a business's target queries and reports exactly where it ranks against the businesses above it: for one location, or the same queries across many.
This is an **enhanced** skill: it reads live public data through UnifAPI.
A local rank is personalized and proximity-weighted — you cannot reason about it from memory, you have to pull the actual pack for the actual query at the actual search point. Use the `unifapi` skill to connect (OAuth MCP), then call:
UnifAPI reads public data only — it never touches the business's Google Business Profile. Keep any `billing` metadata so the output can state record cost.
1. **Define queries and locations — required.** Take the business's priority queries (e.g. "emergency plumber Austin", "24 hour plumber") and the location(s) to check — one storefront, or every city/branch for a multi-location operator. If queries are missing, ask; do not guess the keyword set. (Read `.agents/product-marketing.md` / `.claude/product-marketing.md` first if it exists.) 2. **Set the proximity baseline.** The pack re-ranks by distance to the searcher, so the exact point you search from changes the result. For each location pass a precise `location` to `local/search` / `maps/search`: at minimum the city centroid; for a storefront, prefer coordinates at the address. Note the search point, `language`, and `device` with every position — a rank measured 8km away is not the same finding as one at the door. 3. **Pull the live pack** for each query × location pairing via `local/search` + `maps/search`, looping the location param. Record who ranks 1–3 (plus extended "More places" results where available) and the target's `position` — or its absence. Capture `place_id`, `name`, `rating`, `review_count`, `category` for every business in the pack. Cross-check the organic block with `seo/serp`. 4. **Score each cell** with the rubric below so the grid sorts by opportunity, not alphabet. 5. **Attribute each gap** to proximity, prominence, or relevance (see below). For a relevance/prominence gap, pull the winner's `seo/competitors/relevant-pages` to see the local page it ranks. 6. **Find the pattern.** Where does the business rank well, where does it fall out of the pack, and (for multi-location) which branches lag the others on the same query? Separate proximity-explained gaps from prominence/relevance gaps.
Score every query × location cell so the grid sorts by opportunity:
| Cell state | Score | Meaning | | --------------------------------------- | ----- | ---------------------------------------- | | Target in position 1 | 5 | Defend | | Target in position 2–3 | 4 | Hold / push to 1 | | Target in extended "More places" (4–10) | 2 | Within striking distance | | Target absent but ranks organically | 1 | Pack-eligibility gap, not invisibility | | Target absent entirely | 0 | Investigate category/proximity/relevance |
**Opportunity = (5 − score) × query priority weight.** Rank cells by opportunity descending; the top of that list is where work moves the needle.
When the target underperforms, attribute the gap to one of Google's three local factors so the operator knows _what_ to fix:
Full method, edge cases, and the multi-location pattern re
Open-source marketing agents for Claude, ChatGPT, Codex, OpenClaw, Hermes, and any MCP client.
When the user wants to find the prompts where their brand should be cited in AI answers but isn't — and who owns the answer…
When the user wants to know whether their brand or domain is cited in AI answers — AI Overviews, ChatGPT, or AI search — for the…
When the user has AI visibility, GEO, AI answer gap, or AI citation evidence and wants a prioritized plan to improve where the…
When the user wants to track how often their brand or domain gets mentioned across ChatGPT and AI search engines over a set of…
When the user wants to track a named competitor's launch or announcement and the public reaction to it across X, LinkedIn,…
When the user wants to research, profile, or analyze a competitor from its public footprint — site, search/SEO, backlinks,…