Internal Linking
Suggestions for internal links between your articles — automatic or manual.
Internal Linking analyzes your article inventory and suggests sensible cross-links — anchor text, target article, position, and rationale included. Instead of hunting through the editor for which old article fits the current topic, you get a sorted list with a confirm button. Every accept or reject trains the ranking; the more you use it, the sharper the suggestions. Mandatory tool for anyone wanting to weave a topic cluster cleanly together without tracking link-building manually.
What it can do
- Per-article suggestions — for every article, a list of matching link targets from your own inventory, with anchor, source sentence, and confidence score.
- Project-wide analysis — a single run scans all articles in a project, builds the semantic graph, and fills the suggestion queue.
- Approve / Reject / Edit — per suggestion, you decide whether the link is set, rejected, or applied with a different anchor.
- Editor integration — confirmed links are patched directly into the article HTML; no copy-paste.
- Status tracking — pending / approved / rejected / applied with filters so you don't process anything twice.
- Anchor diversity — the suggestion algorithm makes sure the same target article isn't linked 20 times with the same anchor.
When to use
- You have 20+ articles in a project and lose track of what links where.
- You're building a topic cluster and need pillar → cluster → pillar interlinking.
- You want to give old articles fresh traffic by having new ones link to them.
- You want to keep anchor-text profiles clean instead of writing "click here" 50 times.
Workflow
- Start project analysis —
POST /projects/{project}/internal-links/analyzeor the UI button. Job runs in the background (see Automation). - Review suggestions —
GET /articles/{id}/link-suggestionslists the top suggestions per article. - Decide —
PUT /link-suggestions/{id}withstatus: approved | rejectedand optionally ananchor_textoverride. - Apply — confirmed suggestions get woven into the article content.
- Iterate — new articles automatically trigger a re-analysis of the relevant clusters.
API
| Method | Endpoint | Credits |
|---|---|---|
GET |
/v1/articles/{id}/link-suggestions |
— |
POST |
/v1/projects/{project}/internal-links/analyze |
5 |
PUT |
/v1/link-suggestions/{id} |
— |
Body of PUT /link-suggestions/{id}:
{
"status": "approved",
"anchor_text": "Stoßdämpfer wechseln Anleitung"
}
Response of GET /articles/{id}/link-suggestions:
{
"data": [
{
"id": 4711,
"target_article_id": 88,
"target_url": "/blog/stossdaempfer-wechseln",
"anchor_text": "Stoßdämpfer wechseln",
"source_sentence": "...nach 80.000 km solltest du die Stoßdämpfer wechseln...",
"confidence": 0.91,
"status": "pending"
}
]
}
Credits & Limits
- Analyze run: 5 credits per project-wide scan, regardless of the number of articles.
- Approve / Reject: free.
- Async: the analyze job runs >10 seconds and dispatches a queue job — the UI polls progress.
- Rate limit: one active analyze job per project; follow-up requests are queued.
- Inventory minimum: below 5 articles, the semantic analysis returns no useful suggestions — the job returns early with a notice.
Related modules
- AI Content Editor — confirmed links are rendered directly in the editor and are editable.
- Storylines — when you build pillar clusters, internal linking is the natural connection layer on top.
- Content Audit — audit findings often flag "too few internal links" as an issue, fixed here.
- Content Freshness — freshly updated articles often trigger new link suggestions to surrounding clusters.
Letzte Aktualisierung: May 1, 2026