Install
$ agentstack add skill-norahe0304-art-30x-seo-30x-seo-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
Keyword Cannibalization Detection
> Find pages competing for the same keyword
What is Keyword Cannibalization
Problem: Multiple pages on your site targeting the same keyword.
/blog/best-crm-software → Target: "best crm"
/guide/crm-comparison → Target: "best crm"
/products/crm → Target: "best crm"
Consequences:
- Google doesn't know which to rank → none rank well
- Internal link equity is diluted
- Confusing user experience
- Wasted crawl budget
Detection Methods
Method A: With GSC Data (Recommended)
Import GSC "Queries" report
↓
Group by keyword
↓
Find keywords with multiple URLs
↓
Analyze each URL's:
- Impressions
- Clicks
- Average position
- Position fluctuation
↓
Identify cannibalization
Cannibalization Signals:
- Same keyword has 2+ URLs with impressions
- Ranking fluctuates frequently (Google is indecisive)
- Both pages stuck at positions 5-15
Method B: Without GSC Data
Input target keyword list
↓
For each keyword:
- site:domain.com "keyword" search
- Analyze multiple results returned
↓
Check content overlap between pages
↓
Identify potential cannibalization
Output Format
# Keyword Cannibalization Report
## Found X Cannibalization Groups
### Group #1: "best crm software"
| URL | Position | Impressions | Clicks | Content Angle |
|-----|----------|-------------|--------|---------------|
| /blog/best-crm-2024 | #8 | 5,000 | 120 | Review article |
| /guide/crm-comparison | #12 | 3,200 | 45 | Comparison guide |
| /products/crm | #15 | 1,800 | 30 | Product page |
**Diagnosis**: Three pages have different angles but titles/H1s all target "best crm"
**Recommendation**: Differentiation strategy
- /blog/best-crm-2024 → Keep, primary target for "best crm software"
- /guide/crm-comparison → Retarget to "crm comparison guide"
- /products/crm → Retarget to brand term "YourBrand CRM features"
---
### Group #2: "how to use crm"
| URL | Position | Content Overlap |
|-----|----------|-----------------|
| /blog/crm-tutorial | #11 | 80% |
| /help/getting-started | #14 | 75% |
**Diagnosis**: Two pages with highly overlapping content
**Recommendation**: Merge strategy
- Merge into /blog/crm-tutorial (higher traffic)
- 301 redirect /help/getting-started to merged page
- Or: Rewrite /help/getting-started as product-specific tutorial
---
## Solution Summary
| Keyword | Strategy | Keep URL | Action for Others |
|---------|----------|----------|-------------------|
| best crm software | Differentiate | /blog/best-crm-2024 | Update titles |
| how to use crm | Merge | /blog/crm-tutorial | 301 redirect |
| ... | ... | ... | ... |
Four Resolution Strategies
1. Merge
When: Content overlap >70%
A + B → A (the better one)
B → 301 to A
Steps:
- Pick the page with better traffic/ranking
- Merge unique content from the other page
- Set up 301 redirect
- Update internal links
2. Redirect
When: One page is clearly weaker
Weak page → 301 to strong page
Steps:
- 301 redirect directly, no content merge
- Ensure strong page covers weak page's intent
3. Differentiate
When: Two pages serve different intents
A → Keyword X
B → Keyword Y (related but different)
Steps:
- Modify title, H1, meta description
- Adjust content angle
- Update internal link anchor text
4. Delete
When: Page has no value
Low-quality page → Delete or noindex
Steps:
- 410 delete (explicitly tell Google)
- Or noindex (keep but don't rank)
Usage
# With GSC data
/seo cannibalization --gsc [csv-file]
# With keyword list
/seo cannibalization --keywords "keyword1, keyword2, ..."
# Analyze entire site
/seo cannibalization https://example.com
Prevention
Keyword Mapping
Before writing new content, check if existing pages cover that keyword:
| Target Keyword | Existing Page | Status |
|----------------|---------------|--------|
| best crm | /blog/best-crm-2024 | Covered |
| crm pricing | — | Available |
| crm vs erp | /blog/crm-erp-difference | Covered |
Content Planning Principles
- One keyword = One page
- Check keyword mapping before new content
- Run cannibalization detection regularly
- Keep internal link anchors consistent with target keywords
Related Skills
| Skill | Relationship | |-------|--------------| | 30x-seo-keywords | Build mapping during keyword research | | 30x-seo-internal-links | Update links after fixing | | 30x-seo-redirects | Execute 301 redirects | | 30x-seo-content-writer | Rewrite for differentiation |
[PROTOCOL]: Update this header on changes, then check CLAUDE.md
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: norahe0304-art
- Source: norahe0304-art/30x-seo
- 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.