{"id":303866,"date":"2026-05-30T16:54:18","date_gmt":"2026-05-30T16:54:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/seo-ai-master\/"},"modified":"2026-05-31T12:13:51","modified_gmt":"2026-05-31T12:13:51","slug":"sam-optirank","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sam-optirank\/","author":23156765,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.8.2","stable_tag":"1.8.2","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"SAM Optirank","header_author":"Groupe Coste","header_description":"AI-powered SEO optimizer for WordPress. On-page analysis, one-click fixes, keyword research, Google position tracking, and semantic content clusters \u2014 powered by Claude Haiku (Anthropic). Compatible with Oxygen, Elementor, Beaver Builder and all page builders.","assets_banners_color":"","last_updated":"2026-05-31 12:13:51","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/groupe-coste.fr\/sam-optirank\/","header_author_uri":"https:\/\/groupe-coste.fr","rating":0,"author_block_rating":0,"active_installs":0,"downloads":84,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.7.11":{"tag":"1.7.11","author":"groupecoste","date":"2026-05-30 23:32:06"},"1.7.7":{"tag":"1.7.7","author":"groupecoste","date":"2026-05-30 16:53:59"},"1.8.0":{"tag":"1.8.0","author":"groupecoste","date":"2026-05-31 08:50:30"},"1.8.1":{"tag":"1.8.1","author":"groupecoste","date":"2026-05-31 09:04:58"},"1.8.2":{"tag":"1.8.2","author":"groupecoste","date":"2026-05-31 12:13:51"}},"upgrade_notice":{"1.5.9":"<p>Security fix (JSON-LD output), compliance fixes for WordPress.org guidelines. Recommended update for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3554896,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3554896,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.7.11","1.7.7","1.8.0","1.8.1","1.8.2"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"<strong>Editor meta box<\/strong> \u2014 Smart optimization wizard directly in the WordPress editor","2":"<strong>SEO Analysis<\/strong> \u2014 Detailed score, detected issues and AI suggestions","3":"<strong>Keyword Wizard<\/strong> \u2014 One-click keyword validation chips","4":"<strong>Generated HTML content<\/strong> \u2014 Optimized content blocks ready to paste","5":"<strong>Keyword Research<\/strong> \u2014 Primary, local, long-tail and question keywords","6":"<strong>Position Tracking<\/strong> \u2014 Google position history chart","7":"<strong>Dashboard<\/strong> \u2014 Overview with KPIs and top-ranked pages","8":"<strong>Settings<\/strong> \u2014 API configuration and geographic area"}},"plugin_section":[],"plugin_tags":[2353,468,31173,265084,186],"plugin_category":[55],"plugin_contributors":[265085],"plugin_business_model":[],"class_list":["post-303866","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-keyword-research","plugin_tags-on-page-seo","plugin_tags-position-tracking","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-groupecoste","plugin_committers-groupecoste"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sam-optirank\/assets\/icon-128x128.png?rev=3554896","icon_2x":"https:\/\/ps.w.org\/sam-optirank\/assets\/icon-256x256.png?rev=3554896","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>SAM Optirank<\/strong> is a WordPress plugin that improves your natural and local search engine optimization using artificial intelligence (Claude Haiku by Anthropic).<\/p>\n\n<h4>Description en fran\u00e7ais<\/h4>\n\n<p><strong>SAM Optirank<\/strong> est un plugin WordPress qui am\u00e9liore votre r\u00e9f\u00e9rencement naturel et local gr\u00e2ce \u00e0 l'intelligence artificielle (Claude Haiku d'Anthropic).<\/p>\n\n<ul>\n<li><strong>IA incluse dans l'abonnement<\/strong> \u2014 avec une licence active, l'IA fonctionne imm\u00e9diatement, sans cl\u00e9 API \u00e0 configurer. Chaque licence inclut un quota mensuel (\u2248 140 pages satellite g\u00e9n\u00e9r\u00e9es). Une jauge dans les r\u00e9glages affiche votre usage restant sous la forme \u00ab \u2248 N pages restantes \u00bb. Vous pouvez aussi ajouter votre propre cl\u00e9 Anthropic pour un usage <strong>illimit\u00e9<\/strong> factur\u00e9 directement sur votre compte.<\/li>\n<li><strong>Gratuit<\/strong> \u2014 score SEO local de 0 \u00e0 100, champs titre\/m\u00e9ta-description avec compteur dans l'\u00e9diteur, aper\u00e7u SERP en direct, zone g\u00e9ographique pour le SEO local, compatible Gutenberg, Oxygen, Elementor, Beaver Builder.<\/li>\n<li><strong>Premium (licence)<\/strong> \u2014 analyse SEO compl\u00e8te par IA, assistant \u00ab Analyser \u2192 Valider \u2192 Optimiser \u00bb, g\u00e9n\u00e9ration de contenu HTML, recherche de mots-cl\u00e9s (longue tra\u00eene, local, questions PAA, LSI), suivi des positions Google (Serper.dev \/ Search Console), corrections en un clic, rapports, et <strong>cocon s\u00e9mantique<\/strong> (pages satellites optimis\u00e9es, maill\u00e9es et publi\u00e9es progressivement).<\/li>\n<\/ul>\n\n<p>Compatible avec tous les page builders : les balises SEO sont inject\u00e9es via les hooks natifs de WordPress, sans modifier le builder.<\/p>\n\n<h4>Free features<\/h4>\n\n<ul>\n<li>Local SEO score from 0 to 100 (title, meta description, H1, word count, links, images)<\/li>\n<li>SEO title and meta description fields with character counter in the editor<\/li>\n<li>Live SERP preview<\/li>\n<li>Geographic zone for local SEO<\/li>\n<li>Compatible with classic WordPress, Gutenberg, Oxygen Builder, Elementor, Beaver Builder<\/li>\n<\/ul>\n\n<h4>Premium features (license required)<\/h4>\n\n<blockquote>\n  <p><strong>AI included in your subscription.<\/strong> With an active license, AI features work out of the box \u2014 no API key to configure. Each license includes a monthly allowance (about 140 satellite pages worth of generation). A simple gauge in the settings shows your remaining usage as \"\u2248 N pages left\". Prefer your own Anthropic key? Add it in the settings for <strong>unlimited<\/strong> usage billed directly on your Anthropic account.<\/p>\n<\/blockquote>\n\n<ul>\n<li><strong>Full AI analysis<\/strong> \u2014 score, strengths, detected issues and prioritized suggestions via Claude Haiku (Anthropic)<\/li>\n<li><strong>\"Analyze \u2192 Validate \u2192 Optimize\" Wizard<\/strong> \u2014 Claude analyzes your page semantics, generates ~20 keywords to validate in one click, then automatically optimizes SEO title, meta description, Schema.org, Open Graph and canonical URL<\/li>\n<li><strong>AI-generated HTML content<\/strong> \u2014 H1, H2s, paragraphs and conclusion ready to paste into the editor<\/li>\n<li><strong>AI keyword research<\/strong> \u2014 primary, long-tail, local, PAA questions, LSI semantic clusters, CSV export<\/li>\n<li><strong>Google position tracking<\/strong> \u2014 via Serper.dev (Google Search API)<\/li>\n<li><strong>One-click auto-fix recommendations<\/strong> \u2014 apply all SEO fixes instantly<\/li>\n<li><strong>Progress reports<\/strong> \u2014 dashboard, charts, AI-generated executive summaries<\/li>\n<li><strong>Semantic Cluster (Cocon S\u00e9mantique)<\/strong> \u2014 automatically generate SEO-optimized satellite pages, interlinked and ready to index<\/li>\n<li><strong>Royalty-free images<\/strong> \u2014 optionally illustrate each satellite page with a relevant Unsplash photo (imported into your media library)<\/li>\n<li><strong>Drip auto-publish<\/strong> \u2014 optionally publish satellite drafts automatically, one page per day, for a natural indexing pace<\/li>\n<\/ul>\n\n<h4>Compatibility<\/h4>\n\n<p>Fully compatible with Oxygen Builder, Elementor, Beaver Builder, WPBakery and the classic WordPress\/Gutenberg editor. All meta tags and SEO data are injected via native WordPress hooks \u2014 the builder is never modified.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the following external services. <strong>These services are only called when you have configured the corresponding API keys in the plugin settings.<\/strong> No data is sent without your explicit action.<\/p>\n\n<h4>Anthropic Claude API (premium features)<\/h4>\n\n<p>Used for AI-based SEO analysis, keyword research, content generation and optimization recommendations.<\/p>\n\n<ul>\n<li><strong>Data sent:<\/strong> page content (title, meta, headings, body text), target keyword, geographic area<\/li>\n<li><strong>When:<\/strong> only when you trigger an AI analysis or content generation from the plugin interface<\/li>\n<li><strong>Routing:<\/strong> if you enter your own Anthropic API key, requests go <strong>directly<\/strong> to Anthropic. If you use the AI included in your subscription (no personal key), requests are relayed through the Groupe Coste license server (see below), which forwards them to Anthropic using its own key and meters your monthly token allowance.<\/li>\n<li><strong>Service provider:<\/strong> Anthropic, PBC \u2014 https:\/\/www.anthropic.com<\/li>\n<li><strong>Terms of use:<\/strong> https:\/\/www.anthropic.com\/legal\/aup<\/li>\n<li><strong>Privacy policy:<\/strong> https:\/\/www.anthropic.com\/privacy<\/li>\n<\/ul>\n\n<h4>Serper.dev (optional \u2014 position tracking)<\/h4>\n\n<p>Used to retrieve Google search results and detect the position of your pages for tracked keywords.<\/p>\n\n<ul>\n<li><strong>Data sent:<\/strong> tracked keywords, target country\/language<\/li>\n<li><strong>When:<\/strong> only during scheduled or manual position tracking updates<\/li>\n<li><strong>Service provider:<\/strong> Serper.dev \u2014 https:\/\/serper.dev<\/li>\n<li><strong>Terms of use:<\/strong> https:\/\/serper.dev\/terms<\/li>\n<li><strong>Privacy policy:<\/strong> https:\/\/serper.dev\/privacy<\/li>\n<\/ul>\n\n<h4>Unsplash (optional \u2014 satellite page images)<\/h4>\n\n<p>Used to fetch a relevant royalty-free photo to illustrate each generated satellite page. The image is then downloaded into your WordPress media library.<\/p>\n\n<ul>\n<li><strong>Data sent:<\/strong> the target keyword (search query) of the satellite page<\/li>\n<li><strong>When:<\/strong> only when you generate a satellite page AND have entered an Unsplash API key with the image option enabled<\/li>\n<li><strong>Service provider:<\/strong> Unsplash Inc. \u2014 https:\/\/unsplash.com<\/li>\n<li><strong>Terms of use:<\/strong> https:\/\/unsplash.com\/terms<\/li>\n<li><strong>Privacy policy:<\/strong> https:\/\/unsplash.com\/privacy<\/li>\n<\/ul>\n\n<h4>Google Search Console (optional \u2014 position tracking)<\/h4>\n\n<p>Optional OAuth 2.0 connection to import click and impression data from your GSC account.<\/p>\n\n<ul>\n<li><strong>Data sent:<\/strong> OAuth token (stored locally), site URL<\/li>\n<li><strong>When:<\/strong> only when you connect GSC and trigger a data import<\/li>\n<li><strong>Service provider:<\/strong> Google LLC \u2014 https:\/\/search.google.com\/search-console<\/li>\n<li><strong>Terms:<\/strong> https:\/\/developers.google.com\/terms<\/li>\n<li><strong>Privacy policy:<\/strong> https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<h4>Google Analytics 4 (optional \u2014 visitor tracking)<\/h4>\n\n<p>If you enter a GA4 Measurement ID in the settings, the plugin loads Google's official gtag.js tracking script on your public pages. Leave the field empty to load nothing.<\/p>\n\n<ul>\n<li><strong>Data sent:<\/strong> standard Google Analytics traffic data (page views, visitor\/device info collected by gtag.js)<\/li>\n<li><strong>When:<\/strong> on every public page load, only when a GA4 Measurement ID is configured<\/li>\n<li><strong>Service provider:<\/strong> Google LLC \u2014 https:\/\/www.google.com\/analytics<\/li>\n<li><strong>Terms:<\/strong> https:\/\/marketingplatform.google.com\/about\/analytics\/terms\/us\/<\/li>\n<li><strong>Privacy policy:<\/strong> https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<h4>Groupe Coste License Server (premium features)<\/h4>\n\n<p>Used to validate your premium license key when activating or using premium features, and to relay AI requests when you use the AI included in your subscription (instead of your own Anthropic key).<\/p>\n\n<ul>\n<li><strong>Data sent:<\/strong> license key, WordPress site URL; and \u2014 only when using the included AI \u2014 the same page content\/keyword data described in the Anthropic section above, forwarded to Anthropic on your behalf<\/li>\n<li><strong>When:<\/strong> on plugin activation, periodically to verify license validity, and each time you trigger an AI action while using the included AI allowance<\/li>\n<li><strong>Service provider:<\/strong> Groupe Coste \u2014 https:\/\/groupe-coste.fr<\/li>\n<li><strong>Terms:<\/strong> https:\/\/groupe-coste.fr\/mentions-legales<\/li>\n<li><strong>Privacy policy:<\/strong> https:\/\/groupe-coste.fr\/mentions-legales<\/li>\n<\/ul>\n\n<!--section=installation-->\n<h4>Automatic installation<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New Plugin<\/strong><\/li>\n<li>Search for \"SEO AI Master\"<\/li>\n<li>Click <strong>Install Now<\/strong> then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Manual installation<\/h4>\n\n<ol>\n<li>Download the <code>.zip<\/code> file<\/li>\n<li>Go to <strong>Plugins \u2192 Add New Plugin \u2192 Upload Plugin<\/strong><\/li>\n<li>Select the <code>.zip<\/code> file and click <strong>Install Now<\/strong><\/li>\n<li>Activate the plugin<\/li>\n<\/ol>\n\n<h4>Configuration<\/h4>\n\n<ol>\n<li>Go to <strong>SEO AI Master \u2192 Settings<\/strong><\/li>\n<li><em>(Free)<\/em> The basic SEO score works immediately, no configuration needed<\/li>\n<li><em>(Premium)<\/em> Activate your <strong>license key<\/strong> \u2014 AI is then included, no API key needed (optionally add your own Anthropic key for unlimited usage)<\/li>\n<li><em>(Premium)<\/em> Enter your <strong>Serper.dev API key<\/strong> for Google position tracking<\/li>\n<li><em>(Optional)<\/em> Connect <strong>Google Search Console<\/strong> for click\/impression data<\/li>\n<li>Set your <strong>geographic area<\/strong> for local SEO<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20the%20plugin%20free%3F\"><h3>Is the plugin free?<\/h3><\/dt>\n<dd><p>The plugin includes a free tier with the basic SEO score and meta fields. Premium features (AI analysis, keyword research, optimization wizard, position tracking, semantic clusters) require a license.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20anthropic%20account%3F\"><h3>Do I need an Anthropic account?<\/h3><\/dt>\n<dd><p>No. With an active license, AI is included in your subscription \u2014 no Anthropic account or API key required. A monthly token allowance covers both satellite-page generation and the other AI features; the settings show your remaining usage as \"\u2248 N pages left\".<\/p>\n\n<p>If you prefer unlimited usage, you can optionally add your own Anthropic API key (create one at <a href=\"https:\/\/console.anthropic.com\">console.anthropic.com<\/a>). Requests then go directly to Anthropic and are billed on your account \u2014 Claude Haiku costs roughly $1 per million input tokens and $5 per million output tokens (a few cents per analysis).<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20my%20page%20builder%3F\"><h3>Does it work with my page builder?<\/h3><\/dt>\n<dd><p>Yes. SEO AI Master extracts content from pages built with Oxygen Builder, Elementor, Beaver Builder, WPBakery and the Gutenberg editor by fetching the rendered page \u2014 exactly what Google sees.<\/p><\/dd>\n<dt id=\"is%20my%20data%20sent%20to%20third-party%20servers%3F\"><h3>Is my data sent to third-party servers?<\/h3><\/dt>\n<dd><p>Only if you configure the API keys. See the \"External Services\" section above for full details. No data is ever sent without your explicit action.<\/p><\/dd>\n<dt id=\"is%20google%20search%20console%20required%3F\"><h3>Is Google Search Console required?<\/h3><\/dt>\n<dd><p>No. The GSC connection is optional. Without it, you can still use AI analysis, keyword research and position tracking via Serper.dev.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%3F\"><h3>What happens when I uninstall?<\/h3><\/dt>\n<dd><p>Your data (analyses, keywords, positions) is kept in the database. To delete it permanently, enable the \"Clean uninstall\" option in the plugin settings before uninstalling.<\/p><\/dd>\n<dt id=\"why%20does%20my%20license%20need%20to%20be%20verified%3F\"><h3>Why does my license need to be verified?<\/h3><\/dt>\n<dd><p>License verification is done against our server to prevent unauthorized use and to ensure that only valid license holders have access to premium features. The only data sent is your license key and your site URL.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.8.2<\/h4>\n\n<ul>\n<li>Fix: la navigation de cocon (liens vers les satellites, inject\u00e9s automatiquement en bas de page) ne s'affichait plus pendant l'essai gratuit. Elle s'affiche d\u00e9sormais d\u00e8s que l'IA est utilisable (essai OU licence) et ne dispara\u00eet qu'une fois l'essai termin\u00e9 \/ la licence invalide<\/li>\n<\/ul>\n\n<h4>1.8.1<\/h4>\n\n<ul>\n<li>Fix: la recherche de mots-cl\u00e9s par IA \u00e9tait bloqu\u00e9e pendant l'essai gratuit (gate licence) \u2014 elle est d\u00e9sormais accessible durant l'essai tant qu'il reste des tokens, comme les autres fonctions IA<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>New: <strong>essai gratuit de l'IA<\/strong> sans licence \u2014 un cr\u00e9dit de d\u00e9couverte est accord\u00e9 automatiquement \u00e0 la premi\u00e8re utilisation (g\u00e9r\u00e9 c\u00f4t\u00e9 serveur, par domaine, non r\u00e9initialisable par r\u00e9installation)<\/li>\n<li>New: jauge \u00ab Essai gratuit \u00bb dans R\u00e9glages et dans \u00ab Mon utilisation \u00bb, avec invitation \u00e0 s'abonner<\/li>\n<li>Change: les pages piliers propos\u00e9es dans le Cocon sont d\u00e9sormais limit\u00e9es aux pages pr\u00e9sentes dans les menus WordPress (les plus pertinentes) ; la page courante reste s\u00e9lectionnable via la barre d'administration<\/li>\n<li>Change: quand l'abonnement\/essai s'arr\u00eate, la navigation de cocon (liens vers les satellites) n'est plus affich\u00e9e \u2014 les pages satellites restent publi\u00e9es et r\u00e9apparaissent \u00e0 la r\u00e9activation<\/li>\n<li>Note: n\u00e9cessite SAM License Manager 1.3.0+ c\u00f4t\u00e9 serveur pour l'essai gratuit<\/li>\n<\/ul>\n\n<h4>1.7.11<\/h4>\n\n<ul>\n<li>Fix: le compteur de tokens ne bougeait jamais apr\u00e8s un appel IA \u2014 la r\u00e9ponse du proxy (cl\u00e9s quota\/remaining\/used) n'\u00e9tait pas lue par le plugin (qui attendait ai_quota\/ai_remaining). La jauge se met d\u00e9sormais \u00e0 jour \u00e0 chaque utilisation de l'IA<\/li>\n<li>New: nouvelle page \u00ab \ud83d\udcca Mon utilisation \u00bb dans le menu, qui affiche les tokens restants\/consomm\u00e9s du mois et la liste des fonctions qui consomment des tokens<\/li>\n<li>Note: toutes les fonctions IA (analyse, corrections, mots-cl\u00e9s, m\u00e9ta en lot, cocon, rapports) sont bien d\u00e9compt\u00e9es du quota<\/li>\n<\/ul>\n\n<h4>1.7.10<\/h4>\n\n<ul>\n<li>Fix: le Cocon S\u00e9mantique et l'Optimisation en lot fonctionnent d\u00e9sormais avec l'IA incluse dans l'abonnement (ils exigeaient \u00e0 tort une cl\u00e9 API personnelle)<\/li>\n<li>Change: la jauge de quota affiche maintenant les tokens restants (\u00ab Il vous reste X tokens \u00bb) au lieu d'un nombre de pages \u2014 tout appel \u00e0 l'IA (analyse, mots-cl\u00e9s, cocon, pages satellites) consomme des tokens<\/li>\n<li>Change: messages \u00ab Fonctionnalit\u00e9 Premium \u00bb plus clairs sur les fonctions IA pour les utilisateurs de la version gratuite (invitation \u00e0 activer l'abonnement)<\/li>\n<\/ul>\n\n<h4>1.7.9<\/h4>\n\n<ul>\n<li>Fix: la cl\u00e9 API Anthropic ne pouvait pas \u00eatre supprim\u00e9e (le champ vid\u00e9 revenait apr\u00e8s enregistrement) \u2014 la sauvegarde des r\u00e9glages lisait les champs avec le mauvais pr\u00e9fixe ; tous les r\u00e9glages sont d\u00e9sormais correctement enregistr\u00e9s et une valeur vide efface bien l'option<\/li>\n<\/ul>\n\n<h4>1.7.8<\/h4>\n\n<ul>\n<li>New: <strong>IA incluse dans l'abonnement<\/strong> \u2014 avec une licence active, toutes les fonctions IA (analyse, mots-cl\u00e9s, cocon, pages satellites) fonctionnent sans cl\u00e9 API, dans la limite d'un quota mensuel de tokens par licence<\/li>\n<li>New: jauge de quota dans les r\u00e9glages, affich\u00e9e sous la forme \u00ab \u2248 N pages restantes \u00bb (le d\u00e9tail en tokens est masqu\u00e9)<\/li>\n<li>New: possibilit\u00e9 d'ajouter sa propre cl\u00e9 API Anthropic pour un usage illimit\u00e9 (appel direct \u00e0 Anthropic, factur\u00e9 sur votre compte)<\/li>\n<li>Change: l'IA incluse passe par un proxy sur le serveur Groupe Coste qui relaie la requ\u00eate \u00e0 Anthropic et comptabilise les tokens (document\u00e9 dans \u00ab External Services \u00bb)<\/li>\n<li>Fix: tarif Claude Haiku corrig\u00e9 dans la documentation (~1 \u20ac\/M tokens en entr\u00e9e, ~5 \u20ac\/M en sortie)<\/li>\n<\/ul>\n\n<h4>1.7.7<\/h4>\n\n<ul>\n<li>New: Cocon S\u00e9mantique \u2014 ajout manuel de mots-cl\u00e9s cibles m\u00eame quand la page pilier n'en a aucun enregistr\u00e9 (bouton \u00ab Ajouter un mot-cl\u00e9 \u00bb)<\/li>\n<li>Fix: l'aper\u00e7u du Cocon ne renvoie plus une erreur bloquante quand aucun mot-cl\u00e9 n'est trouv\u00e9<\/li>\n<li>Hardening: l'aper\u00e7u du Cocon renvoie d\u00e9sormais les erreurs PHP de fa\u00e7on lisible au lieu d'un \u00e9chec silencieux<\/li>\n<\/ul>\n\n<h4>1.7.6<\/h4>\n\n<ul>\n<li>Fix (WP.org): prefixes <code>sam_<\/code> (3 chars) renamed to <code>samo_<\/code> (4 chars) across all hooks, options, transients and AJAX actions \u2014 required by WordPress.org guidelines; automatic DB migration on update (options renamed, old cron events cleared)<\/li>\n<li>Fix (WP.org): inline <code>&lt;style&gt;<\/code> tag replaced by <code>wp_add_inline_style()<\/code> for satellite pages CSS<\/li>\n<li>Fix (WP.org): inline <code>&lt;script&gt;<\/code> tags in keywords view replaced by <code>wp_add_inline_script()<\/code> in enqueue hook<\/li>\n<li>Fix (WP.org): <code>JSON_UNESCAPED_SLASHES<\/code> removed from Schema.org JSON-LD output (prevents <code>&lt;\/script&gt;<\/code> injection risk)<\/li>\n<li>Fix (WP.org): Unsplash API-terms URL (401) removed from readme.txt<\/li>\n<li>Backwards compat: shortcode <code>[sam_cluster_links]<\/code> still works alongside new <code>[samo_cluster_links]<\/code><\/li>\n<\/ul>\n\n<h4>1.7.5<\/h4>\n\n<ul>\n<li>New: daily email digest \u2014 admin receives a summary of all pages published in the last 24h (satellites + manual), with keywords and links to the tracking dashboard<\/li>\n<li>New: Google SiteKit detected automatically \u2014 if installed, the email includes a direct link to its dashboard<\/li>\n<li>New: per-pillar drip publishing \u2014 instead of 1 satellite\/day globally, publishes 1 satellite per pillar per day (10 piliers = up to 10 daily publishes, each on a different topic)<\/li>\n<li>New: \"All pages keywords\" view \u2014 new option in the Keywords tab to see every saved keyword across the entire site in one list, with the page title shown on each row<\/li>\n<li>Fix: cron position tracking timeout \u2014 daily sync now processes posts in batches of 20 per cron run (cursor-based), preventing PHP timeouts on large sites<\/li>\n<li>Fix: KPI counters (Top 3 \/ Top 10) now match the tracking list exactly \u2014 counter now queries the same deduplicated keyword source as the list<\/li>\n<li>Fix: Keywords tab no longer shows a blank panel when a page has keywords \u2014 proper \"no keywords\" message displayed; network errors surfaced with an alert<\/li>\n<li>Fix: keyword rename (pencil icon) now works correctly \u2014 JS handler was placed outside its binding function in a previous version<\/li>\n<li>Settings: new \"Email Notifications\" section with on\/off toggle (enabled by default)<\/li>\n<\/ul>\n\n<h4>1.7.4<\/h4>\n\n<ul>\n<li>New: optional Google Analytics 4 integration \u2014 enter your GA4 Measurement ID (G-XXXXXXXXXX) in the settings and the gtag.js tag is added to all public pages (loaded only when configured)<\/li>\n<\/ul>\n\n<h4>1.7.3<\/h4>\n\n<ul>\n<li>Compatibility: tested up to WordPress 7.0<\/li>\n<li>Hardening: explicit unslash\/sanitize of the bulk-delete request parameter<\/li>\n<\/ul>\n\n<h4>1.7.2<\/h4>\n\n<ul>\n<li>Improvement: the publication mode (automatic vs manual) is now shown directly on the Semantic Cluster management page, not only in the post-generation report<\/li>\n<li>Improvement: in automatic mode, draft satellites show an \"Queued (auto)\" status and the manual \"Publish\" button is hidden to remove ambiguity<\/li>\n<\/ul>\n\n<h4>1.7.1<\/h4>\n\n<ul>\n<li>Change: automatic satellite publishing is now enabled by default<\/li>\n<li>New: configurable publishing frequency (publish one page every N days) in Settings \u2192 Semantic Cluster<\/li>\n<li>Improvement: the cluster generation report now clearly shows the active mode (automatic vs manual) and the chosen frequency<\/li>\n<li>Improvement: in automatic mode the manual \"Publish\" button is hidden to avoid confusion (a badge indicates the page is queued)<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>New: optional Unsplash images automatically added to generated satellite pages (imported into the media library, with attribution)<\/li>\n<li>New: optional automatic \"drip\" publishing of satellite drafts \u2014 one page per day to keep a natural indexing pace<\/li>\n<li>New: \"Publish\" and \"View draft\" buttons directly in the cluster generation report<\/li>\n<li>New: black &amp; white minimal design for satellite pages and cluster navigation (no forced accent color)<\/li>\n<li>Improvement: position tracking now runs in small batches with a progress bar \u2014 fixes PHP timeouts on sites with many pages<\/li>\n<li>Improvement: cluster navigation block collapses beyond 8 pages to keep pillar pages short<\/li>\n<li>Improvement: the cluster wizard now shows which title is used for generation (the WordPress title, not the on-screen H1) and lets you adjust it<\/li>\n<li>Privacy: the editor attribution link on the front-end is now strictly opt-in (disabled by default)<\/li>\n<li>Fix: fatal preg_replace() call with a missing argument during page heading extraction (PHP 8)<\/li>\n<li>Build: the license server code (server\/) is now excluded from the distributed plugin via .distignore + build.sh<\/li>\n<\/ul>\n\n<h4>1.6.8<\/h4>\n\n<ul>\n<li>Fix : sanitisation des donn\u00e9es JSON ($_POST) avant json_decode \u2014 conformit\u00e9 WordPress.org<\/li>\n<li>Fix : CSS barre admin via wp_add_inline_style au lieu de balise  inline<\/li>\n<li>Build : dossier server\/ exclu du zip (code serveur de licences, non destin\u00e9 \u00e0 WordPress)<\/li>\n<\/ul>\n\n<h4>1.6.7<\/h4>\n\n<ul>\n<li>Feature : barre d'admin contextuelle \u2014 boutons Analyser \/ Cocon \/ Mots-cl\u00e9s \/ Tracking au survol de la page courante<\/li>\n<li>Feature : score SEO affich\u00e9 directement dans la barre (badge couleur A\/B\/C\/D)<\/li>\n<li>Feature : auto-s\u00e9lection de la page dans les vues Analyse et Cocon via sam_post_id<\/li>\n<\/ul>\n\n<h4>1.6.6<\/h4>\n\n<ul>\n<li>Fix : r\u00e9sum\u00e9 IA dans les rapports (ajout m\u00e9thode generate_ai_report_summary)<\/li>\n<li>Fix : injection automatique du shortcode [sam_cluster_links] compatible Oxygen Builder<\/li>\n<li>Fix : CSS admin charg\u00e9 sur toutes les pages du plugin<\/li>\n<li>Fix : pr\u00e9fixe des hooks de page corrig\u00e9 (sam-optirank_page_)<\/li>\n<li>Fix : HMAC secret licence restaur\u00e9<\/li>\n<li>Fix : hook widgets_init pointait vers ancienne fonction<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Fix: all PHP class names, constants and functions renamed to SAMO_ prefix (4-char prefix \u2014 WordPress.org compliance)<\/li>\n<li>Fix: text domain updated from seo-ai-master to sam-optirank throughout all 487 occurrences<\/li>\n<li>Fix: all unescaped outputs in tracking view wrapped with esc_html()<\/li>\n<li>Fix: LocalBusiness JSON-LD now output via wp_json_encode() instead of raw echo<\/li>\n<li>Fix: JSON_UNESCAPED_SLASHES removed from update_option and update_post_meta calls<\/li>\n<li>Fix: load_plugin_textdomain() removed (WordPress.org auto-loads since WP 4.6)<\/li>\n<li>Fix: cluster nav CSS moved to enqueued stylesheet public\/css\/cluster.css (wp_enqueue compliance)<\/li>\n<li>Fix: inline styles added directly to HTML elements \u2014 guaranteed rendering regardless of theme<\/li>\n<li>Fix: Chart.js updated to v4.5.1<\/li>\n<li>Fix: SAM_FILE constant reference corrected to SAMO_PLUGIN_FILE in wp_enqueue_style call<\/li>\n<\/ul>\n\n<h4>1.5.9<\/h4>\n\n<ul>\n<li>Fix: inline <code>&lt;style&gt;<\/code> tag in tracking view moved to enqueued admin.css (wp_enqueue compliance)<\/li>\n<li>Fix: removed JSON_UNESCAPED_SLASHES from JSON-LD output (security \u2014 prevents potential  injection)<\/li>\n<li>Fix: Chart.js updated to v4.4.7<\/li>\n<li>Improvement: load_plugin_textdomain removed (WordPress.org auto-loads translations since WP 4.6)<\/li>\n<li>Improvement: External services fully documented in English (including license server)<\/li>\n<\/ul>\n\n<h4>1.5.8<\/h4>\n\n<ul>\n<li>Fix: [sam_cluster_links] shortcode now detects satellite context and displays sibling pages + pilier link<\/li>\n<li>Improvement: complete redesign of the cluster navigation block<\/li>\n<\/ul>\n\n<h4>1.5.7<\/h4>\n\n<ul>\n<li>Fix: satellite page CSS now loads via dual detection (meta flag OR content class) \u2014 covers pages created before v1.5.5<\/li>\n<li>Fix: stray  tags in AI-generated satellite HTML content<\/li>\n<\/ul>\n\n<h4>1.5.6<\/h4>\n\n<ul>\n<li>Fix: satellite CSS not loading \u2014 replaced get_the_ID() (returns 0 in wp_enqueue_scripts) with get_queried_object_id() in wp_head hook<\/li>\n<\/ul>\n\n<h4>1.5.5<\/h4>\n\n<ul>\n<li>Fix: PHP E_PARSE error on line 675 of class-sam-claude-api.php (missing closing quote in $prompt string)<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>New: <strong>Semantic Cluster<\/strong> \u2014 satellite page generation wizard (SEO AI Master \u2192 Semantic Cluster)<\/li>\n<li>New: select a pillar page from analyzed pages, choose 1 to 20 satellite keywords<\/li>\n<li>New: Claude generates unique content per satellite (H1, 3 H2s, 500\u2013700 words), meta tags, schema.org and contextual links to the pillar page<\/li>\n<li>New: automatic WordPress draft page creation with all SEO meta injected<\/li>\n<li>New: automatic internal linking \u2014 satellites link to the pillar page, pillar\u2194satellite relationship stored in post_meta<\/li>\n<li>New: \"Cluster SEO\" widget (Appearance \u2192 Widgets) \u2014 lists satellites in the footer to ensure Googlebot crawling<\/li>\n<li>New: [sam_cluster_links] shortcode \u2014 place in the pillar page to display its satellite list<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Fix: <code>&lt;meta name=\"keywords\"&gt;<\/code> tag now includes all registered keywords (focus + primary + long-tail + local), max 20<\/li>\n<li>Fix: <code>keywords<\/code> field in Schema.org JSON-LD now dynamically enriched with the full keyword list<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>New: \"Batch Optimization\" wizard \u2014 select up to 5 pages, sequential AI analysis, review suggestions, apply in one click<\/li>\n<\/ul>","raw_excerpt":"AI-powered on-page SEO optimizer for WordPress. Analyze pages, apply fixes in one click, track Google positions, and build semantic content clusters.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/303866","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=303866"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/groupecoste"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=303866"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=303866"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=303866"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=303866"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=303866"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=303866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}