Geolys helps WordPress sites optimize their content for AI answer engines
(ChatGPT, Perplexity, Gemini, etc.), without relying on a paid third-party API
and with no usage limit.
Features, all free and unlimited:
GEO Score /100 automatically calculated every time a post or page is saved,
based on heading structure, the presence of a summary at the top of the article,
the use of lists/tables, paragraph length, and the presence of a meta description.
Automatic generation of schema.org FAQPage or HowTo markup from existing content
(detection of question/answer pairs and step lists), with manual validation by
the user before publishing — no data is ever sent to an external service.
One-click automatic fixes (duplicate H1, heading hierarchy jump, paragraph too
long, enumerative passage turned into a list, question turned into an H2 heading
Prioritization dashboard: lists all content with its score, sorted by importance
(cross-referenced with traffic data if Google Site Kit is active, otherwise by
age and absence of schema).
Compatible with Yoast SEO and Rank Math without replacing them (the plugin reads
their existing meta description instead of duplicating it).
This plugin never makes any outbound network request: everything runs in local
PHP, no content data ever leaves your site.
An optional, paid extension, “Geolys — Advanced AI & GEO”, distributed
outside WordPress.org (dedicated portal), adds features that don’t exist in this
free plugin: fix rewriting via generative AI, publishing of aligned sitewide
JSON-LD entities (Organization/LocalBusiness), automatic generation and updating
of an llms.txt file, an AI bot detection dashboard (GPTBot, ClaudeBot…), and URL
submission to indexers via the IndexNow protocol.
This free plugin remains 100% functional and unlimited without it; the extension
only hooks into it via documented extension points (geolys_corrector_instance,
geolys_faq_schema, geolys_howto_schema filters, geolys_dashboard_upsell action).
_geolys_validated_schema)<head> of the corresponding public page.parse_blocks() /GEOLYS_Corrector_Interface): the localGEOLYS_Rule_Based_Corrector) is the default and only enginegeolys_corrector_instance filter lets the optional