You do not need a headless rebuild to be cited by ChatGPT, Perplexity or Google AI Overviews. WordPress renders complete HTML on the server, which is exactly what AI crawlers read, so a standard install already clears the hardest hurdle. What remains is deliberate: crawler access, schema, freshness signals and a machine-readable site map. Here is the setup we apply on WordPress sites, without touching core.
Why WordPress starts ahead
Most AI crawlers do not execute JavaScript. A React app that renders client-side is nearly blank to them; a WordPress page arrives as full HTML from PHP, text included. That head start disappears, though, when a page builder injects content with scripts or a theme hides copy behind JavaScript-driven tabs. The rule is simple: view the page source in the browser. Text you can find there is text an AI engine can quote.
Open robots.txt to AI crawlers
Each engine has its own bot, and a blocked bot means no citations from that engine. No code is needed for this step: Yoast's file editor (Tools, then File editor) and Rank Math's robots.txt editor (General Settings) both edit the file straight from the admin. If you prefer code, WordPress serves a virtual robots.txt that you can extend with the robots_txt filter from a child theme's functions.php:
add_filter( 'robots_txt', function ( $output ) {
$output .= "\nUser-agent: OAI-SearchBot\nAllow: /\n";
$output .= "\nUser-agent: ClaudeBot\nAllow: /\n";
$output .= "\nUser-agent: PerplexityBot\nAllow: /\n";
return $output;
}, 20 );
A physical robots.txt file at the web root works too and simply replaces the virtual one. Weigh the trade-off: allowing these bots is what makes citation possible, and a common middle ground is to allow search-and-cite bots while blocking training-only crawlers such as GPTBot or CCBot. Google's AI Overviews need no opt-in at all: Google's guidance says they are fed by ordinary Googlebot indexing and core Search ranking.
Schema without writing code
Structured data tells engines who wrote what and when. On WordPress you rarely write it by hand: Yoast SEO and Rank Math both emit a JSON-LD graph (Article, Organization, BreadcrumbList) on every post, and their FAQ blocks output FAQPage markup that answer engines extract readily. Verify what your pages actually emit with Google's Rich Results Test, because plugins inject schema dynamically and a quick curl will not show it.
Want your site to be the answer when an AI engine is asked about your market? Describe your setup: a one-page diagnosis within 48 hours.
Get my diagnosis →Show when content was updated
AI engines weight freshness heavily, and WordPress tracks a modified date for every post that many themes never display. Surface it in your single post template with get_the_modified_date():
if ( get_the_modified_date() !== get_the_date() ) {
echo 'Updated on ' . esc_html( get_the_modified_date() );
}
Pair the visible date with real revisions: refreshing a post's figures and examples, then letting the modified date say so, is one of the cheapest visibility gains available.
Add an llms.txt
llms.txt is a proposed convention: a markdown file at the site root that gives AI systems a curated overview of the site and links to its key pages. Engine adoption is still uneven, so treat it as a cheap bet. The no-plugin route is a static file uploaded to the web root over SFTP:
# Example Agency
> WordPress and web engineering studio. Services, guides, contact.
## Key pages
- [Services](https://www.example.com/services/)
- [Guides](https://www.example.com/blog/)
- [Contact](https://www.example.com/contact/)
Two maintained options generate it for you. The free Website LLMs.txt plugin (40,000+ active installs at the time of writing) builds the file from your content, refreshes it on a schedule and respects the noindex settings of Yoast, Rank Math, SEOPress and AIOSEO. Rank Math users can skip the extra plugin: its built-in LLMs.txt module is a dashboard toggle with an editable output. A generated file follows your content instead of going stale, so prefer either over a hand-written one you will forget.
Structure posts for extraction
Answer engines lift passages, not pages. Phrase headings the way people phrase questions, open each section with a short self-contained answer, and prefer tables for comparisons. Sourced and dated claims are weighted measurably: the Princeton GEO study (KDD 2024) found citations, quotations and statistics raised visibility in generative answers by 30 to 40 percent in its benchmark. An author box with a real name and credentials rounds it out; engines look for accountability signals on the page.
The plugin toolbox
To keep it in one place, here is which plugin covers which part of the job:
- Article, Organization and FAQ schema: Yoast SEO or Rank Math, already present on most installs.
- llms.txt: the free Website LLMs.txt plugin, or Rank Math's built-in module.
- robots.txt without code: Yoast's file editor or Rank Math's robots.txt editor.
- What no plugin does: structuring your content into quotable answers. That part stays editorial, and it is the part engines actually select for.
The checklist
- Check the page source: your content must be in the server-rendered HTML.
- Decide which AI bots you allow; extend robots.txt via the robots_txt filter.
- Let your SEO plugin emit Article and FAQ schema; verify with the Rich Results Test.
- Display the modified date on posts, and revise content for real.
- Add an llms.txt at the root, static or plugin-generated.
- Open sections with quotable answers; cite sources and date your statistics.