Modules
The thirteen modules, one switch each on the dashboard: what every module produces, where you see it, its options, and the filter that changes its output.
Updated 2026-10-08 · applies to Acid AEO 1.0.4
Acid AEO is thirteen modules, each with its own switch on the dashboard. Switch one off and its file, tag or header disappears. The filters named below are listed under Filters on the Developers page.
The thirteen switches
| Module | What it produces | Where it shows |
|---|---|---|
| AI crawler policy | AI crawler rules and Content-Signal | /robots.txt |
| llms.txt | A summary of the site for models | /llms.txt, /llms-full.txt |
| humans.txt | The people and tools behind the site | /humans.txt |
| ai.txt | The same crawler policy, as a file | /ai.txt |
| ai-context.json | The llms.txt facts, machine-readable | /ai-context.json |
| security.txt | An RFC 9116 security contact | /.well-known/security.txt |
| Schema (JSON-LD) | One @graph per page |
Page head |
| Head tags | Robots directives, link tags, Open Graph | Page head |
| HTTP headers | Link and Content-Signal |
Response headers |
| IndexNow | Change notices to search engines | /{key}.txt and an API call |
| AI citations | Counts of AI crawls and referrals | The AI Citations screen |
| Content tools | Blocks, summary box, "Updated on" line | Editor and posts |
| Static files | Physical copies of the generated files | Your web root |
AI crawler policy
Appends the AI crawler rules to the virtual robots.txt, after anything WordPress and other plugins already added. The rules come from the policy preset and per-crawler overrides (policy.preset, policy.bots), and the file carries a Content-Signal line built from policy.content_signal.*. A Sitemap: line is added only if none exists. Choose Citable, Search only, Open, Closed or Custom. This module has no filter of its own; ai.txt and the headers repeat the same policy.
llms.txt
Publishes /llms.txt, the site's own summary: who it is, where to start, what it offers and what it answers. With llms.full_enabled it also serves /llms-full.txt, which adds the Markdown of the pages the index points at (up to 200 documents). Options: llms.key_pages, llms.post_types, llms.posts_limit, llms.include_faq, llms.include_offerings. Filters: acid_aeo_llms_data changes the data before it is rendered; acid_aeo_llms_full_documents changes the 200-document limit.
humans.txt
Publishes /humans.txt: the team, thanks, components and software. Team members come from WordPress users and from the humans.team list. The line "Acid AEO by Acid Studios" is added only when general.agency_credit is on, and it is off by default. Filter: acid_aeo_humans_data.
ai.txt
Publishes /ai.txt, a mirror of the crawler policy for tooling that looks for that name. No standard defines it, so the file says it mirrors robots.txt. Both files are rendered from the same resolved policy, so they cannot disagree. Filter: acid_aeo_ai_txt_data.
ai-context.json
Publishes /ai-context.json: the same facts as llms.txt, written for a program to load. Its shape is described by the public schema at https://acidstudios.ro/schemas/ai-context/1.0.json. Filter: acid_aeo_ai_context_data.
security.txt
Publishes the RFC 9116 contact file at /.well-known/security.txt and at /security.txt, with the same body. Options: security.contact, security.policy_url, security.languages. The Expires date is renewed by a year when it comes within thirty days of expiring. Filter: acid_aeo_security_data.
Schema (JSON-LD)
Prints one application/ld+json script with a single @graph in the page head. The nodes are Organization or Person, WebSite, WebPage, BreadcrumbList, Article, the author Person, FAQPage, Speakable and ImageObject licensing, each with its own switch (schema.pieces.*). When an SEO plugin such as Yoast, Rank Math, SEOPress or All in One SEO is active and schema.defer_to_seo is on, the first five are left to that plugin and only the author Person and FAQPage are printed. Filters: acid_aeo_schema_context and acid_aeo_schema_graph.
Head tags
Three independent jobs: robots directives that allow full-length snippets (max-snippet:-1, max-image-preview:large), <link rel="alternate"> tags to the published files, and a basic Open Graph and Twitter card when no SEO plugin writes one (head.og_fallback). A page already marked noindex is left alone. A link is printed only for a file that exists.
HTTP headers
Adds two headers to front-end responses: Link, pointing at llms.txt, and Content-Signal, repeating the robots.txt line. The admin, AJAX, cron, REST, feeds and the plugin's own files are skipped.
IndexNow
Publishes a generated key at /{key}.txt, then queues the permalink of every published, updated, unpublished or trashed post of the chosen types and sends the queue in batches. indexnow.auto_submit turns the automatic part off; the wizard, a REST route and WP-CLI can send every URL once. The last 50 submissions are logged. Filter: acid_aeo_indexnow_endpoint changes the API address.
AI citations
Counts two things: visits by known AI crawlers, and humans arriving from an AI assistant. Each event stores the URL, the agent, the time and a salted, daily-rotating hash fragment of the IP, used only for rate limiting. No cookie is set. Events are kept for citations.retention_days (default 90). The optional citations.beacon counts referrals behind a page cache. See the Privacy page for the full account.
Content tools
Adds the TL;DR, FAQ and Key takeaways blocks, a per-post summary box, an editor readiness panel and the Markdown copy of a post. content.last_updated (off by default) adds an "Updated on" line when a post was revised more than one day after publishing; a post-level checkbox hides it. Filters: acid_aeo_last_updated_html and acid_aeo_last_updated_threshold.
Static files
Off by default. Writes llms.txt, llms-full.txt, humans.txt, ai.txt, ai-context.json and .well-known/security.txt to the web root, for hosts that answer those URLs from disk before WordPress runs. robots.txt is never written. A file the plugin did not sign is never overwritten or deleted. A physical file shadows the generated one, so keep them in sync. See the Hosting page.
Found a mistake or something missing? Write to [email protected].