SAM Optirank

Changelog

2.0.3

  • Fix: la mise a jour vers 2.x redemarrait a tort un essai de 7 jours sur les installations existantes (l’horloge demarrait a la 1re execution). L’horloge est desormais ancree sur la plus ancienne activite du plugin, avec migration corrective des horloges deja creees — les sites en essai depuis plus de 7 jours sont verrouilles comme prevu, meme avec une cle API personnelle
  • Fix: la barre d’administration (SAM Optirank, Analyser cette page, Cocon, Mots-cles, Positions, Tableau de bord, Rapports) etait codee en dur en francais — desormais traduite (anglais/francais selon la langue du site)

2.0.2

  • Fix: le zip d’installation manuelle utilisait le dossier interne historique seo-ai-master/ alors que WordPress.org installe sous sam-optirank/ — WordPress creait donc une SECONDE copie au lieu de mettre a jour. Le zip utilise desormais le dossier sam-optirank/ (identique au repertoire officiel)
  • New: garde anti-doublon — si deux copies du plugin sont actives, la seconde se met en sommeil (plus d’erreur fatale) et une notice explique comment supprimer le doublon sans perdre les donnees

2.0.1

  • Fix: l’expiration de l’essai gratuit (7 jours ou credits epuises) s’applique desormais MEME si une cle API Anthropic personnelle est renseignee — sans abonnement actif, les fonctions IA se verrouillent et la navigation des cocons disparait. La cle perso reste un complement (usage illimite) pour les abonnes et pendant l’essai
  • New: les pages SAM Optirank n’affichent plus les notices/publicites des autres plugins (interface propre)
  • New: annonce dans l’admin presentant la prise en charge de l’anglais (2.0)

2.0.0

  • New: les contenus generes par l’IA (analyses, mots-cles, pages satellites, rapports) sont produits dans la LANGUE DU SITE (locale WordPress), plus seulement en francais
  • New: plugin entierement internationalise — interface disponible en anglais ET en francais. Chaines source converties en anglais (convention WordPress.org, ouvre la traduction communautaire via translate.wordpress.org), pack francais complet embarque (fr_FR/fr_BE/fr_CA, 719 entrees) couvrant aussi les textes generes en JavaScript
  • Fix: le chargement des traductions (load_plugin_textdomain) manquait — ajoute

1.9.14

  • Change: en essai/gratuit, le lien d’attribution “SAM Optirank” sous les cocons est active par defaut (decochable a tout moment) ; il reste optionnel pour les abonnes

1.9.13

  • Change: l’essai gratuit expire desormais apres 7 jours OU epuisement du credit (le 1er atteint) — y compris si l’utilisateur ajoute sa propre cle Anthropic. Jours restants affiches dans les jauges

1.9.12

  • Fix: suppression des anciens releves “par page” (obsoletes depuis le suivi domaine) qui affichaient de fausses positions ; le scan page unique passe aussi en mode domaine
  • Fix: incoherence du quota Serper (ex. “24 credits” affiche a cote de “epuise”) — sur erreur 429, le quota affiche passe a 0

1.9.11

  • Perf MAJEURE page Suivi: les requetes (positions + KPIs) faisaient des GROUP BY/JOIN LOWER(keyword) non indexables sur la table des positions, de plus en plus lents en grossissant. Reecrites: 1 lecture indexee (tracked_at, 180j) + fusion en PHP, source unique, cache requete. Purge auto des releves > 180j

1.9.10

  • Fix MAJEUR de lenteur: la verification de licence (is_active) etait rappelee plusieurs fois par page sans mettre en cache les echecs. Si le serveur de licences etait lent/injoignable, chaque page admin attendait N x 15s (~2 min). Desormais: cache au niveau de la requete, mise en cache des echecs (5 min) et timeout reduit a 8s

1.9.9

  • Fix: suppression de tout appel reseau synchrone au chargement des pages Suivi et Mon utilisation (lecture passive du quota Serper et du quota IA) — fin des chargements de 2-3 minutes

