{
“@context”: “https://schema.org”,
“@graph”: [
{
“@type”: “Article”,
“@id”: “https://kevin-grillot.fr/consultant-seo-local-guide-2025#article”,
“headline”: “Consultant SEO Local : Guide Complet 2025 & Tarifs”,
“description”: “Découvrez comment un consultant SEO local boost votre visibilité Google Maps et attire plus de clients. Tarifs, services, audit gratuit et cas d’études.”,
“datePublished”: “2026-06-02 08:47:15”,
“dateModified”: “2026-06-02 08:47:15”,
“wordCount”: 2736,
“inLanguage”: “fr-FR”,
“mainEntityOfPage”: {
“@type”: “WebPage”,
“@id”: “https://kevin-grillot.fr/consultant-seo-local-guide-2025”
},
“author”: {
“@type”: “Person”,
“@id”: “https://kevin-grillot.fr/consultant-seo-local-guide-2025#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/consultant-seo-local-guide-2025#faq”,
“mainEntity”: [
{
“@type”: “Question”,
“name”: “Quel est le tarif d’une prestation de SEO local ?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Les tarifs varient selon la prestation. Un audit seul coûte 300-800€. Un forfait mensuel va de 500€ à 2 000€/mois. Le tarif horaire se situe entre 45€ et 120€/h. Un contrat annuel complet coûte 8 000-15 000€. Le prix dépend de l’expérience du consultant et la complexité de votre activité.”
}
},
{
“@type”: “Question”,
“name”: “Quel est le salaire d’un consultant SEO ?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “En tant que salarié, un consultant SEO junior gagne 24 000-30 000€ brut/an, un senior 35 000-50 000€. En freelance, les tarifs vont de 45€/h (débutant) à 180€/h (expert), représentant 1 800-7 200€/mois selon l’expérience.”
}
},
{
“@type”: “Question”,
“name”: “Quels sont les 3 types de SEO ?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Les 3 types sont : 1) SEO Organique (Global) pour visibilité nationale, 6-12 mois. 2) SEO Local pour zones géographiques via Google My Business, 3-6 mois. 3) SEO E-commerce pour fiches produits. Chaque type nécessite une expertise différente.”
}
},
{
“@type”: “Question”,
“name”: “Comment faire du SEO local ?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Optimiser fiche Google My Business (photos, avis, posts), créer citations locales cohérentes, ajouter schéma JSON-LD sur site, créer pages géo-ciblées, collecter avis activement, optimiser pour mobile. Ces 6 actions forment la base solide du SEO local.”
}
},
{
“@type”: “Question”,
“name”: “Quels résultats pouvez-vous attendre avec un consultant SEO local ?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Après 3-6 mois : classement local amélioré (top 5-3), +30-60% trafic local, +15-30 avis, +10-30 leads/mois. ROI : 3-5x l’investissement pour restaurants, plombiers, salons. Résultats dépendent du point de départ et compétition locale.”
}
},
{
“@type”: “Question”,
“name”: “Combien de temps pour voir les résultats du SEO local ?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Semaines 1-4 : audit et corrections rapides. Mois 2-3 : top 5-10 local possible. Mois 4-6 : top 3 local probable, trafic +40-60%. Prudence face aux promesses de résultats en 2 semaines, elles sont irréalistes.”
}
},
{
“@type”: “Question”,
“name”: “Consultant SEO local vs agence : qui choisir ?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Consultant solo : 30% moins cher, très réactif (1-2 jours), relation directe, mais dépendance d’une personne. Agence : équipe stable, rapports avancés, coût élevé, moins flexible. Pour PME locale, consultant expérimenté = meilleur rapport qualité/prix et résultats rapides.”
}
},
{
“@type”: “Question”,
“name”: “Comment trouver et vérifier un bon consultant SEO local ?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Demandez portfolio avec cas similaires au vôtre, vérifiez sa propre visibilité locale (tapez son nom + ville), exigez audit gratuit détaillé, signez contrat avec KPI clairs, vérifiez certifications Google ou partnerships. Appelez ses clients précédents comme références.”
}
}
]
},
{
“@type”: “BreadcrumbList”,
“@id”: “https://kevin-grillot.fr/consultant-seo-local-guide-2025#breadcrumb”,
“itemListElement”: [
{
“@type”: “ListItem”,
“position”: 1,
“name”: “Accueil”,
“item”: “https://kevin-grillot.fr”
},
{
“@type”: “ListItem”,
“position”: 2,
“name”: “Consultant SEO Local : Guide Complet 2025 & Tarifs”,
“item”: “https://kevin-grillot.fr/consultant-seo-local-guide-2025″
}
]
}
]
}

