Silotree – Internal Links, Orphan Pages & Broken Links

Silotree – Internal Links, Orphan Pages & Broken Links

Details
View on WordPress

You have good posts that nothing on your site points to. Not because they are bad. You just never went back and linked them up.

Silotree finds those posts. Then it reads everything else you have written and finds the sentence that already mentions one — the words are sitting there, they are just not a link yet. You see the sentence, you say yes, and the link goes in. Changed your mind? One click takes it out.

We call them unlinked posts. SEO writers call them orphan pages. Same thing.

It all happens on your own server, and it is free.

Free, and actually free

No cap, no trial, nothing held back for a paid version:

  • Your unlinked posts, with the date and length of each, and the whole list as a CSV
  • Dead ends, broken links, and how many clicks it takes to reach each post from your front page
  • Suggestions while you write — in the editor sidebar and again when you publish, both ways, up to three each way
  • A never-link list, a Links report, the Classic Editor, Elementor text widgets, and undo on every batch
  • WPML and Polylang, one language at a time, never a translation
  • Click counts and link arrows, both off until you switch them on. The counts use no cookies

Category and tag pages get link counts too. One thing worth knowing: the inbound count only counts links you wrote, not menus or categories. Everything Silotree writes is an ordinary link, and it stays if you deactivate the plugin.

It will not mess up your posts

A revision is saved before anything is written, and the post is read back afterwards to check the link landed. Posts are skipped if revisions are switched off, or if someone has the post open in an editor. Silotree writes into paragraphs, lists, quotes and Elementor text widgets, and nowhere else — never a heading, button, existing link, code, shortcode or card. It refuses, and tells you why, if the text changed while you were deciding or if the anchor is one you have already used. Elementor layouts are put back if anything else changed. Undo removes that one batch and leaves the rest alone, and category and tag text is kept so those can be undone too. At most six Silotree links go into any one post.

When you want it to do the thinking

Everything above runs on its own, forever, with no account. But the plugin can only match words it can see on your server.

The Silotree service at silotree.io reads your posts on ours instead. It matches them by meaning across up to 500 pages, not just where the words happen to line up. It puts the ones your Search Console says people actually click at the top. Once a week it emails you the few worth adding.

A free account gets you a score out of 100 and your first 3 suggestions, written into WordPress for you. You can also apply them from the app, if you switch that on with your own Application Password. It suggests fixes for broken and redirected links on every plan.

Nothing is sent anywhere until an administrator presses Connect. Connecting starts 14 days of Solo with no card; after that the site drops to Free and the links stay. Solo, Studio and Agency come with a 30-day money-back guarantee. Links you add in WordPress are never limited, whatever plan you are on.

Silotree Pro

Adding links one post at a time is fine for a handful. It is a long afternoon when you have two hundred unlinked posts, or you have just changed a URL that forty posts point at.

Pro is a second plugin that does those jobs in batches, inside wp-admin:

  • Link a pile of posts at once. Tick the ones you want and add their links in one go
  • Keyword rules. Link a phrase to a post you choose, wherever it appears, once per post. Previewed before anything is written, and it can import your Yoast SEO or Rank Math focus keywords
  • Change a URL everywhere. Send every link that goes to one address to another instead, in a single pass
  • Edit existing links in bulk, and fix broken ones in batches
  • Links that follow a post when it moves or goes in the trash

It comes with every paid plan and the 14-day trial. None of its code is in this plugin and nothing above needs it. Every batch it writes keeps a revision and undoes from right here, and if a plan ends the links stay. Keyword rules made before 0.6.0 are kept.

External services

This plugin connects to the Silotree service at https://silotree.io (or the address in the silotree_app_url option on a self-hosted install). Silotree is operated by Thomas Kanze, a self-employed individual based in Costa Rica. It is used only after an administrator connects the site, from the setup screen or Silotree Settings. Until then the plugin sends nothing anywhere: the scan, the reports, the editor sidebar, the publish prompt, the never-link list and the CSV export all run on your own server. Links in the plugin that open silotree.io (help articles, “Connect free account”, “See plans”) are ordinary links you choose to follow; they carry a label saying which screen they came from (from and utm_* in the address) and nothing about your site’s content. The “Run the full audit” link shown to people who cannot connect the site also carries the site’s domain, so the free checker can start on it.

