=== AI-O Optimiser ===
Contributors: imexpertsem
Tags: seo, ai seo, ai visibility, llms.txt, analytics
Requires at least: 6.9
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.37.18
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

See which AI assistants reach your site, and whether a firewall or robots.txt is quietly turning them away. No account or API key needed.

== Description ==

AI-O Optimiser measures the AI activity that reaches your WordPress site, and tells you whether AI systems and search engines can actually get to it. Everything in the first list below runs on your own site and needs no account and no API key.

Works as soon as you activate it:

* AI crawler and assistant activity — which AI systems have fetched your pages, and when. GPTBot, ClaudeBot, PerplexityBot, CCBot, Bytespider, Applebot, Google-Extended, Amazonbot and others, separated into discovery crawling, live assistant fetches and AI referrals.
* Edge-block detection — whether a CDN, firewall or security service is quietly refusing AI systems. A site can look completely normal in a browser while this is happening, so nobody finds out.
* llms.txt and AI guidance files.
* System and environment checks.
* AI Deep Review Prompt — a ready-made prompt to paste into any AI chat for a review of your site. No API key involved.

Nothing above is capped, metered or time-limited, and nothing asks for an email address first.

= What is not in this edition =

Metadata, Schema and Business details (NAP) are workspaces in the paid edition, sold at https://ai-o.com.au/ai-o-optimiser/. They are **not included and not disabled** — that code is not in this plugin at all. Each of the three screens describes what its workspace does, so you can decide whether you want it:

* Metadata — scans every page's title and description, groups what is missing, duplicated, or too long or short to survive, and applies approved changes in bulk.
* Schema — reads the finished page the way Google does, shows which plugin causes each structured-data conflict, and fills real gaps without duplicating what is already correct.
* Business details (NAP) — keeps your name, address and phone consistent across your site, your Google Business Profile, and the directories that list you.

The plugin distinguishes discovery/index crawling, live assistant fetches, AI referrals, platform/search evidence and sampled visibility. Crawler counts are not presented as people, prompts, citations or confirmed AI traffic.

Every recommendation the plugin makes -- schema entity types, metadata, content opportunities, NAP corrections -- is advisory. Suggestions are drawn from evidence AI-O can see and are applied only when an administrator confirms them, because whether a suggestion fits a particular page is an editorial judgement. Search engines and AI systems decide independently what they crawl, index, rank and cite, so no outcome is guaranteed.

NAP follows the same evidence discipline. The administrator-confirmed business identity is canonical. Once the administrator explicitly selects and imports the correct Google Business Profile location, that provider-backed identity becomes the practical baseline for managing external listings; automated checks are supporting evidence and administrator review of visible Name, Address and Phone is the only confirmation path.

== Performance and privacy ==

Ordinary public requests use a deliberately small passive request-classification path. Provider, NAP-audit, Metadata workflow and admin code is excluded from normal visitor requests. Managed Schema runtime loads publicly only when managed fallbacks exist.

Exact enabled-v-disabled request and peak-memory impact remains part of the documented 2.0 performance validation programme, so AI-O does not claim zero or negligible overhead.

Detailed request rows are retained for a bounded period while compact daily aggregates support longer-term reporting. Large admin jobs use resumable/background processing where implemented.

IP addresses are stored as salted one-way hashes. Query strings/referrers are reduced according to privacy settings. Connector Hub OAuth credentials and Google refresh tokens remain on the central Connector Hub; customer sites receive bounded evidence/results.

== External services ==

This plugin can connect to external services to provide some of its features. No connection is made and no data leaves your site unless an administrator explicitly configures and enables the corresponding feature.

**AI-O Connector Hub** — a service AI-O operates at ai-o.com.au that centralises Google OAuth for Search Console, Google Analytics 4 (Data API) and Google Business Profile, so this plugin never stores your Google refresh tokens directly. When an administrator connects one from Settings or Dashboard → Traffic Impact, your site registers with the Hub (site URL and a generated connection identifier) and later exchanges signed requests for report data or listing details relayed from Google.
AI-O Terms of Service: https://ai-o.com.au/terms/
AI-O Privacy Policy: https://ai-o.com.au/privacy-policy/

**Google Analytics Measurement Protocol** — when GA4 event export is enabled in Settings, this plugin sends de-identified AI-crawler/referral event counts (no raw IP address, user agent or full referrer URL) to google-analytics.com using the administrator's own GA4 Measurement ID and API secret.
Google Privacy Policy: https://policies.google.com/privacy

