Help us improve
Share bugs, ideas, or general feedback.
From UnifAPI
Identifies prompts where your brand is missing from AI answers, reveals who owns those answers, and prioritizes gaps by AI search volume to focus content efforts.
npx claudepluginhub unifapi-agent/agents --plugin unifapiHow this skill is triggered — by the user, by Claude, or both
Slash command
/unifapi:ai-answer-gapThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
Audits brand/domain citation in AI overviews and chat replies. Compares competitor visibility and identifies citation gaps. GEO equivalent of SEO audit.
Measures AI search share of voice for a domain vs competitors across ChatGPT, Perplexity, Gemini, Google AI Overview, and AI Mode by pulling leaderboards, sampling prompts, and analyzing topic clusters.
Optimizes content to be cited by AI search systems (Google AI Overviews, ChatGPT, Perplexity, Claude, Gemini, Copilot). Use when improving AI visibility, answer engine optimization, or citation readiness.
Share bugs, ideas, or general feedback.
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.
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.
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_target false), and the answer cites someone else. Capture the cited domains as the owner.geo/mentions/search (target = brand + competitors array) confirms the brand is genuinely absent across the LLM-mentions index, not just uncited on one pull.geo/keywords/search-volume returns 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.geo/mentions/top-pages and geo/mentions/top-domains rank the exact pages and domains winning citations for the set, so the backlog says what content to beat, not just that a gap exists.geo/mentions/cross-aggregated-metrics compares 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).seo/serp (target = brand). Where the brand already ranks organically but isn't cited, the fix is extractability, not new content — tag these quick.UnifAPI reads public data only. Keep each billing block for the cost line.
(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.)
ai-visibility-audit run when one exists rather than regenerating.geo/keywords/search-volume across all candidates and drop near-zero-demand prompts before spending on per-prompt SERP calls.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).geo/mentions/top-pages / geo/mentions/top-domains) and run geo/mentions/cross-aggregated-metrics to 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 in ai-visibility-audit/references/geo-methodology.md (in the sibling audit folder).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.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 rows pulled to the top with the one structural fix each needs (add an FAQ block, a comparison table, a definition header).geo/serp answer that shows it, with the run date.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.
quick extractability win, not a closed gap.