AI-Only Pages
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. The core idea: 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. 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. What it does Per-bot noindex — Block individual bots (Googlebot, Bingbot, Yandexbot, etc.) with a checkbox per bot per page. Checking one bot blocks it; the others still index normally. “Block All” master toggle — One click blocks all 10 supported search engine bots simultaneously. tags and HTTP headers — Both HTML meta tags and X-Robots-Tag HTTP headers are emitted, covering all crawling contexts. Works correctly on all public post types including Pages and custom post types. SEO plugin integration — Suppresses Yoast SEO, WP Core, and RankMath’s global tag on AI-only pages so there is no conflict between the global tag and your per-bot tags. Sitemap exclusion — AI-Only pages are automatically removed from all XML sitemaps (Yoast SEO and WP Core sitemaps are both supported). /llms-index.txt — A plain-text AI discovery file served at yoursite.com/llms-index.txt 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/off from the settings page. Token Diet — clean AI output — 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. Global Settings Page — 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. Caching plugin notice — 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. The Settings Page A full settings page is available under AI-Only Pages in the WordPress admin sidebar. It provides: Section 1 — Instructions & Status: A “How It Works” guide covering the meta box, Token Diet, and LLM Index. A live, clickable URL to your /llms-index.txt file with a green/red status indicator showing whether the index is active. Section 2 — LLM Index Settings: A toggle to enable or disable /llms-index.txt globally. When disabled, the endpoint returns a 404. Section 3 — Token Diet Master Control: A master toggle to enable or disable Token Diet entirely. When off, AI bots receive raw, full HTML — identical to what human visitors see. Section 4 — Granular Token Diet Stripping: Individual toggles for each category of content stripped: Strip structural layout (headers, footers, sidebars, navigation, cookie banners) Strip tags and embedded CSS Strip elements (major token bloaters) Strip elements (maps, embeds, social widgets) Strip elements (Warning: removes WooCommerce Add to Cart buttons) Strip tags (Note: application/ld+json schema is always preserved) Supported Search Engine Bots Googlebot (Web), Googlebot-Image, Googlebot-News, Googlebot-Video, AdsBot-Google, Bingbot, Slurp (Yahoo), DuckDuckBot, Baiduspider, YandexBot. AI Bots Welcomed 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. Developer-Friendly Every major behaviour is extensible via WordPress filters. See the Developer Reference section below. The Settings class hooks into filters at priority 5, leaving priorities 10 and above free for developer overrides — so your custom add_filter() calls always win. Using the Plugin Per-page control Open any post or page in the WordPress editor. Find the AI-Only Pages meta box in the right sidebar. Check individual bots to block them, or use Block from ALL search engine bots to check all at once. Click Publish or Update to save. The noindex tags take effect immediately. Visit yoursite.com/llms-index.txt to confirm your page appears in the AI content index. Note: The master toggle requires JavaScript. The individual checkboxes always work regardless of JS state. Global settings Go to AI-Only Pages in the WordPress admin sidebar. Review the “How It Works” section and confirm your /llms-index.txt URL is live. Use the LLM Index Settings card to enable or disable the discovery file. Use the Token Diet — Master Control card to enable or disable all output cleaning. Use the Token Diet — Granular Stripping card to select exactly which HTML elements are stripped from AI output. Click Save Settings. Developer Reference All filters are applied inside AIOnly\Pages\Plugin. The Settings class hooks at priority 5; standard developer priority is 10+. aionly_ai_crawler_signatures Array of User-Agent substrings used for Layer 1 bot detection. @param string[] $signatures @return string[] aionly_strip_selectors CSS-style selector strings passed to Pass 1 of Token Diet (structural removal). Supports element tag, #id, and .class (one class, no combinators). @param string[] $selectors @return string[] aionly_strip_token_bloat_tags XPath query strings passed to Pass 2 of Token Diet (tag removal). @param string[] $queries @return string[] aionly_allowed_attributes HTML attribute names kept on every element by Pass 3 of Token Diet. Everything else is stripped. @param string[] $attributes @return string[] aionly_should_clean_output Boolean. Return false to disable Token Diet entirely for a specific post. @param bool $enabled Default: true. @param \WP_Post $post @return bool aionly_enable_xrobots_headers Boolean. Return false to suppress X-Robots-Tag HTTP headers. @param bool $enabled Default: true. @param \WP_Post $post @return bool aionly_cache_ttl Filter the transient TTL in seconds. @param int $ttl Default: 600 (10 minutes). @return int aionly_llms_index_lines Filter the array of text lines that make up llms-index.txt before output. @param string[] $lines Array of lines (including comment lines). @param int[] $active_ids Post IDs included in the index. @return string[] aionly_supported_post_types Array of public post type slugs the plugin should support. @param string[] $post_types @return string[] aionly_use_heuristic_bot_detection Boolean. Return false to disable Layer 2 heuristic bot detection. @param bool $enabled Default: true. @return bool Code Examples Disable heuristic bot detection (uptime monitors): add_filter( 'aionly_use_heuristic_bot_detection', '__return_false' ); Preserve WooCommerce forms (developer override — wins over settings page): add_filter( 'aionly_strip_token_bloat_tags', function( $queries ) { return array_filter( $queries, function( $q ) { return $q !== '//form'; } ); } ); Add a custom strip selector: add_filter( 'aionly_strip_selectors', function( $selectors ) { $selectors[] = '.advertisement'; $selectors[] = '#newsletter-popup'; return $selectors; } ); Keep class attributes in AI output: add_filter( 'aionly_allowed_attributes', function( $attrs ) { $attrs[] = 'class'; return $attrs; } ); Add a custom AI crawler signature: add_filter( 'aionly_ai_crawler_signatures', function( $sigs ) { $sigs[] = 'FutureBot'; return $sigs; } ); Restrict to specific post types: add_filter( 'aionly_supported_post_types', function( $types ) { return [ 'post', 'page' ]; // Only posts and pages. } ); Disable Token Diet on a specific post (always wins, priority 10 > settings priority 5): add_filter( 'aionly_should_clean_output', function( $enabled, $post ) { if ( 42 === $post->ID ) { return false; // Post 42 serves full HTML to AI bots. } return $enabled; }, 10, 2 ); Read a single setting value in custom code: $token_diet_on = '1' === \AIOnly\Pages\Settings::get( 'token_diet_enabled' ); $all_settings = \AIOnly\Pages\Settings::get_settings(); // Full array.
Top keywords
- return22×1.79%
- ai17×1.38%
- post17×1.38%
- token17×1.38%
- pages16×1.30%
- settings16×1.30%
- diet15×1.22%
- token diet14×1.14%
- aionly13×1.06%
- param13×1.06%
- ai-only12×0.98%
- string12×0.98%
noindex SEO
Fine-grained control over how search engines index and display your WordPress content. Apply 5 independent robots directives to 22 different page contexts with flexible implementation methods. 5 Robots Directives: noindex: Prevent search engines from indexing the page nofollow: Prevent search engines from following links on the page noarchive: Prevent search engines from showing cached versions nosnippet: Prevent search engines from showing text snippets in results noimageindex: Prevent search engines from indexing images on the page Implementation Methods: HTML Meta Tags: Traditional method, easy to verify in page source (default) HTTP Headers: More robust, works with all content types including PDFs and images Both: Maximum compatibility for all scenarios Control Levels: Global Settings: Apply directives to 22 different page contexts (posts, pages, archives, etc.) Granular Control (Optional): Override global settings for individual posts, pages, and custom post types via meta boxes in the editor Perfect for: Blocking indexing of attachment pages while allowing link following Preventing duplicate content issues with flexible directive combinations Controlling archive page indexing with granular control Managing pagination SEO with independent settings Protecting private content from search engine caching Preventing snippet display while still indexing content Main pages Front Page: Block the indexing of the site’s front page. Home: Block the indexing of the site’s home page. Pages and Posts Page: Block the indexing of the site’s pages. Privacy Policy: Block the indexing of the site’s privacy policy page. Single: Block the indexing of a post on the site. Singular: Block the indexing of a post or a page of the site. Taxonomies Category: Block the indexing of the site categories. The lists where the posts appear. Tag: Block the indexing of the site’s tags. The lists where the posts appear. Dates Date: Block the indexing when any date-based archive page (i.e. a monthly, yearly, daily or time-based archive) of the site. The lists where the posts appear. Day: Block the indexing when a daily archive of the site. The lists where the posts appear. Month: Block the indexing when a monthly archive of the site. The lists where the posts appear. Time: Block the indexing when an hourly, “minutely”, or “secondly” archive of the site. The lists where the posts appear. Year: Block the indexing when a yearly archive of the site. The lists where the posts appear. Archives Archive: Block the indexing of any type of Archive page. Category, Tag, Author and Date based pages are all types of Archives. The lists where the posts appear. Author: Block the indexing of the author’s page, where the author’s publications appear. Post Type Archive: Block the indexing of any post type page. Pagination Pagination: Block the indexing of the pagination, i.e. all pages other than the main page of an archive. Search Search: Block the indexing of the internal search result pages. Attachments Attachment: Block the indexing of an attachment document to a post or page. An attachment is an image or other file uploaded through the post editor’s upload utility. Attachments can be displayed on their own “page” or template. This will not cause the indexing of the image or file to be blocked. Previews Customize Preview: Block the indexing when a content is being displayed in customize mode. Preview: Block the indexing when a single post is being displayed in draft mode. Error Page Error 404: This will cause an error page to be blocked from being indexed. As it is an error page, it should not be indexed per se, but just in case. Important note: if you have any doubt about any of the following items it is best not to activate the option as you could lose results in the search engines. Using the plugin REST API The plugin exposes two read-only endpoints under /wp-json/noindex-seo/v1/ so headless consumers can read the configuration: GET /settings: returns the consolidated settings array (contexts and directives plus config). Requires an authenticated user with the manage_options capability. GET /effective?post_id=123: returns the list of active directives for a specific post, computed with the same precedence used on the front-end (per-post override, then per-post-type default, then the built-in context). Public only for published, non-password-protected posts; everything else requires edit_post capabilities. On WordPress versions with XML sitemaps (5.5+), URLs that are noindexed are automatically excluded from the core sitemaps. Compatibility WordPress: 4.0 – 7.1 PHP: 5.6 – 8.5 Compliance This plugin adheres to the following security measures and review protocols for each version: WordPress Plugin Handbook WordPress Plugin Security WordPress APIs Security WordPress Coding Standards Plugin Check (PCP) Privacy This plugin does not collect any information about your site, your identity, the plugins, themes or content the site has. Vulnerabilities No vulnerabilities have been published up to version 3.1.3. Found a security vulnerability? Please report it to us privately at the noindex SEO GitHub repository.