JNK Linkweave

Description

Adding internal links by hand is slow — and the tools that automate it charge you by the suggestion.

Most AI internal-linking plugins meter their suggestions with credits and renew every year, so the more you link the more you pay, and your post content is sent off to someone else’s server to be scored. For a blog with hundreds of posts, “just add internal links” turns into a recurring bill.

JNK Linkweave does the whole thing on your own server. It reads your existing posts and pages and suggests contextually relevant internal links right inside the editor, ranks them with TF-IDF and BM25 in PHP, and applies keyword auto-linking rules at render time — with no external service, no per-suggestion fees, and no post content ever leaving your site. Index as many posts and create as many rules as you like; nothing is metered.

It’s built for the people who actually maintain content at scale: bloggers, SEO and content teams, agencies, and membership or course sites that want serious internal linking without a per-credit meter.

What you get in the free version

  • Editor sidebar with ranked internal-link suggestions for the current post (Gutenberg + Classic Editor / TinyMCE).
  • Server-side TF-IDF + BM25 ranking — all scoring runs in PHP. No external API calls, no per-request fees, no content sent off-site.
  • “Posts that should link here” — inbound-link opportunities surfaced right in the editor.
  • Unlimited keyword auto-linking ruleskeyword → URL rules with per-post and per-site caps, case sensitivity, target="_blank", and rel="nofollow". No cap on how many rules you create or activate.
  • Orphan-page report — find published posts with zero inbound internal links.
  • Broken internal-link scan — a daily check across your link graph flags internal links that 404.
  • Inbound link counts — see which posts hold the most internal link equity.
  • Post-type control — choose which post types are indexed and eligible as link targets.
  • Background indexing via Action Scheduler — rebuilds never run inline on save_post.
  • Tag-aware rewriting — rules skip content inside <a>, <code>, <pre>, headings, and shortcodes, so existing markup is never mangled.

Get Pro

Pro is a flat license — from $59/year (or a one-time lifetime option), with no per-suggestion metering ever. Cancel any time and the free tier keeps working forever. See pricing. Pro adds:

  • AI re-ranking (BYOK) — sharpen suggestion order with your own OpenAI or Anthropic key.
  • Google Search Console targeting — import your GSC Queries export to steer links toward pages that already earn search clicks.
  • Yoast / Rank Math focus-keyword boost — rank suggestions using the SEO focus keyphrases you already set.
  • One-click auto-link map — build an internal-link map from your topical clusters in a single click.
  • Inbound-link bulk-apply — add contextual links to the current post into several related posts at once.
  • Cross-site / portfolio linking (Agency) — suggest links between the sites on your license.
  • Bulk review & approve — insert several editor suggestions at once.
  • One-click broken-link repair — unlink or repoint dead internal links, one at a time or all at once.
  • Bulk URL changer with per-batch rollback, and orphan-report CSV export, and internal-link click analytics (first-party, on your own server).

Bundle JNK Linkweave with Trinity Forms or EntryVault for ~20% off, or take all three for ~25% off — one checkout, one renewal, a license key per plugin.

Why JNK Linkweave instead of credit-metered tools like Link Whisper?

  • No per-suggestion meter. Tools like Link Whisper meter AI suggestions with credits; when the credits run out you buy more. JNK Linkweave’s suggestions are unlimited because they’re computed on your own server.
  • Your content stays put. Credit-metered tools send your post content to their servers for scoring. Linkweave ranks everything locally in PHP — no content ever leaves your site.
  • Flat pricing, with a lifetime option. Instead of a yearly credit plan, Pro is a flat license from $59/year, and every tier has a one-time lifetime option (about four years of the annual price). The free tier stays free.
  • The free tier is a real product, not a locked demo — unlimited rules, orphan/inbound/broken reports, and editor suggestions with no submission caps.

Privacy

In JNK Linkweave’s free build, relevance scoring runs entirely in PHP on your server — no post content ever leaves your site. There is no phone-home and no telemetry.

External services

This plugin does not send your content or data to any third-party service.