.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 02/06/2026
⏱ 11 min de lecture
📝 2 736 mots
✍️ Par Kevin Grillot
45%
augmentation moyenne du trafic local en 6 mois avec un consultant SEO local spécialisé.

Source

70%
des recherches de consultant SEO local proviennent de smartphones mobiles avec intent de proximité.

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é





Un consultant SEO local est un expert spécialisé dans l’optimisation de votre visibilité auprès des clients de proximité sur Google Maps et les résultats de recherche locaux. Contrairement à un consultant SEO généraliste, il maîtrise les techniques de référencement local : gestion de fiche Google My Business, citation building, optimisation de contenu géo-ciblé et stratégie d’avis. D’après les données 2024, les entreprises travaillant avec un consultant local SEO voient en moyenne une augmentation de 45 % du trafic qualifié en 6 mois. Pour une PME locale (plombier, avocat, salon), cela se traduit par 10 à 20 leads supplémentaires chaque mois—un gain mesurable directement en chiffre d’affaires.

Qu’est-ce qu’un Consultant SEO Local ?

Un consultant en SEO local est un professionnel qui aide votre entreprise à devenir visible auprès des clients qui vous cherchent sur Google, spécifiquement dans votre région ou votre ville. Son rôle : faire en sorte que quand un client tape “plombier à Lyon” ou “cabinet avocat à Marseille”, votre entreprise apparaisse en tête des résultats.

Contrairement au SEO classique (aussi appelé SEO global ou organique), le SEO local cible une zone géographique précise. Il combine trois éléments clés :

  • Google My Business (GMB) : votre fiche entreprise, avis clients, horaires et photos
  • Référencement organique : optimisation de votre site web pour des mots-clés localisés
  • Citations locales : présence sur des annuaires et plateformes (Google Maps, Pages Jaunes, Yelp, Bonnes Adresses Locales)

local business storefront google maps smartphone navigation
local business storefront google maps smartphone navigation

Scopri il nuovo corso SEO AI Search – GEO: un’opportunità d’oro per superare i tuoi concorrenti!
→ À lire aussi Scopri il nuovo corso SEO AI Search – GEO: un’opportunità d’oro per superare i tuoi concorrenti! Referenziamento organico (SEO) · 16 Lug 2025

Différence Entre Consultant, Agence et Freelancer SEO Local

Le marché propose trois profils distincts. Lequel choisir ? Cela dépend de votre budget et vos attentes.

Profil Tarif mensuel Réactivité Expertise Contrat Freelancer (consultant solo) 500€-1 500€ Excellente (1-2 jours) Très ciblée locale Flexible, sans engagement Petit consultant/agence 1 000€-2 500€ Bonne (3-5 jours) Locale + contenu SEO Contrat 3-6 mois min Grande agence 2 500€-8 000€+ Modérée (1-2 semaines) Complète (audit, reporting avancé) Engagement 12 mois

Notre conseil : pour une première collaboration, testez un consultant solo expérimenté. S’il a 50+ clients satisfaits et montre son portefeuille, vous gagnez en flexibilité et réactivité.

team meeting business discussion marketing strategy
team meeting business discussion marketing strategy

SEO e GEO: due approcci convergenti per massimizzare la visibilità nell’era dell’intelligenza artificiale
→ À lire aussi SEO e GEO: due approcci convergenti per massimizzare la visibilità nell’era dell’intelligenza artificiale Referenziamento organico (SEO) · 27 Dic 2025

Services Proposés par un Consultant SEO Local

Un consultant SEO local propose un ensemble de services complémentaires. Voici les incontournables :

Audit Local

C’est l’étape fondamentale. L’audit examine :

  • Fiche Google My Business : completude, photos, catégories, structure
  • Présence web locale : site responsive, architecture locale (pages par secteur géographique), schéma LocalBusiness
  • Citations : nombre et cohérence NAP (nom, adresse, téléphone) sur les annuaires majeurs
  • Concurrence : analyse des top 3 locaux, leurs stratégies d’avis, leurs citations
  • Avis clients : quantité, récence, taux de réponse

Optimisation de Fiche Google My Business

