Si vous attendez que Google vous aime, vous êtes déjà mort. Le SEO technique, c’est de la chirurgie froide : on ouvre, on enlève les causes de putréfaction, on recoud proprement. Voici les audits indispensables chaque année pour que votre site reste performant, indexable et sans surprises.
Le SEO technique n’est pas optionnel. Chaque année, vous devez passer au scalpel le crawl, la vitesse, le rendu JS, l’architecture et la sécurité. Ces audits n’ont pas pour but d’impressionner la direction : ils visent à supprimer les frictions qui volent votre trafic. Vous allez recevoir des checks concrets, scripts et méthodes pour agir dans l’heure.
Audit 1 — crawl & indexation : logs, sitemaps et couverture (le nerf de la guerre)
Problème : Google gaspille son crawl sur des pages inutiles ou trouve des signaux contradictoires (robots.txt, noindex, canonicals foireux). Résultat : vos pages importantes ne sont pas crawlees ou indexées.
Ce qu’il faut vérifier, impérativement :
- Server logs : qui crawl quoi, à quelle fréquence, quelle profondeur, quels codes HTTP.
- Coverage report (GSC) : erreurs 5xx, 4xx, soft 404, indexation bloquée.
- Sitemaps : contenu cohérent, URLs canoniques, taille, fréquence, statut lastmod fiable.
- robots.txt et meta robots : pas d’interdiction involontaire.
- Canonicals & redirects : pas de chaînes ou canonicals auto-référents erronés.
Procédé pratique (testable) :
- Exportez les logs web (Nginx/Apache) sur 30–90 jours.
- Importez dans BigQuery ou traitez en local. Exemple BigQuery basique :
SELECT
REGEXPEXTRACT(requesturl, r »^([^?]+) ») AS path,
COUNT() AS hits,
SUM(CASE WHEN status BETWEEN 200 AND 299 THEN 1 ELSE 0 END) AS success
FROM
project.dataset.accesslogsWHERE useragent LIKE ‘%Googlebot%’
GROUP BY path
ORDER BY hits DESC
LIMIT 1000;
- Croisez avec la liste de pages indexables (export Screaming Frog / crawl XML sitemap). Vous verrez les bonnes pages non crawlées et les pages mortelles que Google aime trop.
- Vérifiez les sitemaps automatiquement : curl -s https://site.com/sitemap.xml | xmllint –format – (ou utilisez un validateur).
Commandes utiles :
- Vérifier robots.txt : curl -s https://site.com/robots.txt
- Tester enchaînements de redirection & TTFB : curl -I -L -s -o /dev/null -w « %{httpcode} %{urleffective} %{timestarttransfer}n » https://site.com/path
Cas concret : on voit souvent 20–40% du crawl gaspillé sur paramètres de session et pages de facettes. Corrigez via rules dans robots.txt + param handling dans GSC + canonical propre.
Checklist d’action rapide :
- Supprimez ou noindexez les pages inutiles (pages de session, filtre non utiles).
- Nettoyez et mettez à jour le sitemap chaque nuit.
- Corrigez les 3xx/4xx récurrents et coupez les chaînes > 2 sauts.
- Implémentez un pipeline logs → BigQuery → dashboard de crawl.
Audit 2 — performance & core web vitals : chiffres, lab vs field, priorités
Problème : la vitesse tue le taux de conversion et influence le ranking. Le pire ? Vous optimisez en lab sans corriger les problèmes field (RUM).
Démarche recommandée :
- Rassembler les données field : Chrome UX Report / PageSpeed Insights (API) pour chaque page prioritaire.
- Compléter par des tests lab (Lighthouse CI, WebPageTest) sur templates critiques.
- Prioriser correctifs qui impactent LCP, FID/INP, CLS.
Commandes et scripts :
- Lighthouse CLI (exécution unique) :
lighthouse https://example.com/page –output=json –output-path=./report.json –chrome-flags= »–headless »
- Batch via PSI API (idéal pour 100+ pages). Automatisation avec script Node ou bash.
- Mesurer TTFB & ressources bloquantes :
curl -w « %{timestarttransfer}n » -o /dev/null -s https://example.com
Principales optimisations actionnables :
- Réduire le TTFB (serveur, cache, CDN, keepalive).
- Prioriser CSS critique (inline minimal critical CSS) et différer le reste.
- Mettre en place preconnect, dns-prefetch, rel=preload pour fonts et ressources critiques.
- Optimiser images (AVIF/WEBP), responsive srcset, lazy-loading pour images hors viewport.
- Minimiser JS principal : code splitting + hydration différée, éliminer bibliothèques inutilisées.
Exemple Nginx pour caching statique :
location ~ .(?:css|js|jpg|jpeg|gif|png|svg|ico|woff2)$ {
expires 30d;
addheader Cache-Control « public, max-age=2592000 »;
}
Audit pratique : identifiez les 20 pages générant 80% du trafic organique. Lancez Lighthouse CI sur ces pages, collectez les métriques lab puis vérifiez les champs field via PSI. Priorisez correctifs avec ROI (trafic impact probability).
Petit tableau d’efficacité (exemple) :
| Correctif | Impact typique | Difficulté |
|---|---|---|
| Réduire TTFB | LCP amélioré | Moyenne |
| Critical CSS | LCP & CLS | Moyenne |
| Image optimisation | LCP & payload | Faible |
| Minification & code-splitting | FID/INP | Moyenne |
Ne pas optimiser à la va-vite : un mauvais lazy-load casse parfois le SEO (contenu non rendu pour Google). Testez rendu final avec Googlebot (fetch as Google via GSC ou Puppeteer).
Audit 3 — javascript & rendering : s’assurer que google voit la même chose que l’utilisateur
Problème : beaucoup de sites modernes servent presque rien dans l’HTML initial et attendent que JS fasse le boulot. Google rend, mais c’est coûteux et pas fiable à 100% : latence de queue, différences entre user and bot.
Ce qu’il faut valider :
- Le HTML initial contient les balises essentielles : title, meta description, meta robots, structured data, hreflang.
- Le contenu rendu (innerText) est bien présent après rendu JS.
- Le temps de rendu pour Googlebot n’est pas excessif (render budget).
- Pas de dépendance sur des APIs client-only qui renvoient 401/CSRF pour les bots.
Outils et scripts pratiques :
- Vérifier rendu initial vs rendu final avec Puppeteer :
const puppeteer = require(‘puppeteer’);
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(‘https://site.com/page‘, {waitUntil: ‘networkidle2’});
const html = await page.content();
console.log(html.slice(0, 1000));
await browser.close();
})();
Sauvegardez le HTML initial (curl) et comparez. Si le contenu principal n’apparaît qu’après JS, vous avez un souci.
Solutions pragmatiques :
- Préférer SSR ou SSG pour les templates SEO-criticals.
- Si SSR impossible : dynamic rendering (Puppeteer/Rendertron) pour crawlers uniquement.
- Rendre le JSON-LD dans le HTML initial (pas via JS injecté après).
- Supprimer les scripts bloquants au-dessus de la ligne / mettre en async/defer.
Checks rapides :
- fetch as Google (GSC) => comparez rendu.
- Lighthouse render-blocking diagnostic.
- Logs crawl => erreurs JS rencontrées par Googlebot (souvent visibles via erreurs 4xx sur ressources).
Anecdote : j’ai vu un site où l’intégralité du bloc FAQ était injectée par un script qui faillait pour Googlebot — trafic sur ces pages divisé par 3 en 6 mois. Solution : injecter le JSON-LD FAQ dans le HTML server-side.
Audit 4 — architecture, internal linking & faceted navigation : organisez le champ de bataille
Problème : une architecture molle dilue l’autorité. Pages profondes, orphelines, ou hyper-indexées (facettes) volent le jus et font chuter l’efficacité du crawl.
Ce que vous devez cartographier :
- Profondeur de clic (click depth) des pages importantes.
- Pages orphelines (0 inbound internes).
- Distribution du PageRank interne (top pages qui donnent du jus).
- Faceted navigation : identification des filtres indexés à tort.
Processus et outils :
- Crawl complet (Screaming Frog/Sitebulb) → export des inlinks internes.
- Croisez avec logs pour voir si Googlebot suit ces liens.
- Calculer une matrice inlinks/outlinks : ex. export CSV et analyse simple en Python/Pandas.
Exemples d’actions :
- Créer des hubs (pages piliers) avec liens vers clusters sémantiques.
- Corriger orphelines en remontant 2–3 liens depuis pages fortes.
- Gérer navigation facettée :
- Bloquer via robots.txt les URLs avec paramètres inutiles (attention : paramètres = parfois utiles).
- Mettre canonical vers la page principale quand c’est logique.
- Utiliser rel=prev/next si paginées (avec prudence).
SQL/Pseudo pour calculer inlinks (export crawl) :
SELECT targeturl, COUNT() AS inlinks FROM crawllinks GROUP BY targeturl ORDER BY inlinks DESC;
Mesures KPI :
- % de pages orphelines → objectif < 2% sur pages indexables.
- Profondeur moyenne → objectif < 4 clics pour pages transactionnelles.
- Ratio pages indexées utiles vs indexées totales → cible > 70%.
Petit hack : utilisez un sitemap « priority » (manuel) pour indiquer aux bots vos pages stratégiques et poussez-les via GSC submit nightly.
Audit 5 — redirects, hreflang, structured data & sécurité : éviter les pièges qui tuent le seo
Problème : chaînes de redirection, hreflang mal implémenté, schéma invalide, HTTPS mal configuré — autant de balles dans le genou.
Points clés à vérifier :
- Chaînes et loops de redirection : évitez >2 sauts.
- HTTPS : aucun contenu mixte, HSTS activé, certificats à jour.
- Hreflang : balises réciproques ou sitemap hreflang, pas de contradictions.
- Structured data : JSON-LD présent dans HTML initial, passes les tests Rich Results.
- Headers de sécurité (Content-Security-Policy, X-Frame-Options), et SRI pour libs externes critiques.
Commandes et scripts :
- Détecter chaînes : curl -I -L -s -o /dev/null -w « %{urleffective} %{redirecturl} %{httpcode}n » https://site.com
- Vérifier certificat et chaines : openssl sclient -connect site.com:443 -servername site.com
- Validation Hreflang simple : crawler qui lit link[rel= »alternate »][hreflang] et vérifie réciprocité.
Exemple de vérification hreflang (bash + pup or xmllint):
curl -s https://site.com/fr/page | pup ‘link[hreflang] attr{hreflang}, attr{href}’
Structured data : utilisez l’outil Rich Results Test ou exécutez un validateur JSON-LD local. Faites un script qui récupère 200 pages importantes et nettoie les erreurs > warnings.
Checklist sécurité & confiance :
- Redirections 301 propres, pas de 302 inutiles.
- Pas de chaines > 2.
- Hreflang cohérent et testable.
- JSON-LD présent et valide.
- HTTPS solide et HSTS.
Conclusion
Vous venez de recevoir les cinq audits annuels qui séparent les sites en deux : ceux que Google bouffe, et ceux qui mangent Google. Faites un plan d’action trimestriel : logs → crawl → performance → rendu JS → architecture → sécurité. Téléchargez les scripts, lancez les commandes, et ne laissez pas votre site s’enliser. Rappelez-vous : le SEO technique, c’est de la discipline. Agissez. Gagnez — ou soyez crawlés.