Geolys

Description

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:

  1. 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.

  2. 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.

  3. One-click automatic fixes (duplicate H1, heading hierarchy jump, paragraph too
    long, enumerative passage turned into a list, question turned into an H2 heading

    • answer, generation of a missing meta description): mechanical, 100% local, no
      generative AI, no account needed, no page limit.
  4. 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.

Pro extension (sold separately)

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).

Technical notes

  • No outbound network request: all analysis is done in local PHP (DOMDocument,
    regular expressions).
  • The generated schema.org markup is stored as post meta (_geolys_validated_schema)
    and injected into the <head> of the corresponding public page.
  • Question/answer detection relies on: H2/H3 headings ending with “?” or starting
    with French interrogative phrases (“Comment”, “Pourquoi”, “Qu’est-ce que”…).
  • Automatic fixes manipulate Gutenberg blocks directly via parse_blocks() /
    serialize_blocks() so the editor structure is never corrupted. As a precaution,
    they don’t touch nested blocks (columns, groups), and may simplify internal
    formatting (bold, links) on the affected passage — a confirmation is always
    requested before applying a fix.
  • Interchangeable fix engine architecture (GEOLYS_Corrector_Interface): the local
    mechanical engine (GEOLYS_Rule_Based_Corrector) is the default and only engine
    included in this plugin. The geolys_corrector_instance filter lets the optional
    Pro extension provide an AI engine instead, with no changes to this code.

Installation

  1. Upload the geolys folder to /wp-content/plugins/.
  2. Activate the plugin from the WordPress “Plugins” menu.
  3. Open a post or page: the “GEO Score” box appears in the sidebar.
  4. Check the “Geolys” menu in the admin area for the overview.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Geolys” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Geolys” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

3.0.1

  • Renamed the plugin from “GEO Local FR” to Geolys (display name, slug,
    text domain, PHP classes, hooks, CSS classes) following a WordPress.org
    plugin review requesting a more distinctive name, less likely to be
    confused with other GEO/AI-search optimization plugins in the directory.
  • Fixed: plugin activation no longer runs a synchronous, unbounded analysis
    of every published post/page (posts_per_page => -1), which could exhaust
    memory or time out on sites with a large amount of content. The initial
    analysis now runs in the background, in small batches of 20 items via
    WP-Cron, without blocking activation.
  • Security hardening: the JSON-LD schema output in <head> is now
    re-encoded with wp_json_encode() right before output instead of relying
    on a case-sensitive string replacement, removing a theoretical
    case-based bypass (e.g. an uppercase </SCRIPT> sequence).
  • Security hardening: the annotated preview screen now runs the rendered
    content through wp_kses_post() as a final allowlist sanitization step
    right before output, in addition to the existing the_content filtering.
  • Removed the bundled languages/ translation files (.po/.mo/.pot):
    translations are now handled entirely through translate.wordpress.org, as
    recommended for plugins hosted on WordPress.org.
  • Added the plugin author as a listed contributor in this readme.

3.0.0

  • Brought into compliance with the WordPress.org Detailed Plugin Guidelines (§5,
    “Trialware is not permitted”): the 4-free-page quota and the licensing system
    have been completely removed — automatic fixes, previously limited, are now
    fully free and unlimited for everyone, with no Free/Pro distinction.
  • Generative-AI fixing (Google Gemini), the “Advanced AI & GEO” module (JSON-LD
    entities, llms.txt, AI bot detection, IndexNow submission) and Freemius license
    management have been removed from this plugin and moved to a separate Pro
    extension, sold and distributed separately (outside WordPress.org) — see the
    “Pro extension” section above.
  • New extension points for this Pro extension: geolys_corrector_instance filter
    (replace the fix engine), geolys_faq_schema / geolys_howto_schema filters
    (align JSON-LD schemas with an external entity), geolys_dashboard_upsell action.
  • Removed the manual load_plugin_textdomain() call: WordPress automatically
    loads this plugin’s translations, no code needed.
  • Hardened output escaping and input sanitization (nonces, AJAX inputs) per the
    WordPress Plugin Check tool’s recommendations.

2.0.0

  • New: full “Advanced AI & GEO” module (per-site/volume license, JSON-LD entities,
    llms.txt, AI bot detection, IndexNow submission) — removed in 3.0.0, see above.

1.5.0

  • New: “managed AI service” mode in addition to a personal Gemini key — prepared
    for a +€2/month offer without the customer having to manage an API key. Requires
    an external proxy server (not provided by this plugin) that holds the real key
    server-side.
  • New: automatic daily analysis via WordPress cron, which recalculates the GEO
    score of all published content.
  • New: email alert if a page’s score drops by more than 10 points compared to the
    previous analysis. No fix is ever applied automatically — only the score and the
    alert; the fix remains manual.
  • Added the missing deactivation hook to clean up the cron task if the plugin is
    deactivated (avoids an orphaned background task).

1.4.0

  • New: integration of an AI-based fix engine (Google Gemini) — removed in 3.0.0,
    moved to the Pro extension.
  • Automatic, silent fallback to the mechanical engine if the AI call fails
    (invalid key, Gemini quota reached, network unavailable, unexpected response):
    the user always gets a result.
  • The duplicate-heading safeguard also applies to AI-generated headings.

1.3.2

  • Important fix: the “bullet list” conversion could split an entire sentence into
    bullets as soon as it contained several commas, even when it wasn’t a genuine
    enumeration (loss of meaning). Detection now distinguishes an introductory
    sentence (typically before a “:”) from the list itself: only the true
    enumeration becomes bullets, and the introduction is kept in full in a separate
    paragraph right before it. A candidate item longer than 12 words now cancels
    the whole conversion, instead of fragmenting a complete sentence into fake
    bullets.

1.3.1

  • Fix: the GEO score was only calculated when a page was saved — any content that
    existed before the plugin was installed (or was never re-saved since) stayed
    stuck on “Not analyzed” indefinitely. Added an automatic analysis on plugin
    activation, and an “Analyze pages not yet scored” / “Re-analyze all pages”
    button in the dashboard for sites where the plugin was already active before
    this update.

1.3.0

  • Security: automatic fixes can no longer create a duplicate heading — before
    suggesting (and before applying) a “question heading” conversion, the engine
    checks that no existing heading in the article (nor the page title itself)
    already has exactly that text.
  • Introduction (then removal in 3.0.0) of a 4-free-fix limit — see the 3.0.0
    changelog for the compliance update.
  • Architecture: the fix engine is now interchangeable (GEOLYS_Corrector_Interface).
    The current engine is renamed GEOLYS_Rule_Based_Corrector.

1.2.0

  • Improvement: automatically splitting a long paragraph now avoids starting the
    second paragraph with an isolated pronoun (e.g. “It”, “This”) with no nearby
    antecedent, for a more natural break when reading.
  • Improvement: automatically generated list items are now systematically cleaned
    up (multiple spaces, trailing punctuation) for a consistent presentation.
  • Fix: bullets in generated lists were invisible in the preview because of
    WordPress admin’s default styling — they are now explicitly restored, with
    consistent vertical rhythm between headings, paragraphs and lists.

1.1.0

  • New: annotated preview page showing the passages to fix highlighted in color,
    with a concrete suggestion below each one.
  • New: one-click automatic fixes, with confirmation before applying and immediate
    score recalculation.
  • The dashboard now opens the annotated preview via the “Fix” button (a separate
    “Edit” button remains available to open the editor directly).

1.0.0

  • Initial release: GEO score, FAQPage/HowTo schema generation, text suggestions,
    prioritization dashboard.