Anchor Text Interlinker
Use cases
Uses word-boundary regex patterns to search for keywords within page content.
Calculates similarity scores between keywords and target page H1 tags using RapidFuzz token sort ratio.
Configurable keyword length (2-10 words), minimum word count (1-5), maximum ranking position (1-100), and minimum keyword-to-H1 similarity threshold (0-100%).
Platform
Browser-based (no installation required)
Input
Screaming Frog CSV with Address, H1-1, content extraction column
Organic keywords CSV (Ahrefs/SEMrush) with URL, Keyword, Search Volume, Position
Output
Excel with internal linking opportunities
Features
- Word-boundary regex keyword detection
- RapidFuzz token sort ratio for H1 similarity
- Keyword length filter (2-10 words)
- Minimum word count filter (1-5)
- Maximum ranking position filter (1-100)
- Similarity threshold slider (0-100%)
- Three-sheet Excel export via xlsxwriter
How to use
- 1 Crawl your site with content extraction enabled
- 2 Export organic keywords from Ahrefs or SEMrush
- 3 Upload both files
- 4 Configure keyword length, word count, position, and similarity thresholds
- 5 Download three-sheet Excel with opportunities
Frequently asked questions
- Why does a keyword I can see in the content not get suggested?
- Matching is an exact whole-phrase, word-boundary regex search on lowercased text. There is no stemming, so 'blue sofa' does not match 'blue sofas', and any punctuation inside the phrase must match too. Keywords are also pre-filtered before matching: at default settings only 2 to 6 word keywords ranking in the top 50 survive, and rows with a blank position are treated as position 100 and excluded.
- Why does each keyword only ever point at one target page?
- Duplicate keywords are collapsed before matching, keeping only the row with the highest search volume. If the same keyword ranks for several of your URLs, only the highest-volume row's URL becomes the target for every suggestion using that keyword.
- Does it check whether the source page already links to the target?
- No. Despite the in-app help text, the code never inspects existing links; it only checks that the keyword appears in the source page's extracted content and that source and target are different URLs. Expect some suggestions where the link already exists, and review before implementing.
- Why are opportunities for a valid keyword filtered out at the similarity step?
- The similarity score is RapidFuzz token_sort_ratio between the keyword and the target page's H1, and the H1 is looked up from your crawl file. If the target URL from your keywords export is not present in the crawl (redirected, parameterised, or a different host format), the H1 is treated as empty, similarity is near zero, and the default 50 percent threshold discards it. Make sure both files use identical URL formats.
- Why is the run slow on large sites?
- Every unique keyword is regex-searched against the content of every crawled page, so runtime grows with pages multiplied by keywords. Tightening the position filter, raising the minimum word count, or crawling only the sections you want links from all cut the work substantially.
Want me to run this for you?
I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.
Related Tools
Extract internal links from pages, check status codes, and analyse anchor text.
Assess anchor text relevance for internal linking using AI.
SaaS platform for smarter internal linking using ML embeddings and semantic analysis.
Find distributor and stockist link opportunities for product brands you sell.
Create interactive Plotly treemaps of link distribution from crawl or GSC data.
Generate correct hreflang tags for international SEO.
Need something built for your business?
This tool started as bespoke client work. I build custom scripts, data pipelines, and full apps for SEO and product data problems that off-the-shelf tools don't solve.
Tell Me What You Need