[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fjmWTrtfAYkjgHywsj-7mqckgWFlNV5iihUbf_bxXu8U":3},{"slug":4,"display_name":4,"profile_url":5,"plugin_count":6,"total_installs":7,"avg_security_score":8,"avg_patch_time_days":9,"trust_score":10,"computed_at":11,"plugins":12},"tommyoz12","https:\u002F\u002Fprofiles.wordpress.org\u002Ftommyoz12\u002F",1,0,100,30,94,"2026-04-06T10:59:29.210Z",[13],{"slug":14,"name":15,"version":16,"author":4,"author_profile":5,"description":17,"short_description":18,"active_installs":7,"downloaded":19,"rating":7,"num_ratings":7,"last_updated":20,"tested_up_to":21,"requires_at_least":22,"requires_php":23,"tags":24,"homepage":30,"download_link":31,"security_score":8,"vuln_count":7,"unpatched_count":7,"last_vuln_date":32,"fetched_at":33},"ai-only-pages","AI-Only Pages","1.3.3","\u003Cp>AI-Only Pages gives you granular control over which search engine bots can index each page on your WordPress site — while simultaneously making those pages more discoverable and useful for AI crawlers like ChatGPT, Claude, and Perplexity.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>The core idea:\u003C\u002Fstrong> you have content that is perfect for AI training pipelines and retrieval-augmented generation (RAG) systems, but you do not want that content competing for rankings in Google, Bing, or Yahoo.\u003C\u002Fp>\n\u003Cp>AI-Only Pages lets you mark those pages as AI-only: they disappear from traditional search engine indexes while becoming first-class citizens in the AI ecosystem.\u003C\u002Fp>\n\u003Ch4>What it does\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Per-bot noindex\u003C\u002Fstrong> — Block individual bots (Googlebot, Bingbot, Yandexbot, etc.) with a checkbox per bot per page. Checking one bot blocks it; the others still index normally.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>“Block All” master toggle\u003C\u002Fstrong> — One click blocks all 10 supported search engine bots simultaneously.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>\u003Cmeta>\u003C\u002Fcode> tags and HTTP headers\u003C\u002Fstrong> — Both \u003Ccode>\u003Cmeta name=\"googlebot\" content=\"noindex, nofollow\">\u003C\u002Fcode> HTML meta tags and \u003Ccode>X-Robots-Tag\u003C\u002Fcode> HTTP headers are emitted, covering all crawling contexts. Works correctly on all public post types including Pages and custom post types.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>SEO plugin integration\u003C\u002Fstrong> — Suppresses Yoast SEO, WP Core, and RankMath’s global \u003Ccode>\u003Cmeta name=\"robots\">\u003C\u002Fcode> tag on AI-only pages so there is no conflict between the global tag and your per-bot tags.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Sitemap exclusion\u003C\u002Fstrong> — AI-Only pages are automatically removed from all XML sitemaps (Yoast SEO and WP Core sitemaps are both supported).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>\u002Fllms-index.txt\u003C\u002Fcode>\u003C\u002Fstrong> — A plain-text AI discovery file served at \u003Ccode>yoursite.com\u002Fllms-index.txt\u003C\u002Fcode> listing all AI-only pages with their titles and last-modified dates. AI crawlers can use this file to find your AI-optimised content directly. Can be toggled on\u002Foff from the settings page.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Token Diet — clean AI output\u003C\u002Fstrong> — When an AI crawler visits an AI-only page, the plugin serves a cleaned version of the HTML with navigation, sidebars, footers, cookie banners, inline styles, SVGs, and iframes stripped out. AI models receive pure content with minimal noise.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Global Settings Page\u003C\u002Fstrong> — A top-level “AI-Only Pages” menu in the WordPress admin sidebar lets you configure Token Diet and LLM Index behaviour globally, without touching code.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Caching plugin notice\u003C\u002Fstrong> — If WP Rocket, LiteSpeed Cache, or another full-page caching plugin is detected, an admin notice explains how to configure it to work alongside this plugin.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>The Settings Page\u003C\u002Fh4>\n\u003Cp>A full settings page is available under \u003Cstrong>AI-Only Pages\u003C\u002Fstrong> in the WordPress admin sidebar. It provides:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Section 1 — Instructions & Status:\u003C\u002Fstrong> A “How It Works” guide covering the meta box, Token Diet, and LLM Index. A live, clickable URL to your \u003Ccode>\u002Fllms-index.txt\u003C\u002Fcode> file with a green\u002Fred status indicator showing whether the index is active.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Section 2 — LLM Index Settings:\u003C\u002Fstrong> A toggle to enable or disable \u003Ccode>\u002Fllms-index.txt\u003C\u002Fcode> globally. When disabled, the endpoint returns a 404.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Section 3 — Token Diet Master Control:\u003C\u002Fstrong> A master toggle to enable or disable Token Diet entirely. When off, AI bots receive raw, full HTML — identical to what human visitors see.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Section 4 — Granular Token Diet Stripping:\u003C\u002Fstrong> Individual toggles for each category of content stripped:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Strip structural layout (headers, footers, sidebars, navigation, cookie banners)\u003C\u002Fli>\n\u003Cli>Strip \u003Ccode>\u003Cstyle>\u003C\u002Fcode> tags and embedded CSS\u003C\u002Fli>\n\u003Cli>Strip \u003Ccode>\u003Csvg>\u003C\u002Fcode> elements (major token bloaters)\u003C\u002Fli>\n\u003Cli>Strip \u003Ccode>\u003Ciframe>\u003C\u002Fcode> elements (maps, embeds, social widgets)\u003C\u002Fli>\n\u003Cli>Strip \u003Ccode>\u003Cform>\u003C\u002Fcode> elements \u003Cem>(Warning: removes WooCommerce Add to Cart buttons)\u003C\u002Fem>\u003C\u002Fli>\n\u003Cli>Strip \u003Ccode>\u003Cscript>\u003C\u002Fcode> tags \u003Cem>(Note: \u003Ccode>application\u002Fld+json\u003C\u002Fcode> schema is always preserved)\u003C\u002Fem>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Supported Search Engine Bots\u003C\u002Fh4>\n\u003Cp>Googlebot (Web), Googlebot-Image, Googlebot-News, Googlebot-Video, AdsBot-Google, Bingbot, Slurp (Yahoo), DuckDuckBot, Baiduspider, YandexBot.\u003C\u002Fp>\n\u003Ch4>AI Bots Welcomed\u003C\u002Fh4>\n\u003Cp>GPTBot, ChatGPT-User, ClaudeBot, PerplexityBot, YouBot, Meta-ExternalAgent, Amazonbot, Bytespider, Diffbot, cohere-ai, anthropic-ai, AI2Bot, OAI-SearchBot, and more. These bots are detected automatically and served cleaned content when they visit an AI-only page.\u003C\u002Fp>\n\u003Ch4>Developer-Friendly\u003C\u002Fh4>\n\u003Cp>Every major behaviour is extensible via WordPress filters. See the \u003Cstrong>Developer Reference\u003C\u002Fstrong> section below. The Settings class hooks into filters at priority 5, leaving priorities 10 and above free for developer overrides — so your custom \u003Ccode>add_filter()\u003C\u002Fcode> calls always win.\u003C\u002Fp>\n\u003Ch3>Using the Plugin\u003C\u002Fh3>\n\u003Ch4>Per-page control\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Open any post or page in the WordPress editor.\u003C\u002Fli>\n\u003Cli>Find the \u003Cstrong>AI-Only Pages\u003C\u002Fstrong> meta box in the right sidebar.\u003C\u002Fli>\n\u003Cli>Check individual bots to block them, or use \u003Cstrong>Block from ALL search engine bots\u003C\u002Fstrong> to check all at once.\u003C\u002Fli>\n\u003Cli>Click \u003Cstrong>Publish\u003C\u002Fstrong> or \u003Cstrong>Update\u003C\u002Fstrong> to save. The noindex tags take effect immediately.\u003C\u002Fli>\n\u003Cli>Visit \u003Ccode>yoursite.com\u002Fllms-index.txt\u003C\u002Fcode> to confirm your page appears in the AI content index.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> The master toggle requires JavaScript. The individual checkboxes always work regardless of JS state.\u003C\u002Fp>\n\u003Ch4>Global settings\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Go to \u003Cstrong>AI-Only Pages\u003C\u002Fstrong> in the WordPress admin sidebar.\u003C\u002Fli>\n\u003Cli>Review the “How It Works” section and confirm your \u003Ccode>\u002Fllms-index.txt\u003C\u002Fcode> URL is live.\u003C\u002Fli>\n\u003Cli>Use the \u003Cstrong>LLM Index Settings\u003C\u002Fstrong> card to enable or disable the discovery file.\u003C\u002Fli>\n\u003Cli>Use the \u003Cstrong>Token Diet — Master Control\u003C\u002Fstrong> card to enable or disable all output cleaning.\u003C\u002Fli>\n\u003Cli>Use the \u003Cstrong>Token Diet — Granular Stripping\u003C\u002Fstrong> card to select exactly which HTML elements are stripped from AI output.\u003C\u002Fli>\n\u003Cli>Click \u003Cstrong>Save Settings\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Developer Reference\u003C\u002Fh3>\n\u003Cp>All filters are applied inside \u003Ccode>AIOnly\\Pages\\Plugin\u003C\u002Fcode>. The Settings class hooks at priority 5; standard developer priority is 10+.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>aionly_ai_crawler_signatures\u003C\u002Fcode>\u003C\u002Fstrong>\u003Cbr \u002F>\nArray of User-Agent substrings used for Layer 1 bot detection.\u003Cbr \u002F>\n    @param string[] $signatures\u003Cbr \u002F>\n    @return string[]\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>aionly_strip_selectors\u003C\u002Fcode>\u003C\u002Fstrong>\u003Cbr \u002F>\nCSS-style selector strings passed to Pass 1 of Token Diet (structural removal). Supports element tag, #id, and .class (one class, no combinators).\u003Cbr \u002F>\n    @param string[] $selectors\u003Cbr \u002F>\n    @return string[]\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>aionly_strip_token_bloat_tags\u003C\u002Fcode>\u003C\u002Fstrong>\u003Cbr \u002F>\nXPath query strings passed to Pass 2 of Token Diet (tag removal).\u003Cbr \u002F>\n    @param string[] $queries\u003Cbr \u002F>\n    @return string[]\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>aionly_allowed_attributes\u003C\u002Fcode>\u003C\u002Fstrong>\u003Cbr \u002F>\nHTML attribute names kept on every element by Pass 3 of Token Diet. Everything else is stripped.\u003Cbr \u002F>\n    @param string[] $attributes\u003Cbr \u002F>\n    @return string[]\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>aionly_should_clean_output\u003C\u002Fcode>\u003C\u002Fstrong>\u003Cbr \u002F>\nBoolean. Return false to disable Token Diet entirely for a specific post.\u003Cbr \u002F>\n    @param bool     $enabled  Default: true.\u003Cbr \u002F>\n    @param \\WP_Post $post\u003Cbr \u002F>\n    @return bool\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>aionly_enable_xrobots_headers\u003C\u002Fcode>\u003C\u002Fstrong>\u003Cbr \u002F>\nBoolean. Return false to suppress X-Robots-Tag HTTP headers.\u003Cbr \u002F>\n    @param bool     $enabled  Default: true.\u003Cbr \u002F>\n    @param \\WP_Post $post\u003Cbr \u002F>\n    @return bool\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>aionly_cache_ttl\u003C\u002Fcode>\u003C\u002Fstrong>\u003Cbr \u002F>\nFilter the transient TTL in seconds.\u003Cbr \u002F>\n    @param int $ttl  Default: 600 (10 minutes).\u003Cbr \u002F>\n    @return int\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>aionly_llms_index_lines\u003C\u002Fcode>\u003C\u002Fstrong>\u003Cbr \u002F>\nFilter the array of text lines that make up llms-index.txt before output.\u003Cbr \u002F>\n    @param string[] $lines       Array of lines (including comment lines).\u003Cbr \u002F>\n    @param int[]    $active_ids  Post IDs included in the index.\u003Cbr \u002F>\n    @return string[]\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>aionly_supported_post_types\u003C\u002Fcode>\u003C\u002Fstrong>\u003Cbr \u002F>\nArray of public post type slugs the plugin should support.\u003Cbr \u002F>\n    @param string[] $post_types\u003Cbr \u002F>\n    @return string[]\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ccode>aionly_use_heuristic_bot_detection\u003C\u002Fcode>\u003C\u002Fstrong>\u003Cbr \u002F>\nBoolean. Return false to disable Layer 2 heuristic bot detection.\u003Cbr \u002F>\n    @param bool $enabled  Default: true.\u003Cbr \u002F>\n    @return bool\u003C\u002Fp>\n\u003Ch4>Code Examples\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Disable heuristic bot detection (uptime monitors):\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'aionly_use_heuristic_bot_detection', '__return_false' );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Preserve WooCommerce forms (developer override — wins over settings page):\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'aionly_strip_token_bloat_tags', function( $queries ) {\n    return array_filter( $queries, function( $q ) {\n        return $q !== '\u002F\u002Fform';\n    } );\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Add a custom strip selector:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'aionly_strip_selectors', function( $selectors ) {\n    $selectors[] = '.advertisement';\n    $selectors[] = '#newsletter-popup';\n    return $selectors;\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Keep \u003Ccode>class\u003C\u002Fcode> attributes in AI output:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'aionly_allowed_attributes', function( $attrs ) {\n    $attrs[] = 'class';\n    return $attrs;\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Add a custom AI crawler signature:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'aionly_ai_crawler_signatures', function( $sigs ) {\n    $sigs[] = 'FutureBot';\n    return $sigs;\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Restrict to specific post types:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'aionly_supported_post_types', function( $types ) {\n    return [ 'post', 'page' ]; \u002F\u002F Only posts and pages.\n} );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Disable Token Diet on a specific post (always wins, priority 10 > settings priority 5):\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter( 'aionly_should_clean_output', function( $enabled, $post ) {\n    if ( 42 === $post->ID ) {\n        return false; \u002F\u002F Post 42 serves full HTML to AI bots.\n    }\n    return $enabled;\n}, 10, 2 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Read a single setting value in custom code:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$token_diet_on = '1' === \\AIOnly\\Pages\\Settings::get( 'token_diet_enabled' );\n$all_settings  = \\AIOnly\\Pages\\Settings::get_settings(); \u002F\u002F Full array.\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Mark any page as AI-only. Hidden from search engines, optimized for AI crawlers, listed in \u002Fllms-index.txt. Includes Token Diet and global settings.",201,"2026-03-12T07:40:00.000Z","6.7.5","5.5","7.4",[25,26,27,28,29],"ai","llm","noindex","robots","seo","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fai-only-pages.1.3.3.zip",null,"2026-04-06T09:54:40.288Z"]