**Crawler identity verification** — off by default. When an administrator enables "Verify bot identity" in Settings, this plugin fetches the IP-range lists that OpenAI, Anthropic and Perplexity publish for their own crawlers, from openai.com, www.anthropic.com and www.perplexity.com, on a schedule and caches them locally, so checking a visiting request is done against a stored list rather than a live call. The requests are plain GETs for public JSON files: no query parameters, and nothing about your site or its visitors is sent. Google and Apple publish no range list and document forward-confirmed reverse DNS instead, so for those the plugin resolves the requesting address and resolves the resulting hostname back again, which sends DNS queries from your server. Nothing here runs unless the setting is switched on.
OpenAI Privacy Policy: https://openai.com/policies/privacy-policy/
Anthropic Privacy Policy: https://www.anthropic.com/legal/privacy
Perplexity Privacy Policy: https://www.perplexity.ai/hub/legal/privacy

== Installation ==

1. Upload the `ai-o-optimiser-pro` folder to `/wp-content/plugins/`, or upload the installable Pro ZIP via Plugins → Add New → Upload Plugin.
2. Activate AI-O Optimiser Pro.
3. Open AI-O Optimiser → Settings and review tracking, retention and integration settings.
4. Use Dashboard → Metadata → Schema → Business details as required.

== Frequently Asked Questions ==

= Are the plugin's suggestions guaranteed to work? =

No, and the plugin does not present them that way. AI-O Optimiser reports the evidence it observes and suggests changes for you to review. Search engines and AI systems decide independently what they crawl, index, rank and cite, so no ranking, traffic, rich result or AI citation is guaranteed by anything here.

= Should I apply every schema suggestion? =

No. Suggested entity types are suggestions. Every one is checked against the bundled Schema.org registry before it is offered, but only you know what a given page or post actually is, so review each suggestion and apply it only where it genuinely describes that content. Nothing is written until you confirm it, and structured data does not guarantee rich results.

= Does crawler activity prove AI citations or human traffic? =

No. The plugin reports the evidence actually observed. Discovery crawling, live assistant fetches, referrals and platform visibility are separate signals.

= Does AI-O replace an SEO plugin? =

No. AI-O is designed to work alongside the site's existing SEO stack. It measures AI-related access and referrals, audits metadata and rendered structured data, and prefers native provider output where Rank Math, Yoast, WooCommerce or another authoritative provider is already doing the job correctly.

= Is Google Business Profile the NAP source of truth? =

For external-listing management, the explicitly selected Google Business Profile location is the practical baseline. Its provider-owned facts are imported into the durable NAP business identity. AI-O Optimiser never silently promotes an unreviewed Google search result into that role, and administrator-supplied supplemental facts can remain where Google does not provide the field.

= Does NAP consistency guarantee local rankings? =

No. Name, address and phone consistency improves entity clarity and helps identify genuine conflicts, but it does not guarantee rankings, traffic or AI inclusion.

= Can the plugin be removed without deleting its data? =

Yes. Permanent data deletion is opt-in in Settings. When enabled, uninstall removes the plugin-owned tables/options registered by the current product; deactivation stops scheduled runtime work without deleting durable customer data.

== Changelog ==

= 1.37.18 =

= 1.37.17 =
* Advisory disclaimers: every screen that proposes a change now says what that proposal is. Schema entity types, audit fixes, generated metadata, content opportunities and NAP findings each carry a note stating that the suggestion is yours to accept or reject -- only you know what a given page or post actually is -- and that applying it guarantees no ranking, rich result, traffic or AI citation. The wording lives in one place so it is written once and reads the same everywhere.
* Advisory disclaimers: a standing line on every AI-O Optimiser screen records that the plugin reports observed evidence and suggests changes, and that search engines and AI systems decide independently what they crawl, index, rank and cite. Screens that only report evidence previously carried no such statement at all.
* readme.txt answers both questions directly: whether suggestions are guaranteed to work, and whether every schema suggestion should be applied.

= 1.37.16 =
* Site onboarding: the nine operating-model cards under Settings → Site Setup no longer spill their text past their own borders. The cards sit in a fieldset, and a fieldset carries a browser-level minimum width of its content, so it refused to narrow to the panel; the grid ran off the right edge and the panel, which clips, cut it off mid-card. The fieldset can shrink now, so the grid is sized by the panel it sits in.
* Site onboarding: the cards are laid out five then four rather than as many narrow columns as the screen allows. The old track added a column every time the window grew, so a wide screen got seven cards barely wider than the icon inside them, with two stranded underneath. Fixed counts step 5, 3, 2, 1 down the breakpoints and every card holds its label on one line.

= 1.37.15 =
* Schema: fixed the Warnings scorecard filter opening an empty table even when warning rows exist. Selecting any scorecard/status filter now inspects the full report instead of having non-actionable rows silently removed first.

