How do you get internal links into AI-written WordPress articles?
In short: The model doesn't know what's on your site, so before it writes you have to give it the titles and addresses of posts it can link to. Wiozen Content Bot does this on its own: it gives the model up to 4 published posts that contain the focus keyword, adds the 3 newest posts from the same category at the end of the article, and keeps only links that point to your own domain in the body. Your part is setting up categories properly and publishing the posts.
Why doesn't AI add internal links by itself?
A language model doesn't look at your site while it writes. It doesn't know which posts exist or what their addresses are. Ask it to "add internal links" and it either adds none or makes up an address, and a made-up address sends the reader to a 404 page.
The fix has two parts: give the model a list of posts that actually exist before it writes, and check the links after it writes. The Content Bot does both while it generates the article, with no extra plugin or setting.
Which posts does the bot give the model?
For every article the bot first picks a focus keyword. Right before the writing request is sent, it uses WordPress's own search to find published posts containing that keyword and takes the 4 newest. Their titles and full addresses go into the prompt with the note "if it fits, link to these posts naturally in the body".
That's a suggestion, not a requirement. If a post on the list doesn't fit the topic, the model may skip it. If no published post contains the keyword, the list is empty and the body has no internal links. Posts waiting as drafts aren't included in the search.
How is the "Related articles" list at the end chosen?
After the body and the FAQ, the bot adds a "Related articles" heading with three links (on a Turkish site the heading is "İlgili yazılar"). The list is the 3 newest published posts in the category the article is saved to. If that category has no published posts, the 3 newest posts on the site are used.
The choice is by category and date, not by meaning. The bot doesn't rank posts by how similar they are; whatever the last three posts published in that category are, that's the list. That's why narrow, consistent categories matter: in a catch-all "General" category the list can show posts that have nothing to do with the topic.
The list is written into the post as fixed HTML. When newer posts come out later, the list in an older post doesn't update; the bot never edits posts it has already saved.
What happens to outside links?
The model can write links to other sites into the body on its own, and some of them are wrong or dead. Before saving, the bot checks every link in the body. A link stays if its address starts with http:// or https:// and its domain exactly matches the site address set in WordPress. Every other link is turned into plain text: the sentence stays as it is, it just isn't clickable.
Source links are handled separately. If Source line is on in the Writing tab (it is by default), the news source and the sites used in research are listed at the very end of the article in a "Sources:" line, up to 4 links. Those links use rel="nofollow noopener" and open in a new tab.
Since plugin version 1.5.11 this check reads each link's address with WordPress's HTML parser, which arrived in WordPress 6.2. The plugin runs on 6.0 and later, but on a WordPress older than 6.2 every link in the body, internal ones included, is turned into plain text. If you want internal links, keep WordPress up to date.
What should I do to make internal links work?
- Keep categories narrow and topic-based, and give each one its own brief in the Content Bot. How well the "Related articles" list fits depends on it.
- Publish your posts. The bot only links to published posts; if everything piles up in drafts, new articles won't link to each other.
- Make the site address under Settings → General in WordPress the same as the address the site actually opens on. With and without www count as different domains, and on a mismatch internal links get turned into plain text too.
- Add links from older posts to newer ones by hand. The bot doesn't edit old posts, so if you have an important post, link new articles to it yourself.
If you read every article as a draft, that's also a good moment to check its links. Draft versus live publishing is covered in the auto-publishing guide, and the rest of the article structure in the search visibility guide.
Frequently asked questions
Does the bot add internal links to every article?
The "Related articles" list at the end is added to every article as long as the site has at least one published post. Links in the body depend on the model: if no published post contains the focus keyword, or the model doesn't find one that fits, the body has no internal links.
Does "Related articles" show the most similar posts?
No. It shows the 3 newest published posts in the same category. If the category has none, the 3 newest posts on the site are used.
What if the model links to other sites?
Only links to the site's own domain stay in the body; the rest become plain text. Source sites are listed separately in the Sources line at the end, up to 4, with nofollow.
Will my older posts get links to new ones?
No. The bot doesn't change posts after saving them. The lists in older posts stay as they were on the day they were written.
Which WordPress version do I need?
The plugin runs on WordPress 6.0 and later. Links in the body are only kept on 6.2 or later; on older versions every body link becomes plain text.
The Content Bot is free. Download the plugin, set up your categories, and do a first run as drafts to check the links.
More guides: How can you use an AI API from Turkey without a credit card? · How do you connect an OpenAI-compatible API to a tool you already use? · How do you calculate the cost of an AI API? · What should I do if my AI API key has leaked? · How do you generate images with an AI API, and what does one image cost? · Why does my AI API return a 429 error, and how do I fix it? · Why do long AI API requests time out: streaming or non-streaming? · Anthropic Messages API or OpenAI Chat Completions: which one should I use? · What is a context window, and what is a 1 million token context good for? · Which AI model should I choose: deciding by price, context and quality · Why does a reasoning model return an empty answer, and why are thinking tokens charged? · Why is my API balance running out faster than expected? Tracking spend request by request · How do you convert a web page to Markdown to feed it to an AI model? · How do you get AI to write and publish articles in WordPress automatically? · How do you find blog topics from RSS feeds and Google Trends? · Does AI-written content show up on Google and in AI answers? · How do you get AI to generate a different featured image for every WordPress post? · How do you write a content brief when an AI writes your blog posts? · What should you watch for when an AI writes recipes for your food blog? · How do you fix errors when connecting a WordPress plugin to your AI API account? · Why does my AI article bot stop halfway in WordPress? "Run is stuck" and LiteSpeed · Why are my scheduled WordPress posts late? WP-Cron and a real server cron · How do I get an AI article bot to write blog posts in English or another language? · What does "Content Bot cannot generate articles" mean? Reading the bot's log