Title: Interpost AI Internal Links
Author: Logic Void
Published: <strong>September 2, 2026</strong>
Last modified: September 2, 2026

---

Search plugins

![](https://ps.w.org/interpost/assets/banner-772x250.png?rev=3677462)

![](https://ps.w.org/interpost/assets/icon-256x256.png?rev=3677462)

# Interpost AI Internal Links

 By [Logic Void](https://profiles.wordpress.org/geosem/)

[Download](https://downloads.wordpress.org/plugin/interpost.2.2.1.zip)

 * [Details](https://wordpress.org/plugins/interpost/#description)
 * [Reviews](https://wordpress.org/plugins/interpost/#reviews)
 *  [Installation](https://wordpress.org/plugins/interpost/#installation)
 * [Development](https://wordpress.org/plugins/interpost/#developers)

 [Support](https://wordpress.org/support/plugin/interpost/)

## Description

Interpost helps you build a strong internal link structure without leaving the editor.
Instead of keyword matching, it understands what your posts are _about_. Semantic
embeddings find genuinely related content, then AI picks anchor text that already
exists naturally in your draft.

Interpost is made by Logic Void. The plugin page is at [logicvoid.dev/plugins/interpost](https://logicvoid.dev/plugins/interpost?ref=wporg).

#### How it works

 1. **Index your posts.** The plugin generates a semantic embedding for each published
    post and stores it locally in your database. This happens automatically on publish/
    update, or in bulk from the settings page.
 2. **Find related posts.** While editing, click _Find Related Posts_ in the Interpost
    sidebar. Your draft is embedded and compared against your indexed posts by cosine
    similarity. No AI call is needed for this step beyond the single draft embedding.
 3. **Get anchor text suggestions.** Only your top 15 most similar posts are sent to
    the AI along with your draft. It selects natural 4 to 6 word phrases that exist
    verbatim in your text and pairs each with the most relevant post.
 4. **Insert links.** One click adds the link at the suggested anchor text location
    in the editor.

#### Why semantic instead of keyword matching?

Keyword-based internal linking tools suggest links wherever a word happens to appear.
Interpost compares the _meaning_ of your draft against the meaning of every published
post, so a post about “neuroplasticity in adults” can be linked from a draft about“
learning new skills after 40” even if they share no keywords.

#### Interpost Pro

The free plugin works on the post you are editing. A Pro version is in development
that covers a whole site at once:

 * Scan every published post in one run, instead of one draft at a time
 * Custom post types and taxonomies
 * An orphan report, showing what has nothing linking to it
 * Include and exclude rules by category, tag and post type
 * A link inventory, and undo in bulk
 * Scheduled re-scans as your content changes
 * A choice of Gemini model
 * Support by email, and a year of updates

Pro is a second plugin that installs alongside this one, which stays free and stays
required. It is not released yet. What is planned is listed at [logicvoid.dev/plugins/interpost](https://logicvoid.dev/plugins/interpost?ref=wporg).

#### Requirements

 * WordPress 6.8+ with the block editor (Gutenberg)
 * PHP 8.2+
 * A free Google Gemini API key ([get one here](https://aistudio.google.com/apikey))

### External services

This plugin connects to the **Google Gemini API** (`generativelanguage.googleapis.
com`) to provide its core functionality. You must supply your own API key.

**What is sent and when:**

 * When a post is indexed (on publish/update, or during bulk indexing), the post’s
   title and content (first 2,000 words, HTML stripped) are sent to Google’s embedding
   API to generate a semantic embedding.
 * When you click _Find Related Posts_ in the editor, your draft content is sent
   to Google’s embedding API, and then your draft plus the titles, URLs, and excerpts
   of your top 15 most similar published posts are sent to Google’s generative API
   to produce anchor text suggestions.

No data is sent anywhere unless you have entered an API key. No data is sent to 
any service other than Google. The embeddings themselves are stored locally in your
own WordPress database.

This service is provided by Google: [Terms of Service](https://ai.google.dev/gemini-api/terms),
[Privacy Policy](https://policies.google.com/privacy).

## Screenshots

[⌊The Interpost sidebar in the block editor showing anchor text suggestions.⌉⌊The
Interpost sidebar in the block editor showing anchor text suggestions.⌉[

The Interpost sidebar in the block editor showing anchor text suggestions.

[⌊Settings page with API key field and bulk indexing progress.⌉⌊Settings page with
API key field and bulk indexing progress.⌉[

Settings page with API key field and bulk indexing progress.

## Installation

 1. Install and activate the plugin.
 2. Go to **Settings  Interpost** and enter your [Google Gemini API key](https://aistudio.google.com/apikey).
 3. Click **Index All Posts** to generate embeddings for your existing published posts.
 4. Open any post in the block editor and use the **Interpost** sidebar.

## FAQ

### Do I need to pay for the AI?

You need a Google Gemini API key, which has a free tier that is sufficient for most
blogs. Very large sites or heavy re-indexing may exceed free-tier quotas; costs 
are between you and Google.

### Is my content sent to external servers?

Yes. Post content is sent to Google’s Gemini API for embedding and suggestion generation,
as described in the _External services_ section. Nothing is sent until you configure
an API key, and nothing is sent to any other service.

### Which post types are supported?

Published posts (`post` type) are indexed and suggested. Pages and custom post types
are not currently supported.

### Does it work with the Classic Editor?

No. The suggestions sidebar is built for the block editor (Gutenberg).

### Where are embeddings stored?

In a dedicated table in your own WordPress database.

### What happens to my index if I remove the plugin?

Deactivating changes nothing. Deleting the plugin keeps the index too, because rebuilding
it means one Gemini API call for every post. If you want it gone, tick _Also remove
the embedding index and the API key_ on the settings page before you delete.

### Is there a paid version?

Not yet. A Pro version is in development for site-wide scanning, orphan reports 
and scheduled re-scans. This free plugin stays free, and Pro requires it. See [logicvoid.dev/plugins/interpost](https://logicvoid.dev/plugins/interpost?ref=wporg).

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Interpost AI Internal Links” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ Logic Void ](https://profiles.wordpress.org/geosem/)

[Translate “Interpost AI Internal Links” into your language.](https://translate.wordpress.org/projects/wp-plugins/interpost)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/interpost/), check 
out the [SVN repository](https://plugins.svn.wordpress.org/interpost/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/interpost/) by [RSS](https://plugins.trac.wordpress.org/log/interpost/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.2.1

 * Fixed: the editor sidebar appeared on content types that are not indexed, where
   it had no suggestions to offer. It now loads for indexed content types, and the
   suggestions endpoint declines requests for the rest.

#### 2.2.0

 * Deleting the plugin now keeps your embedding index and API key. Rebuilding the
   index costs one Gemini API call for every post, so removing it is opt in: tick
   the box on the settings page first.

#### 2.1.1

 * Fixed: the bulk indexing progress text showed a doubled percent sign.

#### 2.1.0

 * Fixed: bulk indexing could repeat the same batch forever when a post could not
   be indexed. It now skips posts that have already failed, stops when a batch gets
   nowhere, and reports how many failed.
 * Fixed: deleting a post for good left its embedding behind, so it kept competing
   for a place in the suggestions.
 * Fixed: the index status counted every stored embedding against published posts
   alone, which could report more indexed than there were posts.
 * Fixed: posts embedded at a different vector width are now skipped instead of 
   scored, which silently produced meaningless similarity numbers.
 * Added: filters for the indexed post types and statuses, the embedding model and
   its dimensions, and the shortlist of suggested posts.
 * The API error for a failed embedding request now carries the HTTP status as data,
   so it can be read without parsing the message.

#### 2.0.0

 * Semantic embedding index with automatic indexing on publish/update and bulk indexing
   with progress.
 * Editor sidebar with AI anchor text suggestions and one-click link insertion.
 * API key now sent via request header instead of URL.
 * Full internationalization support.
 * Clean uninstall: removes table and options on plugin deletion.

#### 1.0.0

 * Initial release.

## Meta

 *  Version **2.2.1**
 *  Last updated **24 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.8 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 8.2 or higher **
 * Tags
 * [AI](https://wordpress.org/plugins/tags/ai/)[block-editor](https://wordpress.org/plugins/tags/block-editor/)
   [internal links](https://wordpress.org/plugins/tags/internal-links/)[related posts](https://wordpress.org/plugins/tags/related-posts/)
   [seo](https://wordpress.org/plugins/tags/seo/)
 *  [Advanced View](https://wordpress.org/plugins/interpost/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/interpost/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/interpost/reviews/)

## Contributors

 *   [ Logic Void ](https://profiles.wordpress.org/geosem/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/interpost/)