1.9.8

  • Change: le suivi des positions ne porte plus que sur les mots-clés stratégiques (focus keywords + ajouts manuels), pas tous les mots-clés issus de la recherche IA — pour rester dans le quota Serper. Le compteur « Mots-clés suivis » reflète ce sous-ensemble

1.9.7

  • Fix: la page Suivi ne fait plus AUCUN appel réseau synchrone au chargement. La lecture du quota Serper était bloquante à chaque visite (et se répétait sans cache quand le quota était épuisé) — elle se contente désormais de la dernière valeur connue

1.9.6

  • Fix: le cron de suivi ne s’exécute plus pendant le chargement des pages. Il déclenche désormais une requête de fond non bloquante (loopback) qui réalise le travail dans un process séparé → plus aucun ralentissement de l’admin, même si l’hébergeur exécute WP-Cron en mode requête
  • Change: en arrière-plan, le suivi dispose d’un budget de temps plus large (90 s/run) pour couvrir davantage de mots-clés par jour

1.9.5

  • Fix: la page Suivi pouvait mettre 2-3 minutes à s’afficher quand le cron quotidien s’exécutait en synchrone (jusqu’à 20 appels Serper enchaînés). Le cron est désormais borné dans le temps (~15 s/exécution) et reprend où il s’est arrêté — il ne bloque plus le chargement des pages

1.9.4

  • Fix: le suivi des positions n’enregistrait rien (et la page pouvait ne pas s’afficher) si les colonnes found_url/found_post_id n’avaient pas été créées — migration de base de données garantie (ajout explicite des colonnes manquantes)

1.9.3

  • Fix: le Rapport global affichait « pas de données » alors que des positions existaient — l’agrégation filtrait par page (post_id) au lieu d’agréger tout le domaine par mot-clé
  • Fix: les KPIs de suivi (Top 3 / Top 10 / position moyenne) ignoraient les positions du suivi domaine (jointure par page) — désormais agrégés par mot-clé
  • Change: le résumé s’affiche dès le 1er relevé (positions actuelles), sans attendre un 2e point de comparaison
  • Change: « Mots-clés suivis » compte désormais les mots-clés uniques (au lieu des doublons page par page)

1.9.2

  • Fix: l’analyse IA des Rapports ne fonctionnait pas (appel à une méthode inexistante) — elle utilise désormais le moteur IA standard (essai/licence/clé perso)
  • New: la dernière analyse IA des Rapports est mémorisée et réaffichée ; si aucune donnée de suivi n’existe encore, un guide explique quoi faire
  • Fix: le cron de suivi quotidien fonctionne maintenant comme le suivi manuel (par mot-clé, au niveau du domaine) — il faisait encore du suivi page par page
  • Change: menu d’administration réorganisé selon le flux de travail (Tableau de bord → Optimisation → Analyse → Mots-clés → Cocon → Suivi → Rapports → Mon utilisation → Réglages) avec pictogrammes

1.9.1

  • Fix: les mots-clés supprimés depuis le Tracking réapparaissaient après un nouveau scan. La suppression efface désormais le mot-clé sur tout le domaine (toutes les pages + historique de positions + focus keyword associé), de façon définitive

1.9.0

  • Change: le suivi de positions se fait désormais au niveau du domaine — pour chaque mot-clé, on mesure la position de la 1re page du site qui ressort dans Google (logique cocon : un satellite peut faire remonter le pilier). On affiche l’URL exacte qui ressort
  • New: ajout manuel de mots-clés à suivre sur la page Tracking, indépendamment des suggestions IA
  • Change: liste de suivi unifiée et dédupliquée (un mot-clé = une ligne, au niveau du site) — moins d’appels Serper, plus de doublons
  • New: colonne « Page qui ressort » dans le tableau des positions
  • Tech: nouvelle colonne found_url en base (migration automatique)

