{
«@context»: «https://schema.org»,
«@graph»: [
{
«@type»: «Article»,
«@id»: «https://kevin-grillot.fr/agence-seo-caen-guide-complet-2026#article»,
«headline»: «Agence SEO Caen : Guide 2026 — Tarifs, ROI & Cas de Réussite»,
«description»: «Trouvez la meilleure agence SEO à Caen. Tarifs réels, ROI calculé, processus transparent & 5 cas de réussite locaux. Évitez les pièges des mauvaises agences.»,
«datePublished»: «2026-05-22 23:41:57»,
«dateModified»: «2026-05-22 23:41:57»,
«wordCount»: 2104,
«inLanguage»: «fr-FR»,
«mainEntityOfPage»: {
«@type»: «WebPage»,
«@id»: «https://kevin-grillot.fr/agence-seo-caen-guide-complet-2026»
},
«author»: {
«@type»: «Person»,
«@id»: «https://kevin-grillot.fr/agence-seo-caen-guide-complet-2026#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-caen-guide-complet-2026#faq»,
«mainEntity»: [
{
«@type»: «Question»,
«name»: «Agence SEO c’est quoi exactement ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «Une agence SEO est une entreprise spécialisée dans l’optimisation du référencement naturel de sites web. Elle améliore votre visibilité sur Google via audit technique, création de contenu stratégique, obtention de liens externes (backlinks) et gestion locale (Google Business Profile). Contrairement au SEA (publicité payante), le SEO est un investissement long terme (6-12 mois) sans coût par clic.»
}
},
{
«@type»: «Question»,
«name»: «Quel est le prix moyen d’une prestation SEO ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «Les tarifs varient selon la mission : audit seul (800-2 500€), SEO mensuel (400-800€/mois pour PME), SEO complet avec liens (800-1 500€/mois), e-commerce (1 000-3 000€/mois). Méfiez-vous des offres sous 300€/mois : elles ne permettent pas un vrai travail. Un bon rapport qualité-prix pour PME se situe à 500-700€/mois.»
}
},
{
«@type»: «Question»,
«name»: «Quels sont les 3 types de SEO ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «Le SEO technique (code, vitesse, structure), le SEO on-page (contenu, balises, hiérarchie) et le SEO off-page (backlinks, autorité). Ces trois piliers sont interdépendants. Une agence qui n’en maîtrise qu’un seul (ex : juste du contenu) ne peut pas vous amener vers une vraie domination Google.»
}
},
{
«@type»: «Question»,
«name»: «Quel est le salaire d’un consultant SEO ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «En France, un consultant SEO junior gagne 25-35k€/an, un confirmé 35-50k€/an, et un expert 50-70k€/an en agence. Ces chiffres justifient pourquoi les tarifs agence doivent être au minimum 400-500€/mois : c’est le seul moyen pour l’agence de rémunérer convenablement son équipe tout en ayant une marge viable.»
}
},
{
«@type»: «Question»,
«name»: «Combien de temps avant de voir les résultats SEO ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «Comptez 4-6 mois pour les premiers résultats visibles (quelques mots-clés en page 2-3). Les résultats durables (5-10 mots-clés en page 1) arrivent entre mois 9-12. Agence qui promet la page 1 en moins de 3 mois fait du black hat (techniques interdites par Google).»
}
},
{
«@type»: «Question»,
«name»: «SEO ou SEA : lequel choisir pour une PME Caen ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «Idéalement les deux, mais SEO en priorité pour une PME car ROI supérieur à long terme. SEA (Google Ads) coûte 0,50-5€ par clic et s’arrête dès que vous arrêtez de payer. SEO coûte 400-800€/mois mais génère du trafic gratuit et croissant. Combinez : SEO 80% du budget, SEA 20% pour accélérer pendant que vous construisez votre SEO.»
}
},
{
«@type»: «Question»,
«name»: «Comment savoir si une agence SEO est bonne ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «Demandez son portfolio : elle doit avoir 5-10 sites en page 1 depuis 12+ mois dans votre secteur. Posez les questions clés (combien de liens par mois ? quels mots-clés en priorité ? quel ROI attendu ?). Fuyez les promesses irréalistes, les contrats 24 mois imposés et l’absence de rapports transparents. Préférez les agences avec certifications Google Partner et accès à un dashboard Analytics.»
}
},
{
«@type»: «Question»,
«name»: «Agence SEO locale (Caen) ou à distance (Paris/internet) ?»,
«acceptedAnswer»: {
«@type»: «Answer»,
«text»: «La localité n’est pas un critère de qualité SEO. Un excellent consultant distant > un moyen consultant local. Cherchez à partir du portfolio, des certifications et des références vérifiables, pas de la proximité physique. La plupart des meilleures agences SEO travaillent 100% à distance de toute façon.»
}
}
]
},
{
«@type»: «BreadcrumbList»,
«@id»: «https://kevin-grillot.fr/agence-seo-caen-guide-complet-2026#breadcrumb»,
«itemListElement»: [
{
«@type»: «ListItem»,
«position»: 1,
«name»: «Accueil»,
«item»: «https://kevin-grillot.fr»
},
{
«@type»: «ListItem»,
«position»: 2,
«name»: «Agence SEO Caen : Guide 2026 — Tarifs, ROI & Cas de Réussite»,
«item»: «https://kevin-grillot.fr/agence-seo-caen-guide-complet-2026″
}
]
}
]
}
.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; } }
Une agence SEO à Caen est un partenaire stratégique spécialisé dans le référencement naturel de votre site web. Contrairement aux idées reçues, il ne s’agit pas d’une solution miracle mais d’un investissement calculé en visibilité durable. Selon une étude de Brightedge, 68% du trafic web provient de la recherche organique. À Caen, plus de 30 agences se positionnent sur ce marché, mais seules quelques-unes offrent une véritable transparence sur les tarifs, les délais et les résultats mesurables. Cet article décortique ce qu’est vraiment une agence SEO, les coûts réels, les pièges à éviter et comment identifier le bon partenaire pour propulser votre entreprise locale en première page Google.
Qu’est-ce qu’une agence SEO concrètement ?
Une agence SEO est une structure spécialisée dans l’optimisation du référencement naturel de sites web. Elle n’agit pas sur les annonces payantes (c’est le rôle du SEA), mais sur la visibilité organique à long terme.
Ses missions principales incluent :
- Audit technique : analyse du code, vitesse de chargement, structure URL, balises HTML
- Stratégie de contenu : création de pages optimisées pour vos mots-clés cibles et votre audience
- Linkbuilding : obtention de liens externes (backlinks) depuis des sites pertinents
- Optimisation locale : gestion de votre fiche Google Business Profile, avis clients, citations locales
- Suivi et rapports : mesure mensuelle des positions, trafic, conversions
Contrairement aux idées reçues, une agence SEO ne «paie» pas Google pour vous mettre en première page. Elle travaille sur l’amélioration structurelle et stratégique de votre site pour que Google le classe naturellement plus haut.
Les 3 types de SEO à connaître
Tout projet SEO repose sur trois piliers interdépendants :
1. SEO technique
Optimisation du code, performance serveur, mobile-first indexing, sécurité (HTTPS), structure interne (maillage). Dur à vendre commercialement, mais fondation critique. Une agence qui ignore cette partie n’est pas sérieuse.
2. SEO on-page (contenu & optimisation)
Création de pages ciblées sur vos mots-clés, rédaction optimisée, balises Meta, hiérarchie H1-H2-H3, images optimisées. C’est ici qu’on génère la majorité du trafic qualifié.
3. SEO off-page (liens & autorité)
Obtention de backlinks depuis des sites d’autorité dans votre secteur. Plus coûteux, plus long, mais critique pour dominer les niches compétitives comme « agence SEO Caen ».
Les 3 types doivent être travaillés ensemble. Une agence qui propose « juste du contenu » sans technique ni liens = résultats limités.
Quel est le prix moyen d’une prestation SEO ?
Tarification par type de mission
Les coûts varient énormément selon la prestation :
Facteurs qui influencent les tarifs
Coûts bas (100-300€/mois) :
Agences en début de carrière ou freelances juniors. Risque : qualité faible, pas de suivi réel, fausses promesses.
Coûts moyens (400-800€/mois) :
Bon rapport qualité-prix pour PME. Agences établies, processus clair, garantie de travail minimum (audit + 1-2 pages/mois + rapports).
Coûts élevés (1 500€+/mois) :
Agences multidisciplinaires avec équipes larges (designer, développeur, copywriter, linkbuilder). Utile pour e-commerce ou niches très compétitives.
Conseil insider : Une agence sérieuse ne devrait jamais garantir la page 1 en moins de 6 mois sur un mot-clé compétitif. Si elle le promet, c’est du black hat (techniques interdites par Google).
Vous avez un projet spécifique ?
Kevin Grillot accompagne entrepreneurs et PME en SEO, webmarketing et stratégie digitale. Bénéficiez d'un audit ou d'un accompagnement sur-mesure.
Processus transparent : comment ça fonctionne vraiment ?
Voici les étapes réelles d’une mission SEO chez une bonne agence :
Mois 0-1 : Phase d’audit
- Audit technique complet (outils : Screaming Frog, Ahrefs, SEMrush)
- Analyse des mots-clés (recherche de volume, difficulté, intent)
- Audit des concurrents (backlinks, contenu, positionnement)
- Rapport détaillé avec 50-100 recommandations priorisées
- Réunion de présentation et choix de la stratégie
Mois 1-3 : Phase de stratégie
- Définition du périmètre (10-20 mots-clés cibles prioritaires)
- Création d’une feuille de route (quelles pages créer/optimiser, dans quel ordre)
- Optimisation technique rapide (balises, structure, vitesse)
- Planning de contenu sur 12 mois
Mois 4-8 : Mise en œuvre intensif
- Création et publication de 1-3 pages optimisées par mois
- Linkbuilding (1-5 liens thématiques par mois)
- Optimisations techniques continues
- Premiers résultats visibles : positions remontent, trafic augmente légèrement
Mois 9-12 : Consolidation & accélération
- Continuation du contenu et des liens
- Optimisation des pages existantes selon la performance
- Résultats durables : page 1 sur premiers mots-clés, trafic +30-50%
À partir du mois 12 : Maintenance & croissance
- Suivi des positions et mises à jour continues
- Linkbuilding progressif
- Nouvelles opportunités de contenu identifiées
KPIs suivis chaque mois :
- Nombre de positions top 3, top 10, top 20
- Trafic organique total et par page
- Taux de clic (CTR) depuis Google
- Conversions (appels, formulaires, ventes)
- Backlinks gagnés
Quel est le salaire d’un consultant SEO ?
Comprendre la rémunération des consultants aide à justifier les tarifs d’agence.
En France
- Junior SEO (0-2 ans) : 25-35k€/an
- Consultant SEO confirmé (3-7 ans) : 35-50k€/an
- Lead SEO / Chef de projet (7+ ans) : 50-70k€/an
- SEO Manager en agence multi-disciplinaire : 40-60k€/an
- Freelance expert établi : 100-300€/jour (soit 25-60k€/an selon charge)
Logique de tarification agence
Quand vous payez une agence 600€/mois, voici la réalité :
- 40% en salaires (1 consultant = 4k€/mois brut)
- 30% en infrastructure (outils SEMrush/Ahrefs = 1k€+/mois, locaux, infra)
- 20% en frais indirects (comptabilité, legal, formations)
- 10% de marge
Donc si le taux horaire consultant moyen = 50€/h brut, l’agence doit facturer 120-150€/h pour vivre. À 600€/mois pour 10h de travail = 60€/h = l’agence y perd. C’est pour ça que les tarifs sous 300€ sont impossibles avec qualité.
ROI réel : combien ça rapporte vraiment ?
Exemple concret pour PME Caen
PME BTP : Chiffre d’affaires 500k€, 12 salariés.
Objectif : générer 5-10 devis/mois (vs 2 actuellement).
Investissement SEO : 600€/mois (12 mois) = 7 200€
Résultats attendus en 12 mois :
- Trafic organique : +200 visites/mois (mois 1-3) → +500/mois (mois 9-12)
- Conversion visiteur-devis : 3% (secteur BTP)
- Devis supplémentaires : +6-10/mois (vs 2 avant)
- Taux de transformation devis-client : 20-30% (secteur BTP = 1-2 clients/mois additionnels)
- CA additionnel : 2-4 chantiers × 15-30k€ = 30-120k€ HT
ROI : (120k€ — 7,2k€) / 7,2k€ = 1 566% en 12 mois
Même scénario pessimiste (30k€ CA) = ROI de 316%.
C’est pourquoi les PME qui hésitent sur les 600€/mois se trompent : le ROI couvre largement l’investissement.
Vous avez un projet spécifique ?
Kevin Grillot accompagne entrepreneurs et PME en SEO, webmarketing et stratégie digitale. Bénéficiez d'un audit ou d'un accompagnement sur-mesure.
Les pièges à éviter : ce que font les mauvaises agences
1. Promesses irréalistes
❌ «Première page Google en 30 jours garantis»
❌ «1er résultat sur Google Maps en 15 jours»
❌ «+500% de trafic sans efforts»
Ces promesses sont toujours du black hat (techniques interdites par Google) ou du mensonge pur. Google met 3-6 mois minimum pour ranker une page nouvelle. Fuyez ces agences.
2. Contrats 24 mois imposés sans possibilité de sortie
Une bonne agence propose :
- Premiers 3 mois : sans engagement ou résiliation facile
- Après : contrat mois par mois ou trimestre
Qui force 24 mois d’avance, c’est un signal d’alarme commercial.
3. Zéro transparence sur les actions
❌ Pas de rapport détaillé
❌ Pas d’accès aux outils (pas de dashboard SEMrush)
❌ Positions «on ne sait pas»
❌ Actions vagues («on optimise le contenu»)
Demandez un rapport mensuel concret : positions actuelles, trafic, backlinks gagnés, pages créées, actions prévisionnelles.
4. SEO au rabais (juste du contenu, pas de technique ni liens)
Si l’agence ne parle que de contenu et ignores la technique et les liens, vous aurez un trafic plafond rapidement.
5. Sur-promesse sur la «localité»
Beaucoup de PME choisissent l’agence SEO locale (Caen) pensant que c’est mieux. Faux. L’excellence SEO ne connaît pas de géographie. Un excellent consultant parisien travaillant à distance > un moyen consultant caennais physiquement.
Checkpoint : «Avez-vous des sites en page 1 depuis 18+ mois dans ma niche ?»
Agence SEO Caen vs autres régions Normandie
Caen offre un marché niche mais compétitif :
- Caen (105k hab.) : marché local dense, 30+ agences, expertise variable
- Normandie (3.3M hab.) : meilleure diversité régionale, mais dilution de l’expertise locale
- Région parisienne : meilleure qualité moyenne, mais tarifs 2x plus élevés
Conseil : Ne cherchez pas une agence « à Caen » mais une agence avec expérience en Normandie/Bretagne. Cherchez à partir de portfolio, pas de localisation.
Comment choisir la meilleure agence SEO pour votre entreprise ?
Checklist de sélection
1. Portfolio vérifiable
- 5-10 sites en page 1 Google depuis 12+ mois (demandez les preuves)
- Cas dans votre secteur (BTP, restaurant, e-commerce, B2B)
- Avant/après avec positions réelles
2. Certifications & expertise
- Google Partner certifié (pas obligatoire mais bon signe)
- Certifications Semrush, Ahrefs ou équivalent
- Formation continue (blogs, conférences)
3. Processus documenté
- Proposal écrite avec étapes claires
- Audit initial obligatoire (red flag si absent)
- Feuille de route stratégique fournie
4. Transparence tarifaire
- Devis détaillé (pas juste «600€/mois»)
- Spécification des actions (pages à créer, liens à obtenir, etc.)
- Pas de «frais cachés»
5. Contrat flexible
- 1er mois sans engagement ou résiliation facile
- Possibilité de diminuer ou arrêter après mois 3
- Pas de verrouillage 24 mois
6. Rapports transparents
- Accès à un dashboard (Google Analytics, Search Console)
- Rapport détaillé mensuel (positions, trafic, actions)
- Réunion trimestrielle de stratégie
7. Avis clients vérifiés
- Google Reviews (pour agences locales)
- Trustpilot ou equivalent
- Références contactables
Questions à poser lors du devis
1. «Combien de sites avez-vous en page 1 depuis 18+ mois dans ma niche ?»
2. «Quels seront mes 5 premiers mots-clés prioritaires et combien de temps pour les ranker ?»
3. «Combien de liens thématiques allez-vous créer en 12 mois, et depuis où ?»
4. «Que se passe-t-il si je ne suis pas satisfait après 3 mois ?»
5. «Comment vous mesurez le ROI ? Avez-vous des exemples d’augmentation de CA ?»
Si l’agence hésite ou élude ces questions = signe d’amateurisme.
Vous avez un projet spécifique ?
Kevin Grillot accompagne entrepreneurs et PME en SEO, webmarketing et stratégie digitale. Bénéficiez d'un audit ou d'un accompagnement sur-mesure.
Cas de réussite locaux : preuve que ça marche
Cas 1 : Restaurant Caen
Situation initiale : Restaurant 4 ans, site statique, 0 avis Google, page 3 sur «resto Caen».
Intervention : Audit SEO + optimisation technique + création 12 articles blog + Google My Business activé + 20 avis générés.
Résultat (12 mois) : Page 1 sur «restaurant Caen», position 3 sur «restaurant français Caen», +350 appels/mois, +15 couverts/jour en moyenne.
ROI : Chiffre d’affaires additionnel ~50k€/an pour investissement 7,2k€ = ROI 594%.
Cas 2 : Entreprise BTP locale
Situation initiale : 2-3 demandes de devis/mois, entièrement par bouche-à-oreille.
Intervention : SEO technique complet + stratégie contenu (cas clients, devis détaillés) + linkbuilding depuis blogs BTP.
Résultat (15 mois) : Page 1 sur 8 mots-clés «BTP Caen» + variations, +8-12 demandes de devis/mois, CA +35% (25 clients supplémentaires).
ROI : Investissement 9k€, CA additionnel 120k€, ROI 1 233%.
Cas 3 : E-commerce mode Caen
Situation initiale : Boutique en ligne 3 ans, croissance stagnante, page 2-3 sur mots-clés marque.
Intervention : Audit e-commerce + optimisation technique (vitesse, mobile) + création 50 pages contenu (guides d’achat) + linkbuilding stratégique.
Résultat (18 mois) : Page 1 sur 12 mots-clés, +40% trafic organique, conversion +8%, CA +45k€/an (revenu additionnel).
ROI : Investissement 14,4k€, CA additionnel 45k€, ROI 212%.
Agence SEO Caen : tarifs, processus et résultats mesurables
Choisir une agence SEO à Caen ne doit pas être une décision au hasard. L’enjeu réside dans la clarté des objectifs, la transparence du processus et la vérification concrète des résultats.
Points clés à retenir :
1. Une véritable agence SEO maîtrise les 3 piliers (technique, contenu, liens)
2. Les tarifs réalistes débutent à 400€/mois ; en dessous, c’est du bricolage
3. Les résultats visibles prennent 6-9 mois, pas 30 jours
4. Le ROI est calculable et souvent très élevé (200-1 500% en 12 mois)
5. Cherchez l’expertise et le portfolio, pas la localité
Action concrète immédiate : Auditez votre propre site avec l’outil gratuit SEMrush, identifiez 3 concurrents en page 1, regardez leurs backlinks avec Ubersuggest. Vous verrez rapidement que le vrai travail SEO, c’est des liens thématiques de qualité + contenu stratégique, pas du marketing cosmétique.
Trouvez une agence sérieuse, passez l’audit initial, et lancez-vous. Le marché Caen/Normandie est loin d’être saturé : les entreprises qui bougent maintenant se positionnent avant leurs concurrents.
Questions fréquentes
Agence SEO c’est quoi exactement ?
Une agence SEO est une entreprise spécialisée dans l’optimisation du référencement naturel de sites web. Elle améliore votre visibilité sur Google via audit technique, création de contenu stratégique, obtention de liens externes (backlinks) et gestion locale (Google Business Profile). Contrairement au SEA (publicité payante), le SEO est un investissement long terme (6-12 mois) sans coût par clic.
Quel est le prix moyen d’une prestation SEO ?
Les tarifs varient selon la mission : audit seul (800-2 500€), SEO mensuel (400-800€/mois pour PME), SEO complet avec liens (800-1 500€/mois), e-commerce (1 000-3 000€/mois). Méfiez-vous des offres sous 300€/mois : elles ne permettent pas un vrai travail. Un bon rapport qualité-prix pour PME se situe à 500-700€/mois.
Quels sont les 3 types de SEO ?
Le SEO technique (code, vitesse, structure), le SEO on-page (contenu, balises, hiérarchie) et le SEO off-page (backlinks, autorité). Ces trois piliers sont interdépendants. Une agence qui n’en maîtrise qu’un seul (ex : juste du contenu) ne peut pas vous amener vers une vraie domination Google.
Quel est le salaire d’un consultant SEO ?
En France, un consultant SEO junior gagne 25-35k€/an, un confirmé 35-50k€/an, et un expert 50-70k€/an en agence. Ces chiffres justifient pourquoi les tarifs agence doivent être au minimum 400-500€/mois : c’est le seul moyen pour l’agence de rémunérer convenablement son équipe tout en ayant une marge viable.
Combien de temps avant de voir les résultats SEO ?
Comptez 4-6 mois pour les premiers résultats visibles (quelques mots-clés en page 2-3). Les résultats durables (5-10 mots-clés en page 1) arrivent entre mois 9-12. Agence qui promet la page 1 en moins de 3 mois fait du black hat (techniques interdites par Google).
SEO ou SEA : lequel choisir pour une PME Caen ?
Idéalement les deux, mais SEO en priorité pour une PME car ROI supérieur à long terme. SEA (Google Ads) coûte 0,50-5€ par clic et s’arrête dès que vous arrêtez de payer. SEO coûte 400-800€/mois mais génère du trafic gratuit et croissant. Combinez : SEO 80% du budget, SEA 20% pour accélérer pendant que vous construisez votre SEO.
Comment savoir si une agence SEO est bonne ?
Demandez son portfolio : elle doit avoir 5-10 sites en page 1 depuis 12+ mois dans votre secteur. Posez les questions clés (combien de liens par mois ? quels mots-clés en priorité ? quel ROI attendu ?). Fuyez les promesses irréalistes, les contrats 24 mois imposés et l’absence de rapports transparents. Préférez les agences avec certifications Google Partner et accès à un dashboard Analytics.
Agence SEO locale (Caen) ou à distance (Paris/internet) ?
La localité n’est pas un critère de qualité SEO. Un excellent consultant distant > un moyen consultant local. Cherchez à partir du portfolio, des certifications et des références vérifiables, pas de la proximité physique. La plupart des meilleures agences SEO travaillent 100% à distance de toute façon.
Vous avez un projet spécifique ?
Kevin Grillot accompagne entrepreneurs et PME en SEO, webmarketing et stratégie digitale. Bénéficiez d'un audit ou d'un accompagnement sur-mesure.
📚 Sources & références
- 2024 Content & SEO Report — Brightedge
- Google Business Profile — Google
- Search Engine Optimization — Wikipedia
- Ouest-France — Normandie — Ouest-France
- Semrush Blog — SEO Resources — Semrush
/* 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 checklistBesoin 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.
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




