[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fmpyDGVzCp7OFK-94GLhIcgxG7MCsqsuqodFRMm46Pqw":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"vulnerabilities":30,"developer":31,"crawl_stats":28,"alternatives":38,"analysis":137,"fingerprints":278},"noindex-seo","noindex SEO","2.0.0","Javier Casares","https:\u002F\u002Fprofiles.wordpress.org\u002Fjaviercasares\u002F","\u003Cp>Fine-grained control over how search engines index and display your WordPress content. Apply 5 independent robots directives to 25 different page contexts with flexible implementation methods.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>5 Robots Directives:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>noindex\u003C\u002Fstrong>: Prevent search engines from indexing the page\u003C\u002Fli>\n\u003Cli>\u003Cstrong>nofollow\u003C\u002Fstrong>: Prevent search engines from following links on the page\u003C\u002Fli>\n\u003Cli>\u003Cstrong>noarchive\u003C\u002Fstrong>: Prevent search engines from showing cached versions\u003C\u002Fli>\n\u003Cli>\u003Cstrong>nosnippet\u003C\u002Fstrong>: Prevent search engines from showing text snippets in results\u003C\u002Fli>\n\u003Cli>\u003Cstrong>noimageindex\u003C\u002Fstrong>: Prevent search engines from indexing images on the page\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Implementation Methods:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>HTML Meta Tags: Traditional method, easy to verify in page source (default)\u003C\u002Fli>\n\u003Cli>HTTP Headers: More robust, works with all content types including PDFs and images\u003C\u002Fli>\n\u003Cli>Both: Maximum compatibility for all scenarios\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Control Levels:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Global Settings: Apply directives to 25 different page contexts (posts, pages, archives, etc.)\u003C\u002Fli>\n\u003Cli>Granular Control (Optional): Override global settings for individual posts, pages, and custom post types via meta boxes in the editor\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Perfect for:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Blocking indexing of attachment pages while allowing link following\u003C\u002Fli>\n\u003Cli>Preventing duplicate content issues with flexible directive combinations\u003C\u002Fli>\n\u003Cli>Controlling archive page indexing with granular control\u003C\u002Fli>\n\u003Cli>Managing pagination SEO with independent settings\u003C\u002Fli>\n\u003Cli>Protecting private content from search engine caching\u003C\u002Fli>\n\u003Cli>Preventing snippet display while still indexing content\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Main pages\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Front Page: Block the indexing of the site’s front page.\u003C\u002Fli>\n\u003Cli>Home: Block the indexing of the site’s home page.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Pages and Posts\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Page: Block the indexing of the site’s pages.\u003C\u002Fli>\n\u003Cli>Privacy Policy: Block the indexing of the site’s privacy policy page.\u003C\u002Fli>\n\u003Cli>Single: Block the indexing of a post on the site.\u003C\u002Fli>\n\u003Cli>Singular: Block the indexing of a post or a page of the site.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Taxonomies\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Category: Block the indexing of the site categories. The lists where the posts appear.\u003C\u002Fli>\n\u003Cli>Tag: Block the indexing of the site’s tags. The lists where the posts appear.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Dates\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>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.\u003C\u002Fli>\n\u003Cli>Day: Block the indexing when a daily archive of the site. The lists where the posts appear.\u003C\u002Fli>\n\u003Cli>Month: Block the indexing when a monthly archive of the site. The lists where the posts appear.\u003C\u002Fli>\n\u003Cli>Time: Block the indexing when an hourly, “minutely”, or “secondly” archive of the site. The lists where the posts appear.\u003C\u002Fli>\n\u003Cli>Year: Block the indexing when a yearly archive of the site. The lists where the posts appear.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Archives\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>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.\u003C\u002Fli>\n\u003Cli>Author: Block the indexing of the author’s page, where the author’s publications appear.\u003C\u002Fli>\n\u003Cli>Post Type Archive: Block the indexing of any post type page.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Pagination\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Pagination: Block the indexing of the pagination, i.e. all pages other than the main page of an archive.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Search\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Search: Block the indexing of the internal search result pages.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Attachments\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>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.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Previews\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Customize Preview: Block the indexing when a content is being displayed in customize mode.\u003C\u002Fli>\n\u003Cli>Preview: Block the indexing when a single post is being displayed in draft mode.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Error Page\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>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.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>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.\u003C\u002Fp>\n\u003Ch3>Compatibility\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>WordPress: 6.6 – 6.9\u003C\u002Fli>\n\u003Cli>PHP: 7.2 – 8.5\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Security\u003C\u002Fh3>\n\u003Cp>This plugin adheres to the following security measures and review protocols for each version:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Fplugins\u002F\" rel=\"nofollow ugc\">WordPress Plugin Handbook\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Fplugins\u002Fwordpress-org\u002Fplugin-security\u002F\" rel=\"nofollow ugc\">WordPress Plugin Security\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Fapis\u002Fsecurity\u002F\" rel=\"nofollow ugc\">WordPress APIs Security\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWordPress\u002FWordPress-Coding-Standards\" rel=\"nofollow ugc\">WordPress Coding Standards\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fplugin-check\u002F\" rel=\"ugc\">Plugin Check (PCP)\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Privacy\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>This plugin does not collect any information about your site, your identity, the plugins, themes or content the site has.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Vulnerabilities\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>No vulnerabilities have been published up to version 2.0.0.\u003C\u002Fli>\n\u003Cli>Version 2.0.0 includes proactive security hardening based on comprehensive security audit (see docs\u002FSECURITY-2026-01-20.md).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Found a security vulnerability? Please report it to us privately at the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjaviercasares\u002Fnoindex-seo\u002Fsecurity\u002Fadvisories\u002Fnew\" rel=\"nofollow ugc\">noindex SEO GitHub repository\u003C\u002Fa>.\u003C\u002Fp>\n","Control search engine indexing with robots directives using HTML meta tags or HTTP headers.",3000,45718,100,2,"2026-01-20T14:42:00.000Z","6.9.4","6.6","7.2",[20,21,22,23,24],"noarchive","nofollow","noindex","robots","seo","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fnoindex-seo\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnoindex-seo.2.0.0.zip",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":32,"display_name":7,"profile_url":8,"plugin_count":33,"total_installs":34,"avg_security_score":13,"avg_patch_time_days":35,"trust_score":36,"computed_at":37},"javiercasares",4,13100,10,94,"2026-04-04T14:01:04.013Z",[39,65,86,102,118],{"slug":40,"name":41,"version":42,"author":43,"author_profile":44,"description":45,"short_description":46,"active_installs":47,"downloaded":48,"rating":49,"num_ratings":50,"last_updated":51,"tested_up_to":16,"requires_at_least":52,"requires_php":53,"tags":54,"homepage":60,"download_link":61,"security_score":62,"vuln_count":63,"unpatched_count":27,"last_vuln_date":64,"fetched_at":29},"bulk-noindex-nofollow-toolkit-by-mad-fish","Bulk NoIndex & NoFollow Toolkit","2.30","madfishdigital","https:\u002F\u002Fprofiles.wordpress.org\u002Fmadfishdigital\u002F","\u003Cp>Developed by Mad Fish Digital, this plugin saves webmasters time when finding and removing thin pages from search engine indexes.\u003C\u002Fp>\n\u003Cp>The plugin provides an interface to sort posts by word count and character count, then bulk noindex or nofollow them. Categories and terms can be sorted by post count and managed the same way. Author archive URLs can now also be managed from a dedicated tab — useful for controlling whether author pages appear in search results.\u003C\u002Fp>\n\u003Ch4>Please Keep in Mind\u003C\u002Fh4>\n\u003Cp>After a page or category is noindexed, it can take search engines up to a few weeks before the page stops appearing in the search index. The amount of time will depend on how frequently a search engine crawls your website. We recommend using Google Search Console to further analyze how your pages appear in the search index.\u003C\u002Fp>\n\u003Ch4>Advantages\u003C\u002Fh4>\n\u003Cp>1) Reduce the time it takes to NoIndex\u002FNoFollow each page, post, category, or author URL manually\u003C\u002Fp>\n\u003Cp>2) Sort posts and pages by word count and character count to quickly identify thin content\u003C\u002Fp>\n\u003Cp>3) Sort categories and tags by their number of associated posts\u003C\u002Fp>\n\u003Cp>4) Manage NoIndex and NoFollow directives for author archive URLs from a dedicated Authors tab\u003C\u002Fp>\n\u003Cp>5) Speed up search engine penalty recovery by bulk noindexing large numbers of posts and pages\u003C\u002Fp>\n\u003Cp>6) Quickly noindex content identified by web crawlers such as Screaming Frog or DeepCrawl\u003C\u002Fp>\n\u003Cp>7) Visualize all posts’, pages’, categories’, and authors’ noindex and nofollow statuses at a glance\u003C\u002Fp>\n\u003Cp>8) Syncs with Rank Math, Yoast SEO, and AIOSEO to maintain and manage your existing robots directives\u003C\u002Fp>\n\u003Ch4>Support\u003C\u002Fh4>\n\u003Cp>For support related inquiries, visit the \u003Ca href=\"https:\u002F\u002Fwww.madfishdigital.com\u002Fwp-plugins\u002F\" rel=\"follow nofollow ugc\">Mad Fish Digital plugin support page\u003C\u002Fa> to drop us a line or ask a question. Please note that responses to specific inquiries may take up to 24 hours.\u003C\u002Fp>\n\u003Ch4>Why would you want to remove a bulk amount of pages from search indexes?\u003C\u002Fh4>\n\u003Cp>At Mad Fish Digital, we use tools like Screaming Frog, LinkResearch Tools, Ahrefs, and SEM Rush to crawl and analyze web pages. Sometimes, you want to remove multiple web pages from a search engine’s index that contain no longer current content, old products and services, or outdated guidelines\u002Fregulations. In many of these cases, you need the pages to be temporarily dropped from Google’s index today, but may want to update the content at a later date. By noindexing a post or page, you can avoid having to set the status code of those pages to 404 (or 410).\u003C\u002Fp>\n\u003Cp>This is where having a tool to bulk noindex\u002Fnofollow these pages can become handy. You can easily remove pages from the search index, then remove the noindex directive once the content has been updated.\u003C\u002Fp>\n\u003Cp>This plugin allows you to bulk edit the meta robots index and follow directives for your site’s posts, pages, categories, and author archive URLs. This tool is compatible with your existing Rank Math, Yoast SEO, and AIOSEO settings. Syncing of category noindex\u002Fnofollow settings with Yoast and AIOSEO is not yet supported.\u003C\u002Fp>\n\u003Cp>By keeping your pages in sync with the noindex\u002Fnofollow settings for Rank Math, Yoast, and AIOSEO, you never have to worry about duplicating efforts or which plugin is managing your robots directives.\u003C\u002Fp>\n\u003Ch4>Fallback Protection\u003C\u002Fh4>\n\u003Cp>If you disable your Rank Math, Yoast, or AIOSEO plugins, this plugin will continue to serve the appropriate meta robots tag based on the noindex\u002Fnofollow settings configured through the interface.\u003C\u002Fp>\n\u003Cp>If you do disable any of these plugins, be sure to check the Bulk NoIndex\u002FNoFollow interface (Tools menu) to confirm that your posts, pages, and author URLs are still noindexed and nofollowed accordingly. Robots directives set directly through the WP post editing interface may not always be tracked by this plugin if those SEO plugins were previously enabled but are later disabled.\u003C\u002Fp>\n\u003Ch3>Installation & Usage\u003C\u002Fh3>\n\u003Cp>1) Login as an administrator to your WordPress Admin account. Using the “Add New” menu option under the “Plugins” section of the navigation, you can either search for: “Bulk NoIndex & NoFollow Tool” or if you’ve downloaded the plugin already, click the “Upload” link, find the .zip file you downloaded and then click “Install Now”. Or you can unzip and FTP upload the plugin to your plugins directory.\u003C\u002Fp>\n\u003Cp>2) Navigate to Tools -> Bulk NoIndex\u002FNoFollow\u003C\u002Fp>\n\u003Cp>3) Use the Posts, Categories, or Authors tabs to manage robots directives\u003C\u002Fp>\n","Bulk set the noindex \u002F nofollow robots tag for posts, pages, categories, and author URLs. Easily identify thin content and noindex it fast.",2000,25501,86,9,"2026-03-08T06:55:00.000Z","4.1","5.6",[55,56,57,58,59],"all-in-one-seo-aioseo","bulk-noindex-nofollow","rank-math","seo-penalty-recovery","yoast","https:\u002F\u002Fwww.madfishdigital.com\u002Fwp-plugin\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbulk-noindex-nofollow-toolkit-by-mad-fish.2.30.zip",97,5,"2025-04-01 00:00:00",{"slug":66,"name":67,"version":68,"author":69,"author_profile":70,"description":71,"short_description":72,"active_installs":73,"downloaded":74,"rating":75,"num_ratings":76,"last_updated":77,"tested_up_to":78,"requires_at_least":79,"requires_php":80,"tags":81,"homepage":83,"download_link":84,"security_score":85,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"easy-noindex-and-nofollow","Easy Noindex And Nofollow","1.2","Ivan Kristianto","https:\u002F\u002Fprofiles.wordpress.org\u002Fivankristianto\u002F","\u003Cp>Easily add Noindex and Nofollow to post, page, search and category page.\u003C\u002Fp>\n\u003Cp>See my article \u003Ca href=\"http:\u002F\u002Fgoo.gl\u002F500FU\" rel=\"nofollow ugc\">Easy Noindex and Nofollow WordPress Plugin\u003C\u002Fa> for details.\u003C\u002Fp>\n\u003Cp>Full list of features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Add nofollow and noindex in post, page, search and category page.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Other interesting stuff:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Check out the my other WordPress plugins or web development \u003Ca href=\"http:\u002F\u002Fgoo.gl\u002FOHQNc\" rel=\"nofollow ugc\">My Portfolio\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Want to optimize your WordPress blog? Check out the \u003Ca href=\"http:\u002F\u002Fgoo.gl\u002FQedtH\" rel=\"nofollow ugc\">WordPress Optimization Article\u003C\u002Fa> Guide!\u003C\u002Fli>\n\u003C\u002Ful>\n","Easily add Noindex and Nofollow to post, page, search and category page.",400,24293,80,1,"2011-05-03T19:45:00.000Z","3.1.4","2.8","",[82,21,22,24],"google-panda","http:\u002F\u002Fwww.ivankristianto.com\u002Fweb-development\u002Fprogramming\u002Feasy-noindex-and-nofollow-wordpress-plugin\u002F1797\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Feasy-noindex-and-nofollow.1.2.zip",85,{"slug":87,"name":88,"version":89,"author":90,"author_profile":91,"description":92,"short_description":93,"active_installs":35,"downloaded":94,"rating":13,"num_ratings":76,"last_updated":95,"tested_up_to":16,"requires_at_least":96,"requires_php":97,"tags":98,"homepage":80,"download_link":101,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"nofollow-external-outbound-link","Nofollow External\u002FOutbound Link (SEO)","1.0.0","Sumit Malviya","https:\u002F\u002Fprofiles.wordpress.org\u002Fsumitmalviya\u002F","\u003Cp>The Nofollow External\u002FOutbound Link plugin is designed to enhance your website’s SEO capabilities by automatically adding a rel=”nofollow” attribute to external hyperlinks. This simple yet powerful tool helps safeguard your site from potential outbound link penalties while maintaining optimal link equity flow within your content.\u003C\u002Fp>\n\u003Cp>With no complex backend configurations required, this plugin seamlessly integrates into your WordPress site. Upon activation, it works silently in the background, applying the rel=”nofollow” attribute to all external links across your website. This proactive approach ensures that search engine crawlers recognize these links as non-endorsements, helping you maintain control over your site’s link profile.\u003C\u002Fp>\n\u003Cp>Ideal for SEO practitioners, website administrators, and content creators alike, the Nofollow External\u002FOutbound Link plugin offers peace of mind and enhances your site’s SEO performance effortlessly.\u003C\u002Fp>\n\u003Cp>No backend setting required:\u003C\u002Fp>\n\u003Cp>Just install and activate you don’t need to do any setting configuration\u003Cbr \u002F>\nfrom the backend.\u003C\u002Fp>\n\u003Cp>It automatically applies on the external links.\u003C\u002Fp>\n","The Nofollow External\u002FOutbound Link plugin is designed to enhance your website's SEO capabilities by automatically adding a rel=\"nofollow&qu &hellip;",677,"2026-01-17T08:40:00.000Z","5.0","7.4",[21,22,99,24,100],"outbound-links","w3c","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnofollow-external-outbound-link.zip",{"slug":103,"name":104,"version":105,"author":106,"author_profile":107,"description":108,"short_description":109,"active_installs":27,"downloaded":110,"rating":27,"num_ratings":27,"last_updated":111,"tested_up_to":112,"requires_at_least":113,"requires_php":97,"tags":114,"homepage":80,"download_link":117,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"ai-only-pages","AI-Only Pages","1.3.3","tommyoz12","https:\u002F\u002Fprofiles.wordpress.org\u002Ftommyoz12\u002F","\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.",146,"2026-03-12T07:40:00.000Z","6.7.5","5.5",[115,116,22,23,24],"ai","llm","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fai-only-pages.1.3.3.zip",{"slug":119,"name":120,"version":121,"author":122,"author_profile":123,"description":124,"short_description":125,"active_installs":126,"downloaded":127,"rating":13,"num_ratings":128,"last_updated":129,"tested_up_to":130,"requires_at_least":131,"requires_php":132,"tags":133,"homepage":135,"download_link":136,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"wp-robots-txt","WP Robots Txt","1.3.5","George Pattichis","https:\u002F\u002Fprofiles.wordpress.org\u002Fpattihis\u002F","\u003Cp>WordPress, by default, includes a simple robots.txt file that’s dynamically generated from within the WP application. This is great, but how do you easily change the content?\u003C\u002Fp>\n\u003Cp>Enter \u003Cstrong>WP Robots Txt\u003C\u002Fstrong>, a plugin that adds an additional field to the “Reading” admin page where you can do just that. No manual coding or file editing required!\u003C\u002Fp>\n\u003Cp>Simply visit https:\u002F\u002Fyour-site.com\u002Fwp-admin\u002Foptions-reading.php and you can control the contents of your https:\u002F\u002Fyour-site.com\u002Frobots.txt\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-robots-txt\u002F#developers\" rel=\"ugc\">Changelog\u003C\u002Fa>\u003C\u002Fp>\n","WP Robots Txt Allows you to edit the content of your robots.txt file.",50000,545169,21,"2025-06-29T19:37:00.000Z","6.8.5","5.3.0","7.0",[23,134,24],"robots-txt","https:\u002F\u002Fgithub.com\u002Fpattihis\u002Fwp-robots.txt","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-robots-txt.1.3.5.zip",{"attackSurface":138,"codeSignals":222,"taintFlows":236,"riskAssessment":274,"analyzedAt":277},{"hooks":139,"ajaxHandlers":218,"restRoutes":219,"shortcodes":220,"cronEvents":221,"entryPointCount":27,"unprotectedCount":27},[140,147,152,156,160,164,168,172,176,179,182,186,190,194,198,202,205,208,211,215],{"type":141,"name":142,"callback":143,"priority":144,"file":145,"line":146},"filter","wp_robots","closure",99,"noindex-seo.php",76,{"type":148,"name":149,"callback":150,"file":145,"line":151},"action","template_redirect","noindex_seo_show",382,{"type":148,"name":153,"callback":154,"file":145,"line":155},"admin_init","noindex_seo_register",384,{"type":148,"name":157,"callback":158,"file":145,"line":159},"admin_menu","noindex_seo_menu",385,{"type":148,"name":161,"callback":162,"file":145,"line":163},"admin_enqueue_scripts","noindex_seo_enqueue_admin_assets",386,{"type":148,"name":165,"callback":166,"file":145,"line":167},"plugins_loaded","noindex_seo_check_migration",387,{"type":148,"name":169,"callback":170,"file":145,"line":171},"enqueue_block_editor_assets","noindex_seo_enqueue_editor_assets",483,{"type":148,"name":173,"callback":174,"priority":35,"file":145,"line":175},"update_option_noindexseo","noindex_seo_clear_transient",626,{"type":148,"name":177,"callback":143,"file":145,"line":178},"admin_notices",697,{"type":148,"name":153,"callback":180,"file":145,"line":181},"noindex_seo_detect_conflicts",711,{"type":148,"name":183,"callback":184,"file":145,"line":185},"admin_post_update_noindex_seo","noindex_seo_process_form",840,{"type":148,"name":187,"callback":188,"file":145,"line":189},"init","noindex_seo_register_post_meta",891,{"type":148,"name":191,"callback":192,"file":145,"line":193},"add_meta_boxes","noindex_seo_add_meta_boxes",925,{"type":148,"name":195,"callback":196,"file":145,"line":197},"save_post","noindex_seo_save_post_meta",1122,{"type":148,"name":199,"callback":200,"priority":35,"file":145,"line":201},"quick_edit_custom_box","noindex_seo_quick_edit_fields",1350,{"type":148,"name":203,"callback":200,"priority":35,"file":145,"line":204},"bulk_edit_custom_box",1351,{"type":148,"name":195,"callback":206,"file":145,"line":207},"noindex_seo_save_quick_edit",1398,{"type":148,"name":177,"callback":209,"file":145,"line":210},"noindex_seo_bulk_actions_admin_notice",1577,{"type":148,"name":212,"callback":213,"file":145,"line":214},"pre_get_posts","noindex_seo_filter_posts_by_override",1688,{"type":148,"name":216,"callback":143,"file":145,"line":217},"restrict_manage_posts",1693,[],[],[],[],{"dangerousFunctions":223,"sqlUsage":224,"outputEscaping":227,"fileOperations":27,"externalRequests":27,"nonceChecks":233,"capabilityChecks":234,"bundledLibraries":235},[],{"prepared":225,"raw":27,"locations":226},14,[],{"escaped":228,"rawEcho":76,"locations":229},55,[230],{"file":145,"line":231,"context":232},1207,"raw output",3,7,[],[237,256],{"entryPoint":238,"graph":239,"unsanitizedCount":27,"severity":255},"noindex_seo_process_form (noindex-seo.php:730)",{"nodes":240,"edges":252},[241,246],{"id":242,"type":243,"label":244,"file":145,"line":245},"n0","source","$_POST (x3)",816,{"id":247,"type":248,"label":249,"file":145,"line":250,"wp_function":251},"n1","sink","update_option() [Settings Manipulation]",822,"update_option",[253],{"from":242,"to":247,"sanitized":254},true,"low",{"entryPoint":257,"graph":258,"unsanitizedCount":27,"severity":255},"\u003Cnoindex-seo> (noindex-seo.php:0)",{"nodes":259,"edges":271},[260,261,262,266],{"id":242,"type":243,"label":244,"file":145,"line":245},{"id":247,"type":248,"label":249,"file":145,"line":250,"wp_function":251},{"id":263,"type":243,"label":264,"file":145,"line":265},"n2","$_POST",1114,{"id":267,"type":248,"label":268,"file":145,"line":269,"wp_function":270},"n3","echo() [XSS]",1187,"echo",[272,273],{"from":242,"to":247,"sanitized":254},{"from":263,"to":267,"sanitized":254},{"summary":275,"deductions":276},"The \"noindex-seo\" v2.0.0 plugin exhibits a strong security posture based on the provided static analysis and vulnerability history. The absence of any detected vulnerabilities in its history, coupled with a clean code analysis report, suggests good development practices.  Specifically, the plugin does not utilize dangerous functions, all SQL queries are prepared, and the vast majority of outputs are properly escaped.  Furthermore, the plugin demonstrates the implementation of security best practices like nonce and capability checks, and has no external HTTP requests or file operations, minimizing potential attack vectors. The lack of any recorded CVEs, particularly critical or high severity ones, reinforces this positive assessment.  While the attack surface is minimal and appears to be well-protected, it's important to note that even with such a clean report, continuous monitoring and updates are always recommended for any software.",[],"2026-03-16T18:19:10.321Z",{"wat":279,"direct":286},{"assetPaths":280,"generatorPatterns":281,"scriptPaths":282,"versionParams":283},[],[],[],[284,285],"noindex-seo\u002Fassets\u002Fcss\u002Ffrontend.css?ver=","noindex-seo\u002Fassets\u002Fjs\u002Ffrontend.js?ver=",{"cssClasses":287,"htmlComments":288,"htmlAttributes":289,"restEndpoints":296,"jsGlobals":297,"shortcodeOutput":298},[],[],[290,291,292,293,294,295],"noindex_seo_override","_noindex_seo_noindex","_noindex_seo_nofollow","_noindex_seo_noarchive","_noindex_seo_nosnippet","_noindex_seo_noimageindex",[],[],[]]