{"id":319870,"date":"2026-07-30T00:20:48","date_gmt":"2026-07-30T00:20:48","guid":{"rendered":"https:\/\/en-au.wordpress.org\/plugins\/lens-ai-visibility-monitor\/"},"modified":"2026-08-27T02:15:28","modified_gmt":"2026-08-27T02:15:28","slug":"lens-ai-visibility-monitor","status":"publish","type":"plugin","link":"https:\/\/th.wordpress.org\/plugins\/lens-ai-visibility-monitor\/","author":23474642,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.6.0","stable_tag":"1.6.0","tested":"7.1.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Lens - AI Visibility Monitor","header_author":"E-Web Marketing","header_description":"See which AI bots crawl your site, what they read, and whether ChatGPT and Perplexity actually cite you. Free analytics dashboard, bring your own API key for AI features.","assets_banners_color":"4763a3","last_updated":"2026-08-27 02:15:28","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.ewebmarketing.au\/","header_plugin_uri":"https:\/\/www.ewebmarketing.au\/website-design\/","header_author_uri":"https:\/\/www.ewebmarketing.au\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":739,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.4":{"tag":"1.1.4","author":"jisanewebmarketing","date":"2026-07-30 00:20:22","revision":3627783},"1.1.5":{"tag":"1.1.5","author":"jisanewebmarketing","date":"2026-07-30 05:13:27","revision":3627932},"1.3.0":{"tag":"1.3.0","author":"jisanewebmarketing","date":"2026-07-31 01:56:19","revision":3629269},"1.4.0":{"tag":"1.4.0","author":"jisanewebmarketing","date":"2026-07-31 04:13:45","revision":3629356},"1.5.0":{"tag":"1.5.0","author":"jisanewebmarketing","date":"2026-07-31 04:37:15","revision":3629372},"1.5.1":{"tag":"1.5.1","author":"jisanewebmarketing","date":"2026-07-31 06:24:01","revision":3629449},"1.6.0":{"tag":"1.6.0","author":"jisanewebmarketing","date":"2026-08-27 02:15:28","revision":3667991}},"upgrade_notice":{"1.6.0":"<p>Major: adds the llms.txt \/ llms-full.txt generator, markdown alternates for every page, \/.well-known\/agent-card.json, HTTP Link header advertising llms.txt, and a plain-English score-breakdown modal on the Dashboard KPIs. All features can be toggled from Settings \u2192 Agent readiness. No database schema changes.<\/p>","1.5.1":"<p>Two bugfixes to the onboarding flow. Non-breaking.<\/p>","1.5.0":"<p>UX polish release \u2014 educational welcome wizard, dashboard tour, glossary tooltips, and a Getting Started checklist. Non-breaking.<\/p>","1.4.0":"<p>Adds Chrome Lighthouse Agentic Browsing alignment \u2014 the industry-standard taxonomy for AI-agent readiness. Non-breaking. Existing scans get the new checks on their next run.<\/p>","1.3.0":"<p>Extractable-passage checker (post-FAQ-removal). Also bundles: bot access control taxonomy (1.2.1) and site-wide baseline audit (1.2.2). No breaking changes \u2014 no data migration needed.<\/p>","1.2.0":"<p>New correlation view surfacing crawl-to-citation efficiency per URL. Non-breaking feature release.<\/p>","1.1.5":"<p>Adds convenience links (Settings, OpenAI API key, View Details, Support) to the plugin row on the Plugins list.<\/p>","1.1.4":"<p>Plugin Check compliance fix. Rebuild the submission zip and re-upload.<\/p>","1.1.3":"<p>Reviewer-feedback fix. Rebuild the submission zip with build-zip.sh.<\/p>","1.1.2":"<p>WordPress.org reviewer fixes. Rebuild the submission zip with build-zip.sh to ensure marketing assets are excluded.<\/p>","1.1.1":"<p>Ready for WordPress.org Plugin Check. Hard-refresh any admin page to pick up updated assets.<\/p>","1.1.0":"<p>Schema auto-generator. Visit Settings \u2192 Schema markup to configure your Organization details (logo, social profiles).<\/p>","1.0.2":"<p>Cosmetic fix for the Settings page. Hard-refresh the admin to pick up the new CSS.<\/p>","1.0.1":"<p>Bulk-scan UX fix. Hard-refresh the admin to pick up the updated JS.<\/p>","1.0.0":"<p>First public release of Lens as an AI Visibility Monitor. If you used the unreleased internal builds (2.x), uninstall those first.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3627782,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3627782,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3627782,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3629357,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3629357,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.4","1.1.5","1.3.0","1.4.0","1.5.0","1.5.1","1.6.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3629357,"resolution":"1","location":"assets","locale":"","width":1200,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3629254,"resolution":"2","location":"assets","locale":"","width":1200,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3629254,"resolution":"3","location":"assets","locale":"","width":1200,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3629254,"resolution":"4","location":"assets","locale":"","width":1200,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3627782,"resolution":"5","location":"assets","locale":"","width":1200,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3627782,"resolution":"6","location":"assets","locale":"","width":1200,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3629254,"resolution":"7","location":"assets","locale":"","width":1200,"height":900},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3629254,"resolution":"8","location":"assets","locale":"","width":1200,"height":900}},"screenshots":{"1":"Dashboard \u2014 AI bot activity over the last 30 days with the Crawl \u2192 Citation efficiency card and blind-spots list.","2":"Crawl \u2192 Citation efficiency \u2014 per-URL breakdown showing which pages AI bots read and whether the answer engines cite them back.","3":"Bot Access Control \u2014 training vs retrieval vs assistant category cards on the Settings page.","4":"AEO Scans \u2014 sortable list of recent per-page scans with 0\u2013100 scores. Includes extractable-passage counts.","5":"Block editor sidebar \u2014 per-post AEO score, top three fixes, and extractable-passage warnings.","6":"Citations \u2014 citation rate trend chart by provider with the tracked-queries table.","7":"Site-wide baseline audit \u2014 one-page HTML report aggregating every signal Lens has collected. Agency-ready.","8":"Settings \u2014 bundled view of AI Providers, Bot Access Control taxonomy, Schema markup and Reporting."}},"plugin_section":[],"plugin_tags":[244526,236374,244525,244604,1117],"plugin_category":[55],"plugin_contributors":[264411],"plugin_business_model":[],"class_list":["post-319870","plugin","type-plugin","status-publish","hentry","plugin_tags-aeo","plugin_tags-ai-seo","plugin_tags-answer-engine-optimization","plugin_tags-llms-txt","plugin_tags-schema","plugin_category-seo-and-marketing","plugin_contributors-jisanewebmarketing","plugin_committers-jisanewebmarketing"],"banners":{"banner":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/banner-772x250.png?rev=3629357","banner_2x":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/banner-1544x500.png?rev=3629357","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/icon.svg?rev=3627782","icon":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/icon.svg?rev=3627782","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/screenshot-1.png?rev=3629357","caption":"Dashboard \u2014 AI bot activity over the last 30 days with the Crawl \u2192 Citation efficiency card and blind-spots list."},{"src":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/screenshot-2.png?rev=3629254","caption":"Crawl \u2192 Citation efficiency \u2014 per-URL breakdown showing which pages AI bots read and whether the answer engines cite them back."},{"src":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/screenshot-3.png?rev=3629254","caption":"Bot Access Control \u2014 training vs retrieval vs assistant category cards on the Settings page."},{"src":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/screenshot-4.png?rev=3629254","caption":"AEO Scans \u2014 sortable list of recent per-page scans with 0\u2013100 scores. Includes extractable-passage counts."},{"src":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/screenshot-5.png?rev=3627782","caption":"Block editor sidebar \u2014 per-post AEO score, top three fixes, and extractable-passage warnings."},{"src":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/screenshot-6.png?rev=3627782","caption":"Citations \u2014 citation rate trend chart by provider with the tracked-queries table."},{"src":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/screenshot-7.png?rev=3629254","caption":"Site-wide baseline audit \u2014 one-page HTML report aggregating every signal Lens has collected. Agency-ready."},{"src":"https:\/\/ps.w.org\/lens-ai-visibility-monitor\/assets\/screenshot-8.png?rev=3629254","caption":"Settings \u2014 bundled view of AI Providers, Bot Access Control taxonomy, Schema markup and Reporting."}],"raw_content":"<!--section=description-->\n<p><strong>Lens is the first WordPress plugin to score your site on Google Chrome Lighthouse\u2019s new <em>Agentic Browsing<\/em> readiness category<\/strong> \u2014 the taxonomy Chrome uses to measure how ready your site is for AI agents to read and act on. Plus per-page AI bot analytics, crawl-to-citation correlation, and citation tracking against ChatGPT and Perplexity. All with your own OpenAI key. Zero data leaves your database. No SaaS subscription. Free forever.<\/p>\n\n<p>Unlike traditional SEO plugins, Lens does not try to replace Yoast, Rank Math, AIOSEO or SEOPress. It runs alongside whichever SEO plugin you already use and adds the AI visibility layer none of them cover today.<\/p>\n\n<h4>What makes Lens different<\/h4>\n\n<p>Every other AI-SEO plugin on the market proxies your content through a paid SaaS. Lens is the only one that:<\/p>\n\n<ul>\n<li><strong>Logs actual AI bot hits per URL<\/strong> \u2014 not inferred from Search Console, not simulated. Real user-agent-matched requests from 18 recognised AI bots (GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot, Claude-SearchBot, Google-Extended, Meta-ExternalAgent, Applebot-Extended, DeepSeekBot, CCBot, MistralAI-User and more).<\/li>\n<li><strong>Correlates crawls with citations<\/strong> \u2014 cross-references the pages AI bots actually read with the pages the answer engines actually cite. Surfaces zero-efficiency pages that burn training-crawl budget without returning a citation.<\/li>\n<li><strong>Uses your own OpenAI API key<\/strong> \u2014 you pay OpenAI directly. Nothing is proxied through Lens infrastructure. Zero data leaves your WordPress database. The only AI-SEO option regulated \/ enterprise \/ privacy-conscious buyers can adopt.<\/li>\n<li><strong>Understands the training vs retrieval vs assistant distinction<\/strong> \u2014 the critical taxonomy most SEO plugins miss. Blocking GPTBot does NOT stop OpenAI from citing you (that's OAI-SearchBot's job). Lens is the only plugin that lets you make this decision per category.<\/li>\n<\/ul>\n\n<h4>Seven pillars<\/h4>\n\n<p><strong>1. AI Crawler Analytics (free, no API key required)<\/strong><\/p>\n\n<p>Detects and logs visits from 18+ recognised AI bot families. Dashboard shows per-bot \/ per-day \/ per-page breakdowns, blind-spot pages, weekly trend, first-visit alerts.<\/p>\n\n<p><strong>2. Crawl \u2192 Citation efficiency (v1.2.0)<\/strong><\/p>\n\n<p>The diagnostic no other WordPress plugin offers. For every crawled URL, Lens shows how many times the answer engines cited it back. Zero-efficiency rows are the actionable priority list.<\/p>\n\n<p><strong>3. Bot Access Control with training \/ retrieval \/ assistant taxonomy (v1.2.1)<\/strong><\/p>\n\n<p>Three category cards on the Settings page let you block bots by their actual purpose. Block training crawlers to keep content out of model training data \u2014 WITHOUT blocking the retrieval crawlers that create citations. Advanced per-bot override table lets you force allow \/ force block any single bot.<\/p>\n\n<p><strong>4. Chrome Lighthouse Agentic Browsing readiness (v1.4.0)<\/strong><\/p>\n\n<p>The alignment claim no other WordPress plugin makes. Every AEO scan now runs the same-shape checks Google Chrome ships in its (experimental) Agentic Browsing Lighthouse category:<\/p>\n\n<ul>\n<li><strong>Accessibility for agents<\/strong> \u2014 every interactive element must have a programmatic name (aria-label, associated , visible text) and must not be hidden from the accessibility tree while remaining focusable.<\/li>\n<li><strong>WebMCP integration<\/strong> \u2014 detects declarative (<code>&lt;script type=\"application\/mcp+json\"&gt;<\/code>) or imperative (<code>navigator.webmcp.registerTool<\/code>) tool registrations. Informational only \u2014 WebMCP is experimental in Chrome 150+ with origin trial.<\/li>\n<li><strong>Discoverability (llms.txt)<\/strong> \u2014 checks for the machine-readable summary at your domain root.<\/li>\n<li><strong>Layout stability (CLS)<\/strong> \u2014 informational + a link straight into PageSpeed Insights for the page\u2019s real-user CLS.<\/li>\n<\/ul>\n\n<p>Presented as a fractional pass ratio (X of Y checks passed), the same format Chrome uses. A sitewide \"Agentic readiness\" KPI appears on the Dashboard next to Citation rate.<\/p>\n\n<p><strong>5. Per-page AEO scoring (bring your own AI key)<\/strong><\/p>\n\n<p>Local checks always run for free: title, meta, headings, FAQ\/HowTo\/Article schema, image alt coverage, llms.txt entry, internal links, answer-shaped intro, and <strong>extractable-passage detection<\/strong> \u2014 the primary AEO signal after Google removed FAQ rich results in May 2026. AI-enriched scoring uses your OpenAI key to add a 0\u2013100 citability score with three ranked fixes.<\/p>\n\n<p><strong>6. Citation tracking (bring your own AI key, opt-in)<\/strong><\/p>\n\n<p>Enter up to 10 seed queries. On a schedule you choose, Lens asks OpenAI whether your domain appears in the response. Trend charts of citation rate over time, per query and per provider.<\/p>\n\n<p><strong>7. Site-wide baseline audit (v1.2.2)<\/strong><\/p>\n\n<p>One-click HTML report aggregating every scan, every crawler hit, and every citation check on the site. Score distribution, worst-20 and best-20 pages, blind spots, and prioritised action list. Ideal for agency client onboarding.<\/p>\n\n<h4>Automatic schema markup<\/h4>\n\n<p>Lens emits JSON-LD on every post and page: WebSite, Organization, WebPage, BreadcrumbList, Article (or BlogPosting), plus auto-detected FAQPage, HowTo, ImageObject, VideoObject and SpeakableSpecification. Conflict-detects Yoast \/ Rank Math \/ AIOSEO \/ SEOPress \/ The SEO Framework \u2014 defaults OFF if any are active so you never get duplicate JSON-LD.<\/p>\n\n<h4>Why Lens<\/h4>\n\n<ul>\n<li><strong>Free forever, no account.<\/strong> Crawler analytics works the moment you activate. No signup, no licence key, no SaaS.<\/li>\n<li><strong>Your data stays on your site.<\/strong> All logs, scans, citations and schema are generated locally in your WordPress database. Nothing is proxied through our servers.<\/li>\n<li><strong>BYO API key.<\/strong> You pay OpenAI directly. No middleman markup, no per-scan credit resale.<\/li>\n<li><strong>Agency-ready reporting.<\/strong> Baseline audit and weekly visibility reports designed for client delivery.<\/li>\n<li><strong>Open source under GPLv2.<\/strong> Audit the code, fork it, hack on it.<\/li>\n<\/ul>\n\n<h4>Who it's for<\/h4>\n\n<ul>\n<li><strong>Agencies<\/strong> deploying AEO monitoring across many client sites.<\/li>\n<li><strong>SaaS, e-commerce and publishers<\/strong> competing for AI citations.<\/li>\n<li><strong>Regulated \/ enterprise sites<\/strong> (healthcare, legal, finance, government) where SaaS AI-SEO tools cannot be approved by procurement.<\/li>\n<li><strong>Local businesses<\/strong> chasing AI Overview visibility.<\/li>\n<li><strong>Developers<\/strong> who want raw crawler data and a REST API.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>Lens connects to external services in the following ways. <strong>All third-party calls are optional and require you to explicitly provide an API key.<\/strong><\/p>\n\n<p><strong>OpenAI API<\/strong> (https:\/\/api.openai.com)<\/p>\n\n<ul>\n<li><strong>Purpose:<\/strong> Generate per-page AEO scores, suggest fixes, and check citation queries when OpenAI is selected as the citation provider.<\/li>\n<li><strong>When data is sent:<\/strong> Only when you manually trigger an AI-enriched scan, or when a citation-tracking schedule you have explicitly enabled runs.<\/li>\n<li><strong>Data sent:<\/strong> Post title and post content (for scans); user-supplied query strings and your site domain (for citation checks). No personal user data is transmitted.<\/li>\n<li><strong>Consent:<\/strong> Required \u2014 you must enter your own OpenAI API key in Lens \u2192 Settings \u2192 AI Providers. Without a key, no data is sent.<\/li>\n<li><strong>Privacy policy:<\/strong> https:\/\/openai.com\/policies\/privacy-policy<\/li>\n<li><strong>Terms of service:<\/strong> https:\/\/openai.com\/policies\/terms-of-use<\/li>\n<\/ul>\n\n<p>Lens does not transmit any data to any other external service. Crawler detection happens entirely inside your WordPress install \u2014 no external lookup is performed on visiting bots.<\/p>\n\n<h3>Trademark notice<\/h3>\n\n<p>ChatGPT and OpenAI are trademarks of OpenAI. Perplexity is a trademark of Perplexity AI, Inc. Claude and Anthropic are trademarks of Anthropic PBC. Gemini is a trademark of Google LLC. Microsoft Copilot and Bing are trademarks of Microsoft Corporation. Meta AI and LLaMA are trademarks of Meta Platforms, Inc. Apple Intelligence is a trademark of Apple Inc.<\/p>\n\n<p>Lens is an independent tool. It is not affiliated with, endorsed by, or sponsored by any of the above companies. All product names, logos, brands and trademarks mentioned in Lens are the property of their respective owners.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>lens-ai-visibility-monitor<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install through <strong>Plugins \u2192 Add New<\/strong> in the WordPress admin.<\/li>\n<li>Activate the plugin via the <strong>Plugins<\/strong> screen.<\/li>\n<li>You will be redirected to a short setup wizard.<\/li>\n<li>Crawler analytics begin recording immediately \u2014 no further configuration required.<\/li>\n<li>To enable AEO scoring and citation tracking, go to <strong>Lens \u2192 Settings \u2192 AI Providers<\/strong> and add your OpenAI API key. You can get one at https:\/\/platform.openai.com\/api-keys.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20lens%20replace%20my%20seo%20plugin%3F\"><h3>Does Lens replace my SEO plugin?<\/h3><\/dt>\n<dd><p>No. Lens runs alongside Yoast SEO, Rank Math, AIOSEO and SEOPress. It does not write meta titles, meta descriptions, canonicals or sitemaps. It only adds the AI visibility layer those plugins do not currently cover.<\/p><\/dd>\n<dt id=\"is%20it%20really%20free%3F\"><h3>Is it really free?<\/h3><\/dt>\n<dd><p>Yes. The crawler analytics dashboard, local AEO checks, settings, reporting, and the editor sidebar are free with no account required. AI-enriched features (per-page AI scoring and citation tracking) use your own OpenAI API key \u2014 you pay OpenAI directly. There is no Lens subscription.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20openai%20account%3F\"><h3>Do I need an OpenAI account?<\/h3><\/dt>\n<dd><p>Only if you want the AI-enriched scoring and citation tracking. The crawler analytics dashboard works without one.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20my%20site%20down%3F\"><h3>Will it slow my site down?<\/h3><\/dt>\n<dd><p>No. Crawler detection runs on a single regex match against the User-Agent header and writes one row per matched request. Frontend overhead is microseconds. Dashboard queries are paginated and indexed.<\/p><\/dd>\n<dt id=\"how%20much%20does%20the%20openai%20api%20cost%3F\"><h3>How much does the OpenAI API cost?<\/h3><\/dt>\n<dd><p>A typical per-page AEO scan uses around 500\u20131,500 tokens (\u2248 US $0.001\u20130.005 on gpt-4o-mini as of May 2026). A citation check uses around 300\u2013800 tokens per query per run. Run the maths against your own usage at https:\/\/openai.com\/pricing.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20on%20uninstall%3F\"><h3>What happens to my data on uninstall?<\/h3><\/dt>\n<dd><p>By default, Lens preserves your crawler logs, scans, and settings on uninstall so a reinstall does not lose history. To wipe everything, enable <strong>Lens \u2192 Settings \u2192 Data &amp; Privacy \u2192 \"Remove all data on uninstall\"<\/strong> before deactivating.<\/p><\/dd>\n<dt id=\"is%20the%20crawler%20log%20gdpr-compliant%3F\"><h3>Is the crawler log GDPR-compliant?<\/h3><\/dt>\n<dd><p>Lens hashes every IP address with SHA-256 using a per-site salt before storage. Raw IPs are never written to the database. User-agent strings and request URIs are stored as-is for analytical purposes. You can configure log retention (default 90 days) and wipe logs at any time from <strong>Settings \u2192 Data &amp; Privacy<\/strong>.<\/p><\/dd>\n<dt id=\"does%20lens%20work%20with%20woocommerce%3F\"><h3>Does Lens work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Product pages are treated as standard post types for crawler logging and AEO scoring.<\/p><\/dd>\n<dt id=\"does%20it%20work%20in%20the%20classic%20editor%3F\"><h3>Does it work in the Classic Editor?<\/h3><\/dt>\n<dd><p>The crawler dashboard and Scans page work everywhere. The real-time scoring sidebar requires the block editor. In the Classic Editor, you trigger a scan from the Scans page instead.<\/p><\/dd>\n<dt id=\"is%20there%20a%20rest%20api%3F\"><h3>Is there a REST API?<\/h3><\/dt>\n<dd><p>Yes. Read-only endpoints under <code>\/wp-json\/lens\/v1\/<\/code> expose crawler data, scans, and citation history. Authentication uses standard WordPress application passwords.<\/p><\/dd>\n<dt id=\"where%20do%20i%20report%20a%20security%20issue%3F\"><h3>Where do I report a security issue?<\/h3><\/dt>\n<dd><p>Email jisan@ewebmarketing.com.au. Please do not file public GitHub issues for security reports.<\/p><\/dd>\n<dt id=\"what%20is%20the%20crawl%20%E2%86%92%20citation%20efficiency%20view%3F\"><h3>What is the Crawl \u2192 Citation efficiency view?<\/h3><\/dt>\n<dd><p>For every URL that AI bots have crawled, Lens shows how many times that URL was cited in your citation checks and computes an efficiency ratio (citations \u00f7 crawls). Zero-efficiency rows are pages where AI bots consume crawl budget without ever citing you \u2014 the highest-priority pages to improve.<\/p><\/dd>\n<dt id=\"what%20is%20the%20training%20vs%20retrieval%20vs%20assistant%20taxonomy%3F\"><h3>What is the training vs retrieval vs assistant taxonomy?<\/h3><\/dt>\n<dd><p>AI bots fall into three functional categories that most SEO tools lump together. Training crawlers (GPTBot, ClaudeBot, CCBot, Google-Extended, DeepSeekBot, Applebot-Extended) ingest content to train future AI models \u2014 blocking them removes you from future training corpora. Retrieval crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot) fetch content at query time to include in AI answers with citations \u2014 blocking them means you will NOT be cited by that answer engine. Assistant browsers (ChatGPT-User, Claude-User, Perplexity-User, MistralAI-User) represent real users asking an AI to visit your page. Lens is the only plugin that lets you make these decisions per category.<\/p><\/dd>\n<dt id=\"what%20is%20the%20site-wide%20baseline%20audit%3F\"><h3>What is the site-wide baseline audit?<\/h3><\/dt>\n<dd><p>A one-click HTML report aggregating every piece of data Lens has collected on your site \u2014 score distribution histogram, worst-20 and best-20 pages, blind spots, and a prioritised action list. Ideal for agencies onboarding a new client site or presenting month-over-month improvement to stakeholders.<\/p><\/dd>\n<dt id=\"what%20is%20chrome%E2%80%99s%20agentic%20browsing%20readiness%20category%3F\"><h3>What is Chrome\u2019s Agentic Browsing readiness category?<\/h3><\/dt>\n<dd><p>Google Chrome introduced an experimental \"Agentic Browsing\" category in Lighthouse (May 2026 update) to measure how ready a site is for AI agents to read and act on it \u2014 separate from how ready a site is for humans. Instead of a weighted 0\u2013100 score, it emits a fractional pass ratio across four buckets: Accessibility for agents, WebMCP integration, Layout stability (CLS), and Discoverability (llms.txt). Lens v1.4.0 runs the same-shape checks locally, presented in the same format, so the score you see in Lens tracks the score Chrome will surface in the browser. See <a href=\"https:\/\/developer.chrome.com\/docs\/lighthouse\/agentic-browsing\/scoring\">Chrome\u2019s docs<\/a> for the reference implementation.<\/p><\/dd>\n<dt id=\"what%20is%20the%20extractable-passage%20checker%3F\"><h3>What is the extractable-passage checker?<\/h3><\/dt>\n<dd><p>Google removed FAQ rich results in May 2026. The primary AEO signal is now whether your content contains \"extractable passages\" \u2014 40 to 100 word paragraphs that end with a terminator, start with something other than a pronoun, and contain a specific number, year or proper noun. Lens scores every page on this signal and it now carries the highest weight (15%) in the overall AEO score.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>New: <strong>llms.txt + llms-full.txt generator.<\/strong> Virtual <code>\/llms.txt<\/code> and <code>\/llms-full.txt<\/code> served from your site root so AI crawlers (ChatGPT, Claude, Perplexity, Gemini, and others) can discover your key content the way they discover a sitemap. Pick which post types to include from Settings \u2192 Agent readiness. No files written to disk, cached 15 minutes, purges automatically when you publish.<\/li>\n<li>New: <strong>Markdown alternates.<\/strong> Every page is available as clean markdown at <code>{permalink}.md<\/code> \u2014 e.g. <code>example.com\/about.md<\/code>. Honours <code>Accept: text\/markdown<\/code> on the normal URL too, so agents see markdown while humans still see your theme.<\/li>\n<li>New: <strong>Agent discovery.<\/strong> <code>\/.well-known\/agent-card.json<\/code> publishes your site name, description, contact, and key endpoints (llms.txt, sitemap, feed). An HTTP <code>Link<\/code> header advertises <code>llms.txt<\/code> on every request so autonomous agents auto-find it.<\/li>\n<li>New: <strong>Score breakdown modal on the Dashboard.<\/strong> Every KPI now has a \"How is this calculated?\" link that opens a plain-English explainer with the formula, weighted criteria, and how to improve the number. First covered: Citation rate and Agentic readiness.<\/li>\n<li>Compat: verified against WordPress 7.1 (no jQuery UI, no Gutenberg components, no admin bar \/ media processing hooks \u2014 nothing to change).<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Fix: <strong>Dashboard tour re-appeared on every page load<\/strong> for some users. Closing the tour with the X button now correctly marks it as seen (previously only the Finish button did). The tour is also marked seen the moment it starts, so a browser refresh mid-tour will not re-nag.<\/li>\n<li>Fix: <strong>Getting Started checklist step 4 (\"Review bot access control\") never completed<\/strong> for users who reviewed the section but chose to keep the safe defaults (i.e. block nothing). Now marked as done the moment the user opens the Bot Access Control section via the checklist link. Users can still change their access settings any time.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>New: <strong>Educational welcome wizard.<\/strong> Rewritten from procedural to plain-English. New 5-step flow teaches what AI visibility is, how AI bots find your website, and the critical training vs retrieval vs assistant distinction \u2014 no jargon.<\/li>\n<li>New: <strong>Interactive dashboard tour.<\/strong> First-visit spotlight overlay walks through each KPI card in plain English. Includes a \"Take the tour\" link to re-launch anytime.<\/li>\n<li>New: <strong>Glossary tooltips everywhere.<\/strong> 27 technical terms (AEO, GEO, crawler, citation, schema, llms.txt, agentic browsing, extractable passages, etc.) now have contextual ? icons across every admin page. Every explanation is in plain English, no jargon.<\/li>\n<li>New: <strong>Getting Started checklist<\/strong> on the Dashboard tracks four onboarding tasks \u2014 connect OpenAI key, run first scan, add citation query, review bot access. Progress bar disappears when complete.<\/li>\n<li>New: <strong>Delayed review request.<\/strong> Only shows after 7+ days of use AND at least one completed scan \u2014 never on install. Dismissible and postponable.<\/li>\n<li>Improvement: Every screen now surfaces plain-English explanations, making Lens usable by non-technical site owners.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>New: <strong>Chrome Lighthouse Agentic Browsing alignment.<\/strong> Lens now runs the same-shape checks Google Chrome ships in its (experimental) Agentic Browsing Lighthouse category: accessibility for agents, WebMCP integration detection, layout stability info, and llms.txt (already covered). Each AEO scan now emits a fractional pass ratio (X of Y checks passed) mirroring Chrome\u2019s format.<\/li>\n<li>New: Sitewide <strong>Agentic readiness<\/strong> KPI card on the Dashboard, next to Citation rate.<\/li>\n<li>New: Score-weight rebalance \u2014 extractable-passages 15 \u2192 13, accessibility-for-agents added at 10, llms.txt rebalanced to 7.<\/li>\n<li>New: <code>AgenticChecker<\/code> class + <code>compute_agentic_readiness()<\/code> aggregate. <code>compute_sitewide_agentic()<\/code> in the dashboard-data AJAX endpoint.<\/li>\n<li>Docs: New FAQ entry explaining Chrome\u2019s Agentic Browsing category and how Lens aligns with it.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: <strong>Extractable-passage checker<\/strong> \u2014 a new local scan check that finds 40-100 word paragraphs, requires each to end with a terminator, avoid leading pronouns, and contain at least one specific fact (number, year, or proper noun). This is the primary AEO signal after Google removed FAQ rich results in May 2026.<\/li>\n<li>Change: Rebalanced scan-score weights \u2014 FAQ schema demoted (Google no longer surfaces FAQ rich results), extractable-passages promoted to the highest single weight (15%%).<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>New: <strong>Site-wide baseline audit<\/strong> \u2014 one-click report aggregating every scan, every crawler hit, and every citation check on the site. Score distribution histogram, worst-20 and best-20 pages, blind spots, and prioritised action list. Ideal for agency client onboarding.<\/li>\n<li>New: Reports page has a new \"Site-wide baseline audit\" section with Preview + Email buttons.<\/li>\n<li>New: <code>BaselineReportBuilder<\/code> class + <code>admin_post_wplens_baseline_preview<\/code> route.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>New: <strong>Bot access control<\/strong> with the training vs retrieval vs assistant taxonomy. Three category cards on the Settings page let you block bots by their actual purpose \u2014 block training crawlers to protect content from being ingested for model training WITHOUT blocking retrieval crawlers that create citations.<\/li>\n<li>New: <code>RobotsWriter<\/code> class hooks the <code>robots_txt<\/code> filter to write Lens-managed directives. Detects a physical robots.txt file at the site root and warns the user (WordPress's virtual robots.txt is bypassed in that case).<\/li>\n<li>New: Advanced per-bot override table lets you force-allow or force-block any individual bot regardless of its category default.<\/li>\n<li>New: <code>BotRegistry<\/code> now includes a <code>category<\/code> field on every bot (training \/ retrieval \/ assistant \/ other) and exposes <code>categories()<\/code> with human-readable descriptions.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New: <strong>Crawl \u2192 Citation efficiency view<\/strong> on the Dashboard. Cross-references which pages AI bots actually crawled with which pages the answer engines actually cited. Surfaces zero-efficiency pages that burn training-crawl budget without returning citations \u2014 a diagnostic no other WordPress SEO plugin offers.<\/li>\n<li>New: Range selector (7 \/ 30 \/ 90 days) on the correlation view.<\/li>\n<li>New: Updated tagline emphasising the unique combination of per-page bot analytics + citation correlation + BYO-key privacy.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>New: Plugin row on the WordPress Plugins list now shows \"Settings\", \"OpenAI API key\" (deep link to the key field), \"View Details\" (WP.org modal) and \"Support\" links.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Fix: Plugin Check escape-output errors. The report-builder s() helper now returns the bare CSS string; every call site wraps it in esc_attr() inline, matching the pattern Plugin Check \/ WPCS recognises as proper output escaping. Functionally identical output, but the static analyser is satisfied.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Fix: WordPress.org reviewer feedback. The weekly visibility report no longer uses a  block \u2014 every CSS rule is now applied as an inline style attribute on the element. This is also the canonical pattern for HTML emails (Outlook\/Gmail\/Apple Mail strip  blocks anyway).<\/li>\n<li>Refactor: Report builder split styling into a styles() table for maintainability.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Fix: WordPress.org reviewer feedback. Inline crawler-filter script extracted to assets\/js\/crawlers.js and enqueued via wp_enqueue_script.<\/li>\n<li>Fix: Schema engine no longer passes JSON_UNESCAPED_SLASHES to wp_json_encode \u2014 forward slashes are now escaped, preventing any  breakout in JSON-LD output.<\/li>\n<li>Security: REST endpoints (\/crawler\/*, \/scans, \/citations) now require manage_options, matching the floor of the admin pages they back.<\/li>\n<li>Build: Updated Chart.js 4.4.0 \u2192 4.5.1 (latest stable).<\/li>\n<li>Build: Excluded \/assets\/*.png + screenshots from the submission zip (those belong in SVN \/assets\/ per WordPress.org rules).<\/li>\n<li>Meta: Contributors line in readme corrected to WordPress.org owner username.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fix: Plugin-Check submission errors. Removed .DS_Store files. Escaped score output in posts-list column. Improved sanitisation of POST arrays.<\/li>\n<li>Internal: file-level phpcs:disable in admin\/class-ajax.php with written justification \u2014 every endpoint is dispatched through a single nonce+capability gate that PHPCS cannot trace.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Schema auto-generator. Lens now emits JSON-LD on every post and page \u2014 WebSite, Organization, WebPage, Article, BreadcrumbList, plus auto-detected FAQPage, HowTo, ImageObject, VideoObject and SpeakableSpecification.<\/li>\n<li>New: Schema settings panel with Organization name \/ logo \/ sameAs URLs and per-type toggles.<\/li>\n<li>New: SEO-plugin conflict detection. If Yoast \/ Rank Math \/ AIOSEO \/ SEOPress \/ The SEO Framework \/ Schema Pro is active on activation, the schema emitter defaults OFF to avoid duplicate output.<\/li>\n<li>Cache: generated JSON-LD is cached per-post and invalidated on save.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fix: Masked OpenAI API key no longer overflows the settings layout. Shortened to a fixed-length mask.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: Bulk-scan Start button now works without a separate Preview step. Live estimate auto-loads when filters change.<\/li>\n<li>Improvement: Better error messages and console diagnostics when bulk-scan calls fail.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>AI crawler analytics with detection for 18+ AI bots.<\/li>\n<li>Per-page AEO scoring (local checks free; AI-enriched scoring with BYO OpenAI key).<\/li>\n<li>Citation tracking against OpenAI \/ Perplexity (opt-in, BYO key).<\/li>\n<li>Weekly PDF and email visibility reports.<\/li>\n<li>Block editor sidebar panel.<\/li>\n<li>Read-only REST API.<\/li>\n<\/ul>","raw_excerpt":"First WordPress plugin scoring your site on Google Chrome Lighthouse\u2019s new Agentic Browsing criteria. Plus per-page AI bot analytics. BYO OpenAI key.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/319870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=319870"}],"author":[{"embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jisanewebmarketing"}],"wp:attachment":[{"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=319870"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=319870"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=319870"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=319870"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=319870"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/th.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=319870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}