=== Chouks - Article Visibility Optimizer ===
Contributors: like2begeek
Donate link: https://www.paypal.com/donate/?hosted_button_id=UDYYDX45BGWM8
Tags: seo, ai, faq, table of contents, schema
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 3.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Make every article readable, quotable and recommendable by Google and by AI engines such as ChatGPT, Perplexity and AI Overviews.

== Description ==

Search engines no longer just rank your pages: they summarise them, quote them and recommend them. Chouks structures your articles so they become the best possible answer, for classic SEO as well as for GEO, that is Generative Engine Optimization.

= What the plugin adds to your posts =

* **Key points**: a summary in bullet points, generated from the admin with the AI engine of your choice, then fully editable. This is exactly the format AI Overviews and large language models extract first.
* **Explore in questions**: questions and answers generated from the article and marked up automatically as **Schema.org FAQPage**. The question and answer format is the favourite of generative engines.
* **Smart table of contents**: built on your H1, H2 and H3 headings with real HTML anchors for site links and passage ranking, collapsed by default, with nested levels. Bullet list icon and one colour per heading level, all set from the admin.
* **Freshness bar**: published and updated dates in machine readable `<time>` tags, plus the estimated reading time. Concrete E-E-A-T signals: dated content, maintained and transparent.
* **Summarise with AI**: sharing buttons to ChatGPT, Claude, Perplexity, Grok, Brave, Google AI Mode, Gemini and Le Chat, with a customisable prompt. Your readers push your article into the AI engines themselves.

= Choose your AI engine =

On WordPress 7.0 and later, the plugin uses the AI Client shipped with core: the site owner configures a provider once, in Settings > Connectors, credentials stay in WordPress and the plugin never sees them. Nothing else has to be filled in.

On older versions, or when you would rather keep your own key, the plugin calls the provider directly. Claude, ChatGPT, Gemini and Mistral are supported: store an API key for each of them, activate a single engine for generation, and validate every key from the settings screen with a single click.

Either way the API is called from the admin only, on demand. Nothing is ever called from a visitor page.

= Written in your voice =

The plugin analyses the register, the grammatical person and the sentence rhythm of the article, and sends representative excerpts to the model as a style reference. You can add your own editorial rules on top, in the Editorial charter tab. Long dashes are never produced: the punctuation stays natural.

= Built for SEO, GEO and E-E-A-T =

* Content fully present in the raw HTML, so it is readable by GPTBot, ClaudeBot and PerplexityBot, which do not run JavaScript.
* Semantic HTML5: `<section>`, `<aside>`, `<nav>`, `<details>`, `<time>` and ARIA attributes.
* One FAQPage per page: the plugin detects existing FAQ schemas from Rank Math, Yoast and ACF modules, and steps aside to avoid duplicates.
* The automatic table of contents is declared to Rank Math, so the "Table of contents" content check passes without adding anything to your editor.
* No API call on the visitor side: the AI content is generated in the admin, stored in the database and served statically. No impact on web performance, fully compatible with caching.

= Works with your builder =

Gutenberg, ACF with repeaters and flexible content, and Elementor: the plugin reads the content where it actually lives, for the reading time, the AI generation and the table of contents. Modules are inserted automatically at the top and the bottom of the post, with optional CSS selectors, or manually through the shortcodes `[chouks_meta]`, `[chouks_ia]`, `[chouks_toc]` and `[chouks_ia_footer]`.

= Ready for translation =

The plugin ships in English and is fully internationalised. A complete `.pot` catalogue is included in the `languages` folder, so any locale can be translated on translate.wordpress.org or with a local tool such as Poedit. No catalogue is bundled: the plugin simply follows the language of your WordPress site.

The generated content is a separate matter: it is always written in the language of the article it summarises, detected from the content itself. There is nothing to configure and no setting can override it, because a summary written in another language than the article around it would hurt both readers and search engines.

== External services ==

This plugin sends content to a third-party AI service to generate the summary and the questions, and only when a logged-in administrator clicks "Generate with AI" in the post editor, or "Test this key" in the settings. Nothing is sent when a visitor loads a page, and no data is sent on activation or in the background.

When the AI Client of WordPress 7.0 is available and an engine is configured in Settings > Connectors, the request is handed to core: WordPress contacts the provider the site owner chose, with the credentials the site owner stored there. This plugin makes no HTTP request of its own in that case, and the applicable terms are those of the provider configured in WordPress.

