Install
$ agentstack add skill-seranking-seo-skills-seo-ai-search-share-of-voice ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
> Example output: [examples/seo-ai-search-share-of-voice-wix-com-20260427/REPORT.md](../../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_domainscope is the default; do not narrow tosubdomainunless 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.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: seranking
- Source: seranking/seo-skills
- License: MIT
- Homepage: https://seranking.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.