The internal link engine
Internal linking is the most underused on-page SEO lever there is. Done well, it distributes authority to the deep posts that would otherwise rot, signals topical authority for the pages you most want ranking, and keeps readers moving through your site. The reason almost nobody does it well is that it’s brutally tedious by hand — to add the right link at the right moment, you’d need to remember every post you’ve ever written. An assistant that can hold your full archive in context does in one pass what would take you a month, and it’s the recipe most likely to move organic traffic within a quarter.
What you need
- Specter synced to your blog
- An AI assistant with strong long-context recall
- A clear sense of the 5–10 “money pages” you want to send link equity to
The recipe
- Pull the archive. Run a Specter pull, then commit the folder to git as a baseline — you’ll want to diff and selectively revert.
- Build an index, then run the AI pass. First have the assistant build a lookup table (slug, title, primary topic, a few tags per post) so it doesn’t re-read every file for every link decision. Then run the linking prompt below.
- Dry-run the diff. Pair a Specter dry-run with
git difffor line-level review. You’re checking three things: anchors that read naturally, destinations that are genuinely relevant, and no more than three new links per post. - Push. Once the diff is clean, push with Specter — changes round-trip back to your CMS.
The prompt
You are building an internal linking pass across every post in this folder,
using the lookup index you just built.
RULES:
1. For each post, add UP TO 3 internal links to OTHER posts in this folder.
2. The link must be topically relevant to the surrounding paragraph. No shoehorning.
3. Anchor text must be a natural noun or verb phrase that already fits the
sentence. NEVER use "click here" or "read more".
4. Prefer linking to the money pages listed below — send equity to them.
5. Don't link to a post already linked from this post.
6. No links in the first or last paragraph; no more than one link per paragraph.
7. Use markdown link syntax: [anchor](/slug/).
MONEY PAGES (prefer when topically appropriate):
- /your-best-converting-post/
- /your-pillar-guide/
Modify the .md files in place and save a summary of every source → destination
→ anchor. Flag posts where you couldn't find 3 good links — don't force them.
Do not run any sync commands; I'll review with git diff and a Specter dry-run.
Cost and time
| Blog size | Tokens | Cost | Wall-clock |
|---|---|---|---|
| 50 posts | ~500k | $2 | 20 min |
| 200 posts | ~2M | $6 | 90 min |
| 600 posts | ~6M | $20 | 4 hr |
The index trick roughly cuts token cost in 3–5×. Most of the wall-clock is your review, not the model’s.
Pitfalls
- Over-linking. Cap at three per post, hard. A paragraph with four blue links is annoying and dilutes equity.
- Hallucinated slugs. Assistants occasionally invent a slug that doesn’t exist. The index step prevents most of it — scan the diff for anything that looks off.
- Stale slug references. If you’ve changed slugs in the past without redirects, links to old slugs will 404. Run a Specter dry-run once first to confirm every current slug is real.
Where to go next
This pairs naturally with the meta description sweep — both are light cleanup passes — and feeds directly into a topical cluster build, where within-cluster linking is the whole point.