Directory / plugin
TextTwin: AI-Readable Pages, Markdown and llms.txt
v1.1.0 · by Usman S.
Gives every page a clean text copy that AI tools like ChatGPT and Claude can read. Works alongside Yoast SEO, Rank Math and other SEO plugins.
About this plugin
When an AI tool like ChatGPT or Claude reads a WordPress page, it has to dig through menus, pop-ups, scripts and page builder code to find your actual words. It often misses steps or mixes in menu text.
TextTwin gives every page you choose a clean text copy, its “text twin”: just your headings, text, lists, tables, links and videos. AI tools read the twin quickly and correctly. Your visitors see nothing different.
Your SEO plugin can already make an llms.txt list of your pages. TextTwin does the part it doesn’t: it makes every page itself readable by AI.
How AI tools get the clean copy
- A note in each page: every included page carries a short “LLM/AI Agent Notice”, alternate links and a Link header, all pointing AI tools to its clean copy.
- Fixed addresses: each copy is also at /llms-guides/page-slug.txt and at the page’s own address with .md added, as the llms.txt standard suggests.
- A list of every page: an llms.txt index, grouped into sections with a one-line summary for each item, plus llms-full.txt with everything in one file.
Works alongside your SEO plugin
If Yoast SEO, All in One SEO, Rank Math, SEOPress PRO or another plugin already makes your llms.txt, TextTwin leaves it alone. It keeps making the page copies and puts its own list at /llms-guides.txt. There is nothing to switch off and nothing to choose.
Built for help centers and knowledge bases
TextTwin recognizes popular help center plugins on its own, including Heroic Knowledge Base and BetterDocs, as well as Echo Knowledge Base. It groups articles by category, in the order your help center already uses, and links between articles point to their clean copies. It also works with posts, pages, products and any other public content type.
Safe by design
- Nothing changes for visitors: no scripts, styles, buttons or pop-ups are added to your pages.
- Safe with page caches and CDNs: every copy has its own address, so a cache can never mix it up with your real pages.
- Safe for Google: the copies are marked noindex and point to the real page as the original, so they never compete with it.
- Private stays private: drafts, private, password-protected and scheduled content never appear, and copies are always built as a logged-out visitor. If a login wall or maintenance mode blocks your site, it blocks the copies too, and pages locked by MemberPress, Paid Memberships Pro, Restrict Content Pro or WooCommerce Memberships are left out.
- Light on your site: no files are written. Copies are built on request and kept in one small compressed cache, which never loads on normal page views.
- Clean removal: deleting the plugin removes everything it stored, including its settings and cache.
- Nothing sent anywhere: TextTwin never contacts an outside service.
Simple to set up
The settings page has just three options, and everything else is worked out for you. To leave out a single page, tick one box on its edit screen. Pages set to noindex in Yoast SEO, Rank Math or SEOPress are left out on their own.
TextTwin reads content from both WordPress editors and from Elementor, including synced patterns and shortcodes.
For developers
- Change any built-in choice with the
texttwin_settingsfilter, such as the section order, the folder name or the item limit. - Optional: set
answer_markdownto 1 in that filter to answer requests that ask for Markdown (Accept: text/markdown) with the clean copy at the page’s normal address. It is off by default because some server and CDN caches ignore “do not store” headers. Only turn it on when your caching respects Cache-Control. - Leave out any post with the
texttwin_is_publicfilter. - WP-CLI:
wp texttwin status,wp texttwin rebuildandwp texttwin print index|full|slug.