Description
AI agents are starting to read websites the way browsers read them. They fetch a file, parse structured data, call a tool. If your site does not answer in a form they can use, they move on — and you never find out why.
citelayer® makes your WordPress site readable and usable for those agents, and tells you when something stops working. No coding, no configuration. Install, activate, done.
🔌 Works with AI Agents via MCP
citelayer® brings nine abilities to the WordPress Abilities API — seven of them registered out of the box, the two writing ones after you allow them (see below). Any MCP client that speaks to your site through the official WordPress MCP Adapter can then read your citelayer data instead of you copying it out of the dashboard by hand, and can run the two routine tasks below for you.
Seven abilities only read:
citelayer/get-readiness-score— the cached AI readiness score with every checkcitelayer/get-llms-txt-status— llms.txt state, URL, listed and excluded postscitelayer/get-bot-analytics— aggregated AI crawler traffic for 7, 30 or 90 dayscitelayer/get-ai-blind-spots— published pages no AI bot visitedcitelayer/get-referral-stats— visits arriving from AI assistants, by sourcecitelayer/get-schema-status— active Schema.org types and site identity completenesscitelayer/get-compatibility-status— detected SEO plugins and MCP availability
Two abilities change something:
citelayer/run-readiness-scan— runs the AI readiness checks and stores the resultcitelayer/set-llms-txt-exclusion— includes a single post in llms.txt or holds it back
The two writing abilities are switched off out of the box. A new install and an update both start in Read-only mode: the seven reading abilities are available right away, the two writing ones do not appear in the client’s tool list at all, and a call that still arrives is refused. No update makes your site writable for an AI agent without you deciding so. To allow them, turn Read-only mode off under citelayer® WebMCP.
Every ability requires an administrator account (manage_options), and the exclusion additionally requires the right to edit that particular post. The permission is checked twice: once before the call and once inside the ability itself, so a plugin that reaches the abilities through another route cannot skip it. Returns are aggregated: no IP addresses, no user agents, no e-mail addresses, no identity values.
The feature needs WordPress 6.9 or newer, since that is when the Abilities API landed in core. On older WordPress versions nothing is registered and nothing changes. citelayer® does not ship an MCP server of its own — transport is the adapter’s job — and you can switch all abilities off on the same page.
This exposes existing citelayer® data to tools you connect yourself. It does not influence whether or how AI systems cite your site.
🩺 Diagnosis — Find Out When It Breaks
Agent readiness is not a one-time setup. A caching layer, a server rule, another plugin or a stray static file can take an endpoint over from one day to the next, and nothing in the WordPress admin would tell you. citelayer® checks its own output and reports what it finds:
- Endpoint diagnosis — calls
/llms.txt,/llms-full.txtand the Markdown routes the way an agent would, and compares the answer with what citelayer® generates internally. It tells apart a static file shadowing the route, an SEO plugin serving it with citelayer® additions merged in, a third generator, and a missingcharset=utf-8— so you get a cause, not just a red light - AI Readiness Scanner — ten checks with a score from 0 to 100, covering structured data, robots rules, Content-Signal headers, topic coverage, brand demand and, on shops, product content, images, stock and feed. The llms.txt endpoint is checked too, but not scored — see below
- AI Blind Spots — published pages no AI bot has visited, so you can see which content never reached an agent at all
- Compatibility status — which SEO plugin owns which output, and whether citelayer® merges into it or generates its own
🤖 AI Bot Analytics — Know Who’s Crawling Your Site
Track automated AI crawler requests and human AI referral visits separately. See which AI platforms send actual users to your site, and watch the bot traffic that’s discovering your content for those platforms.
- 67 AI/LLM Bots Tracked — GPTBot, ClaudeBot, PerplexityBot, Google-Extended, DeepSeekBot, xAI-Bot, Meta-ExternalAgent, and 60 more
- Real-Time Dashboard — Stat cards (7d/30d/90d/all-time), 30-day SVG trend chart, top bots leaderboard
- AI Blind Spots — Discover pages invisible to AI bots with AI Discovery Score (0-100). Find and fix content gaps
- Crawler Logs — Full log with filtering by bot, URL path, and date range. Paginated for large datasets
- CSV Export — Download your bot data for offline analysis
- Cache Plugin Detection — Auto-detects WP Rocket, LiteSpeed, W3 Total Cache, WP Super Cache. Provides setup guides to exclude AI bots from caching
- 90-Day Auto-Cleanup — Keeps your database lean. No bloat, no maintenance
- 100% Local — All data stored in your WordPress database. No external accounts, no API calls
📊 Schema.org — Structured Data That Supports the Rest
Automatically generates JSON-LD for your organization, site, articles and products, so an agent parsing your page finds the facts it needs in a form it already understands. Schema.org is supporting work here, not the centrepiece: citelayer® detects Yoast SEO, Rank Math and All in One SEO and merges its data into their markup instead of emitting a second block. If an SEO plugin is installed but not set up and produces nothing, citelayer® notices and supplies the markup itself.
📄 Serve Clean Content to AI Agents
When ChatGPT or Perplexity visit your page, citelayer® serves an optimized Markdown version instead of messy HTML. This uses 80% fewer tokens and gives AI a crystal-clear picture of your content.
🛡️ Stay in Control of Your Content
Configure how AI systems may use your content — allow or deny training, search indexing, and RAG/context usage. Your content, your rules.
🛒 Works with WooCommerce
If you run a shop, citelayer® makes your products visible to AI:
- Product Schema.org markup generated
- Product pages served as structured Markdown tables
- AI agents can discover available shop capability status via UCP Discovery
- Product data also listed in llms.txt
📄 llms.txt
citelayer® also generates an llms.txt (and optionally an llms-full.txt), the proposed convention for pointing AI systems at your content.
Be aware of what this is worth today. A study across 300,000 domains found no statistically significant difference in AI citation frequency between sites with and without llms.txt, and an analysis of 94,614 cited URLs found exactly one that pointed at a /llms.txt. citelayer® offers the file because the cost is near zero and the convention may still establish itself — not because it is known to have an effect. That is also why the AI Readiness Score no longer counts it at all — the check still runs and still shows you its status, it just does not move the number. The measurable parts of this plugin are the ones above.
📈 Why AI Visibility Matters Now
- 58% of online searches will involve AI by the end of 2026
- Generative Engine Optimization (GEO) and Answer Engine Optimization (AEO) are the next evolution of SEO
- Sites without AI-readable content are invisible to ChatGPT, Claude, Perplexity, and AI Overviews
- citelayer® covers the readable side — the files, the markup, the abilities — and tells you when one of them stops working
✅ Free vs. Premium
The free plugin covers everything you need to get started:
✅ MCP abilities for the WordPress Abilities API (read-only out of the box)
✅ Endpoint diagnosis and AI Readiness Scanner with Topic Coverage and Brand Demand signal guidance
✅ Schema.org markup (Organization, WebSite, Article, Product)
✅ Markdown for AI agents
✅ Content-Signal headers
✅ WooCommerce product visibility in Schema.org, Markdown, and llms.txt
✅ llms.txt generation
✅ AI Bot Analytics (67 bots, dashboard, AI Blind Spots, CSV export)
✅ AI Referral Tracking (Visits from ChatGPT, Perplexity, Claude, Gemini, Copilot, DeepSeek, Mistral, Grok, and more)
✅ Cache plugin detection & setup guides
Premium adds:
🚀 WooCommerce add-on support for AI product discovery and controlled cart/checkout handoff
📈 AI Visibility Monitoring Dashboard
🔧 Advanced Schema.org (Reviews, FAQ, Shipping)
🛒 Product feed optimization
Full autonomous UCP shopping support is planned separately and is not claimed by the free plugin.
Get your AI Audit
citelayer® offers thorough AI Visibility Audits as a Service.
We help you become visible
Installation
- Upload the plugin files to
/wp-content/plugins/citelayer/or install via WordPress plugin installer - Activate the plugin through the ‘Plugins’ menu in WordPress
- Go to citelayer Dashboard in your admin sidebar to explore all features
- Visit
/llms.txton your site to verify output - Check citelayer Bot Analytics to see AI crawler activity (data appears automatically)
FAQ
-
Do I need technical knowledge to use this?
-
No. Install the plugin, activate it, and it works immediately. Bot tracking starts automatically in the background. There are optional settings if you want to fine-tune, but the defaults work great for most sites.
-
Will this help my site rank better in Google?
-
Yes! The Schema.org markup improves how search engines understand your content. Plus, as Google integrates more AI into search results (AI Overviews), having AI-readable content helps you appear in those new formats. citelayer® detects Yoast SEO and Rank Math to avoid duplicate Schema.
-
What is llms.txt, and is it worth anything?
-
llms.txt is a proposed convention, loosely modelled on robots.txt, for telling AI systems what a site is about and where its content lives. citelayer® generates one.
Honest answer on its value: the available studies find no effect. Across 300,000 domains there was no statistically significant difference in AI citation frequency between sites with and without the file, and in an analysis of 94,614 URLs cited by AI systems exactly one pointed at a /llms.txt. Treat it as a cheap bet on a convention that may still establish itself, not as something that gets you read today. The parts of this plugin you can actually measure are the MCP abilities, the structured data and the diagnosis.
-
How does Bot Analytics work?
-
citelayer® checks every incoming request against 62 known AI/LLM bot User-Agent strings. When a match is found, the visit is logged to a custom database table with timestamp, bot name, category, and URL path. This runs silently in the background — no configuration needed.
-
What are AI Blind Spots?
-
AI Blind Spots shows you pages on your site that have NOT been visited by any AI bot within a selected time period (7/30/90/365 days). Each page gets an AI Discovery Score (0-100) based on content length, title quality, excerpt, featured image, and age. Low scores indicate pages that need optimization.
-
Which AI bots does citelayer® track?
-
citelayer® tracks 67 AI/LLM bots from major providers:
- OpenAI: GPTBot, ChatGPT-User, OAI-SearchBot
- Anthropic: ClaudeBot, Claude-Web, Claude-SearchBot
- Google: Google-Extended, Gemini-Deep-Research, GoogleAgent-Mariner
- Perplexity: PerplexityBot, Perplexity-User
- Meta: Meta-ExternalAgent, Meta-ExternalFetcher, FacebookBot
- xAI / DeepSeek / Mistral / Amazon / Cohere / HuggingFace and many more
-
Will this slow down my site?
-
Not at all. Bot detection adds less than 0.01 seconds per request. Dashboard stats are cached (5-minute transients). Everything else is aggressively cached — llms.txt refreshes every 24 hours, Schema every 7 days. AI-specific features only activate when an AI agent visits, not for regular users.
-
Does citelayer® track human visitors?
-
Bot Analytics logs identified AI/LLM bot requests. The AI Referrals tab also stores a minimal local event when a browser arrives with a known AI referrer or
utm_source; this is used only to show AI click-through visits in your WordPress database. No external telemetry, accounts, or profiling are used. -
What is GEO / AEO?
-
GEO (Generative Engine Optimization) and AEO (Answer Engine Optimization) are the next evolution of SEO. Instead of optimizing for Google’s blue links, you optimize for AI-generated answers. citelayer® handles the technical foundation so your content can appear in AI responses.
-
Can I control how AI uses my content?
-
Yes. citelayer® supports Content-Signal headers (contentsignals.org) that let you set rules:
* Allow or deny AI training on your content
* Allow or deny search indexing
* Allow or deny use in AI responses (RAG)Default: Training denied, search and AI responses allowed.
-
What is UCP?
-
UCP (Universal Commerce Protocol) is an emerging commerce protocol for helping AI agents discover product and shop capabilities. The free plugin exposes discovery data; paid commerce add-ons can add product discovery and controlled cart/checkout handoff when enabled. Full autonomous UCP shopping support is planned separately and is not claimed by the free plugin.
-
Does citelayer® work with caching plugins?
-
Yes! Bot detection happens at the WordPress level before page caching. The Cache Config tab in Bot Analytics auto-detects WP Rocket, LiteSpeed Cache, W3 Total Cache, and WP Super Cache — and shows you exactly how to exclude AI bots from your cache for better tracking accuracy.
-
What happens to old bot data?
-
A daily cron job automatically deletes bot visit records older than 90 days to prevent database bloat. This is configurable via the
citelayer_bot_analytics_cleanup_daysfilter.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“citelayer® – Agent Readiness | MCP Abilities, Schema.org” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “citelayer® – Agent Readiness | MCP Abilities, Schema.org” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.13.0
- NEW: Two writing citelayer abilities for the WordPress Abilities API — “citelayer/run-readiness-scan” runs the AI readiness checks and stores the result, “citelayer/set-llms-txt-exclusion” includes a single post in llms.txt or holds it back.
- NEW: Every ability now carries an access level (read or write) and runs through a shared execution wrapper that checks the administrator capability a second time, so the permission callback is no longer the only barrier.
- NEW: Toggle “Read-only mode” on the WebMCP settings page, on by default, so neither a new install nor an update makes a site writable for an AI agent without a deliberate decision. While it is on, the writing abilities are not registered at all and a call that still arrives is refused; the reading abilities are unaffected.
- NEW: /.well-known/mcp/context.json now reports the read-only state and the access level of every registered ability.
- IMPROVEMENT: An unexpected error inside an ability is returned as a WP_Error instead of escaping as an exception, so a single failure no longer empties an MCP client’s tool list.
- IMPROVEMENT: The readiness scan started from an ability stops at a runtime budget instead of running into the PHP time limit, and reuses a recent result unless “force” is set. A scan that stops early keeps the previous scan timestamp, so the dashboard does not show a partial run as a fresh one and the next call can continue right away.
- IMPROVEMENT: A completed ability scan now replaces the stored result instead of merging into it, so checks that no longer exist — for example the WooCommerce ones after deactivating WooCommerce — no longer linger in the score.
- IMPROVEMENT: The citelayer ability category is described as “AI visibility data and controls”, since it is no longer read-only.
- REMOVED: SEOPress is no longer detected or handled specially. citelayer treats it like any other SEO plugin it does not know. Four things change on a site with SEOPress active: citelayer’s own Schema.org markup stays on and is emitted next to SEOPress’s own markup, so the front page can carry the same entry twice; a post you marked noindex in SEOPress is no longer excluded from llms.txt and gets a Markdown version again; citelayer emits its own article:modified_time meta tag again, which appears twice if you switched on SEOPress’s “Display date in Google search results” option (it is off by default); and, if you never picked a Markdown scope yourself, citelayer now follows its own selection of post types instead of SEOPress’s sitemap, which can change which pages are served as Markdown. Your saved settings are untouched — only defaults that were derived from SEOPress being present. If you rely on SEOPress and want this back, please open an issue.
- FIX: If an SEO plugin was installed but not set up — Rank Math before its setup wizard has run, or All in One SEO with schema markup switched off — citelayer held back its own Schema.org output while the SEO plugin produced none either, leaving the page with no structured data at all. citelayer now checks whether the SEO plugin actually outputs markup on the current request and steps in when it does not.
- IMPROVEMENT: The Schema.org status in the compatibility settings and in the abilities now reads the same decision that drives the front end, instead of a second set of rules next to it, and it no longer changes depending on which page the request came from. The schema status ability additionally reports how far the SEO plugin takes over.
- IMPROVEMENT: New plugin title “Agent Readiness | MCP Abilities, Schema.org” and a new short description, in the plugin directory and in the plugin list inside WordPress. In the tag list “schema” is replaced by “mcp” and “llms-txt” by “ai-agents”. The plugin slug, your settings and your data are unchanged.
- IMPROVEMENT: The plugin description now leads with the MCP abilities and with the diagnosis that tells you when an endpoint stops working, and describes Schema.org as the supporting part it is.
- IMPROVEMENT: llms.txt is no longer presented up front. The feature stays exactly as it is, but the description now names the studies: across 300,000 domains there is no statistically significant difference in AI citation frequency between sites with and without the file. Nothing in your setup changes.
- IMPROVEMENT: The AI Readiness Score no longer counts the llms.txt check, so a site that gets everything measurable right is no longer pulled down by a file the AI crawlers demonstrably ignore. The check itself stays, still shows its status, and says in the result why it is not counted. Expect your score to go up if llms.txt was one of your red checks.
1.12.0
- NEW: Seven read-only citelayer abilities for the WordPress Abilities API (WordPress 6.9+), so MCP clients can read the AI readiness score, llms.txt status, bot analytics, AI blind spots, AI referral stats, Schema.org status and compatibility status.
- NEW: Toggle “Enable citelayer Abilities” on the WebMCP settings page, on by default.
- NEW: /.well-known/mcp/context.json reports the abilities status (available, disabled, wp_too_old) together with the registered ability names.
- FIX: /.well-known/mcp/context.json now sends a one-hour HTTP cache lifetime instead of seven days, so client, CDN and agent caches pick up capability changes shortly after you make them.
- FIX: The AI referral counters are now cached per reporting window, so asking for 7, 30 or 90 days no longer returns the numbers of the window you asked for before.
- FIX: Switching a citelayer feature on or off for the first time now refreshes /.well-known/mcp/context.json right away instead of leaving the previous capability list in place.
- FIX: The Schema.org status no longer claims WebSite and Article output while an SEO plugin owns the schema markup; it reports the site identity citelayer merges into that plugin instead.
- FIX: Abilities without parameters now publish a valid JSON Schema, so strict MCP clients accept them.
- COMPATIBILITY: The citelayer ability category is only registered when no other plugin registered the same slug first.
- COMPATIBILITY: On WordPress older than 6.9 no ability is registered and no notice is raised. Requires at least stays 6.4.
1.11.3
- FIX: Schema caches separate language and site URL contexts, preventing mixed-language identity IDs and translated article data.
- FIX: Organization, Person, WebSite and Article output filters apply on cached reads, preserving current site-owned entity mappings.
- FIX: Schema cache invalidation covers all language variants, including persistent object caches. Existing cache entries are bypassed after the update.
1.11.2
- FIX: Markdown responses preserve headings, links, lists, emphasis, images, blockquotes, and code by loading the HTML-to-Markdown library’s standard converters and defaults.
- FIX: HTML5 elements no longer trigger libxml warnings during Markdown conversion.
- FIX: Markdown caches regenerate automatically after plugin updates, including previously flattened responses.
- COMPATIBILITY: Tested with WordPress 7.1.
1.11.1
- FIX: llms.txt diagnostics now recognize Rank Math Enhance-mode output that contains the Citelayer enhancement marker, so it is no longer misreported as a physical shadow file.
- FIX: Endpoint diagnostics now reserve “Physical file detected” for confirmed root llms.txt/llms-full.txt files and use neutral wording when another generator or server rule serves the public endpoint.
1.11.0
- NEW: Compatibility mode now detects Rank Math AI Visibility and explains how it complements Citelayer’s AI-readable site infrastructure.
- NEW: WebMCP context now exposes safe Rank Math AI Visibility integration metadata when available, without copying Rank Math scores, brands, competitors, or query transcripts.
- IMPROVEMENT: Compatibility wording now distinguishes external AI brand monitoring from local bot/referral evidence, llms.txt, Markdown, Schema.org, WebMCP, and UCP delivery signals.
1.10.2
- FIX: Bot Analytics now exposes a local Claude, Perplexity, and Gemini self-check for bot User-Agent, referrer, and UTM matching.
- IMPROVEMENT: AI Referrals now keeps a privacy-minimal recent signal diagnostic log for accepted, rejected, and deduplicated endpoint attempts.
- IMPROVEMENT: AI Referrals and Crawler Logs now explain repeated AI-search behavior more explicitly, including cached/indexed answers and missing browser referrers.
1.10.1
- FIX: AI Referrals now resolves known AI sources server-side from referrer and UTM signals, with stricter host matching and expanded source coverage.
- IMPROVEMENT: Bot Analytics now explains crawler activity, external AI visibility/citations, and human AI referrals as separate signals.
- IMPROVEMENT: AI Referrals empty state now shows tracking diagnostics and practical checks for REST, frontend script, referrer/UTM, cache/consent/CSP blockers.
1.10.0
- NEW: Schema settings now explain what each Schema Types toggle controls, when to keep the recommended defaults, and how Enhance Mode treats existing SEO plugin graph data.
- NEW: Organization Schema type selection is now hierarchical, showing more specific Schema.org subtypes only when they apply and saving the final selected subtype for JSON-LD output.
- IMPROVEMENT: Local-business-specific Schema fields now appear dynamically for location-based Organization types.
1.9.0
- NEW: AI Readiness Scanner adds Brand Demand Signals guidance, checking local brand entity/profile readiness while clearly marking real brand search volume as an external audit signal.
- IMPROVEMENT: Scanner results can link administrators to the AI Visibility Audit for measured brand-search-demand analysis.
1.8.0
- NEW: AI Readiness Scanner adds a Topic Coverage check for distinct H2/H3 subtopics and internal topic-cluster links.
- NEW: Organization sameAs settings now provide dedicated YouTube and Reddit profile fields and prioritize them before additional profiles.
- IMPROVEMENT: Markdown settings now highlight deep content discovery so evergreen guides, documentation, and other useful pages stay available to AI agents.
1.7.2
- FIX: WebMCP now exposes UCP as discovery metadata only, so WooCommerce presence no longer implies product catalog, cart, checkout, or Full UCP support.
- FIX: UCP Discovery now publishes explicit capability status and documented filters for active, licensed commerce add-ons.
- IMPROVEMENT: llms.txt discovery links now describe UCP/WebMCP as capability-status metadata instead of shipped autonomous shopping support.
1.7.1
- FIX: Premium/UCP wording now distinguishes shipped discovery and controlled cart/checkout handoff from future Full UCP support.
- FIX: UCP discovery upgrade messaging no longer claims Full UCP support before the Woo add-on milestone is complete.
1.7.0
- NEW: Schema settings now support explicit site identity selection between Organization and Person, with valid Schema.org Organization subtypes and person role presets.
- NEW: Organization/Person identity fields, social profiles, contact details, address, local-business geo/opening-hours, expertise, and JSON-LD preview are editable directly in the Citelayer admin.
- IMPROVEMENT: Plain Yoast SEO and Yoast SEO Premium no longer disable Citelayer identity schema fields; overlapping local identity fields are delegated only when Yoast Local SEO is active.
- FIX: Rank Math, Yoast, and All in One SEO schema enhancement now merges the active site identity into existing Organization, LocalBusiness, or Person graph nodes without duplicate identities.
- FIX: Cached SEO plugin detection is validated against currently active plugins so a recently disabled Yoast Local SEO add-on cannot keep Citelayer in local-identity defer mode.
1.6.1
- FIX: Yoast llms.txt saves are now re-enhanced automatically in Compatibility Enhance mode, keeping Citelayer additions visible after Yoast regenerates its physical llms.txt file.
- FIX: llms.txt diagnostics no longer classify an intentionally enhanced Yoast static file as stale shadow output when it contains the Citelayer footer.
1.6.0
- NEW: llms.txt admin diagnostics now include a manual “Check again” action that clears stale endpoint status and re-runs live public/fallback checks.
- NEW: Admins can download a backup of physical root llms.txt/llms-full.txt shadow files and remove those exact files safely from the llms.txt screen.
- IMPROVEMENT: Endpoint diagnostics now expose machine-readable reason codes and show clearer copy for static-file shadowing, missing UTF-8 charset, and blocked public routes.
1.5.9
- FIX: llms.txt diagnostics now detect stale static or SEO-generated root files that shadow Citelayer output, compare public endpoints with the Citelayer fallback generator, and show Content-Type, charset, and Citelayer footer details.
- FIX: Replace-mode remediation now clears both root llms.txt and llms-full.txt shadow files, and /.well-known/llms.txt routes to the Citelayer generator instead of falling through to the homepage.
1.5.8
- FIX: Compatibility Mode notices can now be dismissed reliably on the WordPress Plugins screen. The notice CSS and JavaScript are loaded before notices render, and dismissals persist per admin user.
1.5.7
- FIX: AI Readiness Scanner now distinguishes a blocked public /llms.txt URL from a broken generator when the Citelayer fallback endpoint still returns valid content.
- IMPROVEMENT: llms.txt admin status now checks both /llms.txt and /llms-full.txt, shows canonical and fallback HTTP results, and points admins to server/CDN/WAF rules when public .txt paths are blocked before WordPress.
- CHORE: PHPUnit composer script now runs with the documented 512M memory limit so the committed WordPress and WooCommerce stubs load reliably.
1.5.6
- IMPROVEMENT: Tested and compatible with WordPress 7.0, with a full WordPress Plugin Check compliance pass (coding standards, input sanitization, database query safety).
- FIX: No longer outputs a duplicate Organization schema node when running alongside Rank Math, Yoast SEO, or All in One SEO — citelayer now merges its data into the active SEO plugin’s schema graph instead of adding a second node.
- FIX: Markdown (.md) endpoint now resolves all public content — posts, custom post types, and products — not just pages.
- IMPROVEMENT: WooCommerce and Easy Digital Downloads functional pages (cart, checkout, account) are now excluded from llms.txt and Markdown output, reducing noise for AI crawlers.
- FIX: WebMCP context endpoint (/.well-known/mcp/context.json) now returns the correct application/json content type so strict AI/MCP clients accept the response.
- FIX: llms.txt discovery links (UCP, WebMCP) now point to the correct registered endpoints.
- FIX: Markdown output is now restricted to published content only (defense-in-depth hardening).
1.5.5
- FIX: WooCommerce product Markdown export no longer fails in background tasks or contexts where the product is referenced by ID rather than loaded as an object.
1.5.4
- IMPROVEMENT: Schema Types settings now show blur overlay with direct link to SEO plugin when in Enhancement Mode
- NEW: Product Feed now supports Easy Digital Downloads (simple + variable pricing)
- FIX: EDD addon Settings button on license page linked to non-existent page
- NEW: Content-Signal HTTP header now sent on all frontend pages (not just Markdown endpoint)
1.5.3
- FIX: WooCommerce hidden products (visibility=hidden) now excluded from llms.txt
- FIX: WooCommerce hidden products now excluded from product feed XML
1.5.2
- FIX: llms.txt cache not invalidated when settings are changed (exclude URLs, description, title, etc.)
- FIX: Wildcard URL exclude patterns (e.g. /shop/*) never matched due to preg_quote escape bug
- FIX: Plain path exclude patterns (e.g. /warenkorb) only checked inside http-URL branch due to missing brace
1.5.1
- IMPROVEMENT: AI Score expanded from 7 to 11 checks — 4 new content-quality checks
- NEW: Opening Summary check (first paragraph 30–80 words)
- NEW: Heading Structure check (≥2 H2 + ≥1 H3)
- NEW: Internal Linking check (≥2 internal links)
- NEW: FAQ Section detection (FAQ blocks, headings, and Q&A patterns)
- Rebalanced check weights for better signal distribution
1.5.0
- NEW: Per-Page AI Visibility Score — editor metabox shows 0–100 score with 7 AI readiness checks
- NEW: Content Freshness Signals — Last-Modified header + article:modified_time OG meta (SEO-plugin aware)
- IMPROVEMENT: Scanner now differentiates AI Training Bots (blocking = good) from AI Search Bots (blocking = bad)
- IMPROVEMENT: Bot list expanded to 86 bots (+PhindBot, img2dataset, KangarooBot, Sidetrade, webz.io, Bingbot-AI)
- IMPROVEMENT: Bot Analytics dashboard shows category badges (AI Training, AI Search, AI Agent, AI Enterprise)
1.4.3
- IMPROVEMENT: Keyword-optimized plugin display name for better wp.org discoverability
- Updated plugin name to “citelayer® – AI SEO & Visibility | llms.txt, Bot Analytics, Schema.org”
1.4.2
- FIX: Remaining PHPCS violations — file-level disables for template views and DB query files
- FIX: Function call indentation in Compatibility.php
- FIX: Inline phpcs:ignore for long translation strings
1.4.1
- FIX: Resolved all PHPCS WordPress Coding Standards violations
- FIX: Short ternary operators replaced with explicit ternaries (ProductFeed, ProductFeedCheck, LLMS_TXT)
- FIX: Yoda conditions, indentation, embedded PHP tag formatting
- FIX: Trailing whitespace and line length violations
- IMPROVEMENT: Added phpcs:disable/enable blocks for mixed PHP/HTML template methods
1.4.0
- NEW: AI Referral Tracking — track visitors arriving from ChatGPT, Perplexity, Claude, Gemini, Copilot, You.com, Phind, Kagi, and Andi
- NEW: “AI Referrals” dashboard tab with stat cards (Visits from AI, Top Source, Trend %), trend chart, top sources breakdown, and paginated referral log
- NEW: Lightweight frontend tracking via sendBeacon — zero impact on page load performance
- NEW: Rate-limited REST endpoint with origin validation and IP hashing (GDPR/DSGVO compliant)
- NEW: llms.txt now includes Markdown URLs for each page, helping LLMs discover optimized content versions
- NEW: 90-day auto-cleanup for referral data (same as bot analytics)
- IMPROVEMENT: SVG trend chart now supports custom colors (reusable across tabs)
- 100% local — all referral data stored in your WordPress database, no external services
1.3.5
- NEW: Bot Analytics — DB-backed AI bot visit tracking with real-time dashboard
- NEW: Expanded bot database from 17 to 62 AI/LLM bots (OpenAI, Anthropic, Google, Meta, xAI, DeepSeek, Mistral, Cohere, HuggingFace, and more)
- NEW: Bot categories (Confirmed AI, AI Assistant, AI Search, AI Enterprise, Possible AI)
- NEW: Admin dashboard with stat cards (7d/30d/90d), SVG trend chart, and top bots visualization
- NEW: AI Blind Spots — discover pages invisible to AI bots with AI Discovery Score (0-100)
- NEW: CSV export for bot visit logs with date/bot/path filtering
- NEW: Cache plugin detection (WP Rocket, LiteSpeed, W3TC, WP Super Cache) with setup guides
- NEW: 90-day auto-cleanup to prevent database bloat
- FIX: Settings link on plugins page now points to correct dashboard URL
- IMPROVEMENT: Clean uninstall — removes DB table, options, and transients on plugin deletion
- 100% local — no external accounts or API calls needed
1.3.4
- FIX: AI Crawler Detection now works in all compatibility modes (including Rank Math enhance mode)
- FIX: Per-post exclude meta box only shown when citelayer generates llms.txt
- PERF: Batch noindex queries (N per-post queries 3-4 bulk queries)
- PERF: Capped posts at 500/type and products at 1000 (filterable)
- PERF: Reduced Scanner HTTP timeouts from 10-15s to 5s
1.3.3
- NEW: AI Crawler Detection — see which AI bots visit your llms.txt (GPTBot, ClaudeBot, PerplexityBot, and 14 more)
- NEW: in HTML head for AI discoverability
- NEW: Per-post exclude toggle — exclude individual pages from llms.txt via meta box
- NEW: Custom title and description overrides for llms.txt header
- NEW: Max words cap for llms-full.txt (default 500, configurable 50–10.000)
- NEW: Taxonomy inclusion in llms-full.txt (categories, tags, custom taxonomies)
- NEW: Meta inclusion in llms-full.txt (published/modified dates, URL, WooCommerce SKU + price)
- Privacy-first: All data stored locally, no external server calls
1.3.2
- NEW: llms-full.txt — full content export for deep AI understanding
- NEW: Configurable post types for llms.txt (pages, posts, products, CPTs)
- NEW: SEO noindex respect (Yoast, Rank Math, SEOPress, AIOSEO)
- NEW: URL exclude patterns with wildcard support
- Improved: Post type grouping with section headers
- Improved: Proper > description blockquote per llmstxt.org spec
- Improved: Admin page with post type selection and pattern examples
1.3.1
- NEW: XML Product Feed Generator — OpenAI Commerce Protocol compatible
- Serves product feed at /product-feed.xml
- Supports simple, variable, and external products with variations
- GTIN/EAN auto-detection from common meta fields
- WP-Cron scheduled regeneration (hourly/daily/weekly)
- Transient-based caching with configurable TTL
- New admin page: citelayer Product Feed
- Scanner: added Product Feed validation check
1.3.0
- NEW: AI Readiness Scanner — comprehensive site audit for AI visibility
- 7 automated checks: Schema.org, robots.txt (8 AI bots + Cloudflare), llms.txt, Content-Signal headers
- WooCommerce checks: Product descriptions, images, stock status
- Visual readiness score dashboard (0-100)
- Async scanning via REST API
- New admin page: citelayer AI Scanner
1.2.2
- Rewritten plugin description — user-centric, benefit-driven (AI Visibility, GEO, AEO)
- Updated FAQ in plain language
- Optimized tags for WordPress.org discoverability
- Updated plugin banner images
1.2.1
- Fixed WordPress.org deploy trigger (SVN deploy now runs in same workflow as auto-tag)
- Added manual deploy fallback with dry-run support
1.2.0
- Added automated WordPress.org SVN deploy workflow (deploy on GitHub Release)
- Added plugin directory assets (icons, banners)
- Added .distignore for clean SVN deployments
- Added readme/assets update workflow (update WordPress.org without new release)
- Streamlined auto-tag workflow (ZIP build now handled by deploy action)
1.1.9
- Re-included composer.json in distribution ZIP (required when vendor/ is present)
1.1.8
- Removed vendor CLI binaries (bin/html-to-markdown) from release ZIP
- Excluded composer.json from distribution
- Improved forbidden file detection in build workflow
1.1.7
- Lowered PHP requirement from 8.1 to 7.4 (code + vendor deps confirmed compatible)
- Fixed deploy workflow: .gitattributes and README.md now excluded from production
- Added PHP 7.4 to CI syntax check matrix
1.1.6
- Converted inline scripts to wp_add_inline_script() for WP Codex compliance
- Extracted inline styles to external CSS files with wp_enqueue_style()
- Updated contributor and Author URI metadata
1.1.5
- Fix fatal error: rebuild vendor with composer –no-dev for release ZIP
1.1.4
- Exclude dev dependencies from release ZIP (phpstan, phpcs, etc.)
1.1.3
- Plugin name fix
1.1.1
- Respecting WP / WordPress trade mark
1.1.0
- Code Quality: PHPCS + PHPStan Audit — alle Violations behoben (PHPCS 2601, PHPStan 6490)
- Tooling: phpcs.xml.dist, phpstan.neon, Composer Scripts (lint, fix, analyse)
- CI: Strikte PHPCS- und PHPStan-Jobs (kein continue-on-error mehr)
- Infrastructure: Pre-Commit-Hook für automatisches Code-Formatting
- Fix: Schema.php — post_author Type-Cast für get_the_author_meta()
1.0.0
- Production release
- Version synchronization (header, constant, readme.txt)
- Security: Admin email no longer exposed in llms.txt by default
- UCP Discovery: Dynamic platform detection (WordPress vs WooCommerce)
- WebMCP: Removed non-implemented endpoint references
- WebMCP: Fixed option check consistency
- Added PHPCS configuration (WordPress Coding Standards)
- Added PHPStan Level 6 configuration
- Comprehensive CI pipeline (syntax, PHPCS, PHPStan, integrity checks)
- Removed development artifacts from repository
0.3.1
- Compatibility V3.1: Multi-Family Safeguard — Conflict State detection
- Admin: Conflict State banner on all admin pages
- llms.txt: 503 response in Conflict State
- Schema: No output in Conflict State
- WebMCP context.json discovery endpoint
0.3.0
- Compatibility Layer V3: Enhance-Fix
- serve_llms_txt() uses should_register_own_route() to prevent double output
- Yoast Fallback: Citelayer takes over when Yoast has no physical file
- State-Reset on plugin deactivation
- Improved AIOSEO detection (defined + class_exists checks)
0.2.0
- Composer Support: league/html-to-markdown integration
- PSR-4 Autoloading with SPL fallback
- Feature-Detection on module level (Rank Math llms.txt, Yoast llms.txt)
- All classes refactored to Citelayer\Plugin namespace
- File structure: includes/ src/
0.1.0
- Initial release
- llms.txt generation with WooCommerce awareness
- Schema.org JSON-LD (Organization, WebSite, Article, Product)
- UCP Discovery endpoint
- Markdown for Agents with Content Negotiation
- Content-Signal header configuration
- Settings page in WordPress admin