Otherwise the plugin contacts the provider you select in the AI tab, directly, with the API key you stored in it.

Data transmitted on each generation: the post title and the text content collected from the post, including custom fields, plus the editorial rules you typed in the Editorial charter tab. Your API key is sent for authentication. No visitor data, no personal data of your readers and no site credentials are transmitted.

The service contacted depends on the engine you select:

* Anthropic (Claude), endpoint https://api.anthropic.com. Terms: https://www.anthropic.com/legal/commercial-terms. Privacy policy: https://www.anthropic.com/legal/privacy
* OpenAI (ChatGPT), endpoint https://api.openai.com. Terms: https://openai.com/policies/business-terms. Privacy policy: https://openai.com/policies/privacy-policy
* Google (Gemini), endpoint https://generativelanguage.googleapis.com. Terms: https://ai.google.dev/gemini-api/terms. Privacy policy: https://policies.google.com/privacy
* Mistral AI, endpoint https://api.mistral.ai. Terms: https://mistral.ai/terms. Privacy policy: https://mistral.ai/terms#privacy-policy

If no engine is configured in WordPress and you leave every API key empty, the plugin never contacts any external service. The sharing buttons shown to visitors are plain links: no request leaves your site until a visitor clicks one, and the click opens the chosen platform in a new tab.

== Installation ==

1. Upload the chouks-article-visibility-optimizer folder to /wp-content/plugins/, or install the zip file from Plugins > Add New.
2. Activate the plugin.
3. Open Chouks in the admin menu, go to the AI tab, add the API key of your engine and click "Test this key".
4. Open a post, click "Generate with AI", review the result and save. That is all.

== Frequently Asked Questions ==

= Does the plugin call the API on every visit? =

No. Generation happens in the admin only, on demand. The content is stored with the post and served as static HTML.

= Can I use several AI engines? =

You can store an API key for Claude, ChatGPT, Gemini and Mistral at the same time, but only one engine is active for generation. Switch engines at any time from the AI tab.

= Do I still need an API key on WordPress 7.0? =

No. If an AI engine is configured in Settings > Connectors, the plugin uses it and the API key fields stay empty. The checkbox at the top of the AI tab lets you turn that off and go back to your own key.

= What happens if a post already has a marked up FAQ? =

The plugin detects it, from Rank Math and Yoast blocks or from ACF modules, and does not output a second FAQPage schema, in line with the Google guidelines.

= Can I edit the generated content? =

Yes. The key points and every question and answer stay fully editable in the post editor.

= Why does my table of contents not appear in the editor? =

It is built at render time from your headings, so it is always in sync with your content and never clutters the editor. Rank Math still recognises it thanks to the dedicated option in the Display tab.

= I upgraded from GEO Boost or from Meta IA, do I lose my settings? =

No. Settings and generated content are migrated automatically on the first admin page load, and the former shortcodes `[geob_*]` and `[mia_*]` keep working.

= In which language is the plugin available? =

The interface is in English. The `.pot` file shipped in the `languages` folder covers every string, so the plugin can be translated into any locale, either on translate.wordpress.org or with your own catalogue.

== Screenshots ==

1. The settings screen, AI tab: the engine configured in WordPress, or your own API key for Claude, ChatGPT, Gemini and Mistral.
2. The Editorial charter tab, where the tone rules and the volume of generated content are set.
3. The Display tab: automatic insertion, CSS selectors, the Rank Math bridge, content types and module colours.
4. The Front options tab: the AI platforms offered to visitors, the wording of the labels and the shortcodes.

== Changelog ==

= 3.0.1 =
* Security hardening: every output is now escaped late, with a function suited to its context. The inline stylesheet built from the colour settings, the inline SVG icons and the automatic insertion markup all go through a dedicated escaping layer.
* The FAQPage structured data keeps its slashes escaped, so a value can no longer close the script element early.

= 3.0.0 =
* The plugin is renamed Chouks - Article Visibility Optimizer. Settings and generated content are migrated automatically, and the former shortcodes keep working.
* New shortcodes `[chouks_meta]`, `[chouks_ia]`, `[chouks_toc]` and `[chouks_ia_footer]`. The `[geob_*]` and `[mia_*]` tags stay registered as aliases.
* The bundled translation catalogues are removed. The plugin is shipped in English with a complete `.pot` file, and the "Plugin language" setting disappears: the interface simply follows the language of the site.
* The AI Client of WordPress 7.0 comes first: when an engine is configured in Settings > Connectors, generation goes through core and no credential is stored by the plugin. Direct provider calls stay available for WordPress 6.0 and for anyone who prefers their own key.
* The visual identity is unchanged: same palette, same icon set, same modules on the front end.

