=== OGEEAT ===
Contributors: wpformation
Tags: open-graph, eeat, schema, seo, social-media
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 2.6.18
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Rank in AI, not just in Google. E-E-A-T schemas, GEO citability score, llms.txt and AI Crawler Firewall for WordPress.

== Description ==

🇫🇷 **100% translated into French. Traduction française intégrale.**

**English (US)**

Classic SEO describes a page. OGEEAT proves who created it, why the source is credible and how AI can cite it. It adds the identity, authority and AI-readiness layer SEO plugins lack.

* **Identity and authority:** linked Person, Organization/LocalBusiness and Article schemas, E-E-A-T profiles, Author Box, Reviewed By, trust signals, local SEO, Open Graph and social cards.
* **AI citability:** `llms.txt` and `llms-full.txt`, manual editor, Polylang and WPML, 12-check GEO score, FAQ/HowTo/Video/Speakable and APA references.
* **Share with AI:** let readers summarize your article with ChatGPT, Perplexity, Claude, Mistral, Gemini or Grok in one click.
* **Measure and control:** 52-bot firewall, AI visibility, Search Console, bulk and internal-link audits, IndexNow, read-only MCP and optional BYO-LLM tools.

Works with Yoast, Rank Math and others. Free and GPL, with no premium upsell, subscription or imposed SaaS. Your data stays yours.

**Français**

Le SEO classique décrit une page. OGEEAT prouve qui la publie, pourquoi la source est crédible et comment l'IA peut la citer. Il ajoute la couche d'identité, d'autorité et de préparation IA qui manque aux extensions SEO.

* **Identité et autorité :** schémas reliés Person, Organization/LocalBusiness et Article, profils E-E-A-T, Author Box, Reviewed By, signaux de confiance, SEO local, Open Graph et cartes sociales.
* **Citabilité IA :** `llms.txt` et `llms-full.txt`, éditeur manuel, Polylang et WPML, score GEO sur 12 critères, FAQ/HowTo/Video/Speakable et références APA.
* **Partage avec l'IA :** faites résumer votre article par l'IA de votre choix : ChatGPT, Perplexity, Claude, Mistral, Gemini ou Grok.
* **Mesure et contrôle :** firewall de 52 robots IA, visibilité IA, Search Console, audits en masse et du maillage interne, IndexNow, MCP en lecture seule et outils BYO-LLM optionnels.

Compatible avec Yoast, Rank Math et les autres. Gratuit et GPL, sans offre premium, abonnement ni SaaS imposé. Vos données restent les vôtres.