1.8.2

  • Fix: la navigation de cocon (liens vers les satellites, injectés automatiquement en bas de page) ne s’affichait plus pendant l’essai gratuit. Elle s’affiche désormais dès que l’IA est utilisable (essai OU licence) et ne disparaît qu’une fois l’essai terminé / la licence invalide

1.8.1

  • Fix: la recherche de mots-clés par IA était bloquée pendant l’essai gratuit (gate licence) — elle est désormais accessible durant l’essai tant qu’il reste des tokens, comme les autres fonctions IA

1.8.0

  • New: essai gratuit de l’IA sans licence — un crédit de découverte est accordé automatiquement à la première utilisation (géré côté serveur, par domaine, non réinitialisable par réinstallation)
  • New: jauge « Essai gratuit » dans Réglages et dans « Mon utilisation », avec invitation à s’abonner
  • Change: les pages piliers proposées dans le Cocon sont désormais limitées aux pages présentes dans les menus WordPress (les plus pertinentes) ; la page courante reste sélectionnable via la barre d’administration
  • Change: quand l’abonnement/essai s’arrête, la navigation de cocon (liens vers les satellites) n’est plus affichée — les pages satellites restent publiées et réapparaissent à la réactivation
  • Note: nécessite SAM License Manager 1.3.0+ côté serveur pour l’essai gratuit

1.7.11

  • Fix: le compteur de tokens ne bougeait jamais après un appel IA — la réponse du proxy (clés quota/remaining/used) n’était pas lue par le plugin (qui attendait ai_quota/ai_remaining). La jauge se met désormais à jour à chaque utilisation de l’IA
  • New: nouvelle page « 📊 Mon utilisation » dans le menu, qui affiche les tokens restants/consommés du mois et la liste des fonctions qui consomment des tokens
  • Note: toutes les fonctions IA (analyse, corrections, mots-clés, méta en lot, cocon, rapports) sont bien décomptées du quota

1.7.10

  • Fix: le Cocon Sémantique et l’Optimisation en lot fonctionnent désormais avec l’IA incluse dans l’abonnement (ils exigeaient à tort une clé API personnelle)
  • Change: la jauge de quota affiche maintenant les tokens restants (« Il vous reste X tokens ») au lieu d’un nombre de pages — tout appel à l’IA (analyse, mots-clés, cocon, pages satellites) consomme des tokens
  • Change: messages « Fonctionnalité Premium » plus clairs sur les fonctions IA pour les utilisateurs de la version gratuite (invitation à activer l’abonnement)

1.7.9

  • Fix: la clé API Anthropic ne pouvait pas être supprimée (le champ vidé revenait après enregistrement) — la sauvegarde des réglages lisait les champs avec le mauvais préfixe ; tous les réglages sont désormais correctement enregistrés et une valeur vide efface bien l’option

1.7.8

  • New: IA incluse dans l’abonnement — avec une licence active, toutes les fonctions IA (analyse, mots-clés, cocon, pages satellites) fonctionnent sans clé API, dans la limite d’un quota mensuel de tokens par licence
  • New: jauge de quota dans les réglages, affichée sous la forme « ≈ N pages restantes » (le détail en tokens est masqué)
  • New: possibilité d’ajouter sa propre clé API Anthropic pour un usage illimité (appel direct à Anthropic, facturé sur votre compte)
  • Change: l’IA incluse passe par un proxy sur le serveur Groupe Coste qui relaie la requête à Anthropic et comptabilise les tokens (documenté dans « External Services »)
  • Fix: tarif Claude Haiku corrigé dans la documentation (~1 €/M tokens en entrée, ~5 €/M en sortie)

1.7.7

  • New: Cocon Sémantique — ajout manuel de mots-clés cibles même quand la page pilier n’en a aucun enregistré (bouton « Ajouter un mot-clé »)
  • Fix: l’aperçu du Cocon ne renvoie plus une erreur bloquante quand aucun mot-clé n’est trouvé
  • Hardening: l’aperçu du Cocon renvoie désormais les erreurs PHP de façon lisible au lieu d’un échec silencieux

