{"id":350043,"date":"2026-08-22T11:29:19","date_gmt":"2026-08-22T11:29:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/aiscaner\/"},"modified":"2026-08-22T11:50:02","modified_gmt":"2026-08-22T11:50:02","slug":"crawlwise-ai-readiness","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/crawlwise-ai-readiness\/","author":14977198,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.0","stable_tag":"0.2.0","tested":"7.1","requires":"6.7","requires_php":"7.4","requires_plugins":null,"header_name":"Crawlwise AI Readiness","header_author":"Zakaria Bin Saifullah","header_description":"Scans your site for AI\/agent readiness, scores it against a versioned rubric, applies one-click fixes, and re-scans to prove the score changed.","assets_banners_color":"0d0f10","last_updated":"2026-08-22 11:50:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/devzakaria.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"binsaifullah","date":"2026-08-22 11:29:06"},"0.2.0":{"tag":"0.2.0","author":"binsaifullah","date":"2026-08-22 11:50:02"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3660478,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3660502,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3660502,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0","0.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3660478,"resolution":"1","location":"assets","locale":"","width":3924,"height":2384},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3660478,"resolution":"2","location":"assets","locale":"","width":3922,"height":2430},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3660478,"resolution":"3","location":"assets","locale":"","width":3608,"height":2254}},"screenshots":{"1":"The dashboard: overall score, per-dimension breakdown, ranked quick wins, and every check with its evidence and one-click fix.","2":"General settings \u2014 bot access presets, structured signals, automation, the agent (MCP) server, and score history.","3":"Schema markup settings \u2014 site identity, sameAs profiles, site search, and default schema type per content type."}},"plugin_section":[],"plugin_tags":[15643,2353,244604,186,1121],"plugin_category":[55],"plugin_contributors":[174986],"plugin_business_model":[],"class_list":["post-350043","plugin","type-plugin","status-publish","hentry","plugin_tags-agents","plugin_tags-ai","plugin_tags-llms-txt","plugin_tags-seo","plugin_tags-structured-data","plugin_category-seo-and-marketing","plugin_contributors-binsaifullah","plugin_committers-binsaifullah"],"banners":{"banner":"https:\/\/ps.w.org\/crawlwise-ai-readiness\/assets\/banner-772x250.png?rev=3660502","banner_2x":"https:\/\/ps.w.org\/crawlwise-ai-readiness\/assets\/banner-1544x500.png?rev=3660502","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/crawlwise-ai-readiness\/assets\/icon-256x256.png?rev=3660478","icon_2x":"https:\/\/ps.w.org\/crawlwise-ai-readiness\/assets\/icon-256x256.png?rev=3660478","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/crawlwise-ai-readiness\/assets\/screenshot-1.png?rev=3660478","caption":"The dashboard: overall score, per-dimension breakdown, ranked quick wins, and every check with its evidence and one-click fix."},{"src":"https:\/\/ps.w.org\/crawlwise-ai-readiness\/assets\/screenshot-2.png?rev=3660478","caption":"General settings \u2014 bot access presets, structured signals, automation, the agent (MCP) server, and score history."},{"src":"https:\/\/ps.w.org\/crawlwise-ai-readiness\/assets\/screenshot-3.png?rev=3660478","caption":"Schema markup settings \u2014 site identity, sameAs profiles, site search, and default schema type per content type."}],"raw_content":"<!--section=description-->\n<p>Crawlwise AI Readiness measures how well your WordPress site holds up when the reader is an AI agent rather than a person, then fixes what doesn't and verifies the change over a real HTTP request.<\/p>\n\n<p>Every check fetches the site the way an agent would instead of trusting internal plugin state, so a passing score reflects what a crawler actually sees \u2014 including when a CDN or a stray physical <code>robots.txt<\/code> is overriding WordPress.<\/p>\n\n<p><strong>What it grades<\/strong><\/p>\n\n<ul>\n<li><strong>Discoverability<\/strong> \u2014 robots.txt sanity, XML sitemap, discovery <code>Link<\/code> headers<\/li>\n<li><strong>Content<\/strong> \u2014 Markdown content negotiation, <code>\/llms.txt<\/code>, structured HTML<\/li>\n<li><strong>Bot access<\/strong> \u2014 Content Signals, explicit AI-crawler rules, Web Bot Auth<\/li>\n<li><strong>Capabilities<\/strong> \u2014 API catalog, MCP card, agent skills, OAuth metadata<\/li>\n<li><strong>Commerce<\/strong> \u2014 UCP and x402 descriptors (WooCommerce only)<\/li>\n<\/ul>\n\n<p><strong>Fixes are reversible.<\/strong> Every fix writes plugin settings and nothing else \u2014 no theme edits, no rewritten posts \u2014 so \"Turn off\" genuinely restores the prior state.<\/p>\n\n<p><strong>Agent-callable.<\/strong> An optional MCP server exposes scan \/ fix \/ verify \/ revert as tools an agent can call directly. It is off by default and requires a bearer token you generate yourself.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin makes HTTP requests to your own site only. It sends nothing to any third party and has no telemetry.<\/p>\n\n<pre><code>\/llms.txt, the Markdown output, and the JSON-LD graph are built exclusively from public content: password-protected, private, draft, and per-entity excluded posts are never included.&lt;h3&gt;Security&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>* The MCP bearer token is stored as a SHA-256 hash. Its raw value is displayed exactly once, when generated, and cannot be recovered afterwards \u2014 regenerate it if lost.\n* The token is never included in a settings export, and a settings import can never set or enable it.\n* Failed MCP authentication attempts are rate-limited per IP, and cross-origin requests to the MCP endpoint are rejected.\n* All dashboard REST routes require <code>manage_options<\/code>; per-entity routes require <code>edit_post<\/code> for that specific post.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>crawlwise-ai-readiness<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin through the <strong>Plugins &gt; Add New<\/strong> screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Go to <strong>Crawlwise AI Readiness<\/strong> in the admin menu and click <strong>Scan<\/strong> to grade the site.<\/li>\n<li>Apply a fix from any failing check, then click <strong>Verify<\/strong> to confirm the change over a real HTTP request.<\/li>\n<\/ol>\n\n<p>Activation creates one custom table (<code>{prefix}_crwl_scans<\/code>) for score history and flushes rewrite rules so <code>\/llms.txt<\/code>, <code>*.md<\/code> and <code>.well-known\/*<\/code> routes can resolve. Uninstalling removes the table, all options and transients, the scheduled re-scan, and any files the plugin exported.<\/p>\n\n<h4>Optional: the agent (MCP) server<\/h4>\n\n<ol>\n<li>Go to <strong>Crawlwise AI Readiness &gt; Settings<\/strong>, tick <strong>Enable the MCP server<\/strong>, and click <strong>Save Changes<\/strong>.<\/li>\n<li>Copy the bearer token shown. It is stored hashed and cannot be displayed again \u2014 regenerate it if you lose it.<\/li>\n<li>Add it to your agent, e.g. <code>claude mcp add --transport http crwl &lt;endpoint&gt; --header \"Authorization: Bearer &lt;token&gt;\"<\/code>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20conflict%20with%20yoast%2C%20rank%20math%2C%20or%20aioseo%3F\"><h3>Does it conflict with Yoast, Rank Math, or AIOSEO?<\/h3><\/dt>\n<dd><p>No. Crawlwise AI Readiness detects them and defers per feature, so you don't get two sitemaps, two meta descriptions, or two JSON-LD graphs.<\/p><\/dd>\n<dt id=\"why%20does%20a%20check%20say%20%22couldn%27t%20verify%22%3F\"><h3>Why does a check say \"couldn't verify\"?<\/h3><\/dt>\n<dd><p>Some hosts block a site from making HTTP requests to itself. When that happens Crawlwise AI Readiness reports an informational result rather than guessing, so a blocked loopback never becomes a misleading pass or fail.<\/p><\/dd>\n<dt id=\"i%20enabled%20static%20export%20and%20nothing%20happened.\"><h3>I enabled static export and nothing happened.<\/h3><\/dt>\n<dd><p>Static export refuses to overwrite a <code>robots.txt<\/code> or <code>llms.txt<\/code> it did not create, so a hand-maintained file is never clobbered. Remove or rename the existing file if you want the plugin to manage it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Redesigned every admin screen \u2014 dashboard, settings, schema markup and \"How it works\" \u2014 around a single typographic system, with the three typefaces self-hosted rather than loaded from a font CDN.<\/li>\n<li>Fixed: applying the D3 fix had no effect on its own. It enabled Link headers, but a header needs somewhere to point, so with <code>\/llms.txt<\/code> and Markdown both off nothing was emitted and the check kept failing. The fix now enables <code>\/llms.txt<\/code> as the link target.<\/li>\n<li>Fixed: the K1\u2013K4 capability checks could never pass after a re-activation. Activation rebuilt the rewrite rules from a hard-coded list that had drifted, silently dropping every <code>.well-known\/*<\/code> route \u2014 and clicking Fix did not repair it, because the flush was skipped whenever the setting was already on. Affected B3 and the commerce checks too.<\/li>\n<li>Fixed: rewrite rules are now rebuilt on the first request after activation, once every route has registered, so a newly added endpoint can no longer be left out.<\/li>\n<li>Checks are listed by name instead of by code throughout the dashboard.<\/li>\n<li>Informational (INFO) results are no longer counted as failures in the \"N of M checks failing\" summary.<\/li>\n<li>The \"last scan\" timestamp now comes from the site's own clock rather than the browser's, so it no longer shifts by the UTC offset after a scan.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Security: password-protected content is excluded from Markdown output, <code>\/llms.txt<\/code>, and JSON-LD descriptions.<\/li>\n<li>Security: the MCP bearer token is stored hashed, shown once, excluded from settings export, and cannot be set by settings import.<\/li>\n<li>Security: MCP endpoint validates <code>Origin<\/code> and rate-limits failed authentication.<\/li>\n<li>Fixed: <code>*.md<\/code> and <code>.well-known\/*<\/code> URLs return a real 404 instead of the front page when a feature is off or nothing matches.<\/li>\n<li>Fixed: applying the C3 fix no longer rewrites post excerpts \u2014 the meta description is derived at render time, keeping every fix reversible.<\/li>\n<li>Fixed: scan history is capped per scope instead of growing without bound.<\/li>\n<\/ul>","raw_excerpt":"Scores your site for AI\/agent readiness, applies one-click fixes, and re-scans over real HTTP to prove the score changed.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/350043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=350043"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/binsaifullah"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=350043"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=350043"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=350043"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=350043"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=350043"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=350043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}