AISA — AI SEO & GEO Assistant with MCP: Alt Text for Accessibility (WCAG), Meta, Schema, Brand Voice — Your Own API Keys
AISA — AI SEO & GEO Assistant with MCP: Alt Text for Accessibility (WCAG), Meta, Schema, Brand Voice — Your Own 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.
New in 2.0 — run it from your AI assistant (MCP). AISA ships its own MCP server: connect
Claude, ChatGPT or any other MCP client to your site and ask in plain language — “which pages are
missing a meta description?”, “audit the pricing page”, “what does my llms.txt say?”. The free
plugin gives the assistant five tools that read your SEO; AISA Premium adds the eight that write
it. You sign in with a WordPress Application Password, every tool checks that user’s
capabilities, and one switch in Settings turns it all off. The full list is below, under
MCP: run your SEO from an AI assistant.
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/v1endpoints, for headless setups and automation.
MCP: run your SEO from an AI assistant
AISA speaks MCP (Model Context Protocol), the standard that lets an AI assistant use tools on
your behalf. Connect Claude, ChatGPT or any other MCP client to your site and ask in plain
language: “which pages are missing a meta description?”, “audit the pricing page”, “what does my
llms.txt say?”. The assistant calls AISA, AISA answers with the real data of your site.
The MCP server is built into the plugin at /wp-json/aisa/v1/mcp: no extra plugin and no
external service in between. AISA also registers its tools with the WordPress Abilities API
(WordPress 6.9+), so the official MCP Adapter and any other Abilities-aware plugin see them too.
You sign in with a WordPress Application Password, every tool checks the capabilities of that
user, and one switch in Settings turns the whole thing off.
In this free plugin — five tools that read, none that write:
- Get SEO status — the SEO title, meta description, focus keyphrase and slug of a page, the
SEO plugin in use and the language detected. - Audit a page — every on-page check with its outcome, optionally on the page as it is
actually served to visitors. - Get llms.txt — the document your site serves to AI answer engines, and how much of your
content already carries an AI Search Context. - Get the Brand Context — what the business does, its audience, tone of voice and the terms
that must never be translated. - Diagnostics — how AISA is set up: versions, SEO plugin and mode, which AI providers are
configured (names only, never the keys).
Your assistant can inspect, compare and report on the whole site. It cannot change anything.
With AISA Premium — eight more tools, the ones that write:
- Optimize a page — keyphrase, SEO title, meta description and AI Search Context, written
through your SEO plugin in the language of the page. - Auto-fix a page — repairs the failing checks of the audit. Changing the URL slug or the
page content is off unless you ask for it. - Optimize many pages — a background job that returns at once, with a tool to follow its
progress, read the outcome of every item and stop what is still queued. - Set the Brand Context, describe images (alt text and title), check and repair
internal links, scan AI visibility (does an AI engine cite you, and who does it cite
instead).
Tools that generate text use the AI provider and the API keys you configured in AISA, and their
cost shows up in the usage log like any other operation. The assistant you connect is a separate
service with its own terms: what it reads from your site is sent to it, as with any MCP client.
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. - MCP tools that write — the free plugin lets an AI assistant read and audit your site;
Premium adds the eight tools that optimize, fix and run background jobs (see MCP above).
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, ChatGPT, Anthropic, Claude, Google, DeepSeek, Mistral, xAI and Z.ai are trademarks of their respective owners. Model Context Protocol (MCP) is an open protocol; AISA implements it and is not affiliated with its maintainers.
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
Model catalog (our own service, read only):
Model catalog: once a day the plugin downloads a public JSON price list from aiseoassistant.net (no site data is sent, only an HTTP GET). Provider model lists are fetched from the provider you configured, with your own key.
Terms: https://aiseoassistant.io/terms/ — Privacy: https://aiseoassistant.io/privacy/
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
- Upload the plugin to
/wp-content/plugins/ai-seo-geo-assistantor install it from the Plugins screen. - Activate it through the Plugins menu in WordPress.
- Open AI SEO & GEO Assistant and run the setup wizard.
- Add at least one AI provider API key (OpenAI, Claude, Gemini, DeepSeek or Perplexity).
- Open any post/page and use the floating panel (integration mode) or the AI SEO block (standalone) to generate and apply SEO fields.
Screenshots