The only outbound HTTP requests it makes are to your own site: the daily broken-link scanner issues a lightweight HEAD request to each internal link target (a URL on your own domain) to check whether it still resolves. These are self-requests to your site, filtered to your own home URL — no external endpoint is contacted, and nothing is transmitted off your server.

Development

JNK Linkweave is fully open source (GPLv2-or-later) and ships entirely uncompiled
alongside its build output, so no external download is needed to read or rebuild it.

  • All PHP is human-readable and shipped as-is (there is no PHP build step).
  • The block-editor sidebar’s React SOURCE is included in this plugin under
    editor/src/ (Sidebar.jsx and friends). The compiled files under editor/build/
    (index.js and its CSS) are generated directly from that source — nothing under
    editor/build/ is authored by hand.
  • The build uses @wordpress/scripts (https://www.npmjs.com/package/@wordpress/scripts),
    with the source and output directories set explicitly in package.json:

    npm install
    npm run build (runs: wp-scripts build –webpack-src-dir=editor/src –output-path=editor/build)

Running that regenerates the build output from the source. No other build step is required.

Screenshots

Installation

  1. Upload the plugin to /wp-content/plugins/jnk-linkweave/ or install via the WordPress.org plugin directory.
  2. Activate “JNK Linkweave” through the Plugins menu.
  3. Go to JNK Linkweave Dashboard and click Rebuild index to build the first TF-IDF index of your existing content.
  4. Open any post in the editor — the JNK Linkweave sidebar appears with suggestions once indexing finishes.

For the Classic Editor, the JNK Linkweave button appears in the second TinyMCE toolbar row.

FAQ

Is JNK Linkweave a free alternative to Link Whisper?

Yes — it’s a self-hosted internal-linking plugin whose free tier covers the everyday job (editor suggestions, unlimited auto-linking rules, orphan/inbound/broken-link reports) with no per-suggestion credits and no content sent off-site. Where credit-metered tools like Link Whisper charge for AI suggestions by the credit and renew yearly, Linkweave ranks links on your own server and only asks for a flat Pro license if you want the advanced features (AI re-ranking, GSC targeting, bulk tools).

Do you have other plugins that work with this?

Yes. JNK Linkweave is part of a small suite: Trinity Forms (a free WordPress form builder) and EntryVault (form-entry CRM/Kanban). You can bundle any two for ~20% off, or all three for ~25% off — one checkout, one renewal, a separate license key per plugin.

Does this send my content to an AI service?

No. JNK Linkweave computes link relevance entirely on your server using TF-IDF and cosine similarity. Nothing is sent to any external service.

How long does indexing take?

Roughly a minute and a half for about 1,000 posts on typical shared hosting in our testing. Indexing runs in the background via Action Scheduler, so you can keep using the site while it works.

Will it slow down my site?

The auto-linking rule pass adds only a few tens of milliseconds to the the_content filter on a typical post in our testing. Suggestions are computed lazily and cached as transients keyed on post ID + modified time (6-hour TTL).

How many auto-linking rules can I create?

As many as you like. JNK Linkweave does not cap the number of rules you create or activate.

What happens to existing manual links?

JNK Linkweave never touches existing <a> tags. Auto-linking rules skip any content already inside an anchor, code block, heading, or shortcode.

Can I exclude certain post types?

Yes — under JNK Linkweave Settings, choose which post types are indexed and which are eligible suggestion targets.

Does it work with page builders?

It works with the Block Editor (Gutenberg) and Classic Editor out of the box. Elementor and Beaver Builder content is supported because rules apply on the rendered the_content output, not the editor source.

What happens to my data if I uninstall or my Pro license expires?

Your data is kept by default. Deactivating or deleting the plugin leaves your index, auto-linking rules, and reports in place — nothing is wiped unless you first enable Delete data on uninstall under JNK Linkweave Settings, in which case the tables and options are removed when you delete the plugin. A lapsed Pro license simply disables the premium features (bulk URL changer, broken-link repair, CSV export, and AI re-ranking) and the plugin keeps working like the free tier; it never deletes your data. Renewing your license restores access to the premium features.

How do I extend it?

Filters include jnk_linkweave_is_pro, jnk_linkweave_max_active_rules, jnk_linkweave_rerank, jnk_linkweave_suggestion_post_types, jnk_linkweave_suggestion_score, and jnk_linkweave_allowed_post_types. Actions include jnk_linkweave_rule_applied, jnk_linkweave_suggestion_inserted, and jnk_linkweave_broken_link_found.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“JNK Linkweave” is open source software. The following people have contributed to this plugin.

Contributors

Translate “JNK Linkweave” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.2.5

  • Renamed the plugin to JNK Linkweave (formerly “Automatic Linker”) for a more distinctive name.
  • Security: reading auto-link rules, index status, and the site-wide analysis reports (orphan pages, inbound counts, broken links) now requires the manage_options capability, to match the write side — this data is site-wide and admin-level. The admin menu items now match that capability, so no screen loads with content it cannot fetch.
  • Added: an Inbound Counts screen (JNK Linkweave Inbound Counts) listing how many internal links point at each published post.
  • Added: a Post types setting to choose which post types are indexed and eligible as link targets (previously fixed to Posts and Pages).
  • Improved: “Rebuild index” now also refreshes the internal-link graph, so the Orphans and Inbound Counts reports are accurate immediately instead of after the next daily scan.
  • Improved: the suggestions-per-post and minimum-relevance settings are now honored as defaults for the editor suggestions.
  • Improved: the tokenizer collapses more inflections to a common root (e.g. “running” and “runs”) and treats “will” as a stopword, for slightly better link-suggestion matching.
  • Updated the bundled Action Scheduler library to 4.0.0. Minimum WordPress is now 6.8.

1.2.4

  • Added: quick links on the Plugins screen — a Settings action link, and Docs / Support links in the plugin row.
  • Housekeeping: author/branding updated to JNK Plugins. No change to features.

1.2.3

  • Security: creating or editing auto-linking rules now requires the manage_options capability (administrators). Because rules apply site-wide at render time, they should not be editable by lower roles.
  • Added: an “External services” section to this readme documenting that the only outbound requests are self-checks to your own site.
  • Fixed: a database query in the BM25 ranker now uses a prepared identifier placeholder.
  • Housekeeping: internal build tidy-up; no change to free-tier features.

1.2.2

  • Improved: “Posts that should link here” (inbound-link opportunities) now uses the same ranking as the editor suggestions, so it stays consistent instead of sometimes appearing empty.
  • Changed: the “Min post length” setting is now “Min indexed words” with a clearer description, and its default is lowered to 40 so typical posts index without adjusting settings.

1.2.1

  • Maintenance and compatibility. The free tier is unchanged.

1.2.0

  • Added: BM25 ranking — link suggestions now rank with BM25 (saturates repeated terms and normalizes for post length) for sharper results. Switch back to classic TF-IDF cosine any time under Settings Suggestion ranking. No reindex needed.
  • Added: Inbound-link opportunities — the editor sidebar now shows “Posts that should link here”: related posts that don’t yet link to the one you’re editing.

1.0.7

  • Fixed: the “Upgrade to Pro” and “Feedback/Docs” admin screens linked to a retired domain and would 404. Both now point at the current site.
  • Changed: leaner free package — it now contains only free-tier code.
  • Changed: finished renaming internal identifiers from the plugin’s earlier name.

1.0.5

  • Maintenance: internal naming and metadata consistency; no functional changes.

1.0.4

  • Changed: minimum supported PHP is now 8.2 (8.1 reached end-of-life).
  • Added: edit existing auto-link rules in place (previously you could only add or delete them).

1.0.0

  • Initial release.
  • TF-IDF suggestion engine with cosine similarity and orphan-boost / already-linked penalty.
  • Unlimited auto-linking rules with per-post / per-site caps and tag/shortcode protection.
  • Orphan-page report, inbound-link counts, and a daily broken-link scanner.
  • Gutenberg sidebar and Classic Editor (TinyMCE) integration.
  • REST API namespace jnk-linkweave/v1 with nonce + capability + rate-limit checks.