Making WordPress AI-citable · AEO setup
JSON-LD, llms.txt, speakable, the 50-word answer block. What I changed on this site and why.
The essay
JSON-LD + llms.txt + speakable + 50-word answer blocks. The full setup with code, tested on this site since Q3 2025.
The shift
Q4 2024 — Q4 2025 saw a measurable change in B2B referral traffic. Where traditional SEO sent visitors via search-result-link clicks, AI search assistants (ChatGPT, Claude, Perplexity, Gemini) now route visitors via citations — the assistant answers the user’s question, names a source, and the user clicks through.
Sites optimised only for traditional SEO show up as citations occasionally. Sites optimised for AEO (Answer Engine Optimisation) show up 3 — 5× more often. The setup is small; the lift is real.
Part 1: 50-word answer blocks
Every long-form post should open with a 50-word block that completely answers the question. Not a teaser. Not a tease. The answer.
The reason: AI assistants lift this block as the citation. If the answer is in the first 50 words, the assistant cites your site. If the answer is buried six paragraphs in, the assistant either summarises (and gets it wrong) or cites someone else.
Schema
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How much does a WordPress accessibility audit cost?",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".body-l:first-of-type"]
},
"datePublished": "2026-04-12",
"dateModified": "2026-05-18"
}
The speakable property tells crawlers and AI assistants which CSS selector contains the speakable answer. My convention: .body-l:first-of-type matches the first lede paragraph, which is always the 50-word answer.
Part 2: JSON-LD per content type
Hand-write the JSON-LD. Don’t use a plugin. The plugin output is generic; the hand-written output matches your content exactly.
FAQPage for answer entries
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "How much does a WordPress accessibility audit cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "£1,200 — £6,000 depending on locale count, plugin spread, and how much manual screen-reader work the buyer wants in the deliverable.",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".body-l:first-of-type"]
}
}
}]
}
HowTo for tutorials, Service for service pages
Each content type gets its own schema. The full set lives in inc/seo.php on this site; the patterns are stable.
Part 3: llms.txt at the root
A markdown index of your highest-quality content with one-paragraph summaries. Place at /llms.txt. Format spec at llmstxt.org.
Template
# Pixy Puala — Independent WordPress engineer
> Lean WordPress builds for B2B services. Sub-1s LCP, WCAG 2.2 AA, no page builders.
## Services
- [Care Plan](/services/care-plan/): £400/mo WP retainer with real maintenance.
- [Sprint Catalogue](/services/sprint-catalogue/): Six fixed-scope sprints from £1.5k to £12k.
...
## Insights
- [The caching stack I use in 2026](/insights/the-caching-stack-i-use-in-2026/): Cloudflare + WP Rocket + Redis object cache.
- [Why I still use ACF](/insights/why-i-still-use-acf-and-what-would-change-my-mind/): ACF Free in the Gutenberg era.
...
Currently Anthropic’s Claude reads it, Perplexity reads it, ChatGPT reads it occasionally, Gemini doesn’t yet. The setup cost is 10 minutes; the marginal upside compounds as more assistants adopt it.
Part 4: refresh-date metadata, visibly
AI assistants weight freshness heavily for cost / regulation / pricing queries. Make the refresh date visible:
- In the rendered UI (“Updated Q2 2026” at the top of any post with time-sensitive numbers).
- In the JSON-LD
dateModifiedproperty. - In a
last-modifiedHTTP header on the response.
The triple-redundancy matters because different crawlers read different signals. A 2024 dated post that hasn’t been touched in 18 months will be cited less than a 2026-updated equivalent, even if the 2024 content is technically better.
What this is worth
I started measuring AI-referral traffic in Q3 2025. By Q1 2026 it was 18% of my site’s qualified inbound — visitors who’d been cited to my site by an AI assistant, arrived with high intent, and converted at 2.4× the rate of organic search traffic.
The setup took two afternoons. The maintenance is zero — once the templates are in place, every new post inherits the structure. If you’re publishing long-form B2B content and not doing this in 2026, you’re leaving a meaningful slice of qualified traffic on the table.