Internal Link Automator
What this does.
For each target page you supply, this tool finds the most
topically-related source pages using semantic embeddings, then
asks a Gemini Flash model for a natural internal-link suggestion —
either an anchor from existing copy on the source page, or a fresh
one-line insertion with a rendered in-situ preview.
Usage tips
- Paste or upload target URLs (the pages that will receive links) and source URLs (the pages that will contain the links). You can also import candidates from a sitemap.
- Keep each list to 30 URLs or fewer per run — larger batches time out inside a single Function invocation.
- Isolate a run to a single region/language (e.g. UK-only sources and UK-only targets) to avoid weird cross-region linking.
- Pages are cached for 7 days and suggestions for 30 days. Tick Force refresh to bypass both.
- Anchor selection uses semantic embeddings (bge-large-en-v1.5) — a major upgrade on the original TF-IDF, so results should feel less random.
How it differs from the original Streamlit tool
- Runs on Cloudflare Pages + Functions — no long-lived Python server, no Streamlit session reset when you export.
- URL candidates come from paste/upload or a sitemap picker — no forced full-sitemap crawl.
- Similarity uses real semantic embeddings (Workers AI, bge-large-en-v1.5) instead of TF-IDF word overlap.
- All LLM calls route through Cloudflare AI Gateway for caching and cost dashboards.
- The Gemini model is dynamically resolved from the ListModels endpoint — the tool picks the newest stable Flash automatically, no code updates needed.
- Results persist server-side (KV, 30-day TTL) — exports don't wipe your working set.
Analyse
1. Target pages receive links
The pages you want to boost. One URL per line, up to 30.
Paste URLs
0 / 30
Source URLs contain links
0 / 30
Model:
—
Progress
Starting…