Pour aller plus loin sur [WPFormation](https://wpformation.com/): [guide OGEEAT](https://wpformation.com/ogeeat-wordpress/), [E-E-A-T sur WordPress](https://wpformation.com/eeat-wordpress/), [GEO sur WordPress](https://wpformation.com/geo-wordpress/) et [llms.txt sur WordPress](https://wpformation.com/llms-txt-wordpress/).

== Installation ==

1. Upload the `ogeeat` folder to `/wp-content/plugins/`, or install the ZIP from the WordPress admin.
2. Activate OGEEAT from the Plugins screen.
3. Open OGEEAT > Settings and configure the modules you need.
4. Complete the E-E-A-T fields under Users > Profile.

== Frequently Asked Questions ==

= Does OGEEAT replace Yoast, Rank Math or another SEO plugin? =

No. OGEEAT complements SEO plugins. It automatically defers its Open Graph output when a compatible SEO plugin already manages those tags. JSON-LD remains independent so you can keep OGEEAT's E-E-A-T graph or disable it under OGEEAT > Settings when another plugin should own all schemas.

= How does multilingual llms.txt work with Polylang or WPML? =

OGEEAT keeps one canonical `/llms.txt` and one `/llms-full.txt` at the site root, whatever the language setup (directories, subdomains or one domain per language). On a multilingual site the file opens with the list of languages and their home URLs, then gives each language its own section with the site name in that language, its pages and posts in their original language, and closes with interaction rules asking AI assistants to answer in the language of the question and not to mix languages. No separate `/en/llms.txt` file is created. A `wpml-config.xml` file lets WPML (and Polylang) translate the free-text settings such as the llms.txt title, description and footer.

= Can I use an ACF field as the llms.txt description? =

Yes. Use the `ogeeat_llms_post_description` filter. It receives the resolved description and the `WP_Post` object, so a developer can return a custom field for selected post types without changing `post_excerpt`.

= Can I serve a different body in llms-full.txt? =

Yes. Use the `ogeeat_llms_post_content` filter. It receives the resolved body, the `WP_Post` object and the configured word limit, so a developer can serve a summary written for AI from a custom field. The returned value is written as is, so sanitize and trim it. The filter never runs on password-protected or excluded content.

= Can a custom FAQ block count toward the GEO score? =

Yes. The existing `ogeeat_geo_checks` filter can replace or extend the FAQ check for custom blocks. A ready-to-use example is included on the OGEEAT Documentation screen.

= What are E-E-A-T and GEO? =

E-E-A-T means Experience, Expertise, Authoritativeness and Trustworthiness. GEO means Generative Engine Optimization: structuring content so AI engines can understand and cite it. OGEEAT exposes identity signals and evaluates each post with 12 citability checks.

= Is OGEEAT free? =

Yes. OGEEAT is GPL software with no premium version or subscription.

== External services ==

OGEEAT contacts an external service only when you enable the matching feature. Identity, schemas, llms.txt, GEO checks, audits and the crawler firewall run on your server without an external call.

= AI providers =

Optional AI features send the relevant prompt and selected page or profile text to the provider configured by the administrator. WordPress 7 uses the site's native AI connector. WordPress 6.x can call OpenAI at `https://api.openai.com/v1/chat/completions` or Anthropic at `https://api.anthropic.com/v1/messages`. No key or content is sent to WPFormation.

OpenAI: [Terms](https://openai.com/policies/terms-of-use/) and [Privacy](https://openai.com/policies/privacy-policy/). Anthropic: [Terms](https://www.anthropic.com/legal/consumer-terms) and [Privacy](https://www.anthropic.com/legal/privacy).

= Author autofill source page =

Author autofill fetches only the public URL entered by the administrator before sending extracted text to the configured AI provider. Private, loopback and unsafe redirect targets are blocked, and the action is rate-limited.

= IndexNow =

When enabled, OGEEAT submits the URL of a published or updated public post and the site's generated key to `https://api.indexnow.org/indexnow`. The feature is off by default. See [IndexNow](https://www.indexnow.org/).

= Google Search Console =

Without Site Kit, OGEEAT exchanges an authorization code at `https://oauth2.googleapis.com/token` and reads Search Analytics from `https://searchconsole.googleapis.com/` with the read-only `webmasters.readonly` scope. With Site Kit, OGEEAT uses Site Kit's existing connection. See [Google Privacy Policy](https://policies.google.com/privacy).

= Google Fonts =

OGEEAT admin screens load Inter and JetBrains Mono from `https://fonts.googleapis.com`. This browser request is limited to the administration area and is never loaded on the public site. See [Google Privacy Policy](https://policies.google.com/privacy).

= Gravatar =

OGEEAT uses WordPress core's `get_avatar_url()` for author avatars. WordPress may send a hashed email address to Gravatar. This is controlled under Settings > Discussion > Avatars. See [Automattic Terms](https://automattic.com/tos/) and [Privacy Policy](https://automattic.com/privacy/).

== Screenshots ==

1. Settings page with Open Graph and social configuration.
2. Authority settings with Organization fields.
3. AI and GEO settings with llms.txt options.
4. Dashboard overview with GEO, OG, E-E-A-T and AI metrics.
5. Post editor GEO citability score and checks.
6. Post editor E-E-A-T profile, schema status and entity map.

== Changelog ==

= 2.6.18 =

* Fixed: dismissing an OGEEAT admin notice now sticks. The click handler was attached to jQuery from `admin_notices`, after jQuery had already been printed, so it never reached the page: the cross did nothing and every notice came back on the next screen. Reported on the support forum.
* Improved: the robots.txt warning no longer prints on every single admin screen, and its cross now dismisses it like the others, the text link staying as the no-JavaScript fallback.
* Improved: the Open Graph notice now requires the capability needed to act on it, so contributors and authors no longer see it, and it names SEOKEY like the rest of the plugin does.
* New: Settings > AI, GEO & Firewall can hide OGEEAT notices outside the plugin's own screens, for the whole site.
* Improved: the GEO score now detects a FAQ written as a plain HTML `<details>` accordion, two or more headings ending with a question mark, or a FAQPage JSON-LD block already present in the content. Detection is shared with the FAQPage schema, so the score no longer reports "no FAQ" on a page that publishes one. Reported on the support forum.
* New: the `ogeeat_geo_content` filter overrides the content analyzed by the GEO score, for a FAQ, a list or sources produced by a template or a custom field rather than by the post body. Counterpart of `ogeeat_llms_post_content`.
* Improved: a FAQ kept in a synced pattern is now visible to the score, which used to see only the pattern reference. Each pattern is read once per request, whatever the number of posts sharing it.
* Improved: the block editor sidebar now shows the description the page publishes when the OG description field is left empty, as a placeholder and a note, like the title and the image already did. The field looked empty while the page did output a description. Reported on the support forum.
* Improved: the Voice Snippet field states what the Speakable schema falls back to when it is left empty.

= 2.6.17 =

* New: the Organization (or LocalBusiness) schema now has its own switch in Settings > E-E-A-T > Schemas to emit, separate from Person and Article. Sites where an SEO plugin already publishes an Organization can drop the duplicate without a filter, and without losing the author and article schemas.
* New: the `ogeeat_llms_post_content` filter overrides the body served for a post in `llms-full.txt`, the counterpart of `ogeeat_llms_post_description` for the index. It receives the resolved body, the `WP_Post` object and the configured word limit, and never runs on password-protected or excluded content. Requested on the support forum.
* Improved: Share with AI buttons are now `rel="nofollow"`. Each button carries the article permalink inside its prompt, so every post produced six distinct external URLs that site crawlers walked by default, flooding an audit. Filter: `ogeeat_ai_share_link_rel`.
* Improved: the Schemas to emit setting names the SEO plugin it detects and states that such plugins publish their own Organization, WebSite and breadcrumb schemas without linking them by @id. Nothing is disabled automatically.

= 2.6.16 =

* New: WPML support for `llms.txt` and `llms-full.txt`. Languages come from the public WPML API and each section is generated with the language switched, so permalinks, site name and translated settings are correct on every setup, one domain per language included.
* New: on multilingual sites (Polylang or WPML) both files are now structured by language: a languages line with home URLs in the header, one `## Language` section per language with the localized site name, and a closing `## Interaction Rules` block asking AI assistants to answer in the language of the question and to keep languages apart. Filter: `ogeeat_llms_interaction_rules`.
* New: `wpml-config.xml` ships with the plugin so the llms.txt title, description, footer, badge and share labels, and the organization name and address can be translated with WPML String Translation. The same texts are registered with Polylang.
* Improved: the `ogeeat_llms_query_args` filter receives the multilingual provider as a fourth argument. Monolingual output is unchanged.

= 2.6.15 =

* Fix: the GEO score no longer reports a missing OG image when the site-wide default image applies. The score now follows the same cascade as the published tags, and says which image is in use.
* Fix: the OG column of the post list follows that same cascade, instead of flagging content that does ship an image.
* Improved: when the OG image field is left empty, the editor now shows the image the page actually publishes, the featured image or the site-wide default, the way the title and description fields already announce their inherited value.

= 2.6.14 =

* Fix: the bulk audit now lists every post type OGEEAT manages, pages included. A site made only of pages had an empty audit screen.
* Fix: AI Visibility content freshness now counts every managed post type, and looks at the modification date as its label always claimed. A site made only of pages scored a flat zero whatever its publishing pace.
* New: the `ogeeat_managed_post_types` filter to extend both to custom post types.

= 2.6.13 =

* New: choose which schema families OGEEAT emits, Identity, Site or Content, instead of turning every JSON-LD off at once. Useful when another extension already publishes your FAQ or your breadcrumb trail.
* New: SEOKEY is now detected, so OGEEAT defers its Open Graph output as it already does for Yoast, Rank Math and the others.
* New: the OGEEAT panel in the block editor now says when Open Graph output is disabled or handled by another extension, instead of silently accepting values that are never published.
* Fix: the Author Box no longer prints an em dash between the article count and the areas of expertise, and the article count now uses a real plural form.
* Fix: the Author Box no longer wraps the author name and photo in a dead link when author archives are disabled.
* Fix: a FAQ block from SEOKEY is now recognized by the GEO score.
* Improved: French typography throughout the interface, the documentation and llms.txt, with the em dash replaced by proper punctuation.
* Improved: the AI Crawler Firewall states its rule of thumb, allow search bots, block training bots, and the documentation covers the ogeeat_schema filter.

= 2.6.12 =

* Fix: the Open Graph title, description and image entered in the block editor sidebar are saved again. Post meta is now registered on REST requests too, so the block editor no longer discards those values silently. Values entered in the classic editor were never affected.
* Security: the Open Graph and X/Twitter meta are now sanitized on the REST path as well, and editing them requires the capability to edit that specific post.
* Fix: the warning about a physical robots.txt file overriding the WordPress virtual one now actually displays, in the admin notices and in the AI Crawler Firewall settings.
* Improved: the AI Crawler Firewall now states plainly what robots.txt rules and X-Robots-Tag headers can and cannot do, and what really blocks a crawler that ignores them.

= 2.6.11 =

* New: Polylang compatibility for `llms.txt` and `llms-full.txt`. One canonical root file groups published content by language, preserves the original language, and shares the configured post limit fairly.
* New: the `ogeeat_llms_post_description` filter lets developers provide an ACF or custom-field description without changing `post_excerpt`.
* Improved: the E-E-A-T schema setting explains how to delegate JSON-LD to another plugin and prevent duplicate structured data.
* Documentation: added examples for disabling OGEEAT schemas and recognizing custom FAQ blocks through existing filters.

= 2.6.10 =

* Fix: Share with AI SVG icons now keep explicit dimensions when a theme, cache or critical-CSS tool prevents the plugin stylesheet from loading.

Full release history: [GitHub releases](https://github.com/wpformation/OGEEAT/releases).

== Upgrade Notice ==

= 2.6.18 =

Admin notices can be dismissed for good again, and the GEO score now sees FAQ accordions written in plain HTML. No data migration is required.

= 2.6.17 =

Separate switch for the Organization schema, a new llms-full.txt content filter, and nofollow on the Share with AI buttons. No data migration is required.

= 2.6.16 =

Adds WPML support and a per-language structure for llms.txt on multilingual sites. No data migration is required.

= 2.6.15 =

Fixes the GEO score ignoring the default OG image. Recommended for sites relying on a single site-wide sharing image.

= 2.6.14 =

Fixes the bulk audit and AI Visibility freshness ignoring pages. Recommended for sites built with pages rather than posts.

= 2.6.13 =

Per-family schema switches, SEOKEY detection, Author Box fixes and cleaner French typography. No data migration is required.

= 2.6.12 =

Fixes Open Graph fields not being saved from the block editor sidebar. Recommended for every site using the block editor. No data migration is required.

= 2.6.11 =

Adds multilingual Polylang llms.txt output, a description filter and clearer schema delegation. No data migration is required.
