AI SEO
by coreyhaines31 / marketingskills
Optimize content for AI search engines, get cited by LLMs, or appear in AI-generated answers.
Maps internal link opportunities between pages with relevant anchor text, placement instructions, orphan-page detection, and cannibalisation checks.
Listed ·Updated
Install data from skills.sh
SEO AEO Internal Linking is an AI SEO (GEO and AEO) skill for AI agents, published in the seoskills.sh catalog. Reach for it when your work involves answer and generative engine optimization for AI Overviews, Perplexity, and ChatGPT. Install it with one command and it runs inside your own agent, so the work happens in your workflow, not a separate SEO tool.
Activate this skill when the user wants to build, audit, or optimise the internal link structure across a set of pages or a full site. Trigger phrases include: "internal linking strategy", "find internal link opportunities", "link these pages together", "internal link map", "suggest anchor text", "fix orphan pages", "internal links for [page or topic]", "link equity distribution".
{
"pages": [
{
"title": "string — page or post title",
"url": "string — URL if published, leave blank if not yet live",
"primary_keyword": "string — the keyword this page targets",
"page_type": "pillar | cluster-article | landing-page |
blog-post | product-page",
"content_summary": "string — 1-2 sentences describing the page"
}
],
"focus_page": "string — title of the page you most want to
boost with incoming links",
"cluster_context": "string — optional, paste content cluster
output to inform link map",
"product_pages": ["string — product, signup, pricing, or demo pages that should receive relevant CTAs"],
"audit_findings": "string — optional orphan, cannibalization, or priority findings"
}
For a foundational content system, ensure every article has a contextual path to a relevant product, signup, pricing, demo, or next-step page. Do not add the same CTA or exact-match anchor mechanically to every article; match the destination to the reader’s intent.
This skill recognises four distinct link types. Every suggestion must be labelled with one:
| Link Type | Direction | SEO Purpose |
|---|---|---|
| Pillar → Cluster | Pillar page links to cluster post | Distributes authority downward |
| Cluster → Pillar | Cluster post links back to pillar | Consolidates authority upward — highest priority |
| Cluster → Cluster | Cluster post links to related post | Builds semantic depth across the topic |
| Contextual Boost | Any page → focus page | Concentrates link equity on target page |
Rule: Every cluster article must have at least one Cluster → Pillar link. No exceptions.
Anchor text is critical. Follow these rules on every suggestion:
| Rule | Limit |
|---|---|
| Use concise descriptive anchor text that accurately describes the destination. Reusing an appropriate anchor is not by itself keyword cannibalization; diagnose overlapping page intent with actual query/page evidence. Avoid repetitive keyword stuffing and inaccessible generic labels, but do not impose invented site-wide anchor quotas. |
The skill must always produce output in this exact format:
# Internal Linking Report
## Summary
| Metric | Value |
|---------------------------------|------------|
| Total Pages Analysed | [n] |
| Total Link Opportunities Found | [n] |
| Orphan Pages Detected | [n] |
| Cannibalization Risks | [n] |
| Focus Page Incoming Links | [n] |
| Pages Exceeding Link Limit | [n] |
---
## Orphan Page Alert
Pages with no incoming internal links — these may be harder to discover, but can still be found through sitemaps or external links; confirm crawl scope before calling them site-wide orphans:
| Page Title | URL | Fix |
|-----------------------------|----------------------|----------------------------------|
| [title] | [url or "unpublished"]| Link from [suggested source page]|
---
## Link Opportunities
Listed in priority order — highest impact first.
---
### 🔴 High Priority — Do These First
**Link [n]**
| Field | Value |
|--------------------|---------------------------------------------------|
| Link Type | [Cluster → Pillar / Pillar → Cluster / etc] |
| Source Page | [title] |
| Target Page | [title] |
| Anchor Text | [suggested anchor text] |
| Anchor Type | Partial match / Exact match / Branded |
| Placement | [Where in the source page — intro / body / CTA] |
| Context Sentence | "[Write the sentence the anchor should appear in, |
| | with anchor text in brackets like [this]]" |
| Impact | [Why this link matters for SEO or AEO] |
---
**Link [n]**
[same format]
---
### 🟡 Medium Priority — Do These Second
**Link [n]**
[same format]
---
### 🟢 Low Priority — Polish Round
**Link [n]**
[same format]
---
## Cannibalization Risks
Anchor text conflicts that could confuse search engines:
| Anchor Text Used | Used On | Points To | Fix |
|---------------------|----------------------|----------------------|----------------------------|
| [anchor] | [source page title] | [target page title] | [alternative anchor text] |
If none detected: ✅ No cannibalization risks found.
---
## Link Equity Map
Visual representation of how authority flows across the content:
[Focus Page / Pillar: {page title}]
↑ receives links from:
├── [Cluster Article 1] — anchor: [text]
├── [Cluster Article 2] — anchor: [text]
└── [Cluster Article 3] — anchor: [text]
↓ sends links to:
├── [Cluster Article 1] — anchor: [text]
└── [Cluster Article 2] — anchor: [text]
Cross-links between cluster articles:
[Article 1] ↔ [Article 3] — anchor: [text]
[Article 2] → [Article 4] — anchor: [text]
---
## Links Per Page Check
| Page Title | Incoming Links | Outgoing Links | Status |
|---------------------|----------------|----------------|---------------------------------|
| [title] | [n] | [n] | ✅ Healthy / ⚠️ Too many outgoing|
**Rule:** Use a reasonable, useful number of contextual links; there is no universal 100-link ceiling.
**Rule:** Focus page should have the highest incoming link count.
---
## Action Checklist
- [ ] All orphan pages have been linked
- [ ] Every cluster article has a Cluster → Pillar link
- [ ] Repeated anchors assessed for usefulness, not an arbitrary quota
- [ ] No generic anchors ("click here", "read more") present
- [ ] Focus page has the highest incoming link count
- [ ] Outgoing links remain useful and crawlable
- [ ] Cannibalization risks resolved
cluster_context if provided — use it to understand
the pillar/cluster relationships before mapping any linkspage_type — pillar pages should receive
the most incoming links by defaultprimary_keyword similarity and content_summary
to identify natural linking opportunitiesseo-aeo-content-cluster,
seo-aeo-content-quality-auditorseo-aeo-schema-generatorUse when mapping links between existing pages, identifying orphaned content, or improving conversion paths from informational pages.
Counts refer only to inspected pages and links. A proposed link map is not measured PageRank or AI citation impact. Do not claim changes were applied without editing and checking the actual pages.
Recommendations depend on the completeness and accuracy of the supplied page inventory and cannot replace a live crawl.
Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.