Votre fiche GMB est votre vitrine. Un consultant optimise :

  • Complétude : tous les champs remplis (horaires, services, photos de haute qualité)
  • Catégories précises : principal + secondaires alignées sur votre activité
  • Posts réguliers : nouvelles, offres, événements (augmente CTR de 23 % selon Google)
  • Q&A : réponses aux questions clients
  • Gestion des avis : réponses rapides et professionnelles

Citation Building et Listing Management

Une citation = mention de votre entreprise (nom, adresse, téléphone) sur un site tiers (annuaire). Les citations locales renforcent la confiance Google sur votre localisation.

Un consultant gère :

  • Création de citations sur 15-25 annuaires pertinents (Google My Business, Pages Jaunes, Yelp, Bonnes Adresses Locales, etc.)
  • Correction des données inexactes
  • Cohérence NAP partout

Optimisation On-Page SEO Local

Votre site web doit être optimisé pour les requêtes locales :

  • Pages de service par localité (“Plombier urgent à Lyon”, “Plombier urgent à Villeurbanne”)
  • Schéma JSON-LD (LocalBusiness) avec areaServed (zone d’intervention)
  • Contenu de confiance : horaires, mentions clients, avis intégrés
  • Mobile-first (70 % des recherches locales viennent du mobile)
  • Vitesse de chargement optimisée

Gestion des Avis Clients

Les avis influencent le classement local ET la confiance. Un consultant :

  • Met en place un système de collecte d’avis (SMS, email, QR code en magasin)
  • Encourage la vélocité d’avis (1 avis/semaine > 5 avis/mois)
  • Répond professionnellement aux avis négatifs
  • Monitore et reporte les avis Google, Trustpilot, Yelp

five star review rating customer satisfaction feedback
five star review rating customer satisfaction feedback

Tarifs et Modèles de Tarification

Comme tout service expert, les tarifs varient. Voici les principales formules rencontrées en 2024/2025 :

Audit One-Shot

Coût : 300€ à 800€

Durée : 1-2 semaines

Livrable : rapport écrit 30-50 pages, recommandations priorisées

Idéal si vous voulez vérifier l’état de votre présence locale avant d’engager une stratégie long terme.

Forfait Mensuel

Coût : 500€ à 2 000€/mois

Engagement : 3 à 12 mois

Services inclus : gestion GMB, 1-2 citations/mois, suivi avis, rapports

C’est le modèle recommandé pour des résultats durables.

Tarification Horaire

Coût : 45€ à 120€/heure (variable selon l’expérience)

Avantage : flexibilité totale

Risque : budget imprévisible

Modèle Hybride (Résultats)

Certains consultants facturent sur les résultats : commission sur les leads générés ou positionnement atteint.

Exemple : +5 % du chiffre d’affaires en sus si top 3 local atteint en 6 mois.

À manier avec prudence : assurez-vous que le contrat définit clairement “lead validé” et “source du lead” (CRM + UTM), sinon disputes garanties.

L’impatto rivoluzionario dell’intelligenza artificiale generativa sulle strategie SEO
→ À lire aussi L’impatto rivoluzionario dell’intelligenza artificiale generativa sulle strategie SEO Referenziamento organico (SEO) · 09 Lug 2025

Quels Résultats Peut-On Attendre ?

C’est la vraie question. Voici des chiffres issus de cas réels :

Exemple 1 : Plombier à Lyon

  • Situation initiale : page 2-3 Google, 5 avis, zéro contenu local
  • Consultant engagé : 6 mois, forfait 800€/mois
  • Actions : audit, citations (15 sources), gestion avis, création 8 pages locales, schéma JSON
  • Résultat : top 3 local (position 2) en 4 mois, 45 avis, +35 appels/mois
  • ROI : investissement 4 800€ → 35 appels × 500€ devis moyen = 17 500€ en 6 mois

Exemple 2 : Cabinet Avocat à Marseille

  • Situation initiale : visible localement mais position 3-4, 12 avis
  • Consultant engagé : 3 mois, audit + optimisation GMB
  • Actions : réorganisation fiches multiples (cabinet + antennes), gestion réputationelle avis
  • Résultat : position 1 local en 3 mois, +28 appels qualifiés, +15 avis
  • ROI : investissement 1 500€ → 28 appels × 800€ affaire moyenne = 22 400€ en 3 mois

Délais Réalistes

  • Semaines 1-4 : audit, corrections techniques rapides (GMB, citations incohérentes)
  • Mois 2-3 : amélioration visible (top 5-10 local possible), premières citations en ligne
  • Mois 4-6 : top 3 local très probable, avis stabilisés, trafic local +40-60 %

