# SEO Audit Technical

> seo-audit-technical — Analyse technique SEO

- Skill: `lcrvl2/seo-audit-technical` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add lcrvl2/seo-audit-technical`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lcrvl2/seo-audit-technical/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: lcrvl2 (https://skillmd.com/u/lcrvl2)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lcrvl2/seo-audit-technical

---


# 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

1. Résoudre le client, localiser le dernier `data/crawl/<date>/pivot.json` (via `resolve_client.py`).
2. Pour chaque `issue` du pivot, l'enrichir en `finding` complet avec son critère de succès (table `references/success-criteria.md`).
3. Écrire `outputs/audit/<date>/findings/technical.json` (format du contrat).

## Lancement

> **Exécution (dès l'invocation)** : chemin ABSOLU + `.env` racine chargé. `<slug>` = argument
> de la commande. Puis enchaîne le rapport (`seo-report`) et affiche `report.md`.
>
> ```bash
> 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).

