| 开发者 | mmtushar |
|---|---|
| 更新时间 | 2026年10月17日 00:35 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
llms.txt index at your site root, a /llms-full.txt full-text endpoint, and per-bot crawl directives in robots.txt.post_content and stop. If your pages are built in Elementor or Divi, or your copy lives in ACF fields, that means your schema and your scores are computed against an almost-empty string.
AEOmatic runs one normalising extraction pass that understands Gutenberg, the Classic Editor, Elementor, Divi, Beaver Builder, Bricks, Oxygen and WPBakery, plus ACF text, textarea, wysiwyg, repeater and flexible-content fields. Everything downstream — schema generation, the audit, readiness scoring, llms.txt — reads that single extraction, so a page assembled in a builder is scored on what it actually renders.
Built to sit beside your SEO plugin, not replace it
AEOmatic writes only its own settings and its own post meta. It never touches your titles, meta descriptions, canonicals or XML sitemaps, and it never modifies another plugin's configuration.
It detects Yoast SEO, Rank Math, All in One SEO, SEOPress and The SEO Framework, can import your organisation details from whichever you run, and flags the case where two plugins would emit the same JSON-LD type on one page — with a one-click fix that adjusts AEOmatic's output, never theirs.
Check what AI crawlers actually get
Settings pages tell you what you asked for. AI Access tells you what happens:
/llms.txt generator — a spec-compliant Markdown index at your site root: site summary, curated key pages from your nav menu, then every published item grouped by post type./llms-full.txt endpoint — the extracted body text of your published content at one URL, so an AI crawler can ingest the site in a single request. Bounded and cached so it cannot become a load problem.robots.txt for 18 AI crawlers: GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User, Google-Extended, CCBot, Bytespider, Amazonbot, Applebot-Extended, meta-externalagent, Meta-ExternalFetcher, DeepSeekBot, Cohere-AI, DuckAssistBot. Twenty user agents recognised in the visit log.<details>/<summary> markup, written for featured snippets. The visible Q&A carries lightweight schema.org FAQPage microdata; no FAQPage JSON-LD is added. [aeo_faq] / [aeo_qa] shortcodes for the Classic Editor.X-AI-Crawl, X-AI-Citeable, X-Content-License, X-AI-Content-Type, X-AI-Speakable headers plus a Link: rel="ai-context" pointer to your llms.txt. These are proposed conventions, not a ratified standard, and no AI vendor has committed to reading them. They are on by default and can be switched off under AEOmatic → Settings → AI discovery headers. X-Content-License (free-to-cite-with-attribution) and X-AI-Content-Type (human-authored) state a licence and an authorship claim for your content, so they are off unless you turn them on in the same section.aeomatic folder to /wp-content/plugins/, or use Plugins → Add New → Upload Plugin./llms.txt and /llms-full.txt endpoints and flushes rewrite rules for you./llms.txt returns a 404, confirm Settings → Permalinks is not set to "Plain", then click Save Changes there once.No plugin can promise that, and AEOmatic does not. What it does is fix the technical and content signals you control: crawler access, parseable structured data, an llms.txt index, and content shaped so an answer can be extracted. Whether an AI engine then cites you depends on that engine's own ranking and retrieval, which nobody outside those companies controls. Any plugin promising guaranteed AI citations is guessing.
Mostly not, and be careful with anyone who says otherwise. Google says AI Overviews and AI Mode use the same crawling and indexing as normal search, with no special AI markup required. What is different is practical: CDNs and firewalls often block AI crawlers while letting Googlebot through, most AI crawlers do not run JavaScript, and AI answers are lifted from pages that state the answer plainly. AEOmatic focuses on those differences.
It is not a ranking factor. Google does not use it, and public crawl data shows AI crawlers rarely request it so far. Some AI tools can use it when they are pointed at a site. AEOmatic generates and updates it automatically, so it costs you nothing to have, and you can switch it off under AEOmatic → Settings.
They handle classic SEO, and AEOmatic does not replace them. It adds checks they are not built around: whether AI crawlers really get through your CDN or firewall, what a crawler that does not run JavaScript reads, which AI bots visit and what status they get, and how easily an answer can be quoted from each post.
Yes. Everything described on this page is in this plugin, with no account, no API key and no usage limits.
AI readiness is how well-prepared your site is — measurable from your own database and settings, which is what AEOmatic scores. AI visibility is whether AI systems actually surface or cite you — measurable only by querying those engines from outside your site, which AEOmatic does not do. The dashboard is labelled "AI Readiness" for that reason.
The check sends requests from your own server using each crawler's name. Some firewalls also verify a crawler's IP address, so they block this test while letting the real crawler in. When the AI crawler log shows successful real visits from that crawler, the check says so and marks it for review instead of blocked.
No. Every request goes to your own site. The test requests are tagged so the AI crawler log does not record them as real visits.
No. It tells you a crawler requested a URL and what status you served. Whether that page was retained, used, or quoted in an AI answer is not visible in crawler traffic, and no AI vendor exposes it there. Treat crawler visits as access evidence, not citation evidence.
It is designed to run beside them. AEOmatic writes only its own settings and its own post meta and never modifies another plugin's configuration. Because several SEO plugins also emit Article, Organization and Breadcrumb schema, AEOmatic detects that overlap and offers a one-click fix that disables only the overlapping types in AEOmatic. The detector checks whether the other plugin's schema module is actually switched on, so it does not nag you about a conflict that is not happening. Until you resolve a real overlap, both plugins emit their types and the site readiness score reports it as a failing technical check.
Yes — organisation name, logo and social profiles from Yoast SEO, Rank Math, SEOPress, All in One SEO or The SEO Framework. Import is per-plugin, opt-in, one-directional, and never overwrites a value you have already set in AEOmatic.
A single URL returning the extracted body text of your published content, so an AI crawler can ingest the site in one request instead of following dozens of links. It is capped at 200 items per post type by default and says so in its own output when it truncates; raise or remove the cap with the aeomatic_llms_full_max_items filter.
Check that Settings → Permalinks is not set to "Plain" — the endpoints need a rewrite rule, which plain permalinks do not support. Then click Save Changes on that screen once. Also confirm llms.txt is enabled under AEOmatic → Settings.
Content extraction does. AEOmatic reads content from Gutenberg, Classic Editor, Elementor, Divi, Beaver Builder, Bricks, Oxygen and WPBakery, plus ACF fields, so schema and scoring reflect what your pages actually render. It does not add builder-native widgets.
Schema is generated server-side and cached in post meta. /llms.txt and /llms-full.txt are cached for an hour and flushed when content changes. The crawler log writes only when a recognised AI bot requests a page, and defers its single database write to the end of that request. There are no external requests and no third-party assets on public pages. Admin CSS and JS load only on AEOmatic screens.
Twenty-one page-level types (Article, BlogPosting, NewsArticle, TechArticle, Recipe, Review, Product, SoftwareApplication, Service, LocalBusiness, Event, JobPosting, Course, Dataset, Book, Movie, WebPage, AboutPage, ContactPage, CollectionPage, ProfilePage) plus Organization, WebSite, WebPage, Author/Person, Breadcrumb, VideoObject and Speakable. FAQPage and HowTo JSON-LD and the sitelinks search box are not emitted: Google no longer shows them. The FAQ block keeps FAQPage microdata on its visible questions and answers.
Yes. Product schema with price, availability, SKU, brand and ratings; variable products get AggregateOffer with a min/max price range.
Open AEOmatic → What did we do? for the live verification panel. It fetches your own URLs and shows what is being served, with a direct link to Google's Rich Results Test for your latest post.
No. No external API calls on the front end, no telemetry, no analytics, no account. The only server-side HTTP requests are the verification panel fetching your own site, for administrators only.
It is a rubric, and it is honest about which parts are heuristic. The Technical and AI crawler access categories are direct checks — a setting is either on or off. Content readiness is explicitly labelled a heuristic: it uses pattern matching to estimate how answer-shaped your content is. Category scores are combined with an unweighted mean, because no public evidence supports specific relative weights and inventing some would be false precision.
Deleting the plugin removes every option, transient, scheduled task and post-meta key it created. Deactivating alone leaves your settings intact so reactivating does not lose your configuration.
/guide/), treats www. and letter case as the same site, counts each page once, and ignores links to the post itself, in-page anchors, admin pages and uploaded files. The hint now shows how many pages were found.X-Content-License: free-to-cite-with-attribution and X-AI-Content-Type: human-authored are no longer sent unless you turn on Settings → AI discovery headers → Licence and authorship headers. They state a licence and an authorship claim for your content, so the site owner should choose them. The other discovery headers are unchanged.aeomatic_schema_overrides filter.& written as &, every < as <, every / as /, and every accented or non-Latin character as an escape sequence. It was valid and search engines accepted it, but it looked broken in page source and in validators — and on non-English sites a headline became nothing but escape codes. Output is now pretty-printed with slashes and Unicode intact. Nothing about which schema is generated has changed, only how it is written.rich-snippet is present in the rank_math_modules option; Yoast conflicts short-circuit to empty when its Schema Framework master switch (wpseo.enable_schema) is off, otherwise they are gated per-key on wpseo_titles — breadcrumb needs breadcrumbs-enable, article/author need at least one real schema-article-type-* value, and organization needs company_or_person set alongside at least one real schema-page-type-* value. Also adds a new aeomatic_seo_conflicts_detected filter so sites with unusual overrides can drop or adjust entries programmatically.wpseo_titles keys, rank_math_modules value, and computed conflict decision the detector used. Makes it possible to see at a glance which Yoast setting is still emitting schema without hand-inspecting the database. Warning banner also now includes the exact Yoast menu path required to actually disable Yoast schema (Search Appearance → Content Types → set Default Page type and Default Article type to None, plus disable breadcrumbs and clear "Company or person"), since Yoast has no single "disable schema" toggle.post and page checkboxes by flushing the AEOMATIC_Post_Types in-memory map after a save, but CPTs from other plugins (WooCommerce, CPT UI, JetEngine, ACF, Pods, etc.) could still revert to unchecked after saving. Root cause was in AEOMATIC_Settings::sanitise() — it iterated only the raw get_post_types( public=>true ) list at admin_init time, and any CPT that either (a) was filtered into the plugin's own supported-post-types list via aeomatic_supported_post_types_list but not registered as public=>true in core, or (b) registered on a hook that fires after admin_init, was silently dropped from the saved payload. The sanitiser now builds its slug list from three sources: the same filtered list the settings view renders, the raw public post types, and every slug submitted in $_POST — so no checkbox the user actually saw can be lost.AEOMATIC_Settings::save() now also busts the WordPress options cache and repopulates its own request-level cache with the freshly-written array. Guards against persistent object caches (Redis, Memcached) returning the pre-save value on the remainder of the same request, and against any downstream reader seeing an intermediate null-cache state between update_option() and the next all() call.AEOMATIC_Post_Types in-memory map is populated on init (before the admin_init save handler runs) and was not being invalidated after a save, so the settings view re-rendered from a stale map and boxes appeared unchecked even though the DB was correct. AEOMATIC_Settings::save() now flushes the Post_Types cache immediately after update_option().AEOMATIC_Content_Extractor::extract_text() method and silently falling back to wp_strip_all_tags( $post->post_content ) — so every text signal (keyword patterns, founding-date, NAP pattern) and every heading-based signal missed ACF fields, Elementor, Divi, Beaver, Bricks, Oxygen, and WPBakery content entirely. The collector now calls the real AEOMATIC_Content_Extractor::extract() API which merges all supported sources. ACF wysiwyg headings are now detected too.organization settings section, so organization_setting('name') and organization_setting('logo') always returned empty strings — the Organization detector permanently reported "Organisation name is not set" and "Organisation logo not configured" even when both were filled in. It now reads from the correct schema.org_name / schema.org_logo / schema.org_sameas keys.wp:aeomatic/faq block markers; it now also credits FAQs surfaced by the content extractor (ACF FAQ repeaters, Elementor / Divi / WPBakery accordions, shortcode Q&As, universal HTML detection).aeomatic_schema_overrides filter. Signals themselves are unchanged; only the recommendation strings adapt.question and another whose name contains answer qualifies, so common variants like faq_question / faq_answer / question_text / answer_text all work.GET /aeomatic/v1/entity-scan/{id}. Fingerprint-cached in post meta. Filter hook aeomatic_entity_detectors for custom detectors. Ships one reusable signal-collector service consumed by all six detectors — no code duplication with existing extraction.?post={id}. "Recompute (skip cache)" button forces a fresh analysis.GET /aeomatic/v1/ai-readiness/{id}?force=false — returns { overall_score, categories[], fingerprint, cached }. Same auth model as /audit/{id} (edit_post capability check)._aeomatic_ai_readiness (payload) + _aeomatic_ai_readiness_fingerprint (invalidation key) + _aeomatic_ai_readiness_score (overall score, exposed via REST). Cache auto-invalidates on save_post.aeomatic_ai_readiness_analyzers so third-party code can add or replace categories without patching core.AEOMATIC_Content_Extractor, AEOMATIC_Schema_Analyzer, AEOMATIC_Schema_Generator, AEOMATIC_LLMs_Txt, AEOMATIC_Post_Types, and AEOMATIC_Settings.DuckAssistBot (DuckDuckGo AI) and Meta-ExternalFetcher (Meta's per-user fetcher, distinct from the training UA meta-externalagent). Both added to detection and to the default allow-list. Total recognised: 20 AI user agents.AEOMATIC_Audit::site_summary() and AEOMATIC_Citation_Gaps::site_summary() as reusable public entry points so the dashboard widget, bulk-action notice, and REST endpoints all share one code path./llms.txt.aeomatic_citation_gap_results so power users can register their own rules.Claude-User (Anthropic's user-triggered live-fetch UA, equivalent to ChatGPT-User) to the default allow-list and audit detection. Removed deprecated Claude-Web and anthropic-ai from the default allow-list for new installs; they remain recognised by the visit log for backward compatibility. Source: Anthropic crawler documentation.## Pages section in llms.txt — lists every published page (parent and child), ordered by menu_order then title./llms-full.txt virtual endpoint — emits the full markdown body of every included page and post, designed for direct LLM ingestion. Advertised from llms.txt via a Full content: line.llms_full_serves records hits to the new endpoint./llms-full.txt rewrite rule.