⚠️ Promesse rouge : tout consultant qui promet “top 1 en 2 semaines” ment. Google n’indexe pas instantanément, les algorithmes locaux prennent du temps.

analytics dashboard business metrics growth chart
analytics dashboard business metrics growth chart

Consultant SEO Lille : Audit Gratuit + Plan d’Action sur 90 Jours
→ À lire aussi Consultant SEO Lille : Audit Gratuit + Plan d’Action sur 90 Jours Referenziamento organico (SEO) · 29 Mag 2026

Comment Choisir le Bon Consultant SEO Local ?

Avant de signer, posez ces 7 questions critiques :

1. Avez-vous une expérience prouvée dans mon secteur ?

Un consultant qui a optimisé 15 salons de coiffure maîtrise vos enjeux (avis, photos, ambiance) mieux qu’un généraliste.

À demander : portefeuille de 3-5 cas similaires au vôtre, avec avant/après (positions, avis, leads).

2. Etes-vous vous-même bien positionné localement ?

[consultant SEO]Vérifiez : tapez ” ” sur Google. S’il n’apparaît pas top 5, c’est mauvais signe.[votre ville]

Le consultant doit appliquer ses propres recommandations.

3. Proposez-vous un audit gratuit ou payant ?

  • Audit payant (300-500€) : professionnel, approfondi, sérieux
  • Audit gratuit : beaucoup le font pour valider le fit, c’est acceptable s’il est quand même détaillé
  • “Je promets du top 3 sans audit” : fuyez

4. Comment serez-vous rémunéré ?

Demandez clarté absolue :

  • Montant fixe mensuels, ou hourly ?
  • Que se passe-t-il mois 1-2 si rien ne bouge ?
  • Délai d’engagement minimum ?
  • Possibilité de résilier sans pénalité ?

5. Quels sont vos KPI et reporting ?

Exigez des rapports mesurables :

  • Position moyenne local (suivi hebdo/mensuel)
  • Nombre d’avis (et récence)
  • Trafic local vers le site (via UTM campaigns)
  • Leads générés (tracé en CRM)
  • Citations créées (liste complète)

Pas de : “on a amélioré votre présence” vague.

6. Etes-vous partenaire Google ?

Google forme des partenaires certifiés. Vérifiez sur Google Partners (credential local SEO ou Google Ads).

Avantage : accès à Google My Business API, formations officielles, crédibilité.

7. Quels outils utilisez-vous ?

Un bon consultant maîtrise :

  • Google Search Console et Google My Business (gratuit)
  • SEMrush, Ahrefs ou Moz (pour analyse concurrence locale)
  • Whitespark ou BrightLocal (citations + local rank tracking)
  • Outils de gestion avis (Trustpilot, ReviewTrackers)

Si le consultant ne cite aucun outil, c’est suspect.

laptop computer professional workspace seo tools analytics
laptop computer professional workspace seo tools analytics

Erreurs Courantes à Éviter

Voici les pièges que commet 60 % des petites entreprises :

1. Confondre Google My Business et Référencement Organique

Erreur : “J’ai 50 avis sur GMB, je dois ranker #1 sur Google.”

Réalité : GMB = annuaire + local pack (top 3). Référencement organique = classement sur pages entières. Les deux sont liés mais distincts. Un avis n’optimise PAS votre site web en lui-même.

Action : consultant doit optimiser les deux canaux en parallèle.

2. Ignorer la Cohérence NAP

Erreur : “Mon adresse est “123 Rue Dupont, Lyon” sur mon site, “123 rue Dupont, LYON” sur Google My Business, et “123 Rue Dupont, 69000 Lyon” sur Pages Jaunes.”

Google pénalise l’incohérence (confusion algorithme, perte de “entity authority”).

Action : un bon audit corrige ces détails.

3. Négliger la Localisation du Site Web

Erreur : site générique sans pages locales. Quand un client tape “plombier à Lyon”, il voit votre homepage générale.

Action : créer 10-20 pages de service par localité (ex: /plombier-urgence-lyon/, /plombier-urgence-villeurbanne/, etc.)

4. Sous-investir dans les Avis

Erreur : laisser les avis arriver “naturellement” (5-10/mois).

Les avis sont le signal de confiance #1 pour Google Local Pack. Concurrents avec 30 avis/mois vous battront.

Action : système proactif de collecte (SMS après service, email, QR code en lieu).

5. Engager un Consultant Sans Contrat Écrit

