Install
$ agentstack add skill-lionkiii-claude-seo-skills-seo-gsc-cannibalization ✓ 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.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
GSC Cannibalization — Keyword Cannibalization Detection
@skills/seo/references/mcp-degradation.md @skills/seo/references/gsc-api-reference.md
Finds queries where multiple pages compete for the same ranking, causing them to cannibalize each other's traffic. Identifies the "winning" page and "losing" pages for each cannibalized keyword.
MCP Check
Before calling any GSC tool, verify the MCP is connected:
- Use ToolSearch with query
+google-search-console - If tools returned — note the actual tool name prefix, proceed to Inputs
- If no tools returned — display the GSC MCP error template from
references/mcp-degradation.md and stop:
## Google Search Console MCP Not Available
The `/seo gsc cannibalization` command requires the GSC MCP, which is not currently connected.
**What you can do:**
- Use `/seo technical ` for crawlability and indexability analysis (no live data)
- Use `/seo audit ` for a full static SEO audit
**To connect GSC MCP:**
- Install and configure a Google Search Console MCP server (see README for setup)
- Add it to ~/.claude/mcp.json at user scope (NOT project scope)
- Verify GSC property access before running commands (domain vs URL prefix format)
- See references/gsc-api-reference.md for property format details
Inputs
site: The GSC property URL. Accept both formats:- Domain property:
sc-domain:example.com - URL prefix:
https://example.comorhttps://www.example.com - If user provides a bare domain (no prefix), call
list_sitesto identify
the correct property format registered in GSC.
Date Calculation
Use Bash to calculate dates (GSC has ~3 day delay):
endDate=$(date -v-3d +%Y-%m-%d)
startDate=$(date -v-31d +%Y-%m-%d)
echo "endDate: $endDate | startDate: $startDate"
Execution
Step 1 — Pull query+page data: Call query_search_analytics with:
siteUrl: the site propertystartDate: calculated startDateendDate: calculated endDatedimensions:["query", "page"]rowLimit: 1000
Post-processing — detect cannibalization: Group the results by query. For each query:
- Count distinct
pagevalues - If a query has 2 or more distinct pages → it is cannibalized
- Keep only cannibalized queries for the report
For each cannibalized query, identify:
- "Winning" page: the page with the most
clicksfor that query - "Losing" pages: all other pages competing for the same query
Sort cannibalized queries by total impressions descending (highest-traffic cannibalization issues first).
CTR display rule: API returns CTR as decimal — multiply by 100 for display.
Output Format
## GSC Cannibalization Report: [site property]
**Period:** [startDate] to [endDate] (28 days)
**Cannibalized queries found:** [count]
### Cannibalized Keywords
#### Query: "[query]" ([total impressions] impressions)
| Role | Page URL | Clicks | Impressions | CTR | Position |
|------|----------|--------|-------------|-----|----------|
| WINNING | [url] | [n] | [n] | [X.XX%] | [X.X] |
| losing | [url] | [n] | [n] | [X.XX%] | [X.X] |
**Recommendation:** [recommendation based on situation]
[Repeat for each cannibalized query...]
### Summary
| Metric | Value |
|--------|-------|
| Total cannibalized queries | [count] |
| Total pages involved | [count] |
| Estimated lost clicks | [sum of losing page clicks] |
Recommendation logic:
- If winning page has much higher position (lower number): consolidate losing pages
into winning page via redirect or canonical
- If positions are close (within 3): add canonical signals pointing from losing to
winning page; consider merging content
- If the pages cover distinct subtopics: differentiate content more clearly or use
internal links to signal hierarchy
If no cannibalization found, report: "No keyword cannibalization detected. Each query appears on only one page in the top 1000 results."
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: lionkiii
- Source: lionkiii/claude-seo-skills
- License: MIT
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.