= 1.37.14 =
* Free upgrade screens now use the website-quality sales hierarchy: benefit-led headlines, workflow steps, icon-led proof points, larger representative Metadata/Schema screenshots, and a secondary Pro product link.
* Business details/NAP keeps its diagram until the current Business Identity redesign is approved.
* No Pro-only engine code is added to the WordPress.org Free carve.

= 1.37.13 =
* Free: shows real, lightweight Metadata and Schema product screenshots on the Pro upgrade workspaces; Local keeps the existing diagram until its redesign is approved.
* No Pro-only engine code is added to the WordPress.org build.

= 1.37.12 =
* WordPress.org public-release consolidation: carries the shared Dashboard hierarchy, notification bell, Microsoft AI visibility import and client-safe evidence wording from the live-reviewed 1.37.7–1.37.11 line into the first public Free release source.
* Adds the real plugin product URI now that the dedicated AI-O Optimiser product page exists; it remains distinct from the author URI as required by WordPress.org.

= 1.37.11 =
* Metadata: the Ready to review workload summary is now an obvious keyboard-focusable action card that opens the ready metadata review queue, while the existing Review ready metadata button remains as a fallback/action duplicate.
* The enhancement is admin-only and adds no public-request runtime work.

= 1.37.10 =
* Schema audit: adds **Ignore selected rows** to the Batch action menu so multiple checked rows can be excluded from future schema reviews and broad schema bulk rules in one operation.
* Bulk ignore uses the existing persisted Schema scope, preserves the rule that Home cannot be ignored, and reports how many selected rows were ignored or skipped.

= 1.37.9 =
* Microsoft AI visibility: adds an administrator-only import for official Microsoft AI Performance / Clarity CSV exports, including Overview metrics, grounding queries and cited pages.
* Microsoft citation evidence remains separate from crawler and referral counts, uses explicit period/import provenance, and is described as platform citation visibility rather than prompts, rankings, people or confirmed traffic.
* The importer is bounded to 2 MB / 5,000 rows, retains up to 100 query/page items per dataset, stores its snapshot as non-autoloaded data and adds no ordinary frontend remote work.

= 1.37.8 =
* Dashboard: measured summary cards now appear first beneath the Dashboard heading, before empty-state explanations, methodology and filter/configuration controls.
* Dashboard: Overview becomes the default first jump destination, with Top AI Brands immediately following the measured summary.
* Notification bell behavior from 1.37.7 is retained unchanged.

= 1.37.7 =
* Dashboard: server-rendered routine notices nested at the workspace root now move into the top-right notice bell instead of displacing Top AI Brands; blocking error notices still remain inline.
* Dashboard: the shared navigation shell and Top AI Brands section now use the same content gutter and full-width alignment as the workspace beneath them.

= 1.37.6 =
* WordPress.org discovery metadata now uses five generic categories that match the Free edition: SEO, AI SEO, AI visibility, llms.txt and analytics. Competitor plugin names are not used as directory tags.
* Visibility Dashboard section links keep the selected state in sync with the URL hash and leave enough space for the complete sticky admin navigation when jumping to a section.
* Admin presentation stays on the established flat component layer; an unreleased rounded/shadowed workspace override that conflicted with the final design layer is not carried into this release.

= 1.37.4 =

= 1.37.3 =
* Fixed a Free-edition PHP warning on ordinary public page loads.

= 1.37.0 =
* Added the grouped left-hand product navigation and shared outstanding-work counts.

= 1.35.0 =
* Schema checks now detect minified JSON-LD with unquoted type attributes, including common output from Rank Math or Yoast sites behind HTML minification.

= 1.28.0 =
* Settings navigation became server-rendered URL sections rather than a JavaScript-dependent tab shell.

= 1.27.0 =
* Activation now stands this plugin down when another AI-O Optimiser generation is active instead of deactivating another plugin.
* Admin assets moved out of inline markup and through WordPress enqueue APIs.

= 1.26.0 =
* Directory review moved remaining admin style/script fragments through WordPress asset APIs and completed translation/source-review fixes.

= 1.22.7 =
* Free edition: Metadata, Schema and Business details (NAP) are removed from the WordPress.org build rather than shipped as disabled trialware. Their menu destinations explain the paid workspaces without including the engines themselves.

= 1.22.0 =
* Editions: AI-O Optimiser is also available as a paid edition, which adds product updates and support and installs under its own folder. Both editions read the same tables and options, so moving between them keeps every measurement already collected -- no export and no re-setup -- and only one of the two ever runs at a time.
* Editions: deleting one AI-O Optimiser edition no longer cleans up after another edition that is still installed.

Full historical release records are maintained in the project GitHub repository.