TL;DR
- You can add llms.txt to WordPress three ways: upload a static file, serve it with a
functions.phprewrite rule, or use a plugin — pick based on how often your content changes. - Keep the file to a curated index: key pages, product/service docs, and your most authoritative topic clusters. Link out, don't paste full page content.
- Leave out thin pages, tag archives, duplicate category listings, and anything already blocked in robots.txt — noise dilutes the file's usefulness.
- Treat llms.txt as a living document. Stale links and outdated summaries are worse than no file at all.
- A plugin (including CiteFlow's GEO plugin) makes sense once you're updating llms.txt on the same cadence as your sitemap — otherwise a static file is fine.
llms.txt is a plain-text file, typically served at yourdomain.com/llms.txt, that gives AI crawlers and assistants a curated map of a site's most important content — similar in spirit to a sitemap, but written for language models rather than search indexers. WordPress has no native support for it, so adding one means either managing a static file through the server, hooking into WordPress's routing, or installing a plugin that automates generation.
Route 1: static file upload
The simplest method is creating a plain text file named llms.txt and uploading it to your site's root directory via FTP, SFTP, or your hosting file manager. WordPress doesn't need to know the file exists — static files at the web root bypass WordPress routing entirely as long as your server (Apache or Nginx) serves static assets normally, which almost all do by default.
This is the right choice if your site structure is stable: a handful of core pages, a small product catalog, a blog that doesn't reorganize often. The downside is obvious — every update is manual. If you add a product line or restructure navigation, someone has to remember to edit the file and re-upload it. On larger or fast-moving sites, this file quietly goes stale within weeks.
Route 2: functions.php rewrite
For sites that want llms.txt generated dynamically from WordPress data without a plugin, you can add a rewrite rule and query var in functions.php that intercepts requests to /llms.txt and outputs content built from a WP_Query loop — pulling page titles, URLs, and excerpts programmatically.
This approach has real advantages: the file updates automatically as you publish or unpublish content, and you control exactly what's queried (for example, excluding draft posts or specific categories by ID). The tradeoff is maintenance overhead — you're writing and owning custom PHP, which needs to survive theme updates and PHP version bumps. It also requires flushing rewrite rules after activation, a common gotcha that causes the file to 404 until permalinks are resaved.
This route suits agencies and in-house teams with dev resources who want the file tied directly to the CMS without plugin dependency.
Route 3: a plugin
Plugins exist specifically to generate and maintain llms.txt from your post types, taxonomies, and page hierarchy, refreshing the file automatically as content changes. This is the lowest-effort option for non-technical teams and the most reliable way to keep the file in sync with a growing site.
CiteFlow's GEO plugin, for instance, generates and updates llms.txt alongside other AI-readability tasks like schema markup and crawler monitoring, so the file doesn't require separate manual upkeep. Whether you use that, a dedicated llms.txt plugin, or a broader SEO suite that's added the feature, the core question is the same: does the plugin let you curate sections manually, or does it just dump every published URL? A file that lists everything is barely more useful than a full sitemap — the value of llms.txt is in the curation.
What sections actually matter
Structure llms.txt as a short Markdown-style outline, not a raw URL list. Group links under clear headers so a model (or a human skimming it) understands the site's shape at a glance:
- Core pages — homepage, about, contact, pricing. These establish who you are and what you do.
- Products or services — one section per major product line or service category, linking to the canonical page for each, not every SKU or variant.
- Documentation or guides — if you maintain help docs, API references, or long-form guides, group them separately from marketing content.
- Key topic clusters — your two or three most authoritative content hubs, especially ones you want cited for specific queries.
Each entry should be a link plus a one-line description, not a copy-pasted summary of the page. The file works as an index, pointing a model toward where to look, not a substitute for the page itself.
What to leave out
The instinct to list everything is the most common mistake. Skip:
- Tag and date archives — these are navigational artifacts, not content.
- Duplicate or near-duplicate pages (print versions, AMP variants, paginated category pages).
- Anything already disallowed in robots.txt — listing a blocked URL in llms.txt sends a contradictory signal.
- Low-value legal boilerplate (cookie policy, generic terms pages) unless there's a specific reason an assistant would need to cite them.
- Draft, expired, or seasonal content that will be gone in a few months.
A file with 15 well-chosen links beats one with 300 indiscriminate ones.
Keeping it fresh
llms.txt decays the same way sitemaps and schema do: nobody notices until a crawler pulls a dead link or a description that no longer matches the page. If you're on a static file, put a recurring calendar reminder tied to your publishing cadence — monthly for active blogs, quarterly for slower sites. If you're on the functions.php or plugin route, periodically audit the output anyway, since automated generation can still surface low-value pages you'd rather exclude manually. Either way, treat llms.txt maintenance as part of the same workflow as sitemap and schema upkeep, not a one-time setup task.
FAQ
Does WordPress support llms.txt natively?
No. WordPress has no built-in llms.txt feature, so you need a static file upload, a custom rewrite rule in functions.php, or a plugin to serve one.
Will adding llms.txt guarantee AI citations?
No. It's a discovery aid that helps crawlers find and prioritize your key content; actual citation still depends on content quality, schema, and the signals covered elsewhere in GEO work.
Should llms.txt include every page on my site?
No — it should be a curated index of your most important pages, products, and topic hubs, not a full sitemap duplicate; including everything dilutes its usefulness.