Erreur : accord verbal sur tarifs et livrables = disputes garanties en mois 3-4.

Action : contrat signé précisant KPI, délais, résiliation, responsabilités.

SEO Gossip: un’analisi approfondita del file LLMs.txt
→ À lire aussi SEO Gossip: un’analisi approfondita del file LLMs.txt Referenziamento organico (SEO) · 28 Dic 2025

SEO Local vs SEO Global : Quelle Différence ?

Pour bien comprendre le rôle du consultant local, clarifions les 3 types de SEO :

Type 1 : SEO Organique (ou SEO Global)

Optimise votre visibilité nationale/mondiale sur Google. Exemple : moteur de recherche “meilleur CRM SaaS” → classe les meilleurs produits partout en France.

Horizon : 6-12 mois, compétition intense, coût élevé.

Type 2 : SEO Local

Optimise votre visibilité par zone géographique

Horizon : 3-6 mois, compétition légère à modérée, ROI rapide.

Type 3 : SEO e-commerce

Optimise des fiches produits (schéma Product, avis, prix, stock). Moins pertinent pour les entreprises de service locales.

Conclusion : un consultant SEO local ≠ consultant SEO global. L’expertise est différente.

Consultant SEO Local : Boostez Votre Visibilité Locale et Attirez Plus de Clients
→ À lire aussi Consultant SEO Local : Boostez Votre Visibilité Locale et Attirez Plus de Clients Referenziamento organico (SEO) · 29 Mag 2026

Tarif d’une Prestation SEO Local : Le Prix Réel

Quelle enveloppe budgéter ?

Budget Minimum

  • Audit seul : 400€ → diagnostic rapide
  • Optimisation GMB : 500€ forfait → une fois

Durée : 1 mois

Budget Intermédiaire (Recommandé)

  • Audit + 3 mois accompagnement : 2 400€ (800€/mois)
  • Inclut : citations, gestion GMB, rapports hebdo, 1 audit competitors

Durée : 3 mois, souvent renouvelable

Budget Premium

  • Contrat 12 mois : 8 000€-15 000€
  • Inclut : tout ci-dessus + création contenu local (articles géo-ciblés), campagne avis avancée, formation interne, intégration CRM

Durée : 12 mois, résultats garantis souvent visibles mois 4-6

Comparaison : Consultant vs Agence

Consultant solo : souvent 30-40 % moins cher qu’une agence, réactivité maximale, risque = dépendance d’une seule personne.

Agence : coût élevé, équipe derrière (couverture vacances), rapports avancés, moins de flexibilité.

SOURCE: BrightLocal Local SEO Services — cite les gammes tarifaires moyennes.

SOURCE: Online Ownership Local SEO Consultant — démontre les modèles de tarification actuels.

Salaire d’un Consultant SEO Freelance : Context Métier

Si vous envisagez de devenir consultant SEO local ou d’en recruter un en interne, cela aide de connaître les salaires.

Freelancer SEO Local

  • Débutant (0-2 ans) : 45-60€/heure → 1 800-2 400€/mois pour 40h
  • Intermédiaire (2-5 ans) : 60-100€/heure → 2 400-4 000€/mois
  • Expérimenté (5+ ans) : 100-180€/heure → 4 000-7 200€/mois

Salarié SEO Local (In-House)

  • Débutant : 24 000-30 000€ brut/an
  • Senior : 35 000-50 000€ brut/an
  • Lead SEO : 50 000€+

SOURCE: Upwork Local SEO Services — données de tarification freelancer 2024.

