Audit SEO — Analyse boîte noire
Le site repose sur une stack moderne, rapide et très bien sécurisée — largement au-dessus de la moyenne des sites d'agence. Le score est principalement plombé par des coordonnées de contact factices encore en ligne et quelques réglages on-page faciles à corriger. Aucun chantier lourd : ce sont des ajustements de finition à fort impact.
● 1 point critique · 5 à corriger · 3 opportunitésLe site renvoie un jeu d'en-têtes de sécurité complet : Content-Security-Policy,
Strict-Transport-Security (HSTS sur 1 an), X-Frame-Options: DENY,
X-Content-Type-Options, Referrer-Policy et Permissions-Policy.
C'est une posture que l'on voit rarement, même sur des sites professionnels. Aucune version de
serveur ou de CMS n'est exposée.
Hébergement sur Vercel avec cache en périphérie (x-vercel-cache: HIT). La page d'accueil répond en ~0,23 s (premier octet), HTTP/2 actif. C'est un atout direct pour le référencement (Core Web Vitals) comme pour l'expérience visiteur.
robots.txt bien réglé (zones privées /dashboard, /api,
/admin bloquées), sitemap.xml valide listant 33 URL :
pages de service dédiées, page locale /agence-web-montpellier, 9 articles de blog, portfolio
et pages légales. Balise canonique, lang="fr", viewport et meta robots index,follow
tous présents et corrects. Chaque page a un title et un H1 uniques.
Constat : la page contact affiche le numéro +33 4 00 00 00 00,
y compris dans un lien cliquable tel:+330400000000. Ce même numéro placeholder figure
dans la fiche d'identité du site (données structurées Organization).
Pourquoi c'est important : un visiteur qui clique sur « Appeler » depuis un mobile tombe sur un numéro invalide. C'est une perte sèche de prospects et un signal de négligence sur la page la plus sensible du site. Google peut aussi propager cette donnée erronée.
Recommandation : remplacer partout par le vrai numéro (page contact,
pied de page, données structurées). Vérifier que le lien tel: pointe vers le bon numéro
au format E.164, ex. tel:+33XXXXXXXXX.
Constat : le schéma Organization contient une adresse incomplète :
"streetAddress": "1 Impasse", localité « Montpellier », CP 34000.
Pourquoi c'est important : Google s'appuie sur la cohérence du triplet Nom / Adresse / Téléphone (NAP) entre le site, la fiche Google Business et les annuaires. Une adresse tronquée affaiblit le référencement local et la confiance.
Recommandation : renseigner l'adresse réelle et complète (cohérente avec
la fiche Google Business), ou, si l'adresse n'est pas publique, structurer l'entité en
service area business avec areaServed (Montpellier, Hérault) plutôt qu'une adresse fictive.
Constat : les schémas Organization, WebSite et
LocalBusiness existent bien, mais sont injectés via next/script en
strategy="afterInteractive" — donc après hydratation, et non dans le HTML servi initialement.
Pourquoi c'est important : Google sait exécuter le JavaScript, mais le rendu différé reste moins fiable et plus tardif que des données présentes dès la réponse serveur. Pour un signal aussi structurant que l'identité de l'entreprise, mieux vaut ne dépendre de rien.
Recommandation : rendre le JSON-LD directement côté serveur dans le composant de page (App Router), via une balise statique :
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
Constat : plusieurs <title> répètent « Montpellier » deux fois
(ex. « …Montpellier | Digital Pro Craft Montpellier »). La page locale atteint 105 caractères,
bien au-delà de la limite d'affichage de Google (~60).
Pourquoi c'est important : au-delà de ~60 caractères, le titre est tronqué dans les résultats ; la répétition du mot-clé n'apporte rien et peut diluer le message.
Recommandation : viser 50–60 caractères, mot-clé une seule fois.
Avant : Agence Web Montpellier - Développeur Web & Création Site Internet Hérault | Digital Pro Craft Montpellier Après : Agence Web à Montpellier (34) | Digital Pro Craft
Constat : certaines descriptions dépassent largement la limite utile : 254 caractères sur la page locale, 198 sur la page contact (la cible est ~150–160).
Pourquoi c'est important : la partie excédentaire est coupée par « … » dans les résultats. L'accroche et l'appel à l'action en fin de phrase sont alors perdus.
Recommandation : réécrire en 150–160 caractères, accroche + bénéfice + zone géographique en tête.
Constat : twitter:card est en summary_large_image
(grande vignette), mais l'image pointée est le logo logo.png en 500×500 (carré).
Pourquoi c'est important : sur LinkedIn, Facebook ou X, le partage affichera un logo recadré au lieu d'une vraie bannière — moins de clics, image moins pro.
Recommandation : créer une image Open Graph dédiée en 1200×630
(titre + accroche + logo) et la référencer dans og:image/twitter:image.
Constat : aucun marqueur GA4 / Google Tag Manager n'apparaît dans le HTML servi.
Pourquoi c'est important : sans mesure, impossible de savoir quelles pages convertissent, d'où viennent les visiteurs, ou si les corrections SEO portent leurs fruits.
Recommandation : installer une mesure respectueuse du RGPD (GA4 avec consentement, ou une alternative type Plausible/Umami, plus simple à cadrer côté confidentialité).
Constat : la liste du blog pèse ~164 Ko et répond en ~1,0 s (vs 0,23 s en accueil). Reste correct, mais c'est le maillon le plus lent observé.
Pourquoi c'est important : le blog est une porte d'entrée SEO ; sa vitesse influe sur l'exploration et l'expérience.
Recommandation : paginer ou charger les vignettes en différé, vérifier que les
images d'articles passent par next/image (formats WebP/AVIF, dimensions explicites).
| Action | Priorité | Effort | Impact |
|---|---|---|---|
| Remplacer le numéro factice partout (contact, footer, schéma, lien tel:) | Critique | Faible | Élevé |
| Compléter / corriger l'adresse NAP dans les données structurées | Haute | Faible | Élevé |
| Rendre le JSON-LD côté serveur (HTML initial) | Haute | Faible | Moyen |
| Raccourcir les titles (≤60 car., mot-clé unique) | Haute | Faible | Moyen |
| Réécrire les meta descriptions trop longues (~155 car.) | Haute | Faible | Moyen |
| Créer une image Open Graph dédiée 1200×630 | Moyenne | Faible | Moyen |
| Installer une mesure d'audience RGPD-compatible | Moyenne | Moyen | Moyen |
| Optimiser le poids / la vitesse de la page blog | Moyenne | Moyen | Faible |
En clair : les deux premières lignes (numéro + adresse) sont à traiter en priorité absolue — effort minime, impact direct sur la crédibilité et la conversion. Le reste est de la finition SEO qui consolidera un site déjà techniquement solide.