| 开发者 | ajmaurya |
|---|---|
| 更新时间 | 2026年7月13日 03:38 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPL-2.0-or-later |
| 版权网址: | 版权信息 |
llms.txt that AI agents like ChatGPT, Claude, and Perplexity read.
It makes your site legible to AI agents — and, since 2.0, proves it. The built-in readiness scanner runs 21 checks against your live site, grades you on the Level 0–5 agent-readiness ladder (Not Ready → Basic Web Presence → Bot-Aware → Agent-Readable → Agent-Integrated → Agent-Native), and shows the full evidence trail — every request and response — behind every verdict. Failing checks get a Fix now button that enables the right feature and re-scans that single check to prove it went green; anything the plugin can't fix in WordPress (DNS records, server config) gets a copy-paste prompt for your coding agent.
This is the technical, agent-readiness layer of answer engine optimization (AEO) and generative engine optimization (GEO): it improves your AI visibility by making your content legible to AI agents through llms.txt, JSON-LD, Markdown negotiation, and AI crawler rules. It is not a content SEO plugin — it doesn't write titles or meta descriptions, and it doesn't track brand mentions or AI citations. It prepares your WordPress site so AI search engines and agents can read, trust, and route on it, then verifies that over real HTTP.
The scan → fix → verify loop (new in 2.0)
/.well-known/*, and static-file rules 404 /llms.txt. When a feature is enabled and the server blocks it, the Dashboard says so and hands you copy-paste nginx and Apache fixes.POST /wp-json/ajaco/v1/scan, POST /wp-json/ajaco/v1/scan/check, POST /wp-json/ajaco/v1/fix, POST /wp-json/ajaco/v1/llms/preview, and a public GET /wp-json/ajaco/v1/health.wp agent-ready scan --format=summary|json|agent, wp agent-ready fix <check>|--all-safe, wp agent-ready status for agency fleets and AI agents operating over SSH.llms.txt from fixed rules and hand you the result. This one hands you the controls.
/llms.txt will serve, with entry, byte and token counts, before you save./llms-full.txt serves the full content of the same curated entries. Password-protected content is always excluded from both./.well-known/api-catalog linkset advertising your REST API, plus a Link: rel="api-catalog" header on every response so agents discover it from any URL./.well-known/mcp/server-card.json describing the site to MCP-aware agents./.well-known/agent-skills/index.json listing six skills (content-query, posts-read, pages-read, media-library, categories, tags) plus per-skill SKILL.md artifacts with verifiable sha256 digests./llms.txt is a curated LLM-readable index: you write the intro, choose which post types appear (custom post types and WooCommerce products included), set each section's heading, count and order, and add your own Markdown block. /llms-full.txt serves the full content of those same entries as Markdown. Password-protected content is always excluded.Accept: text/markdown, the page is served as clean Markdown with X-Markdown-Tokens for context budgeting. Browsers (which send text/html) are completely unaffected./openapi.json (and legacy /?format=openapi) returns a complete spec generated dynamically from rest_get_server(), including plugin-registered REST routes.navigator.modelContext.provideContext() for browsers that support the W3C WebMCP draft.Content-Signal: ai-train=no, search=yes, ai-input=no directive to robots.txt (inside an explicit User-agent: * group) declaring your AI-usage preferences per contentsignals.org. Composes with Yoast/Rank Math/AIOSEO — their additions are preserved, our directive lands last./auth.md honestly documenting how agents authenticate to your REST API via Application Passwords: how a human creates one, Basic-auth usage, scope, and revocation. No fictional OAuth endpoints.llms.txt plugins only generate a file from fixed rules. AJ Agent Crawl Optimizer also scans your live site over real HTTP, scores it on the Level 0–5 ladder, shows the request/response evidence behind every verdict, and fixes failures in one click — then re-scans to prove the check turned green. It writes per-bot robots.txt rules for 15 AI crawlers and lets you hand-curate what AI agents read instead of auto-dumping every post. Scan → score → fix → verify, not generate-and-hope.
Why use it
/{subsite}/... paths automatically.PHP_INT_MAX priority so it doesn't break object-cache flushes or Query Monitor. IndexNow pings are non-blocking.aria-label, copy buttons announce success via aria-live, and decorative icons are hidden from screen readers.add_filter( 'ajaco_required_capability', function () { return 'edit_posts'; } );
Delegate plugin access to a non-admin role.
add_filter( 'ajaco_skill_definitions', function ( $skills ) { return $skills + [ 'products' => [ 'type' => 'information-retrieval', 'description' => 'WooCommerce products', 'endpoint' => rest_url( 'wc/v3/products' ) ] ]; } );
Register custom skills that ship in the Agent Skills Index and are served as SKILL.md artifacts with verifiable sha256 digests.
add_filter( 'ajaco_content_signal', function () { return 'ai-train=yes, search=yes, ai-input=yes'; } );
Customize the Content-Signal directive (e.g. permit AI training).
Other hooks: ajaco_api_catalog_linkset, ajaco_mcp_server_card, ajaco_json_ld_graph, ajaco_openapi_spec, ajaco_llms_txt_content, ajaco_llms_full_txt_content, ajaco_llms_post_types, ajaco_llms_exclude_post, ajaco_auth_md_content, ajaco_ai_bot_list, ajaco_ai_bot_policy, ajaco_commerce_signals, ajaco_scan_sslverify, ajaco_active_seo_plugin. The Help tab (top right of the settings screen) lists all of them with descriptions.
Per-post curation is stored in two post meta fields you can read or set programmatically: _ajaco_llms_exclude (boolean) and _ajaco_llms_summary (string, 300 chars). Both are registered with show_in_rest, so they round-trip through the REST API and WP-CLI (wp post meta update 42 _ajaco_llms_summary "...").
aj-agent-crawl-optimizer folder to /wp-content/plugins/./{key}.txt for ownership verification automatically.Run the built-in readiness scanner. AJ Agent Crawl Optimizer checks your live site against 21 AI-agent-readiness checks — the same set as Cloudflare's isitagentready.com — and grades you on a Level 0–5 ladder from Not Ready to Agent-Native. Every verdict shows the real request and response behind it, and failing checks get a one-click Fix now button that re-scans to prove it passed.
llms.txt is a plain-Markdown file at /llms.txt that gives AI agents a curated index of your most important content, proposed at llmstxt.org. AJ Agent Crawl Optimizer lets you hand-curate it: write the intro, pick which post types (and WooCommerce products) appear, and set a per-post "Summary for AI agents" that overrides the excerpt. It is a surface AI agents can route on — not a guaranteed path to AI citations, but a machine-readable map of what your site is for.
The plugin writes explicit robots.txt rules for the 15 AI crawlers readiness scanners check — GPTBot and ChatGPT-User (OpenAI), Claude-Web (Anthropic), PerplexityBot, Google-Extended, CCBot and Bytespider among them — each allowed or blocked per a per-bot policy. Presets like "Allow search & user requests, block training" make it a single choice. Remember: to be cited by an AI engine you must allow its crawler.
There is no guaranteed path, but three things help and this plugin does all three: allow the AI search crawlers (OAI-SearchBot, PerplexityBot, Google-Extended), publish the machine-readable surfaces agents look for (llms.txt, JSON-LD, Markdown negotiation), and write a clear "Summary for AI agents" on key pages. The readiness scanner then verifies each of these is actually live over real HTTP — so you fix what's broken instead of guessing.
/llms.txt is a curated index — a Markdown list of your key pages with links and short summaries, so an agent can decide what to fetch. /llms-full.txt serves the full Markdown content of those same curated entries in one file, for agents that want everything inline. The plugin serves both, and password-protected content is always excluded from each.
Most plugins only generate an llms.txt file from fixed rules. AJ Agent Crawl Optimizer is an agent-readiness scanner and fixer: it audits your live site over real HTTP against 21 checks, scores a Level 0–5 ladder, shows the request/response evidence behind every verdict, fixes failures in one click, and re-verifies. It covers the answer engine optimization (AEO) and generative engine optimization (GEO) groundwork — structured data, AI crawler rules, and MCP discovery — that plain generators and content-writing SEO plugins skip.
Yes. WooCommerce products are detected automatically and can appear as their own section in your curated llms.txt, so AI agents can see your catalogue. You control whether products appear, how many, and in what order, and you can exclude individual products or give any product a per-product "Summary for AI agents."
Dashboard is the verifier: it scans your live site over real HTTP, shows your Level 0–5 with evidence for every check, and fixes failures with one click. Settings is the switchboard: the per-feature toggles, wizard, and testing tools. A toggle can be ON in Settings while the Dashboard still shows a fail — that gap usually means a page cache or server rule is intercepting the endpoint, and the evidence view shows exactly what happened.
The scanner runs the same 21 checks (and the same Level 0–5 ladder) as Cloudflare's isitagentready.com: Level 1 needs 2 of robots.txt/sitemap/Link headers; Level 2 adds AI bot rules and Content Signals; Level 3 adds Markdown negotiation; Level 4 adds one of MCP card/Agent Skills/API catalog/A2A card; Level 5 adds two of Web Bot Auth, all four integrations, and auth metadata. Nothing counts unless the scan verifies it — enabling a toggle earns nothing until the endpoint actually responds. Commerce checks are informational and never scored.
The plugin never creates files: every endpoint (/.well-known/, /llms.txt, /openapi.json, /auth.md) is served virtually by WordPress, so hosts that forbid file creation are fully supported. What can break things is the web server intercepting requests before WordPress runs — typically an nginx dot-path deny rule returning 403 on /.well-known/, or a static-file rule returning 404 for /llms.txt-style paths. The readiness scan detects exactly this (feature enabled + server blocking) and the Dashboard shows a hosting notice with copy-paste nginx and Apache fixes you can apply yourself or forward to your hosting support.
Yes — it is curated, not auto-generated from fixed rules. Under Agent Ready → llms.txt you write the intro, pick which post types appear (custom post types and WooCommerce products show up automatically), and set each section's heading, item count and order, plus your own Markdown block. A live preview shows the file as you edit, before you save.
Individual entries are steered from the editor: the "Agent Ready (llms.txt)" panel has an Include in llms.txt toggle (excluded pages stay out of both /llms.txt and /llms-full.txt) and a Summary for AI agents field that overrides the excerpt for that entry — write it for a model deciding whether to fetch the page. The defaults keep the same sections and ordering as before, so upgrading needs no attention until you decide to curate.
Yes: wp agent-ready scan (add --format=json for machines or --format=agent for a markdown fix report), wp agent-ready fix <check> or --all-safe, and wp agent-ready status. The same operations are available over REST at /wp-json/ajaco/v1/scan and /wp-json/ajaco/v1/fix (admin capability required; /wp-json/ajaco/v1/health is public).
No. JSON-LD output auto-suppresses when Yoast SEO, Rank Math, All in One SEO, SEOPress, The SEO Framework, Slim SEO, Squirrly SEO, Schema Pro, or SASWP is active. The settings page shows a clear notice when this happens. Our robots_txt filter runs at PHP_INT_MAX priority, so any rules your SEO plugin adds (sitemap URLs, custom Disallow, etc.) are preserved — our Content-Signal line is appended last.
No. Browsers send Accept: text/html and get the normal HTML response. The .well-known/..., /llms.txt, and ?format=openapi endpoints are paths a normal user never visits. The only thing added to the page HTML is a single JSON-LD <script> block (when no SEO plugin is active) and a small WebMCP script tag (which no-ops in browsers without the experimental flag).
Yes. Every endpoint resolves at both the root and per-subsite paths automatically — /llms.txt, /blog/llms.txt, /.well-known/api-catalog, /blog/.well-known/api-catalog, etc. Each subsite has its own settings.
Use the ajaco_required_capability filter. The plugin defaults to manage_options (admin-only); change it to any capability of your choice, e.g. edit_pages for editors:
add_filter( 'ajaco_required_capability', function () { return 'edit_pages'; } );
Check three things: (1) the IndexNow API Key field is filled in, (2) you're publishing a post of a public post type — revisions and autosaves are skipped, (3) you're on production. Pings are non-blocking, so failures are silent. Tail your server log for outbound requests to api.indexnow.org.
Yes. Use the relevant filter:
ajaco_skill_definitions — register custom Agent Skills.ajaco_json_ld_graph — add custom Schema.org entries (Product, Recipe, Event, etc.).ajaco_llms_txt_content — append sections to or replace the llms.txt body.ajaco_openapi_spec — add securitySchemes, custom tags, additional servers.ajaco_api_catalog_linkset — add anchors or rels (e.g. for a GraphQL endpoint).ajaco_mcp_server_card — override transport / capabilities for a real MCP implementation.Use the Reset to Defaults button under the Save Changes button on the settings page. It clears every plugin option, wipes cached endpoint outputs, and shows a confirmation dialog before wiping anything.
Minimal. The OpenAPI document is cached for a day in a transient and only regenerates on plugin activation/deactivation or theme switch. The llms.txt body is cached for an hour and invalidates on post edits, site name/description changes, and setting toggles. Endpoint handlers run on init only when the request path matches; on every other request they early-return after one regex check. The Markdown handler runs at PHP_INT_MAX priority on shutdown so it never breaks object-cache writes or other shutdown hooks.
The plugin doesn't include a built-in access log. To verify activity, check your server access log for User-Agents like GPTBot, ClaudeBot, OAI-SearchBot, Google-Extended, PerplexityBot, CCBot, Bytespider, etc. hitting any of the plugin endpoints.
Yes. Every feature is an independent toggle. Uncheck what you don't want and Save Changes. The corresponding behavior reverts immediately on the next request — no rewrite flush, no cache flush needed (the plugin handles cache invalidation itself).
ajaco/v1 — POST/GET /scan, POST /scan/check, POST /fix, and a public GET /health (also the API catalog's RFC 9727 status target).wp agent-ready scan|status|fix [--all-safe] with summary, json, and agent (markdown fix report) formats._ajaco_llms_exclude / _ajaco_llms_summary post meta (REST-exposed, so WP-CLI and the REST API can set them).type: skill-md and a digest field with sha256: prefix (previously type: information-retrieval and a sha256 key, which external scanners rejected); $schema corrected to the published schema URI.endpoint (SEP-1649 structure) with type streamable-http; protocolVersion bumped to 2025-06-18.Vary: Accept on all frontend responses so page caches and CDNs key correctly on the Accept header; buffer unwind at shutdown is now bounded (no hang on non-removable output buffers); str_contains() replaced for WP < 5.9 compatibility./openapi.json path (query-var form kept as an alias).service-desc only advertised when the OpenAPI feature is enabled (no more dead link), and its media type now matches what the endpoint serves.User-agent: * group so its scope is deterministic under RFC 9309 group semantics.Tom's Blog & Café instead of Tom's Blog & Café.