Directory / plugin
Flexa SEO – AEO | AI SEO & Answer Engine Optimization
v1.0.0 · by FlexaTech
Complete WordPress SEO (schema, sitemaps, meta, Open Graph), plus an Answer-Engine Readiness score that grades every post for AI search.
About this plugin
Flexa SEO is a complete, privacy-first SEO plugin: title & meta templating, JSON-LD schema, XML sitemaps, Open Graph, robots.txt, IndexNow, and one-click migration from Yoast, Rank Math and SEOPress. It covers the SEO baseline you expect, and then goes one step further than any of them.
A guided Setup Assistant takes you from activation to a configured, answer-engine-ready site in a few minutes: it detects your setup, recommends the SEO and AEO settings that fit, and applies them in one click. Every recommendation is compared against the defaults, so you see exactly which settings will change before anything is applied and any value you set yourself is kept.
What makes it different: the Answer-Engine Readiness Score
AI answer engines (ChatGPT, Perplexity, Claude, Google AI Overviews) now decide whether your content gets quoted, not just ranked. Dozens of plugins will generate an llms.txt file and stop there. Flexa SEO is the only one that measures and scores how quotable each post actually is, right in the block editor:
- A live 0–100 readiness score with a letter grade for the post you’re editing, refreshed on every save.
- An actionable checklist across eight signals answer engines rely on: structured data, a concise meta description, an answer-first opening paragraph, question-style headings, FAQ/Q&A blocks,
llms.txtinclusion, a Markdown alternate for crawlers, and content depth. - Each item comes with a plain-English fix, so writers know exactly what to change to become citable, with no guesswork and no external tool.
- A site-wide health Dashboard rolls those scores up across your content: overall SEO / AEO / Technical scores, an issues overview, health breakdowns, prioritised actions, and a “Pages needing attention” list where each page reveals what to fix, with a one-click Enable site-wide button on the checks that are just a settings toggle away (structured data, llms.txt, Markdown alternate).
- Extensible via the
flexa_seo_aeo/aeo/readiness_checksfilter for themes and add-ons.
This turns “AEO” from a file you generate once into a workflow your team improves post by post: the gap the crowded llms.txt category leaves wide open.
Core SEO
- Title & meta description templating with a token engine (site, post, term, author, date, pagination variables).
- JSON-LD structured data (
@graph): Article / BlogPosting / WebPage, WebSite + SearchAction, Organization / Person publisher, and automatic FAQPage from core FAQ blocks. - Open Graph and Twitter Card tags, canonical URLs, and configurable robots directives (AEO-friendly defaults:
max-snippet:-1,max-image-preview:large). - XML sitemaps (index + per-type sub-sitemaps, image entries) with a branded XSL stylesheet, plus an HTML sitemap shortcode
[flexa_seo_aeo_sitemap]and a sitemap block. - Per-post editing in a classic metabox and a Gutenberg editor sidebar, with one-click migration from Yoast, Rank Math and SEOPress, and a read-fallback for all three so nothing breaks mid-move.
robots.txtmanagement and optional IndexNow ping on publish/update (see External services below).- Links controls: strip the category base from archive URLs, redirect attachment pages to their parent (with an orphan fallback), and add
nofollow/target="_blank"to external links at display time.
AI answer-engine tooling
- Native
/llms.txtendpoint describing your site for large language models. - Agent Readiness: advertises a Markdown alternate of each post (
?flexa-aeo=md) via aLinkheader and<link rel="alternate">, and serves a clean, token-cheap Markdown rendering for AI crawlers and coding agents. - No cloud account and no per-request AI fees: the readiness score and every AEO feature run entirely on your own server.
WooCommerce (optional)
- When WooCommerce is active, emits Product / Offer / AggregateOffer JSON-LD (price, availability, rating) and Open Graph product tags for AI shopping surfaces.
Privacy
- No account, no telemetry, no phone-home. The only outbound request is the optional IndexNow ping you enable yourself (disclosed below).
Documentation
Full documentation is at https://flexa-seo-aeo.vercel.app/. Two parts of this plugin ask you to take its word for something, so both are written up there rather than left as a claim:
- The scoring rubric gives all eight readiness checks: the weight each one carries, the exact thresholds that separate pass from warn, the evidence label behind the signal, and the reasoning for the weight. The score is editorial, and the rubric is where you can disagree with it on the specifics.
- The compatibility matrix records what happens when Flexa SEO runs next to Yoast, Rank Math, SEOPress or All in One SEO: the exact versions tested, how many of each head tag the pairing produces, what the sitemap and
robots.txtend up advertising, and which fields migration and the read-fallback cover. Every count was measured rather than assumed, and the page hands you the one-line curl to check it on your own site.
External services
This plugin connects to two external services: IndexNow, only when you explicitly enable it, and an optional deactivation feedback survey that runs only in the admin.
IndexNow (optional, “IndexNow ping” setting)
When the IndexNow feature is turned on, the plugin notifies the IndexNow API each time you publish or update a post so participating search engines (e.g. Microsoft Bing, Yandex) can recrawl the changed URL quickly.
- What is sent: your site host, the changed URL(s), and an IndexNow verification key (a random key the plugin generates and serves at
/{key}.txton your own site). No personal data and no post content are transmitted; only the public URL that changed. - When: on the
publish/update transition of a post, as a non-blocking background request. Nothing is sent while the feature is disabled (it is off by default). - Endpoint:
https://api.indexnow.org/indexnow(operated by Microsoft).
IndexNow is an open protocol. Documentation and terms: https://www.indexnow.org/documentation (privacy statement for Microsoft, the endpoint operator: https://privacy.microsoft.com/privacystatement).
Deactivation feedback (Flexa Product Intelligence)
When you go to deactivate Flexa SEO on the Plugins screen, a short optional survey asks why. It is served by Flexa’s product intelligence service at https://product-intelligence.flexacommerce.com. It runs only on wp-admin/plugins.php, never on the front end, and never blocks or delays deactivation.
- What is sent, and when: on opening the Plugins screen, a request to
/api/v1/config(the product slug and tier) loads the survey configuration, cached for 6 hours. When you deactivate or interact with the survey, the reason you pick and any optional message you type are sent to/api/v1/deactivations,/api/v1/events,/api/v1/feedback,/api/v1/feature-requests, and/api/v1/recovery-events. If you later reactivate the plugin, a single/api/v1/recovery-eventsrequest records the reactivation and how long the plugin was inactive. - What is included: an anonymous per-site identifier (a random UUID), the plugin version and tier, and by default your WordPress/PHP version and locale. No email, site domain, user identity, or raw IP is collected.
- Opt out: turn the environment data off with
add_filter( 'flexa_seo_aeo/deactivation_survey/config', fn( $c ) => array( 'collect_environment' => false ) + $c );, or disable the whole survey withadd_filter( 'flexa_seo_aeo/deactivation_survey/enabled', '__return_false' );.
Service terms and privacy policy: https://flexacommerce.com/pages/terms and https://flexacommerce.com/pages/privacy
Source code
The plugin ships compiled JavaScript/CSS for its admin app in assets/dist/. The human-readable source (apps/admin/src/) and its build configuration are included in the plugin package, so no external download is required.
The admin app is built with pnpm, Vite, React and TypeScript:
pnpm installpnpm build(orpnpm devfor a watched build)
The .pot translation template is regenerated with pnpm i18n:pot (PHP + vanilla JS via WP-CLI, React strings via a TypeScript-AST extractor in tools/i18n/).