=== AISA — AI SEO & GEO Assistant: Alt Text for Accessibility (WCAG), Meta, Schema, Brand Voice — with Your Own AI API Keys === Contributors: ingeniumproject, paolopiace Tags: seo, ai, meta description, schema, structured data Requires at least: 6.9 Tested up to: 7.1 Requires PHP: 8.0 Stable tag: 1.99.995 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Advanced AI SEO & GEO — standalone or with Yoast, Rank Math, SEOPress, AIOSEO. One-Click & bulk (Premium), AI Vision alt text. Your API keys. == Description == You already have hundreds of pages online. Their SEO titles were written years ago, half the meta descriptions are missing, and the product pages say whatever the importer put there. Fixing that by hand means opening every post, one at a time, and you never get to the end of it. AI SEO & GEO Assistant is a **data optimization engine** for content you have already published. It reads a page — the real text, even when it was built with Elementor or a page builder — and writes the SEO title, meta description, focus keyphrase, slug and structured data that page should have had. It works inside the SEO plugin you already use, or on its own if you have none. You bring your **own** AI provider key. Your content goes to the provider you chose, with your key, at your cost — a typical page costs a fraction of a cent. Nothing is sent anywhere unless you press a button. = It works with your SEO plugin, not against it = **Integration mode** — AISA detects Yoast SEO, Rank Math, SEOPress or All in One SEO and writes into their own fields, through a floating panel that sits next to the editor. Your SEO plugin stays in charge of the output; AISA just fills it in properly. **Standalone mode** — no SEO plugin at all? AISA emits the title, meta description, canonical and robots tags itself. The moment an SEO plugin becomes active it steps back, so you never get two meta descriptions in the same page. **Any editor** — the block editor (Gutenberg), the Classic editor and Elementor. The panel reads the page you are actually editing in all three. In the block editor "Describe with AISA" also sits on the image toolbar and next to the Alternative text field, where alt text belongs. = What it does = * **Writes the SEO of a page in one call** — title, meta description, focus keyphrase, slug and AI context, generated together so they agree with each other, then written into the fields of your SEO plugin. * **Audits the page and fixes what it finds** — keyphrase in the title, in the URL, in the first paragraph, lengths, missing image ALT, outbound links. Each finding comes with a targeted fix, not a red dot and a shrug. * **Rewrites the content itself, when you ask it to** — with an explicit confirmation and a restore point, for Classic, Gutenberg, Elementor, WPBakery and Divi. * **Optimal schema (JSON-LD)** — proposes the structured data that actually suits each content type, and completes the WooCommerce Product schema (availability, condition, brand, GTIN) instead of emitting a second, competing one. * **llms.txt and AI Search Context** — publishes the file AI answer engines look for, and stores a short machine-readable summary of every page. * **Answers the questions people actually ask** — generates an FAQ set for a page and can create the FAQ page, with FAQPage schema. * **Site-wide SEO Doctor** — scans the whole site for missing, duplicated or oversized metadata, checks PageSpeed, Safe Browsing and Bing, and shows you exactly what it would change, before and after. * **Finds and repairs broken internal links** — and suggests related published content to link to, with the anchor text. * **The plumbing, done properly** — breadcrumbs with BreadcrumbList schema, sitemap with IndexNow ping, 301 redirects and 404 handling, SEO for categories and tags, Local SEO through Google Business Profile. * **Brand Context** — teach it once what your business is, who it serves and how it talks; every generation uses it, so the output does not read like generic AI. * **Language fidelity** — the language is taken from the real text of the page, not from your site setting, and a "do not translate" glossary keeps product names intact. * **Backup, restore, migrate** — SEO snapshots are plugin-agnostic, so restoring one under a different SEO plugin migrates your SEO data from Yoast to Rank Math, or the other way round. * **REST API** — authenticated `aisa/v1` endpoints, for headless setups and automation. = Your keys, your provider = OpenAI, Anthropic (Claude), Google Gemini, DeepSeek, GLM (Z.ai), xAI (Grok), Mistral and Perplexity. Enable the ones you want, paste your keys, pick a model per task. Costs are tracked per operation, so you always know what you spent. If you would rather not deal with API keys at all, **AISA Cloud** is an optional paid service with prepaid credits: your requests go through our server, which forwards them to a provider. It is strictly opt-in — connect no account and nothing ever reaches us. See *External services*. = AISA Premium (a separate plugin, optional) = Everything above is in this plugin, unlimited and unlocked. There is no trial, no quota and no countdown. Some work, though, is bulk work: doing to nine hundred products what you just did to one page. That lives in **AISA Premium**, a **separate companion plugin** you download from our site and install like any other plugin. This plugin never downloads or installs code on its own. * **One-Click SEO across the site** — pick what is missing, press once, and let it work through the queue in the background while you close the tab. * **Bulk SEO** — hundreds of posts or products in one run, with a cost estimate before it starts and a stop button while it runs. * **Image ALT in bulk with vision models** — descriptive ALT text for a whole media library. * **Multilingual SEO Rotation** — serve a different title and description over time, coherently per language, deterministic server-side, no cloaking. * **Scheduled regeneration** — re-optimize what changed, every N days, with no browser open. * **Applying SEO Doctor fixes in bulk** — the free version finds and previews everything; Premium applies it: cleanup, find and replace across the site, mass 301 redirects. * **SEO Consultant** — targeted searches you want to rank for, scanned and turned into concrete work on the pages you have. Why people upgrade: the free plugin makes one page excellent in a couple of minutes. Premium does that to the whole catalogue while you do something else — and at a fraction of a cent per page, the arithmetic tends to make itself. == Trademarks == AISA is an independent plugin by Ingenium Project. It is not affiliated with, endorsed by, or sponsored by any of the products it interoperates with. Yoast SEO is a trademark of Yoast BV. Rank Math is a trademark of Rank Math. SEOPress is a trademark of Benjamin Denis. All in One SEO is a trademark of Awesome Motive, Inc. WooCommerce and WordPress are trademarks of Automattic Inc. and the WordPress Foundation respectively. Elementor is a trademark of Elementor Ltd. OpenAI, Anthropic, Google, DeepSeek, Mistral, xAI and Z.ai are trademarks of their respective owners. These names are used here only descriptively, to state which products this plugin can work with. == External services == This plugin connects to third-party services. Each call happens only when you configure the related API key and trigger the corresponding action. No data is sent automatically in the background without your action. **AI text/vision providers (you choose, with your own API key):** When you run a generation, optimization, audit, Q&A or image-ALT action, the plugin sends the relevant content of the selected post (e.g. title, excerpt or body text, and — for image ALT — the image URL) plus your "brand context" settings to the provider you enabled, in order to receive the generated SEO text. It is sent at the moment you click the action. * OpenAI — Terms: https://openai.com/policies/terms-of-use — Privacy: https://openai.com/policies/privacy-policy * Anthropic (Claude) — Terms: https://www.anthropic.com/legal/consumer-terms — Privacy: https://www.anthropic.com/legal/privacy * Google (Gemini) — Terms: https://ai.google.dev/gemini-api/terms — Privacy: https://policies.google.com/privacy * DeepSeek — Terms: https://cdn.deepseek.com/policies/en-US/deepseek-terms-of-use.html — Privacy: https://cdn.deepseek.com/policies/en-US/deepseek-privacy-policy.html * xAI (Grok) — Terms: https://x.ai/legal/terms-of-service — Privacy: https://x.ai/legal/privacy-policy * Mistral — Terms: https://mistral.ai/terms/ — Privacy: https://mistral.ai/terms/#privacy-policy * Perplexity (Sonar) — Terms: https://www.perplexity.ai/hub/legal/terms-of-service — Privacy: https://www.perplexity.ai/hub/legal/privacy-policy * GLM / Z.ai — Terms: https://chat.z.ai/legal-agreement/terms-of-service — Privacy: https://docs.z.ai/legal-agreement/privacy-policy **AISA Cloud (optional — our own service, opt-in):** Only if you choose to connect an AISA Cloud account instead of using your own API keys: the plugin sends your AI requests (the same post content described above) to our server at aiseoassistant.net, which forwards them to an AI provider and manages your prepaid credit balance. When you connect the account, your admin email address is sent to create/link the account. Nothing is sent to our server unless you explicitly connect a Cloud account. Terms: https://aiseoassistant.io/terms/ — Privacy: https://aiseoassistant.io/privacy/ **Lemon Squeezy (optional — premium license validation):** Only if you enter a premium license key: the plugin sends the license key and your site URL to the Lemon Squeezy licensing API to activate/validate/deactivate the license. Sent when you enter, re-check or remove a license key. Terms: https://www.lemonsqueezy.com/terms — Privacy: https://www.lemonsqueezy.com/privacy **Bing Webmaster API (optional — SEO Doctor):** Only if you connect your own free Bing Webmaster API key: the plugin requests your site's crawl issues report from the Bing Webmaster API (ssl.bing.com). Your site URL and the API key are sent when you connect the key or fetch the report. Terms: https://www.microsoft.com/en-us/legal/terms-of-use — Privacy: https://privacy.microsoft.com/en-us/privacystatement **Google PageSpeed Insights API (optional — SEO Doctor):** Only when you run the performance check: the plugin sends your homepage URL (and your Google API key, if set) to the PageSpeed Insights API to measure performance and Core Web Vitals. Terms: https://developers.google.com/terms — Privacy: https://policies.google.com/privacy **Google Safe Browsing API (optional — SEO Doctor):** Only when you run the safety check (requires your own Google API key): the plugin sends your homepage URL to the Safe Browsing API to verify the site is not flagged as dangerous. Terms: https://developers.google.com/terms — Privacy: https://policies.google.com/privacy **Google Places API (optional — Local SEO feature):** Only if you use the "Local SEO (Google Business Profile)" feature: the plugin sends your business name/search query to the Google Places API to find and link your business and read its public profile data. Sent when you search or sync your business. Terms: https://policies.google.com/terms — Privacy: https://policies.google.com/privacy **IndexNow (optional — standalone SEO feature):** Only if you enable IndexNow: when you publish or update content, the plugin submits the URL(s) to the IndexNow endpoint so search engines (e.g. Bing) can recrawl. Sent on publish/update. About: https://www.bing.com/indexnow — Privacy: https://privacy.microsoft.com/privacystatement == Installation == 1. Upload the plugin to `/wp-content/plugins/ai-seo-geo-assistant` or install it from the Plugins screen. 2. Activate it through the **Plugins** menu in WordPress. 3. Open **AI SEO & GEO Assistant** and run the setup wizard. 4. Add at least one AI provider API key (OpenAI, Claude, Gemini, DeepSeek or Perplexity). 5. Open any post/page and use the floating panel (integration mode) or the AI SEO block (standalone) to generate and apply SEO fields. == Frequently Asked Questions == = Do I need an API key? = Yes, unless you use AISA Cloud. By default the plugin uses your own provider key, so you control both the cost and where your content goes. You only enable the providers you want. Alternatively you can connect an AISA Cloud account — an optional paid service with prepaid credits — and skip API keys entirely. = Does it work with Yoast, Rank Math, SEOPress or All in One SEO? = Yes, with all four. AISA detects the active one and writes into its fields, so your SEO plugin keeps producing the output. With no SEO plugin active it works standalone and emits the SEO tags itself, without ever duplicating them. = Will it send my content somewhere without me knowing? = No. Content is sent only when you trigger an action — generate, optimize, audit — either directly to the AI provider you configured with your own key, or through AISA Cloud if you chose to connect an account. Nothing runs in the background on its own. *External services* lists every endpoint, what is sent, and when. = How much does one optimization cost? = It depends on the provider and model you pick, but a typical page is a fraction of a cent. The plugin tracks what you spend per operation and shows an estimate before long runs. = Is anything in the free version locked, limited or time-limited? = No. Everything described above works, without quotas or expiry. The bulk and automation features are not disabled here — their code is in a separate plugin, which you install only if you buy it. = Does it work on a local site or a staging server? = Yes. It needs an outbound connection to your AI provider, nothing else — no license check that fails offline, no domain lock on the free plugin. = Will it overwrite the SEO I have already written? = Only what you ask it to. Generation shows you the result before applying it, bulk operations let you choose which fields to touch, and there is a backup and restore for SEO fields. Content rewriting asks for explicit confirmation and keeps a restore point. = Does it work with WooCommerce? = Yes. Product titles and descriptions are optimized like any other content, and the Product JSON-LD is completed rather than duplicated: availability, item condition, brand, GTIN and price validity are filled into the schema your store already emits. = Does it work with WPML or Polylang? = Yes. The language of a page is detected from its actual content, so a page in English gets English SEO even when the rest of your site is not. Categories and tags are handled per language. = Does it write my articles for me? = No, and that is deliberate. AISA optimizes content you already have: metadata, structure, schema, alt text, internal links. It can rewrite a paragraph to fix a specific SEO problem, with your confirmation — it is not there to fill your blog with generated articles. == Screenshots == 1. The floating panel inside the editor: AI-generated title, meta description, keyphrase and slug, written into the fields of your SEO plugin. 2. Auto SEO Fix: the on-page audit, with a targeted fix for each finding. 3. AI image alt text in the Media Library — "Describe with AISA Vision", under the alt text field. 4. Site-wide SEO Doctor: missing, duplicated and oversized metadata, with a before/after preview. 5. Optimal Schema: the structured data suggested for that content type. == Changelog == = 1.99.995 = * Added: "Describe with AISA" now appears in the block editor, on the image toolbar and next to the Alternative text field, so you can write alt text while you are placing the image. * Fixed: in the block editor the SEO panel could not read the page, so generating stopped with "Add a title or some content" even on a full post, and the AI was sent nothing to work from. * Fixed: in the block editor the floating panel tab appeared on the left edge of the screen instead of the right. * Fixed: the Q&A block declared an outdated block API version, which forced the whole editor out of its iframe. * Fixed: chart headings such as SEO score and GEO score stayed white, and so unreadable, on the light admin colour scheme. = 1.99.994 = * Fixed: the setup wizard sent you back to step 1 after saving the API key or the business details, so it looked broken on the very first thing you do with the plugin. * Changed: the wizard is now four steps instead of five, and the last one writes your Brand Context with AI and shows it to you, so you finish setup with something in place rather than an empty form. * Fixed: three Brand Context fields could show the word "Array" instead of your values. Existing sites are cleaned up automatically. * Changed: setup now ends on the Brand Context page, and the Premium licence is a line at the end instead of a step of its own. = 1.99.993 = * Fixed: the score sparkline on the dashboard rendered as a black rectangle — the escaping added in 1.99.989 was stripping the CSS class off the shape, and an SVG shape without it defaults to a black fill. Gradients and a few other attributes were being removed the same way. * Added: the Premium component now updates itself, so you install it by hand once and never again. = 1.99.992 = * Fixed: with a valid license, the button on the License page linked to the plans page instead of the download for the Premium component. It now offers the download, with the steps to install it. * Changed: the plugin's source strings are now English, so anyone can translate it from English on translate.wordpress.org. Existing translations were kept: 11 languages remain complete. * Added: the Q&A block declares its metadata, so it shows as "Q&A / FAQ" instead of a name derived from its slug. = 1.99.991 = * Added: Writing DNA is back — teach AISA how you write, and every generation follows your voice. It had been left out of this package by mistake. * Changed: the plugin now lists what it actually does on the directory: alt text for accessibility, metadata, schema, brand voice, and your own AI keys. * Fixed: the screenshot captions described two features that are not part of this package. = 1.99.990 = * Added: a Trademarks section to this readme — AISA is an independent product and the third-party names it mentions are used descriptively only. * Changed: the Q&A inline styles are now registered with the plugin version, so browsers pick up changes after an update. = 1.99.989 = * Security: creating a Q&A page now checks that you actually have permission to create pages, not just to edit the Q&A set. * Security: about twenty admin outputs (SVG icons, badges, score rings, sparklines, progress bars, SERP preview, breadcrumbs, Elementor dynamic tags) now go through wp_kses() with a suitable allow-list. * Changed: the JSON-LD blocks are printed with wp_print_inline_script_tag() instead of a raw echo. * Fixed: the robots.txt admin and AJAX paths are derived from admin_url(), so they are correct when wp-admin has been moved or WordPress lives in a subdirectory. = 1.99.988 = * Fixed: the plugin folder and the text domain now match in every package, which removes hundreds of spurious Plugin Check notices. Translations were already loading correctly. * Fixed: multilingual scans (SEO Doctor, find & replace, link check) no longer suppress WordPress filters — they use the WPML and Polylang APIs instead, and still cover every language. * Fixed: file moves use the WordPress filesystem API rather than rename() and unlink(). * Fixed: a string with a placeholder was missing its translator comment, and "Tested up to" did not match between this readme and the plugin header. = 1.99.987 = * Changed: features that require the separate Premium companion (applying SEO Doctor fixes in bulk, mass find-and-replace, bulk 301 redirects, SEO Consultant) are no longer part of this package at all — their code ships with the companion plugin. The free plugin keeps the full site-wide analysis and previews. * Improved: combined (single-call) AI generation is now always on, so you spend fewer tokens with your own API key. * Security: sanitised the find/replace inputs of the SEO Doctor; hardened the Q&A custom CSS with wp_strip_all_tags(); added JSON_HEX_TAG to the LocalBusiness and breadcrumb JSON-LD; escaped the Elementor SEO widget output and the shortcode before/after text. * Fixed: the restore waiting screen no longer prints inline CSS — the stylesheet is enqueued. = 1.99.986 = * Changed: Perplexity now uses the new Agent API — the previous Sonar chat endpoint is only supported until 27 September 2026. * Fixed: the connection test for Perplexity, Grok and Mistral used a hardcoded model instead of the one you configured. = 1.99.985 = * Added: DeepSeek Vision — image ALT text at a fraction of the cost of other providers. * Added: GLM (Z.ai) as an AI provider; its Flash models are free to use. * Improved: refreshed every provider's model list and cost information (several were out of date). = 1.99.980 = * Improved: the One-Click token/credit estimate is now field-aware — it counts what is actually missing per field instead of multiplying by every listed item (no more scary inflated totals on nearly-complete sites). * Improved: image runs now show an upfront duration estimate and an explicit "preparing safety backup" message; the progress bar completes at the end of the run and the report lists the contents whose images failed (with edit links). * Fixed: failed image generations are now recorded in the error log (file name and reason). = 1.99.979 = * New: "Reset & describe (from scratch)" mode for AISA Vision — in the Media Library, One-Click and Bulk: ignores the current (possibly wrong) title/caption and rewrites alt + title purely from what is visible. * New: image mode selector in One-Click and Bulk (automatic alt+title / alt only / reset & describe). * Improved: when rewriting an image title, the old title is no longer fed to the AI as context (wrong titles no longer self-perpetuate). * Improved: WooCommerce product association for image alt is now verified (featured image, gallery or product content) — a wrong post_parent can no longer force a product name into every alt. * Changed: One-Click no longer pre-selects the Q&A set generation when a set already exists. * All bundled languages updated to 100% coverage. = 1.99.978 = * Fixed: restoring a large SEO backup could exhaust memory on WPML sites with many attachments (media duplication hooks are now suspended during restore). * Fixed: the One-Click SEO page could exhaust memory on very large sites (meta cache pre-loading removed). * Fixed: the "needs SEO" menu badge could show a stale count for up to 6 hours after restoring a backup. * Restore now shows a progress screen while running. * Excluded page-builder template post types (Dotstore WooCommerce Page Builder) from SEO counts. * All bundled languages updated to 100% coverage. = 1.99.866 = * Full internationalization pass: ~280 previously hardcoded UI strings (JS dialogs, status messages, provider/model labels, template designer) are now translatable. * All 12 bundled languages updated to 100% coverage (2060 strings each). = 1.99.865 = * Full disclosure pass: External services now lists every endpoint the plugin can reach (AI providers incl. xAI/Grok and Mistral, AISA Cloud, Lemon Squeezy license API). * Translations now load correctly on English sites (load_plugin_textdomain restored). * Security hardening: nonce added to a dashboard metrics endpoint, stricter escaping of Google Places data, hardened JSON-LD encoding. * Package cleanup: internal documents and design sources removed from the distribution. = 1.99.745 = * WordPress.org compliance pass (Plugin Check): output escaping, input sanitization and nonces, prepared SQL, i18n translator comments, asset versioning. * Added readme.txt and External services disclosure. * The GitHub auto-updater is no longer part of the free build (updates come from WordPress.org). For the full development history see the changelog included with the plugin. == Upgrade Notice == = 1.99.745 = Compliance and security hardening for the WordPress.org release. Recommended for all users.