seo-audit-technical — Analyse technique SEO
Deuxième maillon du pipeline. Lit la réserve (data/crawl/<date>/pivot.json, produit par seo-collect), n'appelle aucune source. Produit outputs/audit/<date>/findings/technical.json au format unifié du contrat de données.
Ce qu'il analyse
À partir du pivot crawl (DataForSEO OnPage) : codes HTTP (404, redirects, chaînes), canonicals (manquantes, conflits), h1 (manquants, multiples), meta/titres (dupliqués), linking interne (liens faibles, ancres), images (alt, taille), hreflang (invalides), contenu mince, Core Web Vitals.
La valeur différenciante : critère de succès par reco
Chaque finding ne dit pas juste "tu as un problème" — il dit où tu en es, où tu dois arriver, et comment on saura que c'est réglé. C'est l'argument fort vs les audits flous des agences. Le mapping issue → critère de succès est dans references/success-criteria.md (par type d'issue : cible, opérateur, outil de mesure, cadence de re-mesure).
Procédure
- Résoudre le client, localiser le dernier
data/crawl/<date>/pivot.json(viaresolve_client.py). - Pour chaque
issuedu pivot, l'enrichir enfindingcomplet avec son critère de succès (tablereferences/success-criteria.md). - Écrire
outputs/audit/<date>/findings/technical.json(format du contrat).
Lancement
Exécution (dès l'invocation) : chemin ABSOLU +
.envracine chargé.<slug>= argument de la commande. Puis enchaîne le rapport (seo-report) et affichereport.md.set -a; source .env; set +a python ./skills/seo-audit-technical/scripts/analyze.py <slug> python ./skills/seo-report/scripts/report.py <slug>
Contrat
Entrée : data/crawl/<date>/pivot.json. Sortie : findings/technical.json. Voir seo-os/references/data-contract.md. Le format des findings (ids stables, ou_tu_en_es/ou_arriver/comment_on_mesure/remesure) est ce qui permet à seo-report de synthétiser et à compare_audits de comparer deux audits dans le temps.
Sur Hermes
Profil-worker seo-tech, carte Kanban parents=[seo-collect]. Parallélisable avec les autres seo-audit-* (ils lisent tous la même réserve, indépendamment).