Ottimizzazione del tempo di caricamento: guida SEO essenziale per migliorare le prestazioni del tuo sito [SEO Summer Reload #9]
→ À lire aussi Ottimizzazione del tempo di caricamento: guida SEO essenziale per migliorare le prestazioni del tuo sito [SEO Summer Reload #9] Referenziamento organico (SEO) · 27 Dic 2025

Plan d’Action : Comment Démarrer avec un Consultant

Vous êtes convaincu ? Voici les 5 étapes :

Étape 1 : Demander un Audit Gratuit (1 semaine)

Contactez 2-3 consultants locaux. Demandez : “Pouvez-vous faire un mini-audit de 30 min sur ma fiche Google My Business et site ?”

Objectif : tester leur approche, évaluer compatibilité.

Étape 2 : Auditer l’Audit (1-2 semaines)

Lisez le rapport d’audit. Bon signe : recommandations spécifiques, chiffrées, priorisées (“Créer 12 citations manquantes”, “Ajouter 5 photos service”).

Mauvais signe : rapport générique (“améliorer SEO”).

Étape 3 : Négocier les Termes (1 semaine)

Si audit satisfait, proposez 3 mois de test :

  • Montant fixe mensuel (ex: 1 000€/mois)
  • KPI clairs (ex: “top 5 local en mois 3”, “+10 avis/mois”)
  • Rapports mensuels écrits
  • Clause de résiliation sans pénalité mois 4

Étape 4 : Lancer et Tracker (3 mois)

[votre service]Coulisse courante : vous notez chaque semaine les positions sur Google Local (tapez ” ” = prenez screenshot). Consultant doit aussi fournir tracking GMB.[votre ville]

Étape 5 : Évaluer et Décider (fin mois 3)

Au mois 3, review :

  • Progression des positions locales ?
  • Nombre d’avis augmenté ?
  • Trafic local en hausse (Google Analytics, UTM campaigns) ?
  • Leads générés tracés en CRM ?

Si OUI à 3+ questions → reconduire 6-12 mois.

Si NON → chercher autre consultant.

checklist clipboard planning strategy business goals
checklist clipboard planning strategy business goals

BIG SEO #7 : Deux jours de webinars gratuits dédiés au SEO, au référencement local et au Content Marketing
→ À lire aussi BIG SEO #7 : Deux jours de webinars gratuits dédiés au SEO, au référencement local et au Content Marketing Referenziamento organico (SEO) · 05 Mar 2026

Questions fréquentes

Quel est le tarif d’une prestation de SEO local ?

Les tarifs varient selon la prestation. Un audit seul coûte 300-800€. Un forfait mensuel va de 500€ à 2 000€/mois. Le tarif horaire se situe entre 45€ et 120€/h. Un contrat annuel complet coûte 8 000-15 000€. Le prix dépend de l’expérience du consultant et la complexité de votre activité.

Quel est le salaire d’un consultant SEO ?

En tant que salarié, un consultant SEO junior gagne 24 000-30 000€ brut/an, un senior 35 000-50 000€. En freelance, les tarifs vont de 45€/h (débutant) à 180€/h (expert), représentant 1 800-7 200€/mois selon l’expérience.

Quels sont les 3 types de SEO ?

Les 3 types sont : 1) SEO Organique (Global) pour visibilité nationale, 6-12 mois. 2) SEO Local pour zones géographiques via Google My Business, 3-6 mois. 3) SEO E-commerce pour fiches produits. Chaque type nécessite une expertise différente.

Comment faire du SEO local ?

Optimiser fiche Google My Business (photos, avis, posts), créer citations locales cohérentes, ajouter schéma JSON-LD sur site, créer pages géo-ciblées, collecter avis activement, optimiser pour mobile. Ces 6 actions forment la base solide du SEO local.

Quels résultats pouvez-vous attendre avec un consultant SEO local ?

Après 3-6 mois : classement local amélioré (top 5-3), +30-60% trafic local, +15-30 avis, +10-30 leads/mois. ROI : 3-5x l’investissement pour restaurants, plombiers, salons. Résultats dépendent du point de départ et compétition locale.

Combien de temps pour voir les résultats du SEO local ?

Semaines 1-4 : audit et corrections rapides. Mois 2-3 : top 5-10 local possible. Mois 4-6 : top 3 local probable, trafic +40-60%. Prudence face aux promesses de résultats en 2 semaines, elles sont irréalistes.

Consultant SEO local vs agence : qui choisir ?

Consultant solo : 30% moins cher, très réactif (1-2 jours), relation directe, mais dépendance d’une personne. Agence : équipe stable, rapports avancés, coût élevé, moins flexible. Pour PME locale, consultant expérimenté = meilleur rapport qualité/prix et résultats rapides.

Comment trouver et vérifier un bon consultant SEO local ?

Demandez portfolio avec cas similaires au vôtre, vérifiez sa propre visibilité locale (tapez son nom + ville), exigez audit gratuit détaillé, signez contrat avec KPI clairs, vérifiez certifications Google ou partnerships. Appelez ses clients précédents comme références.

📚 Sources & références

  1. Local SEO Services – BrightLocalBrightLocal
  2. Local SEO Consultant & SEO Services – Online OwnershipOnline Ownership
  3. Local SEO & Marketing Services – UpworkUpwork
  4. Google Partners – Official Google ProgramGoogle
  5. Local SEO Strategies & Best Practices – SEMrushSEMrush

/* 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.