Once connected:

  • What the service reads: Silotree reads the full text, titles, addresses and publication dates of your site’s published posts, so it can match them by meaning and suggest links. It reads only what your site already publishes; drafts and private posts are never sent.
  • Connecting: the site address, the address of the settings screen, a one-time code and a verifier are exchanged with silotree.io. Silotree answers with the site key, once, over HTTPS, and then calls this site’s REST API once to confirm the site holds it.
  • Admin screens (Silotree Reports and the posts-list columns): the site’s domain is sent to fetch counts, suggestions and the plan. Answers are cached for a few minutes; the posts list and the editor only read the cache and refresh it in the background through WP-Cron, so they never wait on Silotree. When Silotree cannot be reached the plugin waits ten minutes before asking again.
  • Post editor: the editor sidebar’s own suggestions are worked out on this server and the draft is never sent to Silotree. When the site is connected, the Silotree panel asks for that post’s suggestions, sending the site’s domain and the post’s ID (post_id).
  • Matching posts to your scan: post IDs, their public URLs and a hash of each post’s content are sent so suggestions can be matched to posts.
  • Publishing a post: the post ID, its public URL and its title are sent so Silotree can suggest links to it. The publish prompt also asks, by post ID, for any links Silotree has already found for that post.
  • Related posts block: the list of related posts is fetched from silotree.io at most every six hours (fifteen minutes after a failed try), in the background through WP-Cron, after somebody has been in wp-admin.
  • Suggestions: silotree.io calls this site’s REST API (/wp-json/silotree/v1/) to read published data and store suggestions. By default it cannot change posts. You apply and undo suggestions in wp-admin.
  • Optional one-click apply: if an administrator turns on “Let Silotree apply changes from the app” under Silotree Settings, and pastes an Application Password for their own WordPress account into the Silotree app, silotree.io calls this site’s REST API to apply links, undo a batch, and save or bin a guide draft. Those calls sign in as that account with the Application Password (HTTP Basic authentication). WordPress only accepts an Application Password over HTTPS. The calls are refused while the setting is off, and they can only do what that account can already do. You create the password under Users Profile Application Passwords. Silotree stores it encrypted. Revoke it in WordPress at any time, or turn the setting off, and remote changes stop.
  • Link click counts, only if you turned them on: once a day, the last 8 days of daily totals (post ID, the linked post’s ID and address, the day and the total). Nothing about readers. Delete click counts in Settings asks Silotree to delete its copy.

This plugin does not check for, download or install Silotree Pro. If you install Silotree Pro yourself, it is a separate plugin with its own description of what it sends (whether the site’s plan includes Pro, and its own updates from silotree.io).

After it is issued at connection, the site key is not sent again in either direction: every request between this site and Silotree is signed with it (HMAC-SHA256, with a timestamp and a one-time nonce). Pressing Regenerate key in Settings replaces it and disconnects the site until it is connected again. Nothing is loaded from silotree.io on the pages your readers see.

Terms of service: https://silotree.io/terms, Privacy policy: https://silotree.io/privacy

Privacy

Out of the box, this plugin adds nothing to the pages your readers see and collects nothing about them.

Link click counts are off until an administrator turns them on in Silotree Settings On your pages. When they are on:

  • On single posts and pages, a small script (under 1 KB, loaded with defer) notices when a reader clicks a link in the post, and sends three things to this site’s own REST API (/wp-json/silotree/v1/click) with navigator.sendBeacon: the post’s ID, the address of the link, and a short-lived nonce from that page. Links in menus, headers, footers, sidebars and forms are left out.
  • The plugin adds one to a daily total for that post and that link, and only when the post really contains that link. It stores the day, the post, the post the link goes to and the total. Nothing else is stored or sent.
  • No cookies and no browser storage are used, and no IP address, browser details, referrer or visitor ID are stored. Two clicks cannot be tied to one person, so there is no personal data to export or erase.
  • People who can edit posts are not counted: the script is not loaded for them.
  • Totals are kept for 90 days, then deleted. Delete click counts in Settings deletes them all at once. Deleting the plugin deletes the table.
  • If the site is connected to Silotree, the last 8 days of totals (post, link, day, total) are sent to silotree.io once a day, so the weekly email and the Results screen can show which links readers use. Silotree keeps them 90 days, and Delete click counts deletes them there too; if Silotree cannot be reached at that moment, the plugin asks again once a day, and sends no new totals until it has.
  • To keep a script from flooding the counts, the plugin also keeps one number for the whole site: how many clicks it counted in the current minute. It says nothing about who clicked.

Link icons are styles only: no script, no request, and nothing is collected.

The plugin suggests wording for your privacy policy under Settings Privacy.

Details

Plugin code:
silotree
Plugin version:
0.8.8
Author:
Outdated:
No
WP version:
5.9 or higher
PHP version:
7.4 or higher
Test up to WP version:
7.1.4
Total installations:
0
Last updated:
2026-11-08
Rating:
Times rated:
0
broken-links
internal-linking
internal-links
orphan-pages
seo