{"id":311423,"date":"2026-06-04T13:43:48","date_gmt":"2026-06-04T13:43:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/publirank-geo-ready\/"},"modified":"2026-06-04T16:10:25","modified_gmt":"2026-06-04T16:10:25","slug":"publirank-geo-ready","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/publirank-geo-ready\/","author":23497400,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.3","stable_tag":"1.1.3","tested":"7.0","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"Publirank GEO Ready","header_author":"Publirank","header_description":"Pr\u00e9parez votre site WordPress pour les IA et LLMs : pages en Markdown, sitemap d\u00e9di\u00e9 (sitemap-llm.xml), fichier liste (llms.txt \/ publirank-llms.txt) et statistiques de crawl IA. 100 % gratuit, aucune cl\u00e9 API requise.","assets_banners_color":"90a1c6","last_updated":"2026-06-04 16:10:25","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/publirank.io","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/publirank-geo-ready\/","header_author_uri":"https:\/\/publirank.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":42,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.2":{"tag":"1.1.2","author":"iguanemedia","date":"2026-06-04 13:43:32"},"1.1.3":{"tag":"1.1.3","author":"iguanemedia","date":"2026-06-04 16:10:25"}},"upgrade_notice":{"1.1.2":"<p>Security and coding-standards hardening following WordPress.org review feedback. No feature change; recommended for all users.<\/p>","1.1.1":"<p>Security and standards update. Settings and crawl statistics are migrated automatically from older internal names; your public Markdown and llms URLs stay the same.<\/p>","1.1.0":"<ul>\n<li>Added static generation of .md files (Caching).<\/li>\n<li>Improved compatibility with Gemini and ChatGPT via text\/plain MIME type.<\/li>\n<li>Added maintenance interface to regenerate cache.<\/li>\n<li>Updated robots.txt rules.<\/li>\n<\/ul>","1.0.0":"<ul>\n<li>Initial standalone version.<\/li>\n<\/ul>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3561058,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3561058,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3561058,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3561058,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.2","1.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3561058,"resolution":"1","location":"assets","locale":"","width":1280,"height":1529},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3561058,"resolution":"2","location":"assets","locale":"","width":1280,"height":2821},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3561058,"resolution":"3","location":"assets","locale":"","width":1280,"height":1078}},"screenshots":{"1":"AI crawl statistics dashboard: breakdown by bot and by page.","2":"Simple, intuitive settings screen.","3":"Example of a <code>.md<\/code> file generated from a WordPress post."}},"plugin_section":[],"plugin_tags":[220145,265829,2591,4608,186],"plugin_category":[49,55],"plugin_contributors":[265830],"plugin_business_model":[],"class_list":["post-311423","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-search","plugin_tags-generative-optimization","plugin_tags-geo","plugin_tags-markdown","plugin_tags-seo","plugin_category-maps-and-location","plugin_category-seo-and-marketing","plugin_contributors-iguanemedia","plugin_committers-iguanemedia"],"banners":{"banner":"https:\/\/ps.w.org\/publirank-geo-ready\/assets\/banner-772x250.jpg?rev=3561058","banner_2x":"https:\/\/ps.w.org\/publirank-geo-ready\/assets\/banner-1544x500.jpg?rev=3561058","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/publirank-geo-ready\/assets\/icon-128x128.png?rev=3561058","icon_2x":"https:\/\/ps.w.org\/publirank-geo-ready\/assets\/icon-256x256.png?rev=3561058","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/publirank-geo-ready\/assets\/screenshot-1.jpg?rev=3561058","caption":"AI crawl statistics dashboard: breakdown by bot and by page."},{"src":"https:\/\/ps.w.org\/publirank-geo-ready\/assets\/screenshot-2.jpg?rev=3561058","caption":"Simple, intuitive settings screen."},{"src":"https:\/\/ps.w.org\/publirank-geo-ready\/assets\/screenshot-3.jpg?rev=3561058","caption":"Example of a <code>.md<\/code> file generated from a WordPress post."}],"raw_content":"<!--section=description-->\n<p><strong>Publirank GEO Ready<\/strong> is an essential tool for <strong>GEO (Generative Engine Optimization)<\/strong>. It helps your WordPress site to be better understood and cited by Artificial Intelligences such as ChatGPT, Claude, Gemini and Perplexity.<\/p>\n\n<p>As search evolves toward AI-generated answers, it is crucial to provide crawlers with a simplified and structured version of your content. This plugin automates the creation of a \"bridge\" between your complex HTML and text-hungry LLMs.<\/p>\n\n<h3>Why install GEO Ready?<\/h3>\n\n<p>Modern HTML is often too heavy and polluted by scripts or complex layouts for AI bots. <strong>GEO Ready<\/strong> extracts the core essence of your articles to deliver them in a universal, lightweight and perfectly structured Markdown (.md) format.<\/p>\n\n<h3>Key Features:<\/h3>\n\n<ul>\n<li><strong>Static Markdown Generation (.md):<\/strong> Automatically creates a physical <code>.md<\/code> version of your articles for blazing fast performance and maximum compatibility with Gemini and GPTBot.<\/li>\n<li><strong>Dedicated LLM Sitemap:<\/strong> An exclusive <code>sitemap-llm.xml<\/code> file to guide AI robots directly to your Markdown versions.<\/li>\n<li><strong>llms.txt Standard Support:<\/strong> Implementation of the <code>llms.txt<\/code> (or <code>publirank-llms.txt<\/code>) file to help AI assistants index your priority content.<\/li>\n<li><strong>AI Training Scraper Protection:<\/strong> Option to block access to bots that scrape your data for training while allowing real-time search agents.<\/li>\n<li><strong>AI Crawl Statistics:<\/strong> A precise dashboard to see which AI (GPTBot, ClaudeBot, GoogleOther, etc.) visits your site and which pages they are interested in.<\/li>\n<li><strong>AI SEO Metadata:<\/strong> Automatic inclusion of author, publication date, and canonical URL in Markdown headers.<\/li>\n<\/ul>\n\n<h3>100% Free &amp; Independent<\/h3>\n\n<p>This plugin is completely standalone. No API key, no third-party account, no data sent outside. It is a tool offered by the <a href=\"https:\/\/publirank.io\">Publirank.io<\/a> community to support the web ecosystem.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>This plugin keeps all data on your WordPress site. It does not send your content, settings, or crawl logs to Publirank.io or any other external service as part of its normal operation.<\/p>\n\n<p><strong>What is stored<\/strong><\/p>\n\n<ul>\n<li><strong>Settings<\/strong> \u2014 Stored in the WordPress options table (<code>publgeo_settings<\/code>): feature toggles, llms.txt preferences, category filters, and similar configuration.<\/li>\n<li><strong>AI crawl statistics<\/strong> \u2014 When an identified AI-related bot requests Markdown, the LLM sitemap, or the llms-style list file, the plugin may log a row in a custom database table (<code>{prefix}publgeo_geo_crawls<\/code>) containing the requested URL (truncated), the HTTP User-Agent (truncated), a derived bot label, the date\/time of the request, and a classification flag. These rows are used only for the in-admin statistics dashboard.<\/li>\n<li><strong>Short-lived cache<\/strong> \u2014 A transient (<code>publgeo_geo_llms_txt_cache<\/code>) may cache generated llms.txt output for performance. It is cleared on uninstall and can be cleared from the settings screen.<\/li>\n<li><strong>Static cache files<\/strong> \u2014 Markdown (<code>.md<\/code>) and related files under your uploads directory (<code>wp-content\/uploads\/...\/publgeo-cache\/<\/code>). They mirror public content and are regenerated from your posts.<\/li>\n<\/ul>\n\n<p><strong>Retention<\/strong><\/p>\n\n<ul>\n<li>Crawl log rows older than <strong>90 days<\/strong> are deleted automatically by a daily scheduled task.<\/li>\n<li>You can uninstall the plugin at any time. By default, <strong>settings and the crawl statistics table are kept<\/strong> so you can reinstall without losing configuration or history; <strong>generated <code>.md<\/code> cache files and the internal transient<\/strong> are removed on uninstall. A site administrator remains responsible for any wider data-protection obligations (for example, if URLs in logs are considered personal data in your jurisdiction).<\/li>\n<\/ul>\n\n<p><strong>Upgrading from earlier releases<\/strong><\/p>\n\n<ul>\n<li>Sites that used a previous development build may have data under the legacy option names (<code>pgr_geo_settings<\/code>) or table (<code>{prefix}pgr_geo_crawls<\/code>). On upgrade, the plugin copies or renames these automatically to the current names. Public URLs (<code>*.md<\/code>, <code>sitemap-llm.xml<\/code>, <code>llms.txt<\/code>, <code>publirank-llms.txt<\/code>) are unchanged.<\/li>\n<\/ul>\n\n<p><strong>Optional checks in the admin<\/strong><\/p>\n\n<ul>\n<li>The \u201cVerify llms.txt\u201d tool uses <code>wp_remote_get()<\/code> against <strong>your own site\u2019s public URL<\/strong> to compare the HTTP response. No third-party analytics service is involved.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Go to the 'GEO Ready' menu to see your statistics.<\/li>\n<li>Under GEO Ready \u2192 Settings, enable GEO Ready if needed, then in the static cache section click \"Regenerate all <code>.md<\/code> files\" and \"Rebuild Sitemap &amp; List\" to generate the Markdown files, LLM sitemap, and list file on disk.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20create%20duplicate%20content%20on%20google%3F\"><h3>Does this create duplicate content on Google?<\/h3><\/dt>\n<dd><p>No. All <code>.md<\/code> files generated by the plugin send an <code>X-Robots-Tag: noindex<\/code> HTTP header. Googlebot can still fetch these URLs, but it will not index them, so your classic HTML pages keep full SEO priority.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20llms.txt%20and%20the%20sitemap%3F\"><h3>What is the difference between llms.txt and the sitemap?<\/h3><\/dt>\n<dd><p>llms.txt is a recent standard aimed at AI assistants (such as ChatGPT): it gives a quick, high-level view of your site. The XML sitemap is more exhaustive and supports systematic crawling of all your content. GEO Ready provides both.<\/p><\/dd>\n<dt id=\"can%20i%20block%20some%20ai%20bots%20but%20not%20others%3F\"><h3>Can I block some AI bots but not others?<\/h3><\/dt>\n<dd><p>Yes. In the settings, you can turn on protection against \"Training\" bots (scrapers) while still allowing \"Live Search\" bots that reference your links.<\/p><\/dd>\n<dt id=\"why%20doesn%27t%20gemini%20show%20up%20in%20my%20statistics%3F\"><h3>Why doesn't Gemini show up in my statistics?<\/h3><\/dt>\n<dd><p>Gemini traffic is usually attributed to Google's regular crawler (<code>Googlebot<\/code>), so it cannot be isolated in these statistics. The separate <code>Google-Extended<\/code> user agent is only used to train Google's AI models; if you have enabled blocking of training and scraper bots in the settings, it may be blocked. This is not a bug: Gemini can still read your content through Googlebot\u2014you just cannot see a dedicated \"Gemini\" count in the dashboard.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Removed automatic deactivation when the full Publirank plugin is detected. The GEO Ready module has been removed from the full plugin, so both can coexist (and you can use this free plugin alongside or instead of the paid version).<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Security\/standards: removed set_time_limit() in bulk regen (no global PHP limit override).<\/li>\n<li>Security\/standards: settings POST array is now sanitized on input via map_deep( wp_unslash(), 'sanitize_textarea_field' ); each field is then re-validated downstream.<\/li>\n<li>Security\/standards: JSON-LD output now goes exclusively through wp_print_inline_script_tag() (no unescaped echo fallback).<\/li>\n<li>Security\/standards: hard-coded \"Access denied\" string for blocked training bots is now wrapped in esc_html__() (escape + i18n).<\/li>\n<li>Security\/standards: Markdown \/ sitemap-llm.xml \/ llms.txt streams are now served via readfile() from the on-disk cache instead of echoing variables (removes WordPress.Security.EscapeOutput.OutputNotEscaped suppressions for these endpoints).<\/li>\n<li>Performance: sitemap-llm.xml and llms.txt now warm the on-disk cache on first live render, so subsequent requests are served directly from cache.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>New setting: optional Article\/BlogPosting JSON-LD in HTML (off by default to avoid duplicate schema with SEO plugins). JSON-LD in .md files is unchanged.<\/li>\n<li>Security and coding standards: sanitization on settings registration and form input, safe JSON-LD output in HTML.<\/li>\n<li>Internal prefix renamed from <code>pgr<\/code> to <code>publgeo<\/code> (options, database table, admin hooks) with automatic migration on upgrade. No change to public SEO URLs.<\/li>\n<li>llms.txt: up to 100 most recent posts, grouped by category (<code>## Category<\/code>), plain-text excerpts without HTML entities or <code>[&amp;hellip;]<\/code>.<\/li>\n<li>Admin: live progress while <code>.md<\/code> cache regenerates in the background.<\/li>\n<\/ul>","raw_excerpt":"Prepare your WordPress site for AI and LLMs. Generate physical Markdown files, an LLM sitemap and track ChatGPT, Claude and Gemini crawls.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/311423","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=311423"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/iguanemedia"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=311423"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=311423"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=311423"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=311423"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=311423"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=311423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}