1.7.6

  • Fix (WP.org): prefixes sam_ (3 chars) renamed to samo_ (4 chars) across all hooks, options, transients and AJAX actions — required by WordPress.org guidelines; automatic DB migration on update (options renamed, old cron events cleared)
  • Fix (WP.org): inline <style> tag replaced by wp_add_inline_style() for satellite pages CSS
  • Fix (WP.org): inline <script> tags in keywords view replaced by wp_add_inline_script() in enqueue hook
  • Fix (WP.org): JSON_UNESCAPED_SLASHES removed from Schema.org JSON-LD output (prevents </script> injection risk)
  • Fix (WP.org): Unsplash API-terms URL (401) removed from readme.txt
  • Backwards compat: shortcode [sam_cluster_links] still works alongside new [samo_cluster_links]

1.7.5

  • New: daily email digest — admin receives a summary of all pages published in the last 24h (satellites + manual), with keywords and links to the tracking dashboard
  • New: Google SiteKit detected automatically — if installed, the email includes a direct link to its dashboard
  • New: per-pillar drip publishing — 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)
  • New: “All pages keywords” view — 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
  • Fix: cron position tracking timeout — daily sync now processes posts in batches of 20 per cron run (cursor-based), preventing PHP timeouts on large sites
  • Fix: KPI counters (Top 3 / Top 10) now match the tracking list exactly — counter now queries the same deduplicated keyword source as the list
  • Fix: Keywords tab no longer shows a blank panel when a page has keywords — proper “no keywords” message displayed; network errors surfaced with an alert
  • Fix: keyword rename (pencil icon) now works correctly — JS handler was placed outside its binding function in a previous version
  • Settings: new “Email Notifications” section with on/off toggle (enabled by default)

1.7.4

  • New: optional Google Analytics 4 integration — 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)

1.7.3

  • Compatibility: tested up to WordPress 7.0
  • Hardening: explicit unslash/sanitize of the bulk-delete request parameter

1.7.2

  • Improvement: the publication mode (automatic vs manual) is now shown directly on the Semantic Cluster management page, not only in the post-generation report
  • Improvement: in automatic mode, draft satellites show an “Queued (auto)” status and the manual “Publish” button is hidden to remove ambiguity

1.7.1

  • Change: automatic satellite publishing is now enabled by default
  • New: configurable publishing frequency (publish one page every N days) in Settings → Semantic Cluster
  • Improvement: the cluster generation report now clearly shows the active mode (automatic vs manual) and the chosen frequency
  • Improvement: in automatic mode the manual “Publish” button is hidden to avoid confusion (a badge indicates the page is queued)

1.7.0

  • New: optional Unsplash images automatically added to generated satellite pages (imported into the media library, with attribution)
  • New: optional automatic “drip” publishing of satellite drafts — one page per day to keep a natural indexing pace
  • New: “Publish” and “View draft” buttons directly in the cluster generation report
  • New: black & white minimal design for satellite pages and cluster navigation (no forced accent color)
  • Improvement: position tracking now runs in small batches with a progress bar — fixes PHP timeouts on sites with many pages
  • Improvement: cluster navigation block collapses beyond 8 pages to keep pillar pages short
  • 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
  • Privacy: the editor attribution link on the front-end is now strictly opt-in (disabled by default)
  • Fix: fatal preg_replace() call with a missing argument during page heading extraction (PHP 8)
  • Build: the license server code (server/) is now excluded from the distributed plugin via .distignore + build.sh

1.6.8

  • Fix : sanitisation des données JSON ($_POST) avant json_decode — conformité WordPress.org
  • Fix : CSS barre admin via wp_add_inline_style au lieu de balise inline
  • Build : dossier server/ exclu du zip (code serveur de licences, non destiné à WordPress)

1.6.7

  • Feature : barre d’admin contextuelle — boutons Analyser / Cocon / Mots-clés / Tracking au survol de la page courante
  • Feature : score SEO affiché directement dans la barre (badge couleur A/B/C/D)
  • Feature : auto-sélection de la page dans les vues Analyse et Cocon via sam_post_id

