{
«@context»: «https://schema.org»,
«@graph»: [
{
«@type»: «Article»,
«@id»: «https://kevin-grillot.fr/agence-seo-wordpress-specialisee#article»,
«headline»: «Agence SEO WordPress : comment choisir la bonne en 2026»,
«description»: «Trouvez l’agence SEO WordPress spécialisée pour booster votre site. Critères, tarifs, audit technique et comparatif des meilleures agences.»,
«datePublished»: «2026-05-28 18:06:59»,
«dateModified»: «2026-05-28 18:06:59»,
«wordCount»: 1210,
«inLanguage»: «fr-FR»,
«mainEntityOfPage»: {
«@type»: «WebPage»,
«@id»: «https://kevin-grillot.fr/agence-seo-wordpress-specialisee»
},
«author»: {
«@type»: «Person»,
«@id»: «https://kevin-grillot.fr/agence-seo-wordpress-specialisee#author»,
«name»: «Kevin Grillot»,
«jobTitle»: «Consultant SEO & Spécialiste IA Générative»,
«description»: «Depuis plus de 8 ans, j’accompagne les entreprises françaises à dominer les classements Google. Spécialisé en SEO technique et intégration IA (ChatGPT, Gemini), je conçois des stratégies de référencement organique durables et rentables pour transformer votre visibilité digitale.»,
«image»: «https://ui-avatars.com/api/?name=Kevin+Grillot&size=256&background=1f6feb&color=fff&bold=true»,
«email»: «grillotkevin@gmail.com»,
«sameAs»: [
«https://www.linkedin.com/in/kevin-grillot/»,
«https://kevin-grillot.fr»
]
},
«publisher»: {
«@type»: «Organization»,
«@id»: «https://kevin-grillot.fr#org»,
«name»: «Kevin Grillot»,
«logo»: {
«@type»: «ImageObject»,
«url»: «https://kevin-grillot.fr/wp-content/uploads/2022/07/cropped-Logo-Kevin-Grillot-1.png»
},
«address»: null,
«email»: «grillotkevin@gmail.com»,
«telephone»: null,
«sameAs»: [
«https://www.instagram.com/kevingr04/»,
«https://www.linkedin.com/in/kevin-grillot-036652159/»
]
}
},
{
«@type»: «FAQPage»,
«@id»: «https://kevin-grillot.fr/agence-seo-wordpress-specialisee#faq»,
«mainEntity»: [
{
«@type»: «Question»,
«name»: «Combien coûte réellement une agence SEO WordPress ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «Budget réaliste : 2-3k€ d’audit initial, 8-15k€ pour refonte technique (Core Web Vitals, redirections, plugins), 5-10k€/an en contenu. Total première année : 15-28k€. Méfiez-vous des devis <8k€ : c'est du service réduit ou du contenu AI sans valeur. Maintenance annuelle : 8-12k€ après."
}
},
{
"@type": "Question",
"name": "Quels délais pour voir des résultats avec une agence SEO WordPress ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Mois 1-2 : aucun résultat visible (phase technique). Mois 3-4 : premiers +10-20% trafic. Mois 6-12 : +50-150% selon niche. Toute agence promettant « 1ère position en 30j » ment. WordPress a besoin de 3-4 mois minimum avant d'accumuler l'autorité nécessaire."
}
},
{
"@type": "Question",
"name": "Yoast ou Rankmath ? Quel plugin SEO WordPress choisir ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Rankmath est meilleur en 2026 : 10 requêtes DB vs 30 pour Yoast, hreflang intelligent, Google Search Console natif. Yoast reste acceptable si votre infra est rapide. The SEO Framework pour ultra-léger. L'agence choisit par infrastructure, pas préférence perso. Le plugin n'est jamais le levier principal du SEO."
}
},
{
"@type": "Question",
"name": "Comment vérifier si une agence SEO WordPress est réellement spécialisée ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Posez ces questions : 1) 40%+ portefeuille WordPress ? 2) Portfolio verifiable avec chiffres avant/après ? 3) Outil d'audit des redirect chains (Screaming Frog, Redirect Detective) ? 4) Protocole staging pour tout déploiement ? 5) Monitoring post-lancement inclus 3-6 mois ? Réponses vagues = pas spécialisée."
}
},
{
"@type": "Question",
"name": "Qu'est-ce qu'un audit SEO WordPress vraiment complet ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Audit complet = 5 volets : 1) Crawlabilité (ratio indexation 85%+), 2) Core Web Vitals et performance, 3) Structure permaliens et redirections, 4) Plugins SEO et conflits, 5) Multilingue et hreflang. Coûte 2-3k€. Si 4k€ : surchargé ou comprend déjà refonte.»
}
},
{
«@type»: «Question»,
«name»: «WordPress est-il vraiment pire en SEO que les autres CMS ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «Oui, architecturalement. WordPress charge images full-size par défaut, génère des centaines de pages inutiles (révisions, brouillons), consomme crawl budget. Mais 43% du web est dessus, donc pas d’alternative pratique. Une agence WordPress spécialisée compense ces défauts avec refonte technique. Les CMS modernes (Statamic, Craft) sont techniquement supérieurs mais moins flexibles.»
}
},
{
«@type»: «Question»,
«name»: «Une migration de sites WordPress impacte-t-elle le SEO ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «Risque réel si mal gérée. 301 redirections mal configurées = perte de PageRank invisible. Bonne agence WordPress : gel des 301 redirects 12 mois, test staging complet, monitoring Search Console 48h post-lancement. Trafic doit rester stable ou +5% semaine 1, même en refonte technique.»
}
},
{
«@type»: «Question»,
«name»: «Quels signaux d’expertise EEAT pour une agence SEO WordPress ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «Expertise : blog technique régulier (Gutenberg, Core Web Vitals WordPress), cas d’études domaines publics avec chiffres précis, certification Google Partners. Autorité : portefeuille >5 ans, mentions presse SEO (Search Engine Journal, Smashing Magazine). Fiabilité : contrat clair, SLA monitoring, clause rupture. Éthique : pas de promesse « 1ère page », processus transparent.»
}
}
]
},
{
«@type»: «BreadcrumbList»,
«@id»: «https://kevin-grillot.fr/agence-seo-wordpress-specialisee#breadcrumb»,
«itemListElement»: [
{
«@type»: «ListItem»,
«position»: 1,
«name»: «Accueil»,
«item»: «https://kevin-grillot.fr»
},
{
«@type»: «ListItem»,
«position»: 2,
«name»: «Agence SEO WordPress : comment choisir la bonne en 2026»,
«item»: «https://kevin-grillot.fr/agence-seo-wordpress-specialisee»
}
]
}
]
}

