Internal Linking Suggestions Template
Get internal link suggestions in Google Sheets: AI picks target pages and anchor text from your own URL list with =GPT(). Free SEO template, no crawler.
Internal links are the cheapest SEO win nobody gets around to β because matching every article against every other page is an NΓN chore. This template does the matching: give it your page inventory once, and it suggests where each article should link, with ready-to-use anchor text.
Setup
Put your site inventory β one URL β page title per line β into a single cell, $G$1 (or a separate tab joined with =TEXTJOIN(CHAR(10), TRUE, Pages!A:B)).
Layout
| Column | Content |
|---|---|
| A | Article URL or topic |
| B | Suggested internal links (generated) |
The formula
In B2, then drag down:
=GPT("Here is my site's page list: "&$G$1&". Pick the 3 pages most relevant to link to from an article about '"&A2&"'. Only use URLs from the list. For each, return: anchor text (natural, descriptive, not exact-match) β URL β one line on where in the article it fits.")
Variations
- Reverse direction: launching a new page? Ask which existing pages should link to it:
=GPT("From this page list: "&$G$1&", pick 5 pages that should add a link to my new page about '"&A2&"'. Return page URL + suggested anchor."). - Orphan check: add a column of current inlink counts from your crawl and filter to zero β those pages go first through the reverse-direction formula.
- Anchor diversity audit: paste existing anchors for a target page and ask
=GPT("Do these anchors over-repeat the same phrase? Suggest 3 alternative anchors.", C2).
Get started
- Install GPT for Sheets from the Google Workspace Marketplace (free tier included, no API keys needed).
- Copy the template or paste the formulas into your own sheet.
- Drag the formula down your rows, then use Replace all GPT formulas with results in the sidebar.
Related: keyword clustering template (clusters double as linking hubs), programmatic SEO template, GPT for Sheets docs.
FAQ
Will it invent URLs that donβt exist?
Not if you constrain it: the prompt includes your actual page list and instructs the model to only pick from it. Thatβs why the template keeps the site inventory in a dedicated cell every formula references.
Where do I get my page list?
Export it from your sitemap.xml, CMS or a crawl (Screaming Frog, Search Console pages report). URL plus title per line is enough β titles are what the model matches topics against.
Does it vary the anchor text?
Yes β the prompt asks for descriptive, natural anchors rather than repeating the target pageβs exact-match keyword, and you can add your own anchor rules to the prompt text.
