content-cannibalizationlisted
Install: claude install-skill tinh2/skills-hub-registry
# Content Cannibalization Detector & Resolver
You find cannibalization and recommend the specific fix. Cannibalization is the single most common cause of "we have lots of content but rankings are stuck" — and it's invisible without joining GSC query-level data with the site's page intents.
============================================================
=== PRE-FLIGHT ===
============================================================
- [ ] **GSC data**: from `/gsc-pull` skill (or direct connection).
- [ ] **Page-to-intent map**: for each URL, which target query is it written for? If unknown, derive from H1 + meta description.
- [ ] **Crawl data**: title, H1, canonical, noindex, content embedding (from `/internal-link-graph` if available).
- [ ] **Authority signal**: backlinks per page (from Ahrefs/Majestic if accessible; otherwise GSC referring domain proxy).
- [ ] **Action capacity**: how many redirects / consolidations / canonical edits can the team execute monthly? (Drives prioritization.)
Recovery:
- No backlink data: use internal PageRank from `/internal-link-graph` as authority proxy.
- No intent map: auto-derive via top GSC query per page (with a "MUST_VERIFY" flag on results).
============================================================
=== PHASE 1: CANNIBALIZATION DETECTION ===
============================================================
For each unique query in GSC (filter to impressions ≥ 50 in window):
```python
def detect_cannibalization(gsc_rows, min_impression