1.6.6

  • Fix : résumé IA dans les rapports (ajout méthode generate_ai_report_summary)
  • Fix : injection automatique du shortcode [sam_cluster_links] compatible Oxygen Builder
  • Fix : CSS admin chargé sur toutes les pages du plugin
  • Fix : préfixe des hooks de page corrigé (sam-optirank_page_)
  • Fix : HMAC secret licence restauré
  • Fix : hook widgets_init pointait vers ancienne fonction

1.6.0

  • Fix: all PHP class names, constants and functions renamed to SAMO_ prefix (4-char prefix — WordPress.org compliance)
  • Fix: text domain updated from seo-ai-master to sam-optirank throughout all 487 occurrences
  • Fix: all unescaped outputs in tracking view wrapped with esc_html()
  • Fix: LocalBusiness JSON-LD now output via wp_json_encode() instead of raw echo
  • Fix: JSON_UNESCAPED_SLASHES removed from update_option and update_post_meta calls
  • Fix: load_plugin_textdomain() removed (WordPress.org auto-loads since WP 4.6)
  • Fix: cluster nav CSS moved to enqueued stylesheet public/css/cluster.css (wp_enqueue compliance)
  • Fix: inline styles added directly to HTML elements — guaranteed rendering regardless of theme
  • Fix: Chart.js updated to v4.5.1
  • Fix: SAM_FILE constant reference corrected to SAMO_PLUGIN_FILE in wp_enqueue_style call

1.5.9

  • Fix: inline <style> tag in tracking view moved to enqueued admin.css (wp_enqueue compliance)
  • Fix: removed JSON_UNESCAPED_SLASHES from JSON-LD output (security — prevents potential injection)
  • Fix: Chart.js updated to v4.4.7
  • Improvement: load_plugin_textdomain removed (WordPress.org auto-loads translations since WP 4.6)
  • Improvement: External services fully documented in English (including license server)

1.5.8

  • Fix: [sam_cluster_links] shortcode now detects satellite context and displays sibling pages + pilier link
  • Improvement: complete redesign of the cluster navigation block

1.5.7

  • Fix: satellite page CSS now loads via dual detection (meta flag OR content class) — covers pages created before v1.5.5
  • Fix: stray tags in AI-generated satellite HTML content

1.5.6

  • Fix: satellite CSS not loading — replaced get_the_ID() (returns 0 in wp_enqueue_scripts) with get_queried_object_id() in wp_head hook

1.5.5

  • Fix: PHP E_PARSE error on line 675 of class-sam-claude-api.php (missing closing quote in $prompt string)

1.5.0

  • New: Semantic Cluster — satellite page generation wizard (SEO AI Master → Semantic Cluster)
  • New: select a pillar page from analyzed pages, choose 1 to 20 satellite keywords
  • New: Claude generates unique content per satellite (H1, 3 H2s, 500–700 words), meta tags, schema.org and contextual links to the pillar page
  • New: automatic WordPress draft page creation with all SEO meta injected
  • New: automatic internal linking — satellites link to the pillar page, pillar↔satellite relationship stored in post_meta
  • New: “Cluster SEO” widget (Appearance → Widgets) — lists satellites in the footer to ensure Googlebot crawling
  • New: [sam_cluster_links] shortcode — place in the pillar page to display its satellite list

1.4.2

  • Fix: <meta name=”keywords”> tag now includes all registered keywords (focus + primary + long-tail + local), max 20
  • Fix: keywords field in Schema.org JSON-LD now dynamically enriched with the full keyword list

1.4.0

  • New: “Batch Optimization” wizard — select up to 5 pages, sequential AI analysis, review suggestions, apply in one click

Plugin Website
Visit website

Author
groupecoste
Version:
2.0.3
Last Updated
June 11, 2026
Requires
WordPress 6.0
Tested Up To
WordPress 7.0
Requires PHP
8.0

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.