Internal Link Assistant
Free WordPress internal linking assistant: orphan page reports, FULLTEXT-powered suggestions, one-click insertion in Gutenberg. Link Whisper alternative.
by Internal Link Assistant contributors · github.com/mahavirvataliya/internal-link-assistant · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/mahavirvataliya/internal-link-assistant/releases/download/v1.1.0/internal-link-assistant-1.1.0.zipReadme
=== Internal Link Assistant === Contributors: ilacontributors Tags: internal links, linking, seo, orphan pages, broken links Requires at least: 6.0 Tested up to: 6.7 Requires PHP: 7.2 Stable tag: 1.1.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html
Internal link suggestions in both directions, orphan page and broken link reports, CSV export and WP-CLI — a free, privacy-friendly Link Whisper alternative.
== Description ==
Internal Link Assistant helps you build a stronger internal linking structure without sending your content to any third-party service.
- Link Suggestions panel in the block editor shows inbound/outbound link counts for the current post and suggests related posts with a ready-to-use anchor phrase. One click wraps the first occurrence of the anchor phrase in your content with a proper
<a href>link. - Inbound suggestions work in the other direction: the panel lists posts that mention your page but don't link to it yet — the fastest way to fix an orphan page without leaving the editor.
- Orphan Pages report under Tools → Internal Links lists published posts that no other post links to, with post-type filter, title search and CSV export.
- Broken Links report flags same-site links that don't resolve to any published post (deleted pages, mistyped permalinks) while skipping archives, feeds, pagination and uploads.
- WP-CLI commands (
wp ila status|rebuild|orphans|broken) for automation and large sites. - Fast matching is powered by a custom side table with a FULLTEXT ngram index over extracted keyword phrases (title words, tags, Title Case phrases). If your server does not support FULLTEXT indexes, the plugin degrades gracefully to a LIKE search.
- Deterministic and private: no external API calls, no AI providers, no telemetry. All matching happens on your own server.
== Installation ==
- Upload the
internal-link-assistantfolder to/wp-content/plugins/, or install the ZIP via Plugins → Add New → Upload Plugin. - Activate the plugin. The database table
{prefix}ila_postsis created automatically on activation. Upgrades from 1.0.x add the broken-links column automatically on the next admin load. - Go to Tools → Internal Links and click Rebuild Index to scan your existing content. Large sites are scanned in batches with live progress.
- Open any post or page in the editor and look for the Link Suggestions panel in the settings sidebar.
Building from source: the compiled editor assets (build/index.js + build/index.asset.php) ship with the release. If you cloned the source instead, run npm install && npm run build inside the plugin folder (requires Node 16+). Without a build, the rest of the plugin still works; only the sidebar is unavailable.
== Frequently Asked Questions ==
= Does it send my content anywhere? = No. Suggestions come from a FULLTEXT index stored in your own database. The plugin makes zero external HTTP calls.
= What happens if my MySQL version lacks the ngram parser? = The installer falls back to a plain FULLTEXT index. If even that fails (rare hosts), suggestions automatically switch to a LIKE-based search. You can see the active mode at the top of Tools → Internal Links.
= Which posts get scanned? =
All published posts of public post types (attachments excluded). New posts are indexed incrementally whenever they are saved. Batch size can be tuned with the ila_scan_batch_size filter (default 50 posts per AJAX request).
= Are links to drafts or previews counted? = No. A target must be a published post of a public type (or an attachment page), so preview links never inflate the counts.
= Why doesn't the broken-link report show links to category archives? = The report only flags URLs that should resolve to a post but don't. Archives, feeds, pagination, search and upload URLs are valid non-post links and are excluded.
= How do I exclude the front page from the orphan report? = It already is: the front page and the posts page cannot receive resolvable internal permalinks, so they are excluded from the report.
= Can I change how many orphan rows appear per page? =
Yes, filter ila_orphans_per_page (default 20). CSV exports are capped by ila_export_row_cap (default 20,000 rows).
= Can I add my own anchor keywords? =
Yes, filter ila_extract_keywords receives the raw phrase candidates before dedup — index your SEO plugin's focus keyphrase or custom fields, then rebuild.
== Changelog ==
= 1.1.0 =
- New: inbound link suggestions — the editor sidebar now lists posts that mention your page but don't link to it yet, with Edit/View shortcuts.
- New: Broken Links report tab with same-site URLs that do not resolve to any published post (archives, feeds, pagination and uploads excluded).
- New: CSV export for the orphan and broken-link reports, respecting the active post-type filter and title search.
- New: WP-CLI commands —
wp ila status,wp ila rebuild [--batch|--no-reset],wp ila orphans,wp ila broken. - New: post-type filter and title search on the report tabs.
- New: sidebar refresh button, auto-refresh after saving, fallback-search notice, snackbar confirmation on insert.
- New:
ila_suggestions_limit,ila_inbound_suggestions_limit,ila_extract_keywords,ila_broken_links_enabledandila_export_row_capfilters, plus theila_post_rescannedaction. - Fixed: links to drafts or deleted IDs (?p= style URLs) no longer inflate inbound counts.
= 1.0.0 =
- Initial release: FULLTEXT-ngram keyword index, batched scanner, orphan report, REST suggestion endpoint and Gutenberg "Link Suggestions" sidebar with one-click anchor insertion.
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| v1.1.0 | Aug 29, 2026 | internal-link-assistant-1.1.0.zip | 0 |