{"id":314444,"date":"2026-06-04T17:04:43","date_gmt":"2026-06-04T17:04:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wordherd-ai-atlas\/"},"modified":"2026-06-05T17:04:31","modified_gmt":"2026-06-05T17:04:31","slug":"wordherd-ai-atlas","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/wordherd-ai-atlas\/","author":23499749,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.43","stable_tag":"1.0.43","tested":"7.0","requires":"5.9","requires_php":"8.0","requires_plugins":null,"header_name":"Atlas for WP","header_author":"WordHerd","header_description":"Generates dynamic llms.txt, llms.md, and per-page Markdown endpoints for AI-friendly content access.","assets_banners_color":"fdfeff","last_updated":"2026-06-05 17:04:31","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/atlasforai.com\/","header_plugin_uri":"https:\/\/atlasforai.com\/atlasforwp\/","header_author_uri":"https:\/\/wordherd.io\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":98,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.39":{"tag":"1.0.39","author":"wordherd","date":"2026-06-04 17:52:16"},"1.0.40":{"tag":"1.0.40","author":"wordherd","date":"2026-06-04 19:08:19"},"1.0.41":{"tag":"1.0.41","author":"wordherd","date":"2026-06-04 23:32:50"},"1.0.42":{"tag":"1.0.42","author":"wordherd","date":"2026-06-04 23:49:43"},"1.0.43":{"tag":"1.0.43","author":"wordherd","date":"2026-06-05 17:04:31"}},"upgrade_notice":{"1.0.43":"<p>Compatibility update: tested up to WordPress 7.0.<\/p>","1.0.42":"<p>Plugin display name updated to Atlas for WP. Fixes Your site Pro settings save layout with Atlas for WP Pro.<\/p>","1.0.41":"<p>Plugin display name updated to AI Atlas. Pro upsell dismiss (link or X) stays dismissed per user.<\/p>","1.0.40":"<p>Fixes <code>\/index.md<\/code> on sites that use latest posts as the homepage; Connection check and Overview links now get a useful summary instead of 404.<\/p>","1.0.39":"<p>Updated wp-admin sidebar menu icon to the trademark compass mark.<\/p>","1.0.38":"<p>Post editor meta box now shows the WordHerd AI Atlas product name.<\/p>","1.0.37":"<p>Per-page Markdown summaries no longer leak CSS from inline style blocks.<\/p>","1.0.36":"<p>Overview Plan badge now reflects live license activation instead of a stale cached Pro flag.<\/p>","1.0.35":"<p>Fixes a false \u201cllms.txt already provided\u201d warning on new installs when WordHerd AI Atlas is serving the file.<\/p>","1.0.34":"<p>Custom admin menu icon and WordHerd AI Atlas page title.<\/p>","1.0.33":"<p>Fixes a false \u201cllms.txt already provided\u201d warning when this plugin is serving \/llms.txt.<\/p>","1.0.32":"<p>Display names updated to WordHerd AI Atlas; admin menu is WH AI Atlas below Settings. Update WordHerd AI Atlas Pro to 1.0.6+ for matching notices.<\/p>","1.0.31":"<p>Pro-only features are isolated in the Pro add-on; update WordHerd AI Atlas Pro to 1.0.5+ when using taxonomy exclusions or advanced admin UI.<\/p>","1.0.30":"<p>Plugin Check and coding-standards compliance; no behavior change for public AI URLs.<\/p>","1.0.29":"<p>Fixes llms.txt summaries where words ran together when built from HTML page content; clear cache after updating.<\/p>","1.0.28":"<p>Fixes HTML entity codes appearing in llms.txt link titles and summaries; clear the AI Atlas cache after updating.<\/p>","1.0.27":"<p>Pro upsell notice dismisses in place without leaving your current admin page.<\/p>","1.0.26":"<p>Clearer Yoast llms.txt conflict notice in wp-admin.<\/p>","1.0.25":"<p>If Yoast SEO or another tool serves \/llms.txt, follow the admin notice to disable it and clear the AI Atlas cache.<\/p>","1.0.24":"<p>Public URL caching and security hardening; use AI Atlas Pro 1.0.4+ for matching admin improvements.<\/p>","1.0.23":"<p>Security and performance hardening; update AI Atlas Pro to 1.0.3+ when using licensed features.<\/p>","1.0.22":"<p>Pro picker UI requires AI Atlas Pro 1.0.2+ with a valid license. Free sites keep page exclusion on the page editor only.<\/p>","1.0.21":"<p>Breaking rename to <code>wh_aiatlas<\/code> prefix: re-save settings after updating. Update AI Atlas Pro to 1.0.1 and re-activate your license. Deactivate legacy <code>ai-atlas<\/code> if installed.<\/p>","1.0.20":"<p>Pro licensing and advanced settings now require the AI Atlas Pro add-on plugin. Install it to keep Pro features after updating.<\/p>","1.0.18":"<p>Fixes placement of global admin notices on the AI Atlas settings screen.<\/p>","1.0.17":"<p>Adds a Settings shortcut on the Plugins screen next to Deactivate.<\/p>","1.0.16":"<p>Advanced Settings: category and tag exclusions are now in a collapsible section at the bottom of the tab.<\/p>","1.0.15":"<p>If the plugin showed Pro locally but the store listed no activations after a URL or domain change, update and use <strong>Deactivate<\/strong> then <strong>Activate<\/strong> on the License tab once.<\/p>","1.0.14":"<p>If the plugin showed an active license but the store listed zero activations, update and use <strong>Deactivate<\/strong> then <strong>Activate<\/strong> once so activation uses a consistent instance and product id.<\/p>","1.0.13":"<p>Minor License tab sidebar cleanup when no error message is shown.<\/p>","1.0.12":"<p>License sidebar shows a short status message and a clearer Plan line after activation.<\/p>","1.0.11":"<p>Overview no longer shows license status or an Activate link\u2014open AI Atlas \u2192 License when you need to activate.<\/p>","1.0.10":"<p>Improves how the License tab derives \u201cused\u201d and \u201cleft\u201d from the API Manager response when fields disagree. WooCommerce My Account still shows whatever the store returns.<\/p>","1.0.9":"<p>If activation looked correct in the plugin but not on the store, update and activate again so the instance ID stays tied to your site when the product ID is detected.<\/p>","1.0.8":"<p>License tab shows activation usage from purchased vs remaining slots. Active keys appear as a masked, non-editable field.<\/p>","1.0.7":"<p>License overview and Pro detection now follow the live WooCommerce API Manager response and your saved key, not only local flags.<\/p>","1.0.6":"<p>Licensing defaults now include the live WooCommerce parent and variation product IDs. Use wp-config constants only if you need different IDs.<\/p>","1.0.5":"<p>If you relied on the old default license server host (atlasforai.com), set <strong>API base URL<\/strong> under AI Atlas \u2192 License (developer) or <code>AIA_LICENSE_API_BASE_URL<\/code> in wp-config.php. Multi-plan sites can list variation IDs for automatic product detection on activation.<\/p>","1.0.4":"<p>Licensing now uses the Kestrel API Manager PHP client. If you had only legacy license options saved, open <strong>AI Atlas \u2192 License<\/strong> and activate again with your API key.<\/p>","1.0.3":"<p>Fixes per-page <code>.md<\/code> blockquote summaries when page content begins with a shortcode.<\/p>","1.0.2":"<p>Adds uninstall cleanup, readme and privacy documentation, and translation support structure.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3561338,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3562120,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3562120,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.39","1.0.40","1.0.41","1.0.42","1.0.43"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[244526,2353,244604,4608,186],"plugin_category":[55],"plugin_contributors":[265859],"plugin_business_model":[],"class_list":["post-314444","plugin","type-plugin","status-publish","hentry","plugin_tags-aeo","plugin_tags-ai","plugin_tags-llms-txt","plugin_tags-markdown","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-wordherd","plugin_committers-wordherd"],"banners":{"banner":"https:\/\/ps.w.org\/wordherd-ai-atlas\/assets\/banner-772x250.jpg?rev=3562120","banner_2x":"https:\/\/ps.w.org\/wordherd-ai-atlas\/assets\/banner-1544x500.jpg?rev=3562120","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wordherd-ai-atlas\/assets\/icon-256x256.png?rev=3561338","icon_2x":"https:\/\/ps.w.org\/wordherd-ai-atlas\/assets\/icon-256x256.png?rev=3561338","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Atlas for WP helps AI read your site with predictable, text-friendly formats.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li><code>\/llms.txt<\/code> \u2014 a compact index of important URLs on your site<\/li>\n<li><code>\/llms.md<\/code> \u2014 a longer Markdown export combining multiple pages<\/li>\n<li><code>\/{slug}.md<\/code> \u2014 Markdown for an individual post or page (pretty permalinks)<\/li>\n<li><strong>Template-Based Content<\/strong> \u2014 Use flexible templates to control how your content is formatted and presented across your generated files.<\/li>\n<li><strong>Auto-Updates on Save<\/strong> \u2014 Hooks into WordPress save events. When a page or template changes, Atlas for WP refreshes all affected output files automatically.<\/li>\n<li><strong>Cache Timeout Control<\/strong> \u2014 Set your preferred cache duration to balance server performance with content freshness. You\u2019re in control.<\/li>\n<li><strong>First 10 Posts Free<\/strong> \u2014 Generate AI-ready Markdown for your first 10 posts at no cost. Perfect for portfolios, small businesses, and blogs just getting started.<\/li>\n<\/ul>\n\n<p><strong>WordPress admin<\/strong><\/p>\n\n<ul>\n<li>Settings organized into tabs (overview, your site, connection check)<\/li>\n<li>Connection check to verify your server can reach the same URLs visitors use<\/li>\n<\/ul>\n\n\n\n<p><strong>Upgrade to Atlas for WP Pro<\/strong><\/p>\n\n<ul>\n<li>Install <a href=\"https:\/\/atlasforai.com\/atlasforwp\/\">Atlas for WP Pro<\/a> (separate add-on) for licensing, advanced settings, custom sections, and extra content types.<\/li>\n<li><strong>Update Site Summary<\/strong> Edit the human and AI-facing summary that introduces your site in llms.txt. Make your first impression count.<\/li>\n<li><strong>All Content Types<\/strong> Pages and posts are just the start. Generate AI-ready files for WooCommerce products, portfolios, events, or any custom post type.<\/li>\n<li><strong>Content Groupings<\/strong> Organize and group content into logical sections in your output; categories, post types, or custom collections you define.<\/li>\n<li><strong>Publish &amp; Modified Date Control<\/strong> Choose whether to expose publish dates and last-modified timestamps per content type. Full control over what AI sees.<\/li>\n<li><strong>Blog Post Count Settings<\/strong> Configure exactly how many recent blog posts appear in your blog Markdown listing, match your content strategy, not a plugin default.<\/li>\n<li><strong>Custom Markdown Per Page<\/strong> Hand-craft the exact Markdown output for any individual page or custom post type. Override defaults, restructure content, and control precisely what AI tools read, page by page.<\/li>\n<\/ul>\n\n\n\n<p><strong>Powered by Atlas<\/strong><\/p>\n\n<p>Atlas for WP is part of <a href=\"https:\/\/atlasforai.com\/\">Atlas<\/a>: The AI Visibility Platform - a suite of tools built to track your AI visibility to help your content get found, read, and cited by AI assistants and search engines.<\/p>\n\n<ul>\n<li><strong>Get discovered in AI:<\/strong> make your content readable and citable by AI.<\/li>\n<li><strong>Unlock the full platform:<\/strong> <a href=\"https:\/\/atlasforai.com\/atlasforwp\/\">Atlas for WP Pro<\/a> adds custom content types, sections, and cache controls.<\/li>\n<li>Check your <a href=\"https:\/\/atlasforai.com\/ai-visibility-tracker\/\">AI Visibility for free<\/a><\/li>\n<li>Start a free <a href=\"https:\/\/my.atlasforai.com\/pricing\/\">AI visibility trial<\/a><\/li>\n<\/ul>\n\n\n\n<h3>Privacy<\/h3>\n\n<ul>\n<li><strong>Diagnostics:<\/strong> When you run a connection check from the admin, the plugin requests your own site\u2019s public URLs and stores a short-lived internal snapshot for display on that screen.<\/li>\n<li><strong>Markdown generation:<\/strong> For some pages, the plugin may request the rendered HTML of a public permalink on the same site to build Markdown.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>wordherd-ai-atlas<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install <strong>Atlas for WP<\/strong> from the Plugins screen in WordPress and choose <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>In the admin sidebar, open <strong>Atlas for WP<\/strong> and review the <strong>Overview<\/strong> tab.<\/li>\n<li>Visit <strong>Settings \u2192 Permalinks<\/strong> and click <strong>Save Changes<\/strong> once (no need to change anything). This flushes rewrite rules so <code>\/llms.txt<\/code>, <code>\/llms.md<\/code>, and <code>*.md<\/code> routes work reliably.<\/li>\n<li>Open <code>\/llms.txt<\/code> on your site in a new tab to confirm the index appears.<\/li>\n<\/ol>\n\n<p><strong>Requirements<\/strong><\/p>\n\n<ul>\n<li>WordPress 5.9 or newer<\/li>\n<li>PHP 8.0 or newer<\/li>\n<li>Pretty permalinks recommended (anything other than \u201cPlain\u201d)<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20llms.txt%20and%20why%20does%20it%20matter%3F\"><h3>What is llms.txt and why does it matter?<\/h3><\/dt>\n<dd><p>llms.txt is an emerging standard (similar to robots.txt) that tells AI language models about your site\u2019s structure and content. As AI assistants increasingly pull information from the web to answer questions, having a well-formed llms.txt improves how your site is understood and cited.<\/p><\/dd>\n<dt id=\"does%20this%20slow%20down%20my%20wordpress%20site%3F\"><h3>Does this slow down my WordPress site?<\/h3><\/dt>\n<dd><p>No. Atlas for WP generates files in the background and caches output. Generated Markdown and llms.txt files are static, so serving them adds virtually zero load to your server.<\/p><\/dd>\n<dt id=\"what%20counts%20as%20one%20of%20my%2010%20free%20posts%3F\"><h3>What counts as one of my 10 free posts?<\/h3><\/dt>\n<dd><p>Each WordPress post (of the default post type) that gets a generated Markdown file counts as one. Pages are not counted against the limit in the free tier.<\/p><\/dd>\n<dt id=\"why%20do%20my%20%60%2Fllms.txt%60%20or%20%60%2A.md%60%20urls%20show%20a%20404%3F\"><h3>Why do my `\/llms.txt` or `*.md` URLs show a 404?<\/h3><\/dt>\n<dd><p>Usually permalinks need to be flushed. Go to <strong>Settings \u2192 Permalinks<\/strong> and click <strong>Save Changes<\/strong>. If you use a caching plugin or reverse proxy, purge its cache after changing WH AI Atlas settings. Also, if the site or page is behind some kind of authentication, it will return a 404 error. The site has to be public in order for the plugin to read the page content.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20paid%20license%3F\"><h3>Do I need a paid license?<\/h3><\/dt>\n<dd><p>No. The free version generates \/llms.txt\u00a0 (including all pages and the 10 most recent posts),\u00a0 \/llms.md, and individual .md. In the free version, you can exclude individual <strong>pages<\/strong> from llms.txt and llms.md (not blog posts). A Pro license unlocks custom markdown override for content, additional content types, taxonomy exclusions, custom sections, cache controls, and related options. <a href=\"https:\/\/atlasforai.com\/atlasforwp\/\">Upgrade to Atlas for WP Pro \u2192<\/a><\/p><\/dd>\n<dt id=\"does%20pro%20support%20woocommerce%20products%3F\"><h3>Does Pro support WooCommerce products?<\/h3><\/dt>\n<dd><p>Yes. The Pro plan supports all registered custom post types, including WooCommerce products (product), events, portfolios, and any CPT registered by themes or other plugins.<\/p><\/dd>\n<dt id=\"how%20does%20the%20auto-update%20for%20content%20work%3F\"><h3>How does the auto-update for content work?<\/h3><\/dt>\n<dd><p>Atlas doesn\u2019t write files to your server. It listens for changes (for example when you save a post, page, or other content). When something relevant changes, the cached copy is rebuilt automatically. The next request to \/llms.txt, \/llms.md, or any .md URL triggers a fresh rebuild. Nothing runs on a schedule and nothing is sent to an external service.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20change%20how%20my%20theme%20looks%20to%20human%20visitors%3F\"><h3>Does the plugin change how my theme looks to human visitors?<\/h3><\/dt>\n<dd><p>No. It adds public text\/Markdown endpoints. Your theme and normal front-end pages are unchanged.<\/p><\/dd>\n<dt id=\"does%20this%20replace%20my%20xml%20sitemap%20or%20robots.txt%3F\"><h3>Does this replace my XML sitemap or robots.txt?<\/h3><\/dt>\n<dd><p>No. Atlas adds separate AI-oriented files. It can append a hint line to <code>robots.txt<\/code>; it does not remove other plugins\u2019 sitemap features.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20help%3F\"><h3>Where can I get help?<\/h3><\/dt>\n<dd><p>Use the WordPress.org support forum for this plugin.<\/p><\/dd>\n<dt id=\"what%20data%20leaves%20my%20site%3F\"><h3>What data leaves my site?<\/h3><\/dt>\n<dd><p>No data leaves your site for the free version. The diagnostics on the Connection tab request your own site\u2019s public URLs. The Pro license sends license-related requests to the Atlas license server.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.43<\/h4>\n\n<ul>\n<li>Changed: Tested up to WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.0.42<\/h4>\n\n<ul>\n<li>Changed: Plugin name to Atlas for WP (was AI Atlas).<\/li>\n<li>Fixed: Your site tab keeps Pro settings inside the save form and places Save changes after Pro fields (requires Atlas for WP Pro update).<\/li>\n<\/ul>\n\n<h4>1.0.41<\/h4>\n\n<ul>\n<li>Changed: Plugin name to AI Atlas (was WordHerd AI Atlas).<\/li>\n<li>Changed: Pro upsell notice Dismiss button padding; core X dismiss persists per user (same as Dismiss link).<\/li>\n<\/ul>\n\n<h4>1.0.40<\/h4>\n\n<ul>\n<li>Fixed: <code>\/index.md<\/code> no longer returns 404 when the homepage shows latest blog posts; serves a site summary with recent post links and a link to <code>\/llms.txt<\/code>.<\/li>\n<li>Changed: Overview tab explains what Home page (markdown) shows for blog vs static front page.<\/li>\n<\/ul>\n\n<h4>1.0.39<\/h4>\n\n<ul>\n<li>Changed: wp-admin sidebar menu icon updated to the trademark compass mark.<\/li>\n<\/ul>\n\n<h4>1.0.38<\/h4>\n\n<ul>\n<li>Changed: post editor meta box title is WordHerd AI Atlas (was WH AI Atlas).<\/li>\n<\/ul>\n\n<h4>1.0.37<\/h4>\n\n<ul>\n<li>Fixed: per-page <code>.md<\/code> blockquote summaries no longer include CSS from <code>&lt;style&gt;<\/code> blocks (for example Advanced Gutenberg); style\/script\/noscript markup is stripped before plain-text extraction.<\/li>\n<\/ul>\n\n<h4>1.0.36<\/h4>\n\n<ul>\n<li>Fixed: Overview tab Plan badge shows Pro only when the license is live-activated on the License tab, not when a stale Pro cache flag remains after deactivation.<\/li>\n<\/ul>\n\n<h4>1.0.35<\/h4>\n\n<ul>\n<li>Fixed: false llms.txt conflict notice on new installs \u2014 re-checks live \/llms.txt before showing the warning, defers the activation probe to the first admin request, and ignores HTML loopback responses that are not a real llms.txt file.<\/li>\n<\/ul>\n\n<h4>1.0.34<\/h4>\n\n<ul>\n<li>Added: custom compass SVG admin menu icon (matches wp-admin menu icon gray).<\/li>\n<li>Changed: admin page heading shows WordHerd AI Atlas (sidebar label remains WH AI Atlas).<\/li>\n<\/ul>\n\n<h4>1.0.33<\/h4>\n\n<ul>\n<li>Fixed: llms.txt conflict notice no longer appears when WordHerd AI Atlas is serving the file (recognizes the current attribution line).<\/li>\n<\/ul>\n\n<h4>1.0.32<\/h4>\n\n<ul>\n<li>Changed: product display names use WordHerd AI Atlas \/ WordHerd AI Atlas Pro; admin menu label WH AI Atlas (below Settings); cross-references between free and Pro plugins updated.<\/li>\n<\/ul>\n\n<h4>1.0.31<\/h4>\n\n<ul>\n<li>Changed: taxonomy exclusions and Pro admin styles live in AI Atlas Pro only; free tier clamps cache and Pro options when unlicensed.<\/li>\n<li>Changed: Pro upsell notice uses CSS classes; Dismiss button has an accessibility label.<\/li>\n<\/ul>\n\n<h4>1.0.30<\/h4>\n\n<ul>\n<li>Fixed: WordPress Plugin Check compliance (readme title matches plugin header; admin notice and router input sanitization; uninstall user-meta cleanup via core API; removed redundant load_plugin_textdomain call under WordPress 4.6+).<\/li>\n<\/ul>\n\n<h4>1.0.29<\/h4>\n\n<ul>\n<li>Fixed: llms.txt summaries from HTML content keep spaces between sections (card grids and headings no longer cram words together).<\/li>\n<\/ul>\n\n<h4>1.0.28<\/h4>\n\n<ul>\n<li>Fixed: llms.txt and Markdown titles\/summaries show <code>&amp;<\/code>, ellipses, and other characters instead of HTML entity codes (<code>&amp;amp;<\/code>, <code>&amp;#038;<\/code>, <code>&amp;hellip;<\/code>, etc.).<\/li>\n<\/ul>\n\n<h4>1.0.27<\/h4>\n\n<ul>\n<li>Changed: Pro upsell Dismiss hides the notice on the current admin screen (AJAX) instead of redirecting to AI Atlas settings.<\/li>\n<\/ul>\n\n<h4>1.0.26<\/h4>\n\n<ul>\n<li>Changed: Yoast llms.txt conflict notice now says Yoast SEO is generating the \/llms.txt file.<\/li>\n<\/ul>\n\n<h4>1.0.25<\/h4>\n\n<ul>\n<li>Added: detect when another plugin or static file serves \/llms.txt (Yoast SEO and other sources); admin warning with steps to fix.<\/li>\n<li>Changed: llms.txt attribution line identifies the file as a site index for AI assistants.<\/li>\n<\/ul>\n\n<h4>1.0.24<\/h4>\n\n<ul>\n<li>Performance: public AI URLs send Cache-Control headers aligned with the plugin cache TTL (browsers\/CDNs may cache until that interval).<\/li>\n<li>Security: template HTML fallback only fetches permalinks on the same host as the site; League Markdown fallback sanitizes link URLs; <code>the_content<\/code> runs with correct post context.<\/li>\n<li>Accessibility: connection check shows OK\/Failed labels, not color alone.<\/li>\n<li>Pro: license summary cached for 60 seconds (refresh still updates on demand).<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>Security: admin form handlers require the AI Atlas settings screen; failed nonces return HTTP 403. Markdown links and images sanitize URLs (http, https, mailto).<\/li>\n<li>Performance: admin classes load only in wp-admin; cache clears only for relevant post types; connection check runs only after you click Run check now.<\/li>\n<li>Accessibility: settings tabs include ARIA wiring and keyboard focus between tabs; Pro picker rows support arrow-key reorder.<\/li>\n<li>Privacy: export\/erase hooks for per-user upsell dismiss meta; uninstall removes dismiss user meta.<\/li>\n<li>Registered <code>_wh_aiatlas_exclude<\/code> post meta with auth callbacks.<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>Admin: removed Pro-only picker\/sortable JavaScript from the free package (handled by AI Atlas Pro when licensed).<\/li>\n<li>FAQ: clarified that excluding content from llms.txt \/ llms.md applies to <strong>pages<\/strong> in the free version only.<\/li>\n<\/ul>\n\n<h4>1.0.21<\/h4>\n\n<ul>\n<li><strong>Breaking:<\/strong> Renamed all plugin identifiers to the <code>wh_aiatlas<\/code> prefix (functions, hooks, options, classes, admin slug <code>wh_aiatlas<\/code>, asset handles). Existing settings and post meta are not migrated; re-save settings after updating. Deactivate the legacy <code>ai-atlas<\/code> plugin if present to avoid PHP conflicts.<\/li>\n<li>Text domain strings now use <code>wordherd-ai-atlas<\/code>; <code>load_plugin_textdomain()<\/code> added.<\/li>\n<li>Added <code>ABSPATH<\/code> guards on generator and cache classes; meta save skips post revisions.<\/li>\n<\/ul>\n\n<h4>1.0.20<\/h4>\n\n<ul>\n<li>Freemium split: licensing and Pro features moved to the separate <strong>AI Atlas Pro<\/strong> add-on. Free plugin adds extension hooks and a dismissible Pro upsell notice; core llms.txt, llms.md, and Markdown URLs remain fully available without Pro.<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li>Renamed plugin to include WordHerd brand name.<\/li>\n<\/ul>\n\n<h4>1.0.18<\/h4>\n\n<ul>\n<li>Admin: other plugins\u2019 global admin notices now appear below the AI Atlas page title instead of inside the Your site tab above \u201cClear cached responses\u201d.<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li>Plugins screen: Settings link on the AI Atlas row (next to Deactivate), opening the plugin admin page.<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li>Admin (Advanced Settings): Exclude by category or tag is at the bottom of the tab inside a collapsible accordion (closed by default).<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>Licensing: when the site URL changes (clone, HTTPS switch, domain move), reset WC-AM instance ids and local \u201cactivated\u201d state so the store can sync after Deactivate then Activate on the License tab. Successful activation saves <code>{data_key}_instance_site_identity<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Licensing: before calling WooCommerce API Manager <code>activate<\/code>, reuse the instance ID from the default slug client option (<code>wc_am_client_ai_atlas_instance<\/code>) when it differs from the current product\u2019s <code>*_instance<\/code> so status probes and activation share one site identity (helps the store record activations). Activation requests now always send explicit <code>product_id<\/code> and <code>product_parent_id<\/code> (when set). Filters: <code>wh_aiatlas_license_sync_legacy_slug_instance<\/code>, <code>wh_aiatlas_license_legacy_instance_option_keys<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Admin (License tab): do not render the bordered error box in the summary when there is no error text (avoids an empty description block).<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Admin (License tab): under Status, show the API summary message (for example \u201cLicense is active.\u201d). Plan row now appears for every active or activation-limited state, with Pro vs Free labels instead of a raw slug.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Admin (Overview): removed the License row and Activate shortcut; use the License tab to manage activation.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Licensing: activation summary uses purchased minus remaining first (avoids sticking on 0 used when <code>total_activations<\/code> is still 0); for active keys that still look \u201cfully unused,\u201d assume one seat in use and align remaining with the limit. My Account still reflects the store API\u2014fix inconsistent counts there on the server if needed.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Licensing: after product ID auto-detect, carry the existing WC-AM <code>*_instance<\/code> ID to the new <code>data_key<\/code> (same pattern as WordWall when the dynamic key changes) so status probes and <code>activate()<\/code> use one site identity and the store records the activation.<\/li>\n<li>Licensing: deactivation sends explicit <code>product_id<\/code> \/ <code>product_parent_id<\/code> with the API key; activation success treats boolean-like <code>activated<\/code>\/<code>success<\/code> values from JSON like WordWall.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Licensing: activation count in the admin summary uses purchased minus remaining (matches WooCommerce API Manager semantics) when both values exist.<\/li>\n<li>Admin (License): when a license is active or activation limit is reached, the key field is read-only, disabled, and shown as a bullet mask; Activate is disabled.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Licensing: treat Pro and \u201cActive\u201d only when a license key is stored and the live API reports activation; avoid stale local flags. License tab no longer shows \u201cPro on this site\u201d \/ Yes\u2013No. \u201cLast status check\u201d appears only after a successful check with an active or exhausted license; cron no longer records a check time when no key is saved.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Licensing: ship default <code>AIA_LICENSE_PRODUCT_PARENT_ID<\/code> (639) and <code>AIA_LICENSE_PRODUCT_IDS<\/code> variation list (2443, 2444, 2421, 2447, 2423, 2449) for activation auto-detect; override in wp-config.php if your catalog differs.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Licensing: default license API \/ storefront host is now https:\/\/atlasforai.com\/ (wp-config and saved developer URL still override).<\/li>\n<li>Licensing: optional multi\u2013product ID list (wp-config <code>AIA_LICENSE_PRODUCT_IDS<\/code> or License tab \u201cProduct IDs\u201d) triggers activation-time status probes so the correct variation is written to Product ID before activate (skipped when <code>AIA_LICENSE_PRODUCT_ID<\/code> is set in wp-config).<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Licensing: integrate the official WooCommerce API Manager PHP client for activation\/deactivation\/status; remove the legacy custom API client and duplicate activation paths.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Per-page Markdown summaries: strip registered shortcodes before building the optional blockquote excerpt so leading shortcodes no longer appear as literal text in <code>\/{slug}.md<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Expanded <code>readme.txt<\/code> with installation steps, FAQ, privacy summary, and screenshot placeholders.<\/li>\n<li>Added expanded <strong>Privacy<\/strong> section in this readme, <code>uninstall.php<\/code>, and directory <code>index.php<\/code> stubs for packaging hygiene.<\/li>\n<li>Added translation loading (<code>languages\/<\/code>; English strings unchanged).<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Public endpoints for AI-friendly content: site index at <code>\/llms.txt<\/code>, full export at <code>\/llms.md<\/code>, and clean Markdown per post or page at <code>\/{slug}.md<\/code>.<\/li>\n<li>Admin settings organized into tabs (overview, your site, connection check, license, advanced) with clearer copy and short success notices after saving.<\/li>\n<li>Connection check tab runs diagnostics when you need them.<\/li>\n<li>Smarter Markdown generation when page body content is thin, including better handling of blocks and rendered page content.<\/li>\n<li>Routing and caching improvements so generated files stay consistent and refresh when settings change.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial implementation.<\/li>\n<\/ul>","raw_excerpt":"Make your website easier for AI to recommend. Automatically generate llms.txt, llms.md, and per-page markdown for WordPress content.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/314444","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=314444"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wordherd"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=314444"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=314444"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=314444"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=314444"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=314444"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=314444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}