seo-audit-backlinks — Backlinks & concurrents
Analyse le profil de liens et la position face aux concurrents. Produit findings/backlinks.json.
Dépendance aux données DFS
Contrairement aux autres analyses (qui lisent le crawl), celle-ci a besoin du baseline DataForSEO Labs (data/dataforseo/<date>/baseline.json) : domain rank, backlinks, referring domains, top keywords, et idéalement les métriques concurrents. Ces données sont collectées par seo-collect (DFS Labs).
Dégradation honnête : si le baseline n'est pas dans la réserve (ex: démo sans collecte DFS), le skill produit un finding "données backlinks non collectées" plutôt que d'inventer. Pas de faux chiffres.
Process couverts (logique d'analyse complète)
scripts/analyze.py code l'intégralité de la logique de la phase 3 (references/process.md) — pas un sous-ensemble :
| Process | Logique codée |
|---|---|
| 3A.3 Diversité ancres | catégorisation 5 catégories (branded/keyword/url/generic/compound), %, flags (branded <20%/>80%, keyword >40%), diversity_score |
| 3A.4 Vélocité | net_change 30j → growing/stable/declining |
| 3A.5 Spam | seuils 5%/15% → good/monitor/critical |
| 3B.7 Table concurrents | 5 métriques + gap (client − moyenne) |
| 3C.9 Featured snippets | rank 2-5 + FS non possédé → score vol×(1/pos), top 10 |
| 3D.14 Content gaps | opportunity score vol×(1−KD/100), top 20 |
| 3E.15-18 Topic clusters | n-grams → clusters → coverage → silo gaps |
| 3F.19 Striking distance | rank 4-20, vol ≥200, top 15 |
Ces fonctions sont réelles et testées : elles tournent dès que la donnée est dans la réserve.
Dégradation honnête + to_collect
Si une donnée manque (ex : pas d'anchors, pas de ranked_keywords dans le baseline), le skill ne fabrique aucun chiffre. Il émet backlinks.data.not_collected (si rien) et liste dans to_collect les appels API DataForSEO exacts à brancher pour chaque process manquant (ex : backlinks_anchors(limit=100), domain_intersection, ranked_keywords(limit=200)). La logique d'analyse ne change pas quand la donnée arrive ; seule la source se branche.
Interprétation (agent)
L'agent contextualise (un faible nombre de backlinks est-il normal pour ce secteur/cette taille ?), priorise les opportunités de content gap, et valide/renomme les topic clusters (3E.15) et la catégorisation d'ancres (3A.3) pour cohérence sémantique.
Lancement
python seo/skills/seo-audit-backlinks/scripts/analyze.py <slug>
Contrat
Entrée : data/dataforseo/<date>/baseline.json. Sortie : findings/backlinks.json. Voir seo-os/references/data-contract.md.
Sur Hermes
Profil-worker seo-backlinks, carte parents=[seo-collect]. Nécessite que seo-collect ait recueilli le baseline DFS (sinon dégrade).