{"id":302022,"date":"2026-08-24T22:02:44","date_gmt":"2026-08-24T22:02:44","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/seo-pigeon\/"},"modified":"2026-08-27T00:26:55","modified_gmt":"2026-08-27T00:26:55","slug":"pigeon-seo","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/pigeon-seo\/","author":23464516,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.19","stable_tag":"1.5.19","tested":"7.1","requires":"5.9","requires_php":"7.4","requires_plugins":null,"header_name":"Pigeon SEO","header_author":"Clickwebstudio Technologies Inc.","header_description":"SEO plugin. Edit meta titles, descriptions, image alt text, and keywords in bulk. Includes sitemap, robots.txt, 404 monitor, and schema output.","assets_banners_color":"","last_updated":"2026-08-27 00:26:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/clickwebstudio.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":129,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.1":{"tag":"1.4.1","author":"clickwebstudio","date":"2026-08-24 23:10:34","revision":3664360},"1.4.2":{"tag":"1.4.2","author":"clickwebstudio","date":"2026-08-24 23:32:54","revision":3664382},"1.5.11":{"tag":"1.5.11","author":"clickwebstudio","date":"2026-08-26 21:07:14","revision":3667796},"1.5.13":{"tag":"1.5.13","author":"clickwebstudio","date":"2026-08-26 22:43:32","revision":3667870},"1.5.15":{"tag":"1.5.15","author":"clickwebstudio","date":"2026-08-26 23:02:01","revision":3667880},"1.5.16":{"tag":"1.5.16","author":"clickwebstudio","date":"2026-08-26 23:45:32","revision":3667918},"1.5.17":{"tag":"1.5.17","author":"clickwebstudio","date":"2026-08-27 00:04:06","revision":3667931},"1.5.18":{"tag":"1.5.18","author":"clickwebstudio","date":"2026-08-27 00:20:13","revision":3667938},"1.5.19":{"tag":"1.5.19","author":"clickwebstudio","date":"2026-08-27 00:26:55","revision":3667947}},"upgrade_notice":{"1.1.6":"<p>Important bug fix: fatal error on first activation. Please update immediately if you experienced activation issues.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3664314,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3664314,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3664314,"resolution":false,"location":"assets","locale":false}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.1","1.4.2","1.5.11","1.5.13","1.5.15","1.5.16","1.5.17","1.5.18","1.5.19"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3667937,"resolution":"1","location":"assets","locale":"","width":2560,"height":1800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3667937,"resolution":"2","location":"assets","locale":"","width":2560,"height":1240},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3667937,"resolution":"3","location":"assets","locale":"","width":2560,"height":1800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3667937,"resolution":"4","location":"assets","locale":"","width":2560,"height":1800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3667937,"resolution":"5","location":"assets","locale":"","width":2560,"height":1120}},"screenshots":{"1":"The Pigeon SEO dashboard, with quick links to the sitemap, post type defaults, categories and robots.txt","2":"SEO score and meta description columns on the posts list","3":"Sitemap: its address, how many URLs it holds, what goes in it and how often it rebuilds","4":"Post type defaults: the title and description templates used when a post has none of its own","5":"Settings: the XML sitemap, IndexNow and optional 404 logging"}},"plugin_section":[],"plugin_tags":[204677,2988,1117,186,1557],"plugin_category":[55],"plugin_contributors":[277324],"plugin_business_model":[],"class_list":["post-302022","plugin","type-plugin","status-publish","hentry","plugin_tags-indexnow","plugin_tags-meta-tags","plugin_tags-schema","plugin_tags-seo","plugin_tags-sitemap","plugin_category-seo-and-marketing","plugin_contributors-clickwebstudio","plugin_committers-clickwebstudio"],"banners":[],"icons":{"svg":"https:\/\/ps.w.org\/pigeon-seo\/assets\/icon.svg?rev=3664314","icon":"https:\/\/ps.w.org\/pigeon-seo\/assets\/icon.svg?rev=3664314","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/pigeon-seo\/assets\/screenshot-1.png?rev=3667937","caption":"The Pigeon SEO dashboard, with quick links to the sitemap, post type defaults, categories and robots.txt"},{"src":"https:\/\/ps.w.org\/pigeon-seo\/assets\/screenshot-2.png?rev=3667937","caption":"SEO score and meta description columns on the posts list"},{"src":"https:\/\/ps.w.org\/pigeon-seo\/assets\/screenshot-3.png?rev=3667937","caption":"Sitemap: its address, how many URLs it holds, what goes in it and how often it rebuilds"},{"src":"https:\/\/ps.w.org\/pigeon-seo\/assets\/screenshot-4.png?rev=3667937","caption":"Post type defaults: the title and description templates used when a post has none of its own"},{"src":"https:\/\/ps.w.org\/pigeon-seo\/assets\/screenshot-5.png?rev=3667937","caption":"Settings: the XML sitemap, IndexNow and optional 404 logging"}],"raw_content":"<!--section=description-->\n<p>Pigeon SEO gives every post and term the metadata search engines read: titles, descriptions, focus keywords, social previews and schema, plus the site-wide plumbing \u2014 an XML sitemap, a robots.txt editor and IndexNow pings.<\/p>\n\n<p>AI generation of titles, descriptions and keywords is a Premium feature; everything listed under Free features below works without an account.<\/p>\n\n<p><strong>Free features include:<\/strong><\/p>\n\n<ul>\n<li>Meta title, description and focus keyword editing, with a live Google preview<\/li>\n<li>Social previews for Facebook \/ Open Graph and X<\/li>\n<li>XML sitemap with automatic ping on publish<\/li>\n<li>IndexNow \u2014 instant search engine notifications (Bing, Yandex, Seznam, Naver)<\/li>\n<li>Robots.txt editor<\/li>\n<li>Optional 404 logging \u2014 records which URLs are missed, and how often<\/li>\n<li>Site representation (organisation schema)<\/li>\n<li>Schema.org structured data output<\/li>\n<li>Import SEO data from Yoast SEO<\/li>\n<li>Post type and taxonomy SEO settings<\/li>\n<li>SEO score column in post lists<\/li>\n<\/ul>\n\n<p><strong>Premium features (Pigeon SEO Premium):<\/strong><\/p>\n\n<ul>\n<li>AI-generated meta titles, descriptions and focus keywords, one at a time or in bulk \u2014 generation runs on the seopigeon.com service, so there is no AI provider key to obtain or enter<\/li>\n<li>Unlimited redirects manager (301 \/ 302)<\/li>\n<li>CSV import \/ export of redirects<\/li>\n<li>Import redirects from Yoast SEO<\/li>\n<li>Priority support<\/li>\n<\/ul>\n\n<h4>External Services<\/h4>\n\n<p>This plugin connects to the following third-party services. By installing and using this plugin you agree to their respective terms of service and privacy policies.<\/p>\n\n<p>This plugin contacts one service, and only when you switch it on.<\/p>\n\n<p><strong>1. IndexNow API (api.indexnow.org)<\/strong><\/p>\n\n<p>Used for: Notifying participating search engines (Bing, Yandex, Seznam, Naver and others) when a post or page is published, updated or removed, so they can recrawl it sooner. Only active when the administrator enables IndexNow in Settings. When enabled, the public URL of the changed post\/page (and nothing else) is submitted automatically on publish\/update\/delete.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/www.indexnow.org<\/li>\n<li>Terms of Service: https:\/\/www.indexnow.org\/faq<\/li>\n<li>Privacy Policy: https:\/\/www.bing.com\/webmasters\/help\/indexnow-faq-c56f0c2c<\/li>\n<\/ul>\n\n<p>No personal data about your site visitors is ever sent anywhere. Apart from IndexNow, this plugin makes no outbound requests at all: AI generation lives in Pigeon SEO Premium, which is a separate download.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>pigeon-seo<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install directly from the WordPress Plugin Directory.<\/li>\n<li>Activate the plugin from <strong>Plugins &gt; Installed Plugins<\/strong>.<\/li>\n<li>Go to <strong>Pigeon SEO &gt; Settings<\/strong> to set your title and description defaults. No account or key is required.<\/li>\n<li>Configure your post types and taxonomy SEO settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%20to%20use%20this%20plugin%3F\"><h3>Do I need an account to use this plugin?<\/h3><\/dt>\n<dd><p>No. Everything in the free plugin \u2014 sitemap, robots.txt, schema, IndexNow and every meta field \u2014 works without one. An account matters only for Pigeon SEO Premium, whose AI generation runs on the seopigeon.com service.<\/p><\/dd>\n<dt id=\"what%20are%20tokens%3F\"><h3>What are tokens?<\/h3><\/dt>\n<dd><p>Tokens meter AI generation on the seopigeon.com service, which is a Premium feature. The free plugin never spends them, because it makes no generation requests.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20data%20to%20external%20servers%20automatically%3F\"><h3>Does this plugin send data to external servers automatically?<\/h3><\/dt>\n<dd><p>This download contains no AI generation code, so it makes no such calls and needs no key. Updates come from WordPress.org like any other plugin. The one outbound call it can make is IndexNow: if you enable it in Settings, the URL of a post or page is submitted to the IndexNow API whenever you publish, update or remove it. IndexNow is off by default and can be disabled at any time.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data if I delete the plugin?<\/h3><\/dt>\n<dd><p>Deleting it (not just deactivating) removes the plugin's own settings, its cached values, its scheduled clean-up job and its 404 log table.<\/p>\n\n<p>The SEO titles, descriptions, keywords and robots choices you saved on posts and terms are left in place. They are work you typed, and a plugin deleted by accident should not take them with it \u2014 reinstalling picks them straight back up. If you want a clean sweep, define SEOPIGEON_REMOVE_ALL_DATA as true in wp-config.php before you delete:<\/p>\n\n<pre><code>define( 'SEOPIGEON_REMOVE_ALL_DATA', true );\n<\/code><\/pre><\/dd>\n<dt id=\"is%20this%20plugin%20gdpr%20compliant%3F\"><h3>Is this plugin GDPR compliant?<\/h3><\/dt>\n<dd><p>The plugin stores nothing that identifies a visitor: no IP addresses, no browser user-agent strings, no referring URLs, and it sends nothing about them anywhere.<\/p>\n\n<p>404 logging is the one feature that writes anything about incoming traffic, and it is off until you switch it on in Settings. When it is on it records the address that was requested and how many times, and nothing else; entries are deleted after 30 days.<\/p>\n\n<p>Versions before 1.5.14 logged every 404 automatically and also stored the referring URL, the full user-agent string and a hashed IP address. A hashed IP is not anonymous \u2014 the same visitor produces the same value every time \u2014 so 1.5.14 stops recording all three and empties those columns on upgrade.<\/p>\n\n<p>This download contains no AI generation code, so no content is sent to an AI service. See the External Services section for full details.<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20own%20openai%20api%20key%3F\"><h3>Can I use my own OpenAI API key?<\/h3><\/dt>\n<dd><p>No. There is nowhere to enter one. AI generation belongs to Pigeon SEO Premium and runs on the seopigeon.com service; this plugin has no AI code and contacts no AI provider.<\/p><\/dd>\n<dt id=\"is%20the%20redirects%20feature%20free%3F\"><h3>Is the Redirects feature free?<\/h3><\/dt>\n<dd><p>Redirects is a Premium feature available in Pigeon SEO Premium. The free version includes a clear upgrade path.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.19<\/h4>\n\n<ul>\n<li>Fix: llms.txt never listed the sitemap index. It was included only when a sitemap.xml file existed on disk, and no such file is ever written \u2014 the sitemap is served by a rewrite rule \u2014 so the line was missing for everyone. It now follows whether the sitemap is switched on.<\/li>\n<\/ul>\n\n<h4>1.5.18<\/h4>\n\n<ul>\n<li>Fix: \"URLs in sitemap\" always read 0. The count was taken from \/sitemap.xml, which is an index \u2014 it lists post-sitemap.xml, page-sitemap.xml and the rest and contains no URL entries of its own. The sitemaps it points at are now added up.<\/li>\n<li>Refreshed the screenshots: they showed an older interface, and a WordPress update notice across the top of every one.<\/li>\n<\/ul>\n\n<h4>1.5.17<\/h4>\n\n<ul>\n<li>The readme no longer advertises a \"404 monitor\". The plugin logs 404s but ships no screen to read them, so it was promising something you cannot look at.<\/li>\n<li>Deleting the plugin now clears up after it. Its settings, transients, scheduled job and 404 log table are removed; the titles, descriptions and keywords saved against your posts and terms are kept, because deleting a plugin should not quietly destroy work you typed. To remove those too, define SEOPIGEON_REMOVE_ALL_DATA as true in wp-config.php before deleting.<\/li>\n<\/ul>\n\n<h4>1.5.16<\/h4>\n\n<ul>\n<li>Redirects: one call to action instead of two. The button in the page header is gone; the one at the foot of the feature list is larger and centred.<\/li>\n<\/ul>\n\n<h4>1.5.15<\/h4>\n\n<ul>\n<li>The WordPress menu now carries the Pigeon SEO mark instead of a generic dashicon, so Free and Premium look like one plugin in the one place you always see.<\/li>\n<li>Removed the second card on the Redirects page \u2014 the feature list above it already said what Premium adds \u2014 and moved its link to the foot of that list.<\/li>\n<\/ul>\n\n<h4>1.5.14<\/h4>\n\n<ul>\n<li>Privacy: 404 logging no longer records anything about the visitor. Every 404 used to store the referring URL, the full browser user-agent string and a hashed IP address \u2014 a hashed IP is stable per visitor, so it identifies them \u2014 and it was kept indefinitely with no screen to view it, export it or delete it, while this readme said no visitor data was collected.<\/li>\n<li>404 logging is now off unless you turn it on in Settings, records only the requested address and a hit count, and deletes entries after 30 days.<\/li>\n<li>On upgrade, the referrer, user_agent and ip_address columns written by earlier versions are emptied.<\/li>\n<li>Fix: pressing Save Settings without changing anything reported \"Failed to save settings.\"<\/li>\n<\/ul>\n\n<h4>1.5.13<\/h4>\n\n<ul>\n<li>Fix: the llms.txt editor could not save. Its validator allowed no brackets or parentheses, so the markdown links the plugin itself writes \u2014 \"- <a href=\"https:\/\/\u2026\">Title<\/a>\" \u2014 were rejected as invalid characters. Non-English site names failed for the same reason.<\/li>\n<li>The robots.txt editor had the same restriction and now accepts comments containing brackets, and non-English paths.<\/li>\n<\/ul>\n\n<h4>1.5.12<\/h4>\n\n<ul>\n<li>Fix: Import from Yoast had no way in. Taking it out of the menu in 1.5.0 left the page reachable only by typing its address; it is linked from the Dashboard now.<\/li>\n<li>The upgrade notes no longer list a 404 monitor among what Premium adds. Premium logs 404s but ships no screen to read them, so it was promising something you cannot look at.<\/li>\n<\/ul>\n\n<h4>1.5.11<\/h4>\n\n<ul>\n<li>The icons are out of the Import from Yoast markup, not merely hidden \u2014 headings and both buttons.<\/li>\n<\/ul>\n\n<h4>1.5.10<\/h4>\n\n<ul>\n<li>The icons in panel and page headings are gone. They repeated what the heading said and were the last thing on those screens still drawn in WordPress's own style.<\/li>\n<\/ul>\n\n<h4>1.5.9<\/h4>\n\n<ul>\n<li>The first row of the Settings card has room above it; it was sitting on the card's top edge.<\/li>\n<\/ul>\n\n<h4>1.5.8<\/h4>\n\n<ul>\n<li>Fix: buttons on the plugin's own pages stood 45px tall, because WordPress gives them a line-height of more than twice the font size. They are the size the rest of the plugin uses now.<\/li>\n<li>The dashicon in those page headings is gone; it said nothing the heading did not.<\/li>\n<\/ul>\n\n<h4>1.5.7<\/h4>\n\n<ul>\n<li>Fix: the plugin's own pages were 40px wider than the space they sit in, so they were clipped on the right. Nothing showed it because the overflow was hidden.<\/li>\n<\/ul>\n\n<h4>1.5.6<\/h4>\n\n<ul>\n<li>Fix: the icon inside buttons like Start Import sat low and hard against the label.<\/li>\n<li>Settings no longer carries the Import from Yoast card.<\/li>\n<\/ul>\n\n<h4>1.5.5<\/h4>\n\n<ul>\n<li>There is one Settings screen now, the one the menu points at. A second copy lived inside the app with different options, and the two wrote the same stored setting in different ways.<\/li>\n<li>Fix: saving from that second screen replaced the whole settings record, so it wiped the sitemap setting the main screen had written. Saving now merges.<\/li>\n<li>The controls it offered for a default title template and description length are gone. Neither was ever saved, and nothing in the plugin read them.<\/li>\n<li>Import from Yoast is linked from Settings.<\/li>\n<\/ul>\n\n<h4>1.5.4<\/h4>\n\n<ul>\n<li>Fix: the plugin screens ran over the WordPress footer, so \"Thank you for creating with WordPress\" appeared through the bottom of the page.<\/li>\n<\/ul>\n\n<h4>1.5.3<\/h4>\n\n<ul>\n<li>Every plugin screen outside the main app now shows the same brand bar. Redirects was drawing its own, which was nearly but not quite the one Settings and Import from Yoast have.<\/li>\n<li>The Redirects page lists AI generation among what Premium adds.<\/li>\n<\/ul>\n\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Settings and Import from Yoast open with the same brand bar the rest of the plugin has, and keep the page gutter WordPress gives every other admin screen. They were sitting flush against the admin menu.<\/li>\n<li>The PRO badge keeps its colour when Redirects is the page you are on.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Redirects carries a PRO badge in the WordPress menu, so it says what it is before you open it.<\/li>\n<li>The Settings screen is laid out like the rest of the plugin: the two options sit in a card as a list with separators, rather than as two loose columns of stock WordPress form markup.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Redirects no longer repeats the plugin's sidebar. It is opened from the WordPress menu, so the menu is the navigation; the page now shows a slim brand bar instead, as the equivalent screens in Premium do.<\/li>\n<li>Import from Yoast has left the menu. It is something you do once, on the day you switch, so it now lives on the Settings screen \u2014 the page itself is unchanged and still answers at its own address.<\/li>\n<\/ul>\n\n<h4>1.4.9<\/h4>\n\n<ul>\n<li>AI Features now says what Premium's AI writes. The screen called \"AI Features\" covered only llms.txt, so the buttons in the post editor were the only hint that generation exists at all.<\/li>\n<li>Redirects opens inside the plugin, with the sidebar, instead of a bare WordPress panel \u2014 the one page advertising Premium was the one page that did not look like the product.<\/li>\n<li>Fix: the admin app loaded whichever compiled bundle sorted last in its folder rather than the newest one. On an install with a leftover file from an earlier version, that meant serving the older app.<\/li>\n<\/ul>\n\n<h4>1.4.8<\/h4>\n\n<ul>\n<li>The Generate with AI buttons carry a padlock, so they say what they are before you press one.<\/li>\n<li>Pressing one now opens a dialog listing what Premium's AI writes for you, instead of a sentence that appeared beside the button and vanished after eight seconds. Close it with the button, the backdrop or Escape.<\/li>\n<li>The buttons are no longer dimmed to 72%. They were the right colour underneath and looked disabled, when in fact they do something.<\/li>\n<\/ul>\n\n<h4>1.4.7<\/h4>\n\n<ul>\n<li>Content Analysis is now a checklist, as it is in Premium: eight rules about the post \u2014 is the focus keyword in the title, in the opening paragraph, used in the body, how long the description is, internal and outbound links, image alt text, and word count \u2014 each with what to do about it.<\/li>\n<li>Fix: the old Content Analysis reported a keyword density of exactly \"0.5%\" for every post that had a focus keyword. It was a placeholder that was never replaced. The reading-time and paragraph counters went with it; neither said anything the word count did not.<\/li>\n<li>The tab strip, score badge and preview card in the editor panel now match Premium to the pixel.<\/li>\n<\/ul>\n\n<h4>1.4.6<\/h4>\n\n<ul>\n<li>Every admin screen now uses the same components as Premium \u2014 page headings, cards, buttons, form controls, switches and toasts. Sitemap, Post Types, Categories &amp; tags, Robots.txt, Site Representation, AI Features and Settings were each drawn by hand before, in blue.<\/li>\n<li>Redirects has moved to the WordPress menu, where Premium keeps it, instead of sitting in the plugin's own sidebar.<\/li>\n<li>Import from Yoast and Redirects are styled like the rest of the plugin. They rendered as plain wp-admin pages before, because the branding stylesheet only existed in Premium.<\/li>\n<li>The app no longer sits 20px in from the WordPress menu, and its fonts load. Both were being enqueued from a file that runs too late in the page to reach it.<\/li>\n<li>The editor panel showed the Google preview twice; the second copy is gone. The surviving one uses today's search-result colours instead of the old blue-and-green.<\/li>\n<li>Fix: an SEO score between 34 and 66 read \"Fair\" on a red badge \u2014 the wording had three bands and the colour only two.<\/li>\n<li>Fix: the character bar under a too-short title was green, as though the length were fine.<\/li>\n<li>Fix: the meta description box rendered a single line tall.<\/li>\n<li>The bundle no longer ships Tailwind's utility classes into wp-admin, where WordPress uses the same names for its own elements.<\/li>\n<\/ul>\n\n<h4>1.4.5<\/h4>\n\n<ul>\n<li>Fix: the sparkle never appeared on the Generate with AI buttons. The markup was right, but the escaper the template used removes SVG, so the icon was stripped on the way out and the button rendered as text with a gap where it should have been.<\/li>\n<li>The variable chips and the character counter under each field now match Premium too \u2014 the previous release styled class names this panel does not use, so those two carried on looking like the old design.<\/li>\n<\/ul>\n\n<h4>1.4.4<\/h4>\n\n<ul>\n<li>The SEO panel on the post editor now matches the one in Premium: the same typefaces, the same bordered card, the same tabs, flat field rows instead of tinted boxes, and the score shown as \"Good &middot; 67\" on the header line rather than a sentence below it.<\/li>\n<li>The two typefaces ship with the plugin instead of being fetched from a font service. Latin and latin-ext, one variable file each, 96 KB in total.<\/li>\n<li>Fix: the panel was set in the system font. A later rule in its stylesheet was overriding the one that asked for the plugin's own face.<\/li>\n<li>Fix: the sparkle on the Generate with AI buttons was an image, so it kept its own colour instead of the button's and looked washed out. It is drawn inline now.<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>The admin screens and the meta box now look like Pigeon SEO Premium rather than a different plugin: the same white shell, the same orange, one set of icons. Upgrading no longer changes the furniture.<\/li>\n<li>Fix: in the meta box, the note explaining that AI generation is a Premium feature was printed beside the button and ran underneath it, hiding its first words. It sits on its own line now.<\/li>\n<li>The fonts are the system UI stack; nothing is fetched from a font service.<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Fix: the settings screen still offered a Pigeon SEO Website Key field, which nothing in this plugin reads. Saving a key called a licence function that was removed with the AI code, so the screen fataled. The field and its save path are gone; a key already stored is left untouched.<\/li>\n<li>The readme no longer asks for a Website Key, since none is needed: this download uses no account, no licence and no AI provider key.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>AI generation is now a Premium feature, and this download no longer contains the code for it: no provider, no handlers, no endpoints, and nothing that contacts an AI service. The Generate with AI buttons stay in the meta box and explain what Premium adds.<\/li>\n<li>Removed the bulk SEO generator and keyword research screens, which existed only to drive AI generation.<\/li>\n<li>The free plugin needs no account, Website Key or API key, and the installation steps and External Services section now say so.<\/li>\n<li>Fix: the SEO meta box loaded neither its stylesheet nor its script. Both were registered but missing from the package, and the inline copies the template printed as a fallback were added to handles that had already been printed, so WordPress discarded them.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Removed the media AI generation feature from the free plugin; it is no longer part of this download.<\/li>\n<li>Removed the in-plugin token purchase screens. Buying tokens now takes you to the website, and the plugin no longer carries checkout code.<\/li>\n<li>Removed the PageSpeed column, which contacted Google with your page URLs without asking first.<\/li>\n<li>Keyword research now requires a form submission from the plugin's own screen, so a link cannot spend your API credit.<\/li>\n<li>Structured data output is now escaped so a value cannot break out of the script tag.<\/li>\n<li>REST endpoints check permission against the specific post being changed, rather than only that you can edit something.<\/li>\n<li>The 404 log can now only be modified by administrators.<\/li>\n<li>Breadcrumb styles are enqueued properly instead of being printed into post content.<\/li>\n<li>Fixed an output buffer that was opened and never closed on the bulk SEO screen.<\/li>\n<li>No longer assumes admin-ajax.php and sitemap.xml sit at fixed paths.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Fix: \/llms.txt was served with a full body but an HTTP 404 status, so AI crawlers that check the status code discarded the file.<\/li>\n<li>\/llms.txt now has its own rewrite rule and query var, matching how \/sitemap.xml is already handled, and the handler forces a 200 as a fallback for sites whose rewrite rules have not been flushed yet.<\/li>\n<li>Rewrite rules are now flushed automatically once per plugin version, so the rule lands on update and not only on a fresh activation.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: IndexNow integration \u2014 instantly notifies Bing, Yandex, Seznam and Naver when you publish, update or remove a post or page. Enable it in Pigeon SEO &gt; Settings (off by default).<\/li>\n<li>Auto-generates and serves the IndexNow verification key file; submissions are batched and non-blocking so the editor is never slowed down.<\/li>\n<li>Added IndexNow (api.indexnow.org) to the External Services disclosure.<\/li>\n<\/ul>\n\n<h4>1.2.9<\/h4>\n\n<ul>\n<li>WordPress.org review: replaced all inline  and  tags with wp_add_inline_style() and wp_add_inline_script()<\/li>\n<li>WordPress.org review: replaced all json_encode() calls with wp_json_encode()<\/li>\n<li>WordPress.org review: added External Services disclosure to readme (Google PageSpeed Insights)<\/li>\n<li>WordPress.org review: added .distignore for clean plugin zip builds<\/li>\n<li>WordPress.org review: fixed permission_callback in REST API registrations<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Added missing alt text bulk editor<\/li>\n<li>Added bulk image metadata generator<\/li>\n<li>SEO score improvements<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Fixed fatal error on activation (undefined function on first install)<\/li>\n<li>Redirects moved to Premium with upgrade modal in sidebar<\/li>\n<li>Tokens modal redesigned with gradient pack cards<\/li>\n<li>Author updated to Clickwebstudio Technologies Inc.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Improved token balance sync<\/li>\n<li>Removed image metadata number prefix generation<\/li>\n<li>Minor bug fixes<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<\/ul>","raw_excerpt":"Complete SEO toolkit: meta titles and descriptions, XML sitemap, robots.txt, schema and IndexNow. AI generation and redirects in Premium.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/302022","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=302022"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/clickwebstudio"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=302022"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=302022"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=302022"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=302022"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=302022"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=302022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}