The floating panel inside the editor: AI-generated title, meta description, keyphrase and slug, written into the fields of your SEO plugin.

Auto SEO Fix: the on-page audit, with a targeted fix for each finding.

AI image alt text in the Media Library — "Describe with AISA Vision", under the alt text field.

Site-wide SEO Doctor: missing, duplicated and oversized metadata, with a before/after preview.

Optimal Schema: the structured data suggested for that content type.
Faq
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Reviews
Impressive
By gfxproductions on September 2, 2026
Works like a charm. Haven’t had any problems. Easy to configure.
Changelog
2.0.0
- Added: every Q&A pair now has a status – Approved, To approve, To complete. Only approved pairs with an answer go on the page, into the FAQPage schema and into llms.txt. Generated pairs start as “To approve”; approve them one by one, all the complete ones at once (it follows the active filter, with Undo), or from the list of sets
- Changed: AISA never writes a placeholder any more. When a fact is missing (address, opening hours, prices) the question is saved as “To complete”, the answer stays empty and the editor says what is missing, with a link to the field. After the update the FAQs already online stay online; the few that contained a placeholder move to “To complete” and their original text is kept
- Added: a fact check on generated answers – opening hours, phone numbers and places that do not match your business details raise a warning on the row. A warning never blocks your own approval (“Approve anyway”); it only keeps the pair out of automatic and bulk approval
- Fixed: with Yoast SEO, Rank Math or All in One SEO active the FAQ questions now enter the graph your SEO plugin publishes (one JSON-LD script, FAQPage linked to the page) – before, on a page that was itself an FAQ, nobody emitted them
- Added: with an SEO plugin active AISA completes its Organization and WebSite nodes with your business details – legal name, VAT number, address, one phone per contact point, areas served as typed places, services, description. Only the fields you filled in: an empty field means no key, and values you set in the SEO plugin are never overwritten
- Added: business details get a typed list of areas served, legal name, VAT number and a list of services, plus “Autofill with AI”, which reads your contact page and footer, proposes the values and saves nothing until you confirm
- Added: the dedicated Q&A page gets a slug in its own language and, with Polylang or WPML, the language of its set and the link to its translations – existing Q&A pages without a language receive it once, on update. After creating the page AISA offers to add it to a menu or to an existing page. With a page builder the page is created with the shortcode
- Fixed: the legacy [geo_qa] shortcode, left as raw text on sites that started with the old name, is rewritten to [aisa_qa] once on update (also inside Elementor), with a revision saved first; revisions themselves are never touched
- Fixed: SEO titles no longer go over 60 characters because of the template suffix – the site name and separator are measured before generating, the AI gets the real budget, and when its text does not fit the title keeps the whole sentence and drops the site name instead of being cut in half. A site name written twice is removed
- Added: SEO Doctor explains when titles are over 60 only because of the template suffix, and offers the free fix first (remove the site name with Find & Replace, with preview) instead of a paid regeneration
- Changed: AI Vision works on the images actually placed in your content. SEO Doctor shows “N used in your content – M only in the media library” and asks, with the numbers and the estimated use for each choice, before touching the rest of the library; the image Batch asks the same question
- Changed: SEO Doctor has a “Settings analysis” card with settings only, while findings about single contents – text in a language other than the one assigned to the post, AI Context in another language – come out of “Analyze all SEO” as groups. Language is reported only on long enough texts and only for languages the site actually has
- Added: twelve deterministic audit checks, no AI involved – single H1, full brand name in the title, area served named in the text, headings with nothing under them, generic image ALT, site still declared in http, comments open on the home page, leftovers of another SEO plugin, Q&A page without internal links or without a language
- Added: on the home page and on service pages at least two of the five title and description variants name the area you serve; the Location line of llms.txt is built from the typed list, and the saved llms.txt is refreshed when those details change
- Fixed: an llms.txt you regenerated and saved without editing is no longer treated as a manual version, so AISA keeps it up to date; on update, a document nobody ever edited is recognised as generated
- Fixed: a Q&A set in the Trash is no longer shown on the site; One-Click SEO reuses the existing Q&A set and FAQ page instead of creating a new pair on every run
- Fixed: the 404 log no longer records the home page and the home page cannot be the source of a redirect; feeds and trackbacks no longer fill the log
- Changed: the Q&A stylesheet is loaded only on pages that show a Q&A set
- Changed: with AISA Cloud the first Q&A set of a site costs 1 credit, from the second one 5; the cost is always shown before you start
- Added: “Automatically approve complete and verified questions”, a Premium option on the One-Click SEO page, off by default; it never approves questions to complete or rows with a warning
- Fixed: opening One-Click SEO no longer floods the error log with “table doesn’t exist” database errors on sites using the free version of AIOSEO, and term SEO is now read in bulk instead of one query per term, so the page loads much faster on sites with many categories and tags
- Fixed: while One-Click SEO is running, the numbers in the analysis table now go down as each item is completed, instead of freezing until the run ends on slow hosting
- Fixed: the background optimization bar kept asking the server for its status every 6 seconds forever, even with nothing running — it now starts from the state printed by the page, polls fast only while a job is running, checks once a minute otherwise, and stops completely while the tab is in the background
- Fixed: every content the One-Click report counts as an error now has one line in the error log with the real cause — before, the report could say “55 errors” while Utility said “No errors recorded”
- Added: the error log tells you where each error came from (One-Click, Batch, Scheduler, Auto SEO), can be filtered by origin, keeps 300 lines instead of 100, and can be copied as text for a support request
- Added: HTTP failures that only the browser sees (timeout, 504, 429) are recorded too, with the status and how long the request took
- Added: contents optimized only in part (some fields generated, others not) are reported as a warning with the field list and the cause, instead of passing for a full success
- Added: error messages now name the provider, the model and the HTTP status (“DeepSeek (deepseek-flash): HTTP 400 – Model Not Exist”, “timeout after 90 s”) instead of a generic “API error”
- Added: when the AI provider slows down or times out, AISA lowers the number of parallel requests, waits, and retries each content up to twice; the report tells apart what was recovered on retry from what failed for good
- Changed: the DeepSeek timeout goes from 45 to 90 seconds, which is what the provider really needs at peak hours
- Fixed: the end-of-run report no longer congratulates you when contents failed – it says how many succeeded, how many failed, and lists every failed content with a link to edit it
- Fixed: a manually saved llms.txt no longer silently freezes the file: badge with save date, “Back to automatic generation” that keeps your text as a backup, side-by-side comparison, on-demand link check and a SEO Doctor warning
- Fixed: llms.txt link titles no longer contain HTML entities, link descriptions use only the Context part of the AI Context, and the sitemap link is the one of the active SEO plugin
- Added: SEO Doctor “Settings analysis” card: entity name mismatch, settings still pointing to a development host; settings import rewrites development hosts
- Added: option to keep the Google Business category out of llms.txt; notice in Social and Schema tabs when an SEO plugin produces the schema and social tags of the page
- Fixed: with a valid license and the Premium component missing, the invitation to install it (activate / install / download) now appears on every AISA screen and in the setup wizard, also on the WordPress.org package; the download link points straight to the latest component zip
- Fixed: a social image set on a single content now always wins over the featured image and the site default; with Yoast, Rank Math or SEOPress it is saved into their social fields as well; two clear modes in Settings Social
- Added: AISA SEO Commander – AISA registers 13 abilities with the WordPress Abilities API (6.9+) and ships its own MCP server, so Claude, ChatGPT and any MCP client can read and improve the SEO of this site
- Added: MCP endpoint built into the plugin at /wp-json/aisa/v1/mcp (JSON-RPC 2.0, no extra plugin required); with the official MCP Adapter installed AISA also registers a native server at /wp-json/aisa/mcp, where the tools keep their own names (aisa_audit_page, aisa_optimize_page and so on)
- Added: five read-only abilities in the free plugin – aisa/get-seo-status, aisa/audit-page, aisa/get-llms, aisa/get-brand, aisa/diagnostics
- Added: eight abilities that write, available with the Premium component – aisa/optimize-page, aisa/autofix-page, aisa/optimize-bulk, aisa/get-job, aisa/set-brand, aisa/media-alt, aisa/links-fix, aisa/geo-scan
- Added: new REST routes under aisa/v1 – GET /audit/{id}, GET /variants/{id}, GET /brand, POST /autofix/{id}, POST /optimize/bulk, GET and DELETE /jobs/{id}, POST /llms/rebuild
- Added: background jobs for volume work – ask once, get a job id, then poll progress and the per-item outcome instead of holding the request open; up to 200 contents per job, cancellable while still queued
- Added: the content fix can now put the focus keyphrase into the H1 – Elementor heading, H1 in the content, WPBakery heading or the post title, whichever the page really uses – with a backup and a before/after report every time
- Added: per-user rate limits on every ability – 60 calls a minute for reads, 10 for writes, 2 for bulk jobs and GEO scans
- Added: “Abilities API & MCP” switch in Settings, API Keys tab, on by default, showing the live MCP endpoint, whether the MCP Adapter plugin is active and how many AISA abilities are registered; the AISA_ABILITIES constant in wp-config.php still overrides it
1.99.999.2
- Added: activity registry with 171 business types (IT/EN) drives the entity type detection: weighted signals (Google Business category, Brand Context, site name, tagline, home H1/title), whole-word matching, negative aliases, confidence score with “to check” badge, physical-location rule for LocalBusiness subtypes
- Changed: the SoftwareApplication schema is now decided by the site analysis (on only when the Brand Context describes software, plugins, apps or SaaS) and can be turned on/off from the SEO Doctor and the Schema page
- Added: SEO Doctor offers the schema fixes in place (detect from site, social profiles, logo, hours, NAP footer, SoftwareApplication)
- Changed: heating, plumbing, electrical and construction businesses are detected as HVACBusiness, Plumber, Electrician, GeneralContractor
- Fixed: opening hours imported from Google Business (with invisible narrow spaces before AM/PM) were not recognised, so the LocalBusiness schema had no openingHours
- Fixed: structured data is now a real JSON-LD graph, not just a title template: one @graph per page with stable @id (Organization/LocalBusiness/Person, WebSite, WebPage with subtype, BreadcrumbList, primary image, BlogPosting with author, FAQ, optional SoftwareApplication)
- Added: Entity Profile as the single source of truth for the site identity (used by schema, llms.txt and the SEO Doctor), with automatic entity type detection
- Fixed: no more duplicated schema nodes when Google Business is connected and an SEO plugin is active; with Yoast, Rank Math, AIOSEO or SEOPress active AISA only adds the nodes they do not emit
- Added: page “SEO Schema & Template” with the “Who is this site” card, completeness score, one-click fixes (detect from site, social profiles, logo, hours) and optional NAP block in the footer
- Fixed: opening hours in the LocalBusiness schema when Google Business is connected; Google hours format converted to schema.org syntax
- Changed: SoftwareApplication settings are no longer exported/imported between sites
1.99.999
- Changed: DeepSeek V4.1 Flash is the default DeepSeek model (id deepseek-flash) for text and Vision; the experimental vision model was retired by DeepSeek and vision is now native in the text model
- Fixed: saved legacy DeepSeek model ids (deepseek-chat, deepseek-reasoner, deepseek-v4-flash, deepseek-v4-flash-vision-exp, deepseek-v4-pro) are mapped automatically, so image alt text keeps working
- Changed: Token Tracker prices for DeepSeek updated to the new price list (input was overestimated by 47%)
- Fixed: DeepSeek thinking mode is disabled for every DeepSeek model, avoiding empty responses
1.99.998
- Changed: the Free version no longer limits AI generation to a quarter of your contents – every post, page and product can be optimized
- Changed: Brand Context “Generate all” and Writing DNA “Learn my style” now cost 1 credit on AISA Cloud (one-time setup); long content generations (Q&A, content fixes, llms.txt, Consultant) stay at 5
- Added: note that credit costs per request type may change over time, always shown before you click; credits in your balance are never reduced
- Changed: credit top-ups now open the live store checkout
1.99.997
- Added: AI image descriptions (alt text) now work on AISA Cloud too
- Changed: on AISA Cloud every generation costs exactly 1 credit
- Changed: long generations on AISA Cloud (Q&A sets, content fixes, llms.txt, Consultant articles, Writing DNA) cost 5 credits, shown before you click
- Fixed: with DeepSeek, GLM or Mistral as your image provider the AI never actually looked at the image – the alt text was silently guessed from the file name instead
- Changed: Cloud server model catalog refreshed (current GPT-5.6, Gemini 3.x, DeepSeek V4, Claude Haiku 4.5, Mistral Small 4)
1.99.996
- Fixed: the llms.txt AI review now answers in the site’s primary language, even when the file carries a multilingual About block
- Fixed: leftover Italian in the default interface, in the AI prompts and in the generated files – the plugin now speaks English out of the box everywhere (Italian and the other 11 languages come from the translations only). Q&A no longer answer with an Italian placeholder on English sites, the Redirects card shows /old-path and /new-path, the AI-generated robots.txt comments follow the site language, and the SEO Template preview uses neutral sample data.
- Added: AISA Vision can describe new images while you upload them – alt text only or alt text and title, only when the alt text is empty, off by default; queued in the background with an hourly cap, a “Describe queued images now” button and a 24h status line in Settings > API Keys.
- Added: SEO data transfer / sync, in Utility: move titles, meta descriptions and focus keyphrases between AISA and Yoast, Rank Math, All in One SEO or SEOPress, with a preview before anything is written, a backup first, a status line that tells you when the two sides are already aligned, and an alert when your SEO plugin cannot see the SEO AISA has already written.
- Added: Q&A sets in the settings export, so they survive a plugin data cleanup, and come back with their dedicated page reconnected on import.
- Fixed: in the block editor, “Update post” from the panel reported “Button not found” and saved nothing, so SEO applied to Yoast was lost on reload.
- Fixed: in the block editor, applying the slug did nothing at all, without saying so.
- Changed: a shorter plugin menu, from 18 entries to 14. Automation is now a card in Utility, the setup wizard leaves the menu once you complete it (you can always run it again from the Dashboard or the User guide), Compatibility is linked from the User guide and from Settings, and Appearance became the last tab in Settings.
- Changed: URL slug suggestions are now optional and off by default – the SEO panel, the SEO block and the AISA SEO panel inside Elementor each have an “Also suggest a URL slug” tickbox (next to a new “Also generate AI Search Context” one) and Settings > Analysis has the site-wide switch, so your addresses never change unless you edit the slug yourself; when you do change the slug of a published page from the SEO block, the 301 redirect from the old address is created for you.
- Changed: AISA Vision now waits for image optimizers (WP Compress, ShortPixel, Imagify, EWWW, Smush, Optimole) to finish before describing an uploaded image, and warns you when another plugin is already writing the alt text on upload.
- Changed: the FAQ generator is now called “Q&A FAQ Generator”.
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.