mcpbeat

Seo AI Search Share Of Voice

seranking/seo-ai-search-share-of-voice

Measure AI Search share of voice for a target domain versus competitors across ChatGPT, Perplexity, Gemini, Google AI Overview, and AI Mode. Pulls the AIO leaderboard, then samples prompts where each domain appears as a source or brand mention, and analyses topic clusters each brand owns. Use when the user asks for AI Search share of voice, LLM visibility tracking, AEO/GEO analysis, AI Overview competitive analysis, or wants to know which brands LLMs cite in their category.

1k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
108
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/seranking/seo-skills --skill seo-ai-search-share-of-voice

The instruction itself

5 sections, as written by the author

> Example output: examples/seo-ai-search-share-of-voice-wix-com-20260427/REPORT.md

AI Search Share of Voice

Compare AI-search visibility for a target brand against competitors across every major LLM engine, then analyse the topic clusters each brand owns and where gaps exist.

Prerequisites

  • SE Ranking MCP server connected.
  • User provides: (a) target domain and its brand name, (b) list of competitor domains and brand names, (c) country (default: us), and (d) optionally, which engines to analyse (default: all supported: ai-overview, chatgpt, perplexity, gemini, ai-mode).

Process

  • Leaderboard snapshot DATA_getAiOverviewLeaderboard
  • Pull the AIO leaderboard for the target domain's category in the target country.
  • Capture mention counts and share percentages per engine, per domain.
  • Heatmap table
  • Build a table: rows = domains (target + competitors), columns = engines, cells = % share of voice.
  • Highlight the leader per engine and the worst performer.
  • Prompt sampling per domain DATA_getAiPromptsByBrand, DATA_getAiPromptsByTarget
  • For each domain (target and each competitor):
  • Pull 10 ChatGPT prompts where the domain appears as a source (link mention).
  • Pull 10 ChatGPT prompts where the brand is mentioned by name.
  • Save query text and the exact sources cited so the user can validate.
  • Topic clustering
  • Group prompts by theme (e.g., pricing, feature comparison, tutorials, alternatives, reviews).
  • For each brand, note which clusters it dominates and which it is absent from.
  • Gap and recommendation synthesis
  • Identify 3 to 5 topic clusters where the target underperforms competitors despite having relevant content.
  • Recommend specific actions: new content angles, structured data additions, partnerships with frequently-cited sources, comparison pages, FAQ/How-To schema.

Output format

Create a folder seo-ai-search-share-of-voice-{target-slug}-{YYYYMMDD}/ with:

seo-ai-search-share-of-voice-{target-slug}-{YYYYMMDD}/
├── 01-leaderboard.md         # raw leaderboard per engine
├── 02-heatmap.md             # visual heatmap table
├── 03-prompts-{domain}.md    # one file per domain with 20 sampled prompts
├── 04-topic-clusters.md      # cluster membership per brand
└── REPORT.md                 # executive summary

REPORT.md follows this shape:

# AI Search Share of Voice: {target brand} vs competitors

## Summary
- Target: {target} ({share}% across all engines)
- Leader: {leader brand} ({share}%)
- Target rank: {n} of {total}

## Heatmap

| Domain | AI Overview | ChatGPT | Perplexity | Gemini | AI Mode |
|---|---|---|---|---|---|
| {target} | {%} | {%} | {%} | {%} | {%} |
| {comp1} | ... | ... | ... | ... | ... |

## Who owns what

### {target brand}
Strong in: {cluster 1}, {cluster 2}
Absent from: {cluster 3}, {cluster 4}

### {competitor 1 brand}
...

## Topic cluster ownership

| Cluster | Leader | Share | Target position | Gap |
|---|---|---|---|---|
| Pricing | {brand} | {%} | {n} | {% behind} |
| Alternatives | {brand} | {%} | {n} | {% behind} |
| Tutorials | {brand} | {%} | {n} | {% behind} |

## Top 5 actions to close gaps
1. {action with target cluster}
2. ...

Tips

  • Do not hallucinate citation counts. If the API returns zero prompts for a given domain/engine, report zero, do not estimate.
  • For each competitor, validate the brand-name match in the prompt text. Sometimes "Wix" appears in a sentence about "wiktionary" or a person's name. Flag ambiguous matches in the raw-prompt file.
  • base_domain scope is the default; do not narrow to subdomain unless the user asks.
  • Respect Data API rate limit: 10 requests per second. With 5 domains and 2 prompt queries per engine per domain, pace the loop.
  • The report is not a one-time artefact. Recommend the user re-run monthly and diff results to see ranking momentum.

How to use it

Copy the folder

Take seranking/seo-ai-search-share-of-voice from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.