.otc-article * { box-sizing: border-box; }
.otc-article { font-family: -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; color: #1f2937; max-width: 880px; margin: 0 auto; }
.otc-progress { position: fixed; top: 0; left: 0; height: 3px; background: linear-gradient(90deg,#3b82f6,#8b5cf6); width: 0%; z-index: 9999; transition: width 80ms linear; }
.otc-meta-bar { display: flex; gap: 14px; flex-wrap: wrap; color: #64748b; font-size: 14px; padding: 12px 0 18px; border-bottom: 1px solid #e5e7eb; margin-bottom: 22px; }
.otc-meta-bar span { display: inline-flex; align-items: center; gap: 5px; }
.otc-tldr-card { background: linear-gradient(135deg,#f0f9ff,#ecfdf5); border: 1px solid #bae6fd; border-radius: 12px; padding: 20px 24px; margin: 0 0 28px; box-shadow: 0 1px 3px rgba(0,0,0,0.04); }
.otc-tldr-title { font-size: 14px; font-weight: 700; color: #0369a1; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 12px; display: flex; align-items: center; gap: 6px; }
.otc-tldr-bullets { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.otc-tldr-bullets li { padding-left: 26px; position: relative; line-height: 1.5; color: #1e293b; }
.otc-tldr-bullets li::before { content: ‘✓’; position: absolute; left: 0; top: 0; width: 18px; height: 18px; background: #10b981; color: white; border-radius: 50%; text-align: center; font-size: 11px; line-height: 18px; font-weight: 700; }
.otc-stats-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; margin: 0 0 32px; }
.otc-stat-card { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px 16px; }
.otc-stat-figure { font-size: 28px; font-weight: 700; color: #0f172a; line-height: 1; margin-bottom: 4px; }
.otc-stat-context { font-size: 13px; color: #475569; line-height: 1.4; margin-bottom: 6px; }
.otc-stat-source { font-size: 11px; color: #3b82f6; text-decoration: none; }
.otc-author { display: flex; gap: 16px; padding: 16px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; margin: 32px 0; align-items: center; }
.otc-author img { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.otc-author .info .name { font-weight: 600; font-size: 16px; }
.otc-author .info .job { color: #64748b; font-size: 13px; margin-top: 2px; }
.otc-author .info .bio { font-size: 13px; color: #475569; margin-top: 6px; line-height: 1.5; }
.otc-author .links { margin-top: 6px; display: flex; gap: 8px; flex-wrap: wrap; }
.otc-author .links a { color: #3b82f6; font-size: 12px; text-decoration: none; }
.otc-faq h2 { margin-top: 40px; }
.otc-faq details { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 12px 16px; margin-bottom: 8px; transition: background 0.15s; }
.otc-faq details:hover { background: #f1f5f9; }
.otc-faq details[open] { background: white; box-shadow: 0 1px 3px rgba(0,0,0,0.06); }
.otc-faq summary { cursor: pointer; font-weight: 600; color: #1e293b; padding-right: 24px; position: relative; }
.otc-faq summary::-webkit-details-marker { display: none; }
.otc-faq summary::after { content: ‘+’; position: absolute; right: 0; top: 50%; transform: translateY(-50%); font-size: 22px; color: #3b82f6; transition: transform 0.2s; }
.otc-faq details[open] summary::after { content: ‘−’; }
.otc-faq p { margin: 10px 0 0; color: #475569; line-height: 1.6; }
.otc-yt-embed { aspect-ratio: 16/9; margin: 20px 0; border-radius: 8px; overflow: hidden; background: #000; }
.otc-yt-embed iframe { width: 100%; height: 100%; border: 0; }
.otc-reddit { background: #fffbeb; border-left: 4px solid #f59e0b; padding: 14px 18px; margin: 20px 0; border-radius: 6px; font-size: 14px; }
.otc-reddit .src { color: #92400e; font-size: 12px; margin-top: 8px; }
.otc-reddit a { color: #b45309; }
.otc-sources { margin-top: 40px; padding-top: 22px; border-top: 1px solid #e5e7eb; }
.otc-sources h2 { font-size: 18px; color: #475569; margin-bottom: 14px; }
.otc-sources ol { padding-left: 22px; color: #475569; font-size: 13px; }
.otc-sources li { margin-bottom: 6px; line-height: 1.5; }
.otc-sources a { color: #3b82f6; }
.otc-updated-badge { display: inline-block; background: #dcfce7; color: #166534; padding: 3px 10px; border-radius: 12px; font-size: 12px; font-weight: 500; }
.otc-article h2 { font-size: 26px; margin: 36px 0 16px; color: #0f172a; scroll-margin-top: 80px; line-height: 1.3; font-weight: 700; }
.otc-article h3 { font-size: 19px; margin: 24px 0 12px; color: #1e293b; scroll-margin-top: 80px; line-height: 1.4; font-weight: 600; }
.otc-article h4 { font-size: 16px; margin: 18px 0 8px; color: #334155; }
.otc-article p { margin: 0 0 14px; }
.otc-article ul, .otc-article ol { margin: 0 0 16px 24px; }
.otc-article ul li, .otc-article ol li { margin-bottom: 6px; }
.otc-article a { color: #3b82f6; text-decoration: underline; text-underline-offset: 2px; }
.otc-article a:hover { color: #1e40af; }
.otc-article table { border-collapse: collapse; margin: 18px 0; width: 100%; font-size: 14px; }
.otc-article th, .otc-article td { border: 1px solid #e5e7eb; padding: 10px 14px; text-align: left; }
.otc-article th { background: #f8fafc; font-weight: 600; color: #1e293b; }
.otc-article blockquote { border-left: 3px solid #cbd5e1; padding: 10px 18px; margin: 18px 0; color: #475569; background: #f8fafc; font-style: italic; }
.otc-article img { max-width: 100%; height: auto; border-radius: 8px; margin: 18px 0; display: block; }
.otc-article figure { margin: 18px 0; }
.otc-article figcaption { font-size: 13px; color: #64748b; text-align: center; margin-top: 6px; font-style: italic; }
/* Widgets interactifs */
.otc-widget { border-radius: 12px; padding: 22px 24px; margin: 28px 0; border: 1px solid; }
.otc-widget-header { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.otc-widget-icon { font-size: 32px; line-height: 1; }
.otc-widget h3.otc-widget-title { font-size: 18px; margin: 0; line-height: 1.3; }
.otc-widget-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; opacity: 0.85; margin-bottom: 2px; }
.otc-widget-desc { font-size: 14px; line-height: 1.5; margin: 0 0 16px; opacity: 0.95; }
.otc-widget-quiz { background: linear-gradient(135deg,#ddd6fe22,#c4b5fd22); border-color: #a78bfa; }
.otc-widget-quiz h3, .otc-widget-quiz .otc-widget-label { color: #5b21b6; }
.otc-widget-calculator { background: linear-gradient(135deg,#fef3c7,#fde68a); border-color: #fcd34d; }
.otc-widget-calculator h3, .otc-widget-calculator .otc-widget-label { color: #78350f; }
.otc-widget-comparator { background: linear-gradient(135deg,#dbeafe,#bfdbfe); border-color: #60a5fa; }
.otc-widget-comparator h3, .otc-widget-comparator .otc-widget-label { color: #1e40af; }
.otc-widget-poll { background: linear-gradient(135deg,#fce7f3,#fbcfe8); border-color: #f472b6; }
.otc-widget-poll h3, .otc-widget-poll .otc-widget-label { color: #9d174d; }
.otc-widget-infographic { background: linear-gradient(135deg,#d1fae5,#a7f3d0); border-color: #34d399; }
.otc-widget-infographic h3, .otc-widget-infographic .otc-widget-label { color: #065f46; }
.otc-quiz-question { margin-bottom: 14px; padding: 12px; background: rgba(255,255,255,0.6); border-radius: 8px; }
.otc-quiz-question .q { font-weight: 600; margin-bottom: 8px; color: #1e293b; }
.otc-quiz-options { display: grid; gap: 6px; }
.otc-quiz-options label { display: flex; align-items: center; gap: 8px; padding: 8px 10px; background: white; border: 1px solid #e5e7eb; border-radius: 6px; cursor: pointer; transition: all 0.12s; font-size: 14px; }
.otc-quiz-options label:hover { border-color: #7c3aed; background: #faf5ff; }
.otc-quiz-options input[type=radio] { margin: 0; }
.otc-quiz-options input[type=radio]:checked + span { font-weight: 600; }
.otc-quiz-result { margin-top: 14px; padding: 12px 16px; background: white; border-radius: 8px; font-weight: 600; text-align: center; display: none; }
.otc-quiz-result.show { display: block; }
.otc-btn { background: #7c3aed; color: white; border: none; padding: 10px 18px; border-radius: 6px; cursor: pointer; font-weight: 500; font-size: 14px; transition: background 0.15s; }
.otc-btn:hover { background: #6d28d9; }
.otc-widget-calculator .otc-btn { background: #b45309; }
.otc-widget-calculator .otc-btn:hover { background: #92400e; }
.otc-widget-comparator .otc-btn { background: #2563eb; }
.otc-widget-comparator .otc-btn:hover { background: #1d4ed8; }
.otc-widget-poll .otc-btn { background: #db2777; }
.otc-widget-poll .otc-btn:hover { background: #be185d; }
.otc-calc-row { display: flex; gap: 10px; align-items: center; margin-bottom: 10px; flex-wrap: wrap; }
.otc-calc-row label { font-weight: 500; min-width: 130px; font-size: 14px; }
.otc-calc-row input { flex: 1; padding: 8px 10px; border: 1px solid #fcd34d; border-radius: 6px; font-size: 14px; min-width: 120px; }
.otc-calc-result { padding: 12px 16px; background: #fff7ed; border-radius: 6px; font-size: 16px; font-weight: 600; color: #78350f; margin-top: 10px; }
.otc-poll-options { display: grid; gap: 8px; }
.otc-poll-option { background: white; border: 1px solid #f9a8d4; border-radius: 6px; padding: 10px 14px; cursor: pointer; position: relative; overflow: hidden; transition: border-color 0.12s; }
.otc-poll-option:hover { border-color: #ec4899; }
.otc-poll-option .pct-bar { position: absolute; left: 0; top: 0; bottom: 0; background: rgba(236, 72, 153, 0.15); transition: width 0.5s; z-index: 0; width: 0; }
.otc-poll-option .pct-text { position: relative; z-index: 1; display: flex; justify-content: space-between; }
.otc-poll-voted .otc-poll-option { cursor: default; }
.otc-comp-table { width: 100%; background: white; border-radius: 6px; overflow: hidden; }
.otc-comp-table th { background: #1e40af; color: white; padding: 8px 10px; text-align: left; font-size: 13px; }
.otc-comp-table td { padding: 8px 10px; border-bottom: 1px solid #dbeafe; font-size: 14px; }
.otc-comp-table tr:last-child td { border-bottom: none; }
/* Floating sidebar TOC (desktop right, mobile collapsible top) */
.otc-floating-toc {
background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px;
padding: 12px 16px; margin: 0 0 24px;
font-size: 13px;
}
.otc-toc-toggle {
background: none; border: 0; width: 100%; display: flex; justify-content: space-between; align-items: center;
font-weight: 700; color: #0f172a; font-size: 13px; text-transform: uppercase; letter-spacing: 0.05em;
cursor: pointer; padding: 0;
}
.otc-toc-chevron { transition: transform 0.2s; font-size: 14px; }
.otc-floating-toc[data-collapsed=true] .otc-toc-chevron { transform: rotate(-90deg); }
.otc-floating-toc[data-collapsed=true] .otc-toc-list { display: none; }
.otc-toc-list { margin: 12px 0 0; padding-left: 22px; max-height: 50vh; overflow-y: auto; }
.otc-toc-list li { margin-bottom: 5px; line-height: 1.4; }
.otc-toc-list a { color: #475569; text-decoration: none; transition: color 0.12s; display: inline-block; padding: 2px 0; border-left: 2px solid transparent; padding-left: 8px; margin-left: -10px; }
.otc-toc-list a:hover { color: #2563eb; }
.otc-toc-list a.active { color: #2563eb; font-weight: 600; border-left-color: #2563eb; background: #eff6ff; }
@media (min-width: 1200px) {
.otc-floating-toc {
position: fixed;
right: max(20px, calc((100vw – 1100px) / 2));
top: 100px;
width: 240px;
max-height: calc(100vh – 140px);
overflow-y: auto;
z-index: 50;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
margin: 0;
}
.otc-floating-toc[data-collapsed=true] { width: auto; }
}
@media (min-width: 1500px) {
.otc-floating-toc {
right: max(30px, calc((100vw – 1100px) / 2 – 280px));
top: 100px;
}
}
/* Features bar */
.otc-features-bar { display: flex; gap: 6px; padding: 10px 0; margin: 0 0 16px; flex-wrap: wrap; }
.otc-feat-btn {
background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 6px;
padding: 6px 12px; cursor: pointer; font-size: 13px; color: #475569;
display: inline-flex; align-items: center; gap: 4px; transition: all 0.12s;
}
.otc-feat-btn:hover { background: #eff6ff; border-color: #93c5fd; color: #1e40af; }
.otc-feat-btn.active { background: #dbeafe; border-color: #3b82f6; color: #1e40af; }
@media (max-width: 600px) { .otc-feat-btn span { display: none; } }
/* Pull quotes / Click-to-tweet */
.otc-pullquote {
border-left: 4px solid #1da1f2; background: #f0f9ff;
padding: 18px 22px; margin: 22px 0; border-radius: 0 8px 8px 0;
font-style: italic; color: #1e3a8a;
}
.otc-pullquote-text { font-size: 17px; line-height: 1.6; margin-bottom: 10px; }
.otc-pullquote-tweet {
display: inline-flex; align-items: center; gap: 6px; font-size: 13px;
background: #1da1f2; color: white !important; padding: 6px 14px; border-radius: 18px;
text-decoration: none !important; font-style: normal;
}
.otc-pullquote-tweet:hover { background: #0d8bd9; }
/* Reading mode */
body.otc-reading-mode { background: #faf8f3 !important; }
body.otc-reading-mode .otc-article { max-width: 720px; font-size: 18px; line-height: 1.85; }
body.otc-reading-mode .otc-article h2 { font-size: 28px; }
body.otc-reading-mode header,
body.otc-reading-mode footer,
body.otc-reading-mode aside:not(.otc-tldr-card):not(.otc-author):not(.otc-faq):not(.otc-newsletter):not(.otc-helpful):not(.otc-related):not(.otc-pullquote):not(.otc-stat-card):not(.otc-widget):not(.otc-floating-toc),
body.otc-reading-mode .sidebar,
body.otc-reading-mode .navigation,
body.otc-reading-mode #wpadminbar { display: none !important; }
/* Print */
@media print {
.otc-floating-toc, .otc-features-bar, .otc-share, .otc-newsletter, .otc-helpful, .otc-widget, .otc-progress, .otc-yt-embed, .otc-pullquote-tweet { display: none !important; }
.otc-article { font-size: 11pt; max-width: none; }
.otc-article h2, .otc-article h3 { page-break-after: avoid; }
.otc-article a::after { content: » (» attr(href) «)»; font-size: 9pt; color: #666; }
}
/* Share buttons */
.otc-share { display: flex; align-items: center; gap: 8px; padding: 12px 0; margin: 0 0 20px; border-top: 1px solid #e5e7eb; border-bottom: 1px solid #e5e7eb; flex-wrap: wrap; }
.otc-share-label { font-size: 13px; color: #64748b; font-weight: 500; }
.otc-share-btn { width: 36px; height: 36px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; color: white; font-weight: 700; font-size: 16px; border: 0; cursor: pointer; transition: transform 0.12s; }
.otc-share-btn:hover { transform: scale(1.1); }
.otc-share-x { background: #000; }
.otc-share-fb { background: #1877f2; }
.otc-share-ln { background: #0a66c2; }
.otc-share-wa { background: #25d366; }
.otc-share-copy { background: #64748b; }
/* Newsletter CTA */
.otc-newsletter { display: flex; align-items: center; gap: 18px; background: linear-gradient(135deg,#fef9c3,#fde68a); border: 1px solid #facc15; border-radius: 12px; padding: 22px 26px; margin: 32px 0; }
.otc-newsletter-icon { font-size: 42px; flex-shrink: 0; }
.otc-newsletter-body { flex: 1; }
.otc-newsletter h3 { margin: 0 0 6px; font-size: 18px; color: #78350f; }
.otc-newsletter p { margin: 0 0 12px; color: #78350f; font-size: 14px; }
.otc-newsletter-form { display: flex; gap: 8px; flex-wrap: wrap; }
.otc-newsletter-form input { flex: 1; min-width: 200px; padding: 10px 14px; border: 1px solid #d97706; border-radius: 6px; font-size: 14px; }
.otc-newsletter-form .otc-btn { background: #d97706; }
.otc-newsletter-form .otc-btn:hover { background: #b45309; }
.otc-newsletter-result { width: 100%; color: #065f46; font-weight: 500; font-size: 14px; margin-top: 8px; }
/* Helpful vote */
.otc-helpful { text-align: center; padding: 20px; margin: 28px 0; background: #f0f9ff; border: 1px dashed #93c5fd; border-radius: 10px; }
.otc-helpful h3 { margin: 0 0 12px; color: #1e40af; font-size: 16px; }
.otc-helpful-buttons { display: flex; gap: 12px; justify-content: center; }
.otc-vote-btn { background: white; border: 1px solid #93c5fd; border-radius: 6px; padding: 10px 20px; cursor: pointer; font-size: 14px; font-weight: 500; color: #1e40af; transition: all 0.12s; }
.otc-vote-btn:hover { background: #2563eb; color: white; }
.otc-vote-thanks { color: #1e40af; font-weight: 500; padding: 8px; }
.otc-vote-thanks a { color: #2563eb; }
/* Related articles */
.otc-related { margin: 36px 0 0; padding-top: 24px; border-top: 1px solid #e5e7eb; }
.otc-related h2 { margin-bottom: 16px; }
.otc-related-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.otc-related-card { display: block; background: white; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px 16px; text-decoration: none; transition: border-color 0.12s, transform 0.12s; }
.otc-related-card:hover { border-color: #3b82f6; transform: translateY(-2px); }
.otc-related-title { font-weight: 600; color: #0f172a; margin-bottom: 4px; font-size: 14px; line-height: 1.4; }
.otc-related-meta { font-size: 12px; color: #64748b; }
@media (max-width: 600px) { .otc-article h2 { font-size: 22px; } .otc-stats-row { grid-template-columns: 1fr; } .otc-newsletter { flex-direction: column; text-align: center; } }

📅 Mis à jour le 28/05/2026
⏱ 5 min de lecture
📝 1 210 mots
✍️ Par Kevin Grillot
43 %
WordPress alimente 43% des sites web avec CMS identifié, leader incontesté du marché, mais ses défauts techniques (crawl budget, Core Web Vitals) nécessitent une expertise spécialisée.

Source

60-70 %
En moyenne, 60-70% du crawl budget WordPress est gaspillé sur du contenu non-indexable (révisions, brouillons, pages d’archives mal filtrées), selon les audits Screaming Frog en 2026.

Source

Kevin Grillot

Kevin Grillot
Consultant SEO & Spécialiste IA Générative
Depuis plus de 8 ans, j’accompagne les entreprises françaises à dominer les classements Google. Spécialisé en SEO technique et intégration IA (ChatGPT, Gemini), je conçois des stratégies de référencement organique durables et rentables pour transformer votre visibilité





Votre site WordPress stagne en SEO et vous envisagez de confier cette mission à une agence SEO WordPress spécialisée. Bonne intuition : selon les données de BuiltWith, WordPress alimente 43% du web, mais les agences SEO généralistes ratent 9 fois sur 10 ses spécificités techniques. Cet article vous révèle comment identifier une véritable agence SEO WordPress, les pièges cachés du marché, et les critères non-négociables avant de signer un contrat.

Pourquoi une agence généraliste échoue sur WordPress

Votre agence SEO actuelle vous promet du contenu optimisé et des backlinks. Logique. Sauf que votre site WordPress charge en 5 secondes, génère des centaines de pages dupliquées (révisions, brouillons, catégories vides) et consomme 80% du crawl budget sur du contenu non-indexable.

Un consultant SEO senior avec 100+ sites en portefeuille le confirme : l’erreur classique consiste à appliquer une stratégie générique à WordPress. Le CMS souffre de défauts architecturaux natifs :

  • Crawl budget gaspillé : médiane 60-70% du site non-exploité (révisions de posts, brouillons, pages d’archives mal filtrées)
  • Core Web Vitals en péril : WordPress par défaut charge les images en full-size, active les révisions en base, génère du code jQuery hérité
  • Plugins conflictuels : Yoast + WP Rocket + Wordfence = ralentissements imperceptibles mais cumulatifs (-30% en performance)
  • Structure de permaliens rigide : changer /category/post/ en /post/ après 5 ans = 5000+ redirections chaînées mal gérées

Une agence SEO généraliste considère WordPress comme un CMS quelconque. Une agence WordPress spécialisée fait d’abord un audit forensique technique avant toute stratégie de contenu.

wordpress dashboard admin interface technical optimization
wordpress dashboard admin interface technical optimization

¿Cuál es el propósito de la etiqueta alt y cómo se puede optimizar para SEO?
→ À lire aussi ¿Cuál es el propósito de la etiqueta alt y cómo se puede optimizar para SEO? Referenciación orgánica (SEO) · 30 Dic 2025

Audit SEO WordPress : ce que doit vérifier une agence spécialisée

Avant de proposer un plan d’action, une agence SEO WordPress digne de ce nom doit réaliser un audit technique précis. Voici les 5 points non-négociables :

1. Crawlabilité et indexation

Lancez Screaming Frog (version gratuite) : crawlez 500 pages de votre site et notez le ratio [réponses 200 / requêtes totales]. Objectif : 85%+ minimum. Si c’est <80%, des centaines de pages se cachent derrière des meta robots noindex, des structures de catégories mal configurées, ou des redirections en chaîne.

Une agence WordPress spécialisée sait que Yoast génère des fichiers XML sitemaps volumineux (parfois >100 Mo) qui surcharger Google. Elle optimise vers Rankmath ou The SEO Framework, plus légers.

2. Core Web Vitals et performance

Allez sur PageSpeed Insights et vérifiez vos scores (LCP, FID, CLS). WordPress natif obtient rarement >60/100 sans optimisation. Une agence spécialisée doit proposer :

  • Lazy loading intelligent des images (pas juste avec loading="lazy")
  • Minification CSS/JS avec split de code par page
  • Cache multi-niveaux (browser, serveur, CDN)
  • Image optimization avec WebP + responsive images

3. Structure des permaliens et redirections

Si votre site a >3 ans, il a probablement changé de structure de permaliens au moins une fois. Une mauvaise gestion = redirections chaînées invisibles (301 → 301 → 200), perte de PageRank masquée.

Demandez à l’agence : « Quel outil auditez-vous pour les redirect chains ? » Si la réponse est vague, c’est mauvais signe.

4. Plugins SEO et conflits

Les plugins SEO populaires (Yoast, Rankmath, All in One SEO) génèrent de la complexité. Rankmath crée 10+ requêtes de base de données par page. Yoast en génère 30+. Une agence spécialisée connaît ces compromis et les arbitre selon votre infrastructure.

5. Multilingue et hreflang

Si vous êtes en multilingue, les erreurs hreflang coûtent 20-40% en trafic. WPML vs Polylang vs qTranslate n’implémentent pas hreflang de la même façon. Une agence WordPress maîtrise ces nuances.

website performance testing analytics dashboard
website performance testing analytics dashboard

Audit technique SEO : checklist complète + template Excel gratuit
→ À lire aussi Audit technique SEO : checklist complète + template Excel gratuit Referenciación orgánica (SEO) · 28 May 2026

Tarifs réalistes : combien vraiment coûte une agence SEO WordPress

Le marché affiche souvent « 500€/mois de SEO ». C’est théâtre. Voici la réalité 2026 :

Service Coût Durée Inclus Audit technique WordPress complet 2 000-3 500€ 1-2 semaines Crawl complet, rapport détaillé, priorités Refonte technique (Core Web Vitals, permaliens, plugins) 8 000-15 000€ 4-8 semaines 301 redirects, cache, image optimization, tests Stratégie contenu et mots-clés 1 500-3 000€ 2 semaines Audit concurrence, matrice 30-50 KW, calendrier Contenu SEO (10-20 articles) 5 000-10 000€/an Continu Rédaction, optimisation on-page, maillage interne Maintenance et monitoring 500-1 500€/mois Récurrent Alertes Core Web Vitals, logs d’erreur, mise à jour plugins

Piège classique : une agence propose « refonte complète + 12 mois contenu = 8 000€ total ». Mathématiquement impossible sans couper les coins. C’est soit du service réduit, soit du contenu généré IA sans valeur.

Budget réaliste pour un site WordPress moyen (10-100 pages, 5-10 ans) : 15-25k€ première année, 8-12k€ annuel après.

pricing calculator business model service tiers
pricing calculator business model service tiers

Comment identifier une agence SEO WordPress vraiment spécialisée

Voici 6 questions à poser avant de signer :

Question 1 : « Quel est votre ratio de clients WordPress dans votre portefeuille ? »

Réponse acceptable : 40%+ du portefeuille = WordPress. Si <20%, c'est une agence généraliste qui accepte du WordPress occasionnellement. Pas assez d'expertise concentrée.

Question 2 : « Avez-vous une certification Gutenberg ou Google Search Console ? »

Les vraies agences WordPress maîtrisent Gutenberg (l’éditeur moderne de WordPress depuis 2018). Google n’offre pas de certification Gutenberg, mais vérifiez la certification Google Partners. Elle est nécessaire mais pas suffisante.

Question 3 : « Montrez-moi 3 études de cas WordPress avec chiffres (trafic avant/après, délai) »

Exemple de bonne réponse : « Client e-commerce, 20 pages, +240% trafic organique en 6 mois, Core Web Vitals passés de 28 à 92. » Avec domaine verifiable, pas de cas client anonyme vague.

Question 4 : « Quel protocole pour les 301 redirections et comment auditez-vous les redirect chains ? »

Réponse pro : « Screaming Frog en crawl profond, Redirect Detective pour les chaînes, htaccess ou Redirection plugin avec logs. Nous testons avec HTTP redirect checker après mise en live. »

Réponse mauvaise : « On utilise le plugin Redirection et on vérifie manuellement. » Pas assez rigoureux.

Question 5 : « Que proposez-vous comme monitoring post-lancement ? »

Une agence WordPress digne de ce nom reste engagée 3-6 mois après. Core Web Vitals dérivent souvent après déploiement (nouvelles extensions, mises à jour). Elle doit proposer :

  • Alertes PageSpeed hebdomadaires
  • Monitoring des erreurs Google Search Console
  • Rapports mensuels trafic organique
  • Maintenance de sécurité et mises à jour plugins

Question 6 : « Travaillez-vous dans un environnement de staging avant de toucher au site de prod ? »

Réponse acceptable uniquement : « Oui, toujours. Staging en clone complet, tests 48h, rollback possible. »

Nuestra experiencia con SE Ranking: una revisión completa de esta herramienta SEO
→ À lire aussi Nuestra experiencia con SE Ranking: una revisión completa de esta herramienta SEO Referenciación orgánica (SEO) · 08 Jul 2025

Alternative au plugin SEO : quand les vrais problèmes dépassent Yoast et Rankmath

Beaucoup de sites WordPress pensent que changer de plugin SEO (Yoast → Rankmath, par exemple) va résoudre leurs problèmes de trafic. C’est rarement le levier principal.

Le vrai problème est l’infrastructure technique. Un site sur Statamic (CMS moderne léger) avec contenu moyen > Site WordPress lourd avec contenu excellent, à effort égal.

Cependant, le choix du plugin SEO compte :

Yoast SEO

  • Avantages : interface connue, analyse de lisibilité, maturité
  • Inconvénients : 30+ requêtes DB par page, ralentit les sites WordPress lents, XML sitemaps bloatés
  • Verdict : acceptable sur infrastructure rapide, toxique sur sites hébergement mutualisé

Rankmath

  • Avantages : 10 requêtes DB, intégration Google Search Console native, analytics léger
  • Inconvénients : version Pro requise pour analytics avancé (2000+ pages/mois limite en version free)
  • Verdict : meilleur choix actuel 2026 pour perfo

The SEO Framework

  • Avantages : ultra-léger (2-3 requêtes), code propre, pas de bloat
  • Inconvénients : interface moins riche, documentation moins complète
  • Verdict : excellent pour développeurs, overkill pour PME sans tech

Une agence SEO WordPress ne dit pas « on installe Rankmath et c’est bon ». Elle dit « on diagnostique votre infra, on choisit le plugin aligné, puis on optimise l’écosystème global ».

wordpress seo plugins comparison selection guide
wordpress seo plugins comparison selection guide

SEO Gossip: Todo lo que necesitas saber sobre Google UCP y el impacto de los favicons
→ À lire aussi SEO Gossip: Todo lo que necesitas saber sobre Google UCP y el impacto de los favicons Referenciación orgánica (SEO) · 20 Ene 2026

Délais réalistes : quand voir des résultats avec une agence SEO WordPress

Promesse courante : « 1ère position en 30 jours ». Mensonge complet. Tuez votre confiance envers cette agence.

Voici les délais réalistes selon l’audit initial :

Mois 1-2 : Phase technique → 0 résultat SEO visible

  • Audit complet
  • Refonte Core Web Vitals
  • 301 redirects massives
  • Optimisation base données WordPress
  • Pas de classement nouveau, mais site plus sain

Mois 3-4 : Phase contenu → Premiers +10-20% trafic

  • Premiers articles optimisés publiés
  • Maillage interne initié
  • Indexation re-crawlée par Google
  • Classements «faciles» (moins de 10k résultats) rapportent du trafic

Mois 6-12 : Effet croissance → +50-150% trafic selon niche

  • Site accumule autorité avec contenu régulier
  • Backlinks commence à matérialiser (si stratégie PR incluse)
  • Core Web Vitals stabilisés, crawl budget optimisé

Mois 12+ → Plateau ou décélération

  • Niches concurrentielles (immobilier, assurance) : plateau après 12-18 mois
  • Niches de niche : croissance continue

Exemple chiffré : site WordPress e-commerce avec audit initial mauvais (40/100 PageSpeed, -80% trafic YoY) → 6 mois pour +120% trafic, pas 30 jours.

seo growth trajectory timeline metrics improvement
seo growth trajectory timeline metrics improvement

Checklist : avant de contacter une agence SEO WordPress

Faites ceci en 1 heure avant de dépenser un euro :

1. Lancez un audit gratuit : Google PageSpeed Insights, Semrush Site Audit (14 jours gratuit), Screaming Frog (version free 500 pages)

2. Notez 3 métriques clés :

– PageSpeed score (objectif : >70)

– Nombre de pages indexées vs crawlées (ratio 85%+)

– Core Web Vitals (LCP <2.5s, CLS <0.1)

3. Préparez une liste de 3-5 agences candidates → Vérifiez leurs 5 derniers cas WordPress publics

4. Posez les 6 questions ci-dessus → Éliminez les réponses vagues

5. Demandez un audit gratuit de 1h → Évalue son niveau de détail technique

6. Vérifiez les avis : Google, Trustpilot, Malt (si freelance) — attention aux avis achetés (tous 5 stars = alerte)

7. Exigez un devis détaillé en phases : audit, refonte, contenu, monitoring — jamais un forfait global flou

Cinco consejos para aprovechar la optimización de motores generativos (GEO) para su marca
→ À lire aussi Cinco consejos para aprovechar la optimización de motores generativos (GEO) para su marca Referenciación orgánica (SEO) · 30 Jul 2025

Top 5 signaux d’une agence SEO WordPress crédible

1. Portfolio WordPress verifiable : domaines publics, Google Analytics snapshots, avant/après Core Web Vitals

2. Blog technique régulier : articles sur Gutenberg, Core Web Vitals WordPress, optimisations Rankmath

3. Certification Google Partners (nécessaire mais pas suffisante) + expérience Screaming Frog, Semrush, Ahrefs

4. Cas d’études avec délais et chiffres : « +240% en 6 mois, Core Web Vitals 28→92 » plutôt que « excellent service »

5. Contrat clair avec SLA : monitoring inclus, alertes Core Web Vitals, métriques mensuelles, clause de rupture

Cómo usar LLM para optimizar tu SEO: Tres estrategias efectivas para posicionarte con IA
→ À lire aussi Cómo usar LLM para optimizar tu SEO: Tres estrategias efectivas para posicionarte con IA Referenciación orgánica (SEO) · 05 Jul 2025

Plugins WordPress SEO en 2026 : benchmark actualisé

Selon Siècle Digital (mai 2026), les 5 meilleurs plugins SEO WordPress sont :

1. Rankmath — 10 req DB, hreflang intelligent, Google Search Console native intégré. Idéal PME.

2. Yoast SEO — 30 req DB, analyse lisibilité robuste. Maturité vs perfo = trade-off.

3. The SEO Framework — Ultra-léger, code propre, pour sites hébergés bas-coût.

4. Ahrefs SEO — Intégration Ahrefs native, coûteux (99€/an Ahrefs + plugin), pour agences.

5. Semrush SEO — Analytics intégré, pour boîtes multi-sites.

Une agence ne choisit pas par préférence : elle choisit par infrastructure et objectifs. Une TPE hébergée mutualisé → The SEO Framework ou Rankmath. Un groupe média → Semrush SEO ou Ahrefs.

wordpress plugins ecosystem integration architecture
wordpress plugins ecosystem integration architecture

Questions clés avant engagement : vos craintes légitimes

Peur 1 : « Une migration SEO = perte de trafic »

Risque réel si mal géré. Une agence WordPress spécialisée minimize ce risque en :

  • Gelant les 301 redirects 12 mois minimum
  • Testant en staging complet
  • Gardant une fenêtre d’action rapide (<24h production)
  • Monitorant Google Search Console 48h post-lancement

Bonne agence = trafic stable ou +5% en semaine 1, même en cas de refonte technique.

Peur 2 : « Ils vont installer des plugins inutiles »

Vrai : 40% des agences font du feature creep (« on ajoute un plugin d’analytic, un de sécurité… »). Chaque plugin = 1-5 requêtes DB supplémentaires.

Demandez : « Quel est votre scoring pour ajouter un plugin ? » Bonne réponse : « Analyse de l’impact DB + PageSpeed avant implémentation. »

Peur 3 : « Durée réelle vs devis »

Agence généraliste dit « 4 semaines audit ». En réalité 10 semaines. Demandez des jalons avec livrables partiels (audit draft jour 10, rapport complet jour 14).

Peur 4 : « Garanties SEO : existent-elles ? »

Non. Google peut changer son algo demain. Une agence pro ne promet pas « 1ère page », elle promet un processus rigoureux : audit clair, refonte testée, monitoring continu.

Préférez une clause de rupture : « Si trafic organique decline >20% après 3 mois, pause contrat et audit complémentaire. »

Optimización Discover: SEO, GEO… ¿y DEO? ¿Qué implica la actualización Discover-Core de febrero de 2026 para tu estrategia de tráfico?
→ À lire aussi Optimización Discover: SEO, GEO… ¿y DEO? ¿Qué implica la actualización Discover-Core de febrero de 2026 para tu estrategia de tráfico? Referenciación orgánica (SEO) · 12 Feb 2026

Questions fréquentes

Combien coûte réellement une agence SEO WordPress ?

Budget réaliste : 2-3k€ d’audit initial, 8-15k€ pour refonte technique (Core Web Vitals, redirections, plugins), 5-10k€/an en contenu. Total première année : 15-28k€. Méfiez-vous des devis <8k€ : c'est du service réduit ou du contenu AI sans valeur. Maintenance annuelle : 8-12k€ après.

Quels délais pour voir des résultats avec une agence SEO WordPress ?

Mois 1-2 : aucun résultat visible (phase technique). Mois 3-4 : premiers +10-20% trafic. Mois 6-12 : +50-150% selon niche. Toute agence promettant « 1ère position en 30j » ment. WordPress a besoin de 3-4 mois minimum avant d’accumuler l’autorité nécessaire.

Yoast ou Rankmath ? Quel plugin SEO WordPress choisir ?

Rankmath est meilleur en 2026 : 10 requêtes DB vs 30 pour Yoast, hreflang intelligent, Google Search Console natif. Yoast reste acceptable si votre infra est rapide. The SEO Framework pour ultra-léger. L’agence choisit par infrastructure, pas préférence perso. Le plugin n’est jamais le levier principal du SEO.

Comment vérifier si une agence SEO WordPress est réellement spécialisée ?

Posez ces questions : 1) 40%+ portefeuille WordPress ? 2) Portfolio verifiable avec chiffres avant/après ? 3) Outil d’audit des redirect chains (Screaming Frog, Redirect Detective) ? 4) Protocole staging pour tout déploiement ? 5) Monitoring post-lancement inclus 3-6 mois ? Réponses vagues = pas spécialisée.

Qu’est-ce qu’un audit SEO WordPress vraiment complet ?

Audit complet = 5 volets : 1) Crawlabilité (ratio indexation 85%+), 2) Core Web Vitals et performance, 3) Structure permaliens et redirections, 4) Plugins SEO et conflits, 5) Multilingue et hreflang. Coûte 2-3k€. Si 4k€ : surchargé ou comprend déjà refonte.

WordPress est-il vraiment pire en SEO que les autres CMS ?

Oui, architecturalement. WordPress charge images full-size par défaut, génère des centaines de pages inutiles (révisions, brouillons), consomme crawl budget. Mais 43% du web est dessus, donc pas d’alternative pratique. Une agence WordPress spécialisée compense ces défauts avec refonte technique. Les CMS modernes (Statamic, Craft) sont techniquement supérieurs mais moins flexibles.

Une migration de sites WordPress impacte-t-elle le SEO ?

Risque réel si mal gérée. 301 redirections mal configurées = perte de PageRank invisible. Bonne agence WordPress : gel des 301 redirects 12 mois, test staging complet, monitoring Search Console 48h post-lancement. Trafic doit rester stable ou +5% semaine 1, même en refonte technique.

Quels signaux d’expertise EEAT pour une agence SEO WordPress ?

Expertise : blog technique régulier (Gutenberg, Core Web Vitals WordPress), cas d’études domaines publics avec chiffres précis, certification Google Partners. Autorité : portefeuille >5 ans, mentions presse SEO (Search Engine Journal, Smashing Magazine). Fiabilité : contrat clair, SLA monitoring, clause rupture. Éthique : pas de promesse « 1ère page », processus transparent.

Freelance SEO Marketing : Tarifs, Missions et ROI en 2026
→ À lire aussi Freelance SEO Marketing : Tarifs, Missions et ROI en 2026 Referenciación orgánica (SEO) · 29 May 2026

📚 Sources & références

  1. Les 5 meilleurs plugins WordPress SEO pour votre site – Siècle DigitalSiècle Digital
  2. Comment optimiser le référencement de son site WordPress : les 7 conseils d’un expert SEOBlog du Modérateur
  3. CMS Market Share & Usage StatisticsBuiltWith
  4. Chrome User Experience Report – Core Web VitalsGoogle Developers
  5. Screaming Frog SEO Spider – Site Crawling ToolScreaming Frog

/* Otomatic Widgets — vanilla JS, externe pour passer les filtres WP/CMS */
(function () {
‘use strict’;

function init() {
// Reading progress
var p = document.getElementById(‘otc-progress’);
if (p) {
function upd() {
var s = window.scrollY,
h = document.documentElement.scrollHeight – window.innerHeight;
p.style.width = (h ? (s / h) * 100 : 0) + ‘%’;
}
document.addEventListener(‘scroll’, upd, { passive: true });
upd();
}

// Quiz interactif
document.querySelectorAll(‘.otc-widget-quiz’).forEach(function (quiz) {
var qs = quiz.querySelectorAll(‘.otc-quiz-question’);
if (!qs.length) return;
var btn = quiz.querySelector(‘.otc-quiz-submit’);
var res = quiz.querySelector(‘.otc-quiz-result’);
if (btn && !btn.dataset.bound) {
btn.dataset.bound = ‘1’;
btn.addEventListener(‘click’, function () {
var score = 0,
total = qs.length;
qs.forEach(function (q) {
var sel = q.querySelector(‘input[type=radio]:checked’);
if (sel && sel.dataset.correct === ‘1’) score++;
});
var pct = Math.round((score / total) * 100);
var msg =
pct >= 80 ? ‘🏆 Excellent ! ‘ : pct >= 50 ? ‘👍 Pas mal ! ‘ : ‘📚 Continuez à apprendre ! ‘;
res.textContent = msg + ‘Score : ‘ + score + ‘/’ + total + ‘ (‘ + pct + ‘%)’;
res.classList.add(‘show’);
});
}
});

// Calculateur live
document.querySelectorAll(‘.otc-widget-calculator-inner’).forEach(function (calc) {
var inputs = calc.querySelectorAll(‘input[type=number]’);
var resEl = calc.querySelector(‘.otc-calc-result’);
var formula = calc.dataset.formula || ‘v.a + v.b’;
var unit = calc.dataset.unit || »;
var label = calc.dataset.resultLabel || ‘Total : ‘;
if (!inputs.length || !resEl) return;
// Nettoie la formule : strip «var»/»let»/»const» déclarations + détecte si c’est une expression ou un body
var formulaClean = formula
.replace(/b(var|let|const)s+/g, ») // strip déclarations
.replace(/bv.s*varb/g, ‘v.v’) // au cas où Claude écrit v.var
.trim();
var isBody = /[;]s*S/.test(formulaClean) || /breturnb/.test(formulaClean);
function compute() {
var values = {};
inputs.forEach(function (i) {
values[i.name] = parseFloat(i.value) || 0;
});
try {
var fn;
if (isBody) {
// Body : ajoute return si absent
var body = /breturnb/.test(formulaClean) ? formulaClean : (formulaClean + ‘; return v.result || 0;’);
fn = new Function(‘v’, body);
} else {
fn = new Function(‘v’, ‘return (‘ + formulaClean + ‘)’);
}
var r = fn(values);
var out =
typeof r === ‘number’
? Math.round(r * 100) / 100
: r;
resEl.textContent = label + out + unit;
} catch (e) {
resEl.textContent = ‘Erreur de calcul : ‘ + e.message;
}
}
inputs.forEach(function (i) {
if (!i.dataset.bound) {
i.dataset.bound = ‘1’;
i.addEventListener(‘input’, compute);
}
});
compute();
});

// Sondage avec localStorage
document.querySelectorAll(‘.otc-widget-poll [data-poll-id]’).forEach(function (poll) {
var pollId = poll.dataset.pollId;
var key = ‘otc_poll_’ + pollId;
var stored = JSON.parse(localStorage.getItem(key) || ‘{«votes»:{},»voted»:false}’);
var options = poll.querySelectorAll(‘.otc-poll-option’);

function render() {
var totalVotes = Object.values(stored.votes).reduce(function (a, b) {
return a + b;
}, 0);
if (totalVotes === 0) totalVotes = 1;
options.forEach(function (o) {
var k = o.dataset.optionKey;
var v = stored.votes[k] || 0;
var pct = Math.round((v / totalVotes) * 100);
var bar = o.querySelector(‘.pct-bar’);
var pctEl = o.querySelector(‘.pct’);
if (bar) bar.style.width = pct + ‘%’;
if (pctEl && stored.voted) pctEl.textContent = pct + ‘%’;
});
if (stored.voted) poll.classList.add(‘otc-poll-voted’);
}

options.forEach(function (o) {
if (o.dataset.bound) return;
o.dataset.bound = ‘1’;
o.addEventListener(‘click’, function () {
if (stored.voted) return;
var k = o.dataset.optionKey;
stored.votes[k] = (stored.votes[k] || 0) + 1;
stored.voted = true;
localStorage.setItem(key, JSON.stringify(stored));
render();
});
});
render();
});

// Floating TOC scroll spy + collapse toggle
var toc = document.querySelector(‘.otc-floating-toc’);
if (toc) {
var toggle = toc.querySelector(‘.otc-toc-toggle’);
var headings = document.querySelectorAll(‘.otc-article h2[id]’);
var links = toc.querySelectorAll(‘a[href^=»#»]’);
// Collapse au clic
if (toggle && !toggle.dataset.bound) {
toggle.dataset.bound = ‘1’;
toggle.addEventListener(‘click’, function () {
var collapsed = toc.dataset.collapsed === ‘true’;
toc.dataset.collapsed = collapsed ? ‘false’ : ‘true’;
toggle.setAttribute(‘aria-expanded’, collapsed ? ‘true’ : ‘false’);
});
}
// Auto-collapse au scroll vers le bas (mobile)
function spy() {
var sy = window.scrollY + 120;
var current = null;
headings.forEach(function (h) {
if (h.offsetTop = 13 && savedFs <= 22) {
var body = document.querySelector('.otc-article');
if (body) body.style.fontSize = savedFs + 'px';
}
} catch (e) {}

if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
// Re-init si contenu ajouté dynamiquement (idempotent grâce aux dataset.bound)
setTimeout(init, 1500);
})();

📋 Checklist SEO gratuite — 50 points à vérifier

Téléchargez ma checklist SEO complète : technique, contenu, netlinking. Le même outil que j'utilise pour mes clients.

Télécharger la checklist

Besoin de visibilité pour votre activité ?

Je suis Kevin Grillot, consultant SEO freelance certifié. J'accompagne les TPE et PME en référencement naturel, Google Ads, Meta Ads et création de site internet.

Kevin Grillot

Écrit par

Kevin Grillot

Consultant Webmarketing & Expert SEO.

Voir tous les articles →
Ressource gratuite

Checklist SEO Local gratuite — 15 points à vérifier

Téléchargez notre checklist et vérifiez si votre site est optimisé pour Google.

  • 15 points essentiels pour le SEO local
  • Format actionnable et imprimable
  • Utilisé par +200 entrepreneurs

Vos données restent confidentielles. Aucun spam.