= 2.2.1 =
* Fixed: the button icons carry their own dimensions, which protects them from a stylesheet that is missing or loaded too late.

= 2.2.0 =
* GEO Boost gets its own visual identity: the settings screen and the post editor box are rebuilt on the new design system, with logo, icon set, cards and the Slate and green palette.
* The AI engine is picked from a grid of cards showing the model in use and whether a key is stored.
* The default colours of the visitor modules follow the new palette. A site that already set its own colours keeps them.
* Fixed: the front-end modules inherit the typography of the theme instead of forcing a font of their own.

= 2.1.3 =
* Fixed: the table of contents stopped too early and hid part of the page. A heading starting with a word such as "Comment", very common in French, was mistaken for the comments section. Only a heading that consists entirely of a word like "Comments" now ends the list.

= 2.1.2 =
* Fixed: the plugin header declared the same address for the plugin and for the author, which the plugin directory rejects. Only the author address is kept.

= 2.1.1 =
* The model catalogue is up to date for the four engines: Claude Sonnet 5, GPT-5.6 Luna, Gemini 3.6 Flash and Mistral Medium 3.5 are the new defaults, with a refreshed suggestion list for each engine.
* The Gemini 2.0 Flash and Gemini 2.0 Flash-Lite models were removed, Google shut them down on 1 June 2026.
* A model still set to a former default of the plugin is switched automatically to the current default of the same engine. A model typed by hand is never touched.

= 2.1.0 =
* The table of contents gets a bullet list icon and one configurable colour for the title, the icon and numbering, and each heading level. They are applied with priority over the theme.
* The Display tab lets you force the language of the plugin interface, independently of the WordPress language.
* Fixed: the generated content is always written in the language of the article, stated as a strict rule in the prompt.
* Fixed: the long dash warning in the post editor was displayed permanently, even on fields that contained none.
* Fixed: full compliance with the WordPress plugin checker, including the upgrade routine and the loading of the bundled translations.

= 2.0.0 =
* The plugin is renamed GEO Boost. Settings and generated content are migrated automatically, and the former shortcodes keep working.
* Choose your AI engine: Claude, ChatGPT, Gemini or Mistral, with one API key per engine and a key validation button.
* The generated content mirrors the voice of the source article, and an editorial charter field lets you add your own rules.
* Long dashes are no longer produced, and existing content is cleaned up on save and on display.
* The automatic table of contents is declared to Rank Math for the table of contents content check.
* The settings screen is reorganised into tabs, with a release notes tab.
* Interface translated into French, English, German, Spanish, Portuguese and Italian.
* Security and coding standards pass for the plugin directory.

= 1.2.0 =
* The plugin has its own top level admin menu instead of sitting under Settings.
* The donation box moved to the top of the settings screen.

= 1.1.1 =
* Fixed the meta bar icons being displayed at a huge size when the stylesheet loaded too late, seen with WPBakery and Visual Composer.

= 1.1.0 =
* Compatibility checked with WordPress 7.0.
* Donation link added to the settings screen and to the plugins list.

= 1.0.0 =
* First release: meta bar, AI module, smart table of contents, FAQPage schema with duplicate detection, automatic insertion for Gutenberg, ACF and Elementor, and customisable colours.

== Upgrade Notice ==

= 3.0.1 =
Late escaping applied to every output, including the inline stylesheet and the structured data.

= 3.0.0 =
The plugin is renamed Chouks - Article Visibility Optimizer. Settings, generated content and existing shortcodes are preserved. Generation prefers the AI Client of WordPress 7.0 when an engine is configured.

= 2.2.0 =
New visual identity for the admin screens and new default colours for the visitor modules. Colours you already customised are preserved.

= 2.1.1 =
Updated model catalogue for Claude, ChatGPT, Gemini and Mistral, with the shut down Gemini 2.0 models removed. If your engine still used a former default of the plugin, it is switched to the current one automatically.

= 2.1.0 =
Customisable table of contents: bullet list icon and one colour per level. The generated content now always follows the language of the article, and the language setting only drives the plugin interface.

= 2.0.0 =
Renamed to GEO Boost, with support for Claude, ChatGPT, Gemini and Mistral, tone matching, six languages and a Rank Math table of contents bridge. Your settings and your content are migrated automatically.
