AI Answer Gap
The bridge from 'we're not visible in AI' to a concrete backlist: find the prompts where the brand should be cited but isn't, name the competitor or domain that owns each answer, and rank the gaps by AI search demand so the content team attacks the biggest, most winnable misses first.
Agent-native
Run it in Claude, ChatGPT custom MCP apps, OpenClaw, Hermes, Codex, Claude Code, Cursor, VS Code, or another MCP-capable client. No dedicated GUI flow and no separate LLM API key.
Backed by live public data
Every step is grounded in live public-data records UnifAPI returns, so the output cites what is actually ranking, posting, or being said — not a generic best-practice list.
Composable & open source
Skills cross-reference each other and live in a public, MIT-style repo. Read the full SKILL.md on GitHub, fork it, or run it as-is inside your agent.
Paste this into Codex or Claude Code
The prompt is intentionally editable. Replace the handles, market, budget, and campaign goal, then let the agent call UnifAPI MCP when it needs live public data.
Find the AI-answer prompts we should own but don't for our category, name who owns each answer instead, and rank them by AI search volume into a content backlist with quick wins flagged.
The full skill, rendered from its SKILL.md
Find the prompts where the brand should be cited in AI answers but isn't, name who owns each answer instead, and rank the gaps by AI search volume — so the content team attacks the biggest, most winnable misses first. This is the bridge from "we're not visible in AI" to a concrete, sequenced content backlog.
This is an enhanced skill: it reads live public data through UnifAPI. A "gap" is never a hunch — it is a real uncited AI answer with a named owner, weighted by real AI-search demand.
Use UnifAPI for live evidence
This is an enhanced skill: it reads live public data through UnifAPI — a "gap" is never a hunch but a real uncited AI answer with a named owner, weighted by real AI-search demand. Use the unifapi skill to connect (OAuth MCP), then discover these GEO operations. All are POST; hold engine (google / chatgpt), location, and language constant across the run.
- Find the gap —
geo/serp(query= candidate prompt,target= brand domain,view: "full"). A gap exists only when an answer renders, the brand is not a cited reference (is_targetfalse), and the answer cites someone else. Capture the cited domains as the owner. - Confirm absence at scale —
geo/mentions/search(target= brand + competitors array) confirms the brand is genuinely absent across the LLM-mentions index, not just uncited on one pull. - Rank gaps by demand — the primary sort key —
geo/keywords/search-volumereturns generative-AI demand per prompt. This drives the ranking; pull it for the whole candidate set first and drop near-zero prompts before spending on SERP calls. - Who owns each answer —
geo/mentions/top-pagesandgeo/mentions/top-domainsrank the exact pages and domains winning citations for the set, so the backlog says what content to beat, not just that a gap exists. - Which competitor owns the most —
geo/mentions/cross-aggregated-metricscompares share across labeled groups (brand vs each named competitor), so you know whether one rival dominates the gaps (attack it directly) or they're spread across many third parties (a presence problem). - Quick-win cross-read —
seo/serp(target= brand). Where the brand already ranks organically but isn't cited, the fix is extractability, not new content — tag thesequick.
UnifAPI reads public data only. Keep each billing block for the cost line.
Workflow
(Read .agents/product-marketing.md / .claude/product-marketing.md first if it exists — it carries the category, use cases, and competitor set the candidate prompts come from.)
- Build the candidate set. Start from the brand's category, use cases, and competitor names; generate prompts the brand has a legitimate right to be cited for. Reuse the prompt set and diagnosed misses from an
ai-visibility-auditrun when one exists rather than regenerating. - Price demand first. Run
geo/keywords/search-volumeacross all candidates and drop near-zero-demand prompts before spending on per-prompt SERP calls. - Confirm each gap. For each surviving candidate,
geo/serp(target = brand) +geo/mentions/search. Keep only prompts where an answer exists, the brand is absent, and the brand could credibly answer it (don't backlog gaps the product has no right to own). - Identify owner and angle. Record the cited domain (
geo/mentions/top-pages/geo/mentions/top-domains) and rungeo/mentions/cross-aggregated-metricsto see which competitor owns the most gaps. Classify what makes each source win against the three pillars — Structure (extractability), Authority (presence signals), or Third-party presence. The full decision tree and the Princeton-measured authority levers live inai-visibility-audit/references/geo-methodology.md(in the sibling audit folder). - Score and sequence. Apply the gap-priority rubric below: AI search volume is the spine, winnability adjusts it, and a quick/net-new tag sets the build path. Output the ranked backlog.
Gap-priority scoring
Each confirmed gap gets a Gap Priority Score. AI search volume is the dominant factor; winnability and effort modulate it.
| Factor | Weight | How to read it |
|---|---|---|
| AI search volume | 0.55 | Log-banded geo/keywords/search-volume: ≤50 → 1; 51–200 → 3; 201–1k → 5; 1k–5k → 7; 5k–20k → 9; >20k → 10. |
| Winnability | 0.30 | How beatable the current owner is. Owner is a thin/forum/outdated page or the brand already ranks organically → 8–10; mid-authority owner → 4–7; locked by Wikipedia/official docs/dominant brand → 1–3. |
| Brand right-to-win | 0.15 | How credibly the product answers this prompt. Core use case → 9–10; adjacent → 5–7; tangential → 1–3 (consider dropping). |
GapPriority = (Volume×0.55 + Winnability×0.30 + RightToWin×0.15) × 10 (0–100)
Then tag the build path:
quick— brand already ranks organically (seo/serp) or is name-dropped but uncited: fix structure/extractability, no net-new page. These jump the queue regardless of score because effort is low.net-new— no page or no organic presence: full content build.third-party— owner is a listicle/review/Reddit surface the brand isn't on: outreach/placement, not on-site content.
Output
Lead with the quick wins (cheap), then the volume-ranked net-new backlog.
| # | Prompt | AI vol | Owns the answer | Cited source URL | Pillar | Winnability | Right-to-win | Priority | Build path |
|---|---|---|---|---|---|---|---|---|---|
| 1 | how to [problem] | 2.7k | competitorB docs | competitorb.com/docs/x | Structure | 9 | 10 | 88 | quick |
| 2 | best [category] for startups | 1.9k | g2.com listicle | g2.com/categories/y | Presence | 4 | 9 | 71 | third-party |
| 3 | [category] pricing guide | 1.2k | rivalapp blog | rivalapp.com/pricing | Authority | 6 | 8 | 68 | net-new |
Follow the table with:
- Quick-wins block — the
quickrows pulled to the top with the one structural fix each needs (add an FAQ block, a comparison table, a definition header). - Per gap: the winning angle to beat (Structure / Authority / Presence) restated as an action — for Authority, name the specific lever (add stats, quotes, or citations).
- Evidence: each gap cited to the
geo/serpanswer that shows it, with the run date. - Cost: UnifAPI records consumed, or best estimate.
Worked example
Brand acme.dev, US/English, 18 candidate prompts from a prior audit. geo/keywords/search-volume drops 4 near-zero prompts. geo/serp confirms 11 real gaps; geo/mentions/cross-aggregated-metrics shows competitorB owns 6 of them (a single beatable rival, not scattered third parties). "how to [problem]" (2.7k AI vol) is owned by competitorB's docs, but seo/serp shows Acme ranks #6 organically and is merely uncited → pillar Structure, tagged quick, Priority (9×0.55 + 9×0.30 + 10×0.15) × 10 = 88 → #1. "best [category] for startups" (1.9k) is a g2 listicle Acme isn't on → third-party, lower winnability, Priority 71.
Guardrails
- Read-only: it identifies and prioritizes gaps. It does not write content, edit the site, or post anywhere — it hands the ranked backlog to the operator's own assistant and content team.
- AI answers are non-deterministic and vary by session and time. A confirmed gap is a dated snapshot; re-check before committing a large content build.
- Only backlog gaps the brand has a credible right to win (the right-to-win factor exists to filter these out) — don't pad the list with prompts the product can't honestly answer.
- AI search volume is a public-data estimate — present ranges and never promise that filling a gap guarantees a citation.
- Keep the cited-vs-name-drop distinction: a name-drop is a
quickextractability win, not a closed gap.
Related Skills
- ai-visibility-audit: the upstream diagnostic that surfaces and explains the misses this skill prioritizes. Its references/geo-methodology.md supplies the three-pillar miss-cause decision tree and the Princeton authority levers used in step 4.
- llm-mention-tracking: re-run after content ships to confirm gaps are closing over time
- unifapi: the shared data skill (connect MCP, discover the GEO/SEO operations this skill reads)
Source: ai-answer-gap/SKILL.md on GitHub — open a PR there to improve it.
The live APIs this skill calls
Every operation the skill names is one of these UnifAPI platforms — still visible and callable for product code, debugging, and custom agent flows.
- Prioritized gap backlist: prompt, AI search volume, the owner, and the cited source
- Per gap: the winning angle to beat and a quick/net-new tag
- Fast wins where the brand ranks organically but isn't cited
- Every gap cited to the AI answer and dated
More skills in the AI Visibility Agent
Chain these in the same agent to go from one decision artifact to the next — each is its own run-prompt, workflow, and expected output.
AI visibility audit
The GEO equivalent of an SEO audit — check whether you're cited in AI answers and who owns the answer instead.
Open skillAI visibility fixes
Prioritize Structure, Authority, and Presence fixes for prompts where AI answers do not cite you.
Open skillLLM mention tracking
Track how often you're mentioned across ChatGPT and AI search over a fixed prompt set, and how share of voice moves vs competitors.
Open skill