{"id":348261,"date":"2026-08-30T11:20:43","date_gmt":"2026-08-30T11:20:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/seometa-ai\/"},"modified":"2026-08-31T06:30:06","modified_gmt":"2026-08-31T06:30:06","slug":"piv-ai-seo-assistant","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/piv-ai-seo-assistant\/","author":23345368,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.7","stable_tag":"1.4.7","tested":"7.0.4","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"AI SEO Meta & Image Alt Text Generator","header_author":"vanyaa","header_description":"Automatic SEO Titles, Descriptions & Focus Keywords powered by AI.","assets_banners_color":"","last_updated":"2026-08-31 06:30:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/vanyaa\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":75,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"vanyaa","date":"2026-08-30 12:04:43","revision":3672487},"1.4.7":{"tag":"1.4.7","author":"vanyaa","date":"2026-08-31 06:30:06","revision":3673465}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3672352,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3672352,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.4.7"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3672348,"resolution":"1","location":"assets","locale":"","width":1316,"height":1228},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3672348,"resolution":"2","location":"assets","locale":"","width":1315,"height":1233},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3672348,"resolution":"3","location":"assets","locale":"","width":1328,"height":1052},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3672348,"resolution":"4","location":"assets","locale":"","width":1314,"height":785},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3672348,"resolution":"5","location":"assets","locale":"","width":1309,"height":1236}},"screenshots":{"1":"Main settings screen \u2014 choose your SEO plugin and AI provider","2":"Generate SEO metadata for a single post with before\/after diff","3":"Bulk edit queue with progress and filters","4":"Image alt text generation in the Media Library"}},"plugin_section":[],"plugin_tags":[2353,17214,174175,186,2227],"plugin_category":[55],"plugin_contributors":[248205],"plugin_business_model":[],"class_list":["post-348261","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-alt-text","plugin_tags-rank-math","plugin_tags-seo","plugin_tags-yoast","plugin_category-seo-and-marketing","plugin_contributors-vanyaa","plugin_committers-vanyaa"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/piv-ai-seo-assistant\/assets\/icon-128x128.png?rev=3672352","icon_2x":"https:\/\/ps.w.org\/piv-ai-seo-assistant\/assets\/icon-256x256.png?rev=3672352","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/piv-ai-seo-assistant\/assets\/screenshot-1.png?rev=3672348","caption":"Main settings screen \u2014 choose your SEO plugin and AI provider"},{"src":"https:\/\/ps.w.org\/piv-ai-seo-assistant\/assets\/screenshot-2.png?rev=3672348","caption":"Generate SEO metadata for a single post with before\/after diff"},{"src":"https:\/\/ps.w.org\/piv-ai-seo-assistant\/assets\/screenshot-3.png?rev=3672348","caption":"Bulk edit queue with progress and filters"},{"src":"https:\/\/ps.w.org\/piv-ai-seo-assistant\/assets\/screenshot-4.png?rev=3672348","caption":"Image alt text generation in the Media Library"},{"src":"https:\/\/ps.w.org\/piv-ai-seo-assistant\/assets\/screenshot-5.png?rev=3672348","caption":""}],"raw_content":"<!--section=description-->\n<p>It adds no meta tags of its own and replaces nothing on your site. It fills in the fields Rank Math, Yoast SEO, All in One SEO, SEOPress or The SEO Framework already have, so switching your SEO plugin later doesn't strand your generated metadata.<\/p>\n\n<p>Fields a plugin doesn't have are skipped, not faked \u2014 on The SEO Framework, which has no focus keyword, the related filters simply disappear instead of showing a made-up number.<\/p>\n\n<p>This plugin is an independent add-on. It is not affiliated with, endorsed by or sponsored by Rank Math, Yoast, All in One SEO, SEOPress or The SEO Framework; their names are used only to say which plugins it writes to.<\/p>\n\n<h4>What it does in one minute<\/h4>\n\n<ul>\n<li>Pick your SEO plugin and add an API key for one AI provider (Google Gemini has a free tier)<\/li>\n<li>Open a post and press Generate, or select a few hundred in Bulk Edit and let the queue run<\/li>\n<li>Review the before\/after diff and apply \u2014 or let it write directly, if you prefer<\/li>\n<\/ul>\n\n<h4>Works with the SEO plugin you already have<\/h4>\n\n<p>Choose the target once; everything is written into that plugin's own fields:<\/p>\n\n<ul>\n<li><strong>Rank Math<\/strong> \u2013 SEO title, description, focus keyword, score, Facebook and X\/Twitter meta<\/li>\n<li><strong>Yoast SEO<\/strong> \u2013 SEO title, meta description, focus keyphrase, readability score, social meta<\/li>\n<li><strong>All in One SEO (AIOSEO)<\/strong> \u2013 title, description, keyphrases and score in AIOSEO's own tables<\/li>\n<li><strong>SEOPress<\/strong> \u2013 title, description, target keyword, social meta<\/li>\n<li><strong>The SEO Framework<\/strong> \u2013 title, description, Open Graph and X\/Twitter meta<\/li>\n<\/ul>\n\n<h4>Five AI providers, or your own endpoint<\/h4>\n\n<p>Bring your own API key and pay the provider directly \u2014 there is no middleman subscription.<\/p>\n\n<ul>\n<li><strong>Google Gemini and Groq<\/strong> \u2013 generous free tiers, enough for most small sites<\/li>\n<li><strong>ChatGPT (OpenAI), Claude (Anthropic), DeepSeek<\/strong> \u2013 paid, priced per token<\/li>\n<li><strong>Any OpenAI-compatible endpoint<\/strong> \u2013 Ollama, LM Studio, OpenRouter, Azure OpenAI or a company proxy, so on a privacy-sensitive site the content never leaves your own infrastructure<\/li>\n<\/ul>\n\n<p>If a provider is rate-limited or down, the fallback chain moves to the next one automatically, and free-tier limits are tracked so you're not billed by surprise.<\/p>\n\n<h4>AI image alt text that actually looks at the image<\/h4>\n\n<p>Most alt text tools guess from the file name. This one sends the image itself to a vision model, so \"IMG_4821.jpg\" becomes a description of what's really in the picture \u2014 better for accessibility (WCAG), for image search, and for the person using a screen reader.<\/p>\n\n<ul>\n<li>One click in the Media Library, a bulk action for a whole selection, or automatically on upload<\/li>\n<li>Alt text a human already wrote is never overwritten unless you explicitly allow it<\/li>\n<li>Length and language are yours to set<\/li>\n<\/ul>\n\n<h4>Bulk editing that survives a closed tab<\/h4>\n\n<p>Select posts, products, taxonomy terms or images and let it work. Large jobs go through Action Scheduler when available (every WooCommerce site has it) and WP-Cron otherwise, with progress and a cancel button. Close the tab \u2014 the queue keeps going.<\/p>\n\n<p>Filters help you target only what needs work: missing meta description, missing focus keyword, low SEO score, never generated, or a single language on a multilingual site.<\/p>\n\n<h4>Category and shop pages too<\/h4>\n\n<p>Categories, tags and WooCommerce product categories are commercial landing pages, and they get their own prompts \u2014 with the term name, its description, the parent term, how many items it holds and examples of what's inside.<\/p>\n\n<h4>Built for WooCommerce<\/h4>\n\n<p>Product prompts receive price, availability, brand, SKU and categories, so the description says something a buyer can act on instead of a generic sentence. Short descriptions can be generated too, and product and product_cat each start from their own template.<\/p>\n\n<h4>Nothing goes live without your approval (optional)<\/h4>\n\n<p>Switch on Require approval and every generation waits on the Review tab as a before\/after diff. Apply or discard one row or the whole selection, and roll back to the previous values whenever you want \u2014 the plugin keeps a snapshot of what was there before it wrote anything.<\/p>\n\n<h4>Real Search Console queries instead of invented keywords<\/h4>\n\n<p>Connect Google Search Console and the prompt receives the queries a page already ranks for, through the {gsc_queries} and {gsc_top_query} placeholders. The model then writes for demand that exists, rather than inventing a keyword nobody searches.<\/p>\n\n<h4>Title A\/B testing measured by CTR<\/h4>\n\n<p>Two title variants, each live for the same number of days, winner decided by real click-through rate from Search Console \u2014 with a minimum impressions threshold, so noise isn't mistaken for a result.<\/p>\n\n<h4>SEO scores stay in sync<\/h4>\n\n<p>Every SEO plugin calculates its score in the browser, inside the post editor \u2014 which is why bulk-optimised posts normally keep their old score until you open each one and press Update. This plugin does that for you: affected posts are queued and refreshed automatically while an admin tab is open, through Rank Math's own endpoint where possible, without re-saving your posts.<\/p>\n\n<h4>Multilingual, multisite, WP-CLI<\/h4>\n\n<ul>\n<li><strong>WPML and Polylang<\/strong> \u2013 the language of each post is detected and pinned in the prompt, so a Ukrainian page never comes back in English. Prompts can differ per language.<\/li>\n<li><strong>Multisite<\/strong> \u2013 store API keys once for the whole network; prompts and targets stay per site.<\/li>\n<li><strong>WP-CLI<\/strong> \u2013 <code>wp seo-assistant generate --post_type=product --limit=500 --skip-unchanged<\/code>, plus alt-text, terms and logs prune for scheduled and scripted runs.<\/li>\n<\/ul>\n\n<h4>Also included<\/h4>\n\n<ul>\n<li>One prompt per content type, with placeholders for title, content, categories, attributes, product data and Search Console queries<\/li>\n<li>Tone of voice, character limits, banned words<\/li>\n<li>Open Graph and X\/Twitter meta, and FAQ schema (JSON-LD)<\/li>\n<li>Automatic optimisation on publish, with a rule to skip posts that already score well<\/li>\n<li>A log of every request: provider, model, tokens, errors, and an estimate of what you spent<\/li>\n<li>Dry run mode, so you can read what it would write before it writes anything<\/li>\n<li>Settings export and import as JSON, for agencies rolling this out across sites<\/li>\n<\/ul>\n\n<h4>What it deliberately does not do<\/h4>\n\n<p>It doesn't write your articles, and it doesn't touch your post content \u2014 the only exception is the WooCommerce short description, which you have to enable yourself. It doesn't send anything anywhere until you configure a provider and press a button.<\/p>\n\n<h4>Requirements<\/h4>\n\n<p>WordPress 6.4+, PHP 7.4+, one of the five supported SEO plugins, and an API key from at least one AI provider. Alt text generation needs a provider with a vision model (Gemini, ChatGPT, Claude, a multimodal Groq model, or your own).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/piv-ai-seo-assistant<\/code> directory, or install through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Go to the plugin's settings page, choose your target SEO plugin, and add an API key for at least one AI provider.<\/li>\n<li>Open a post and press Generate, or use Bulk Edit to run it on many items at once.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20my%20seo%20plugin%3F\"><h3>Does this replace my SEO plugin?<\/h3><\/dt>\n<dd><p>No. It writes into the fields your existing SEO plugin already has (Rank Math, Yoast SEO, All in One SEO, SEOPress or The SEO Framework). It adds no meta tags of its own.<\/p><\/dd>\n<dt id=\"which%20ai%20providers%20are%20supported%3F\"><h3>Which AI providers are supported?<\/h3><\/dt>\n<dd><p>Google Gemini, Groq, ChatGPT (OpenAI), Claude (Anthropic), DeepSeek, and any OpenAI-compatible endpoint (Ollama, LM Studio, OpenRouter, Azure OpenAI, or a company proxy).<\/p><\/dd>\n<dt id=\"is%20there%20a%20free%20option%3F\"><h3>Is there a free option?<\/h3><\/dt>\n<dd><p>Yes, Google Gemini and Groq both offer free tiers that are enough for most small sites.<\/p><\/dd>\n<dt id=\"does%20it%20overwrite%20alt%20text%20i%20already%20wrote%3F\"><h3>Does it overwrite alt text I already wrote?<\/h3><\/dt>\n<dd><p>No, alt text a human already wrote is never overwritten unless you explicitly allow it in the settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.7<\/h4>\n\n<ul>\n<li>releas version<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Generate SEO titles, meta descriptions, focus keywords and image alt text with AI \u2014 written straight into your existing SEO plugin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/348261","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=348261"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vanyaa"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=348261"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=348261"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=348261"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=348261"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=348261"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=348261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}