Content Audit (Site Crawl)
Audite tout un site — problèmes par page, recommandations, export JSON pour outils externes.
Content Audit crawle un domaine entier (ou un set d'URLs défini) et évalue chaque page sur la qualité de contenu, le SEO on-page, l'éligibilité GEO et l'hygiène technique. Au lieu d'optimiser une URL à la fois (Content Optimizer), tu obtiens la vue d'ensemble du site : quelles pages sont thin, lesquelles cannibalisent, lesquelles manquent de données structurées, lesquelles sont candidates à un refresh, à un merge ou à une suppression. Le résultat est un rapport navigable avec drilldown au niveau page plus un export JSON pour outils externes ou pipelines de reporting.
Ce qu'il peut faire
- Crawl à l'échelle du site — domaine entier ou sous-ensemble sitemap, selon
type(full= jusqu'à 1.000 pages,quick= jusqu'à 50,sitemap/singlepour les flux UI). - Constat par page — chaque URL trouvée reçoit sa propre
ContentAuditPageavec problèmes, scores (SEO 0–100, qualité 0–100), word count et bucket de priorité. - Classification d'issues — thin content, duplicate, meta manquante, liens internes cassés, H1 manquant, lacunes de citations (GEO), faible lisibilité. Les issues sont stockées comme JSON-array
{type:error|warning|info, category, message}par page. - Toggle solved + bulk mark — tu marques les pages comme solved une à une, ou via un PATCH bulk filtré (par ex. « toutes les low-priority avec erreurs → solved »).
- Filtres sur le pages-listing — listing filtrable par
status,priority,min/max_seo_score,issue_type, triable sur 7 colonnes. - Export — JSON, CSV ou XLSX pour tes propres dashboards / sheets / Looker.
- Crawl async — background job, tu peux quitter la page et revenir plus tard.
Quand l'utiliser
- Tu reprends un site existant et tu veux d'abord connaître l'état des lieux.
- Tu prépares un relaunch et tu as besoin d'un inventaire de contenu.
- Tu veux identifier des candidats au merge / delete / refresh.
- Tu veux un rapport de santé mensuel pour les stakeholders.
Workflow
- Lancer l'audit —
POST /content-auditsavec{source_url, type:"full"|"quick"}. Réponse202+audit_id. - Le crawl tourne en background — fais du polling sur
GET /content-audits/{id}jusqu'àstatus=completed. Tu peux quitter la page. - Pages listing —
GET /content-audits/{id}/pages?status=open&priority=high&issue_type=errorne renvoie que les pages qui ont encore besoin de travail. - Drilldown —
GET /content-audit-pages/{id}pour le détail d'une page (issues + recommandations + page-data). - Toggle individuel —
PATCH /content-audit-pages/{id}/solvedmarque une page comme résolue (body optionnel — sans body, l'état bascule). - Bulk mark —
PATCH /content-audits/{id}/pages/bulkavec un filtre etis_solvedbascule un lot complet d'un coup (cf. pattern bulk plus bas). - Export —
GET /content-audits/{id}/export?format=json|csv|xlsxlivre le rapport pour traitement externe. - Suite — envoyer les URLs critiques dans Content Optimizer ou les vérifier en profondeur via Page Deep Audit (Vision + Render IA).
API
| Méthode | Endpoint | Notes | Crédits |
|---|---|---|---|
| GET | /v1/content-audits |
Liste de tes runs d'audit (paginée) | — |
| POST | /v1/content-audits |
Body `{source_url, type:"full" | "quick"}, async 202` |
| GET | /v1/content-audits/{id} |
Summary + relation pages eager-loaded |
— |
| GET | /v1/content-audits/{id}/pages |
Pages listing. Filtres : status, priority, min_seo_score, max_seo_score, issue_type, sort, dir, per_page |
— |
| PATCH | /v1/content-audits/{id}/pages/bulk |
Bulk-mark. Body : {filter:{priority?, status?, min_seo_score?, max_seo_score?, issue_type?}, is_solved}. Throttle 30/min. |
— |
| GET | /v1/content-audits/{id}/export |
Export `?format=json | csv |
| GET | /v1/content-audit-pages/{id} |
Détail d'une page | — |
| PATCH | /v1/content-audit-pages/{id}/solved |
Bascule solved/open d'une page | — |
Exemple de body PATCH /content-audits/{id}/pages/bulk — clore toutes les pages low-priority ouvertes avec une erreur :
{
"filter": {
"priority": "low",
"status": "open",
"issue_type": "error"
},
"is_solved": true
}
Réponse : {data:{affected:int, is_solved:bool}, meta:{applied_filter:{...}}}. filter.status est l'état FROM (seules les lignes actuellement dans cet état sont basculées). issue_type matche contre issues[].type (error / warning / info).
Exemple de body POST /content-audits :
{
"source_url": "https://meinedomain.de",
"type": "full"
}
Crédits et limites
- Démarrage : 10 crédits par run d'audit, indépendamment de la profondeur de crawl.
- Async — la page peut être fermée, le crawl continue côté serveur.
- La limite de crawl par run dépend du plan ; les très grands sites sont pullés en chunks de sitemap.
- Les zones protégées (login, blocage robots) sont ignorées et marquées dans le rapport.
Modules associés
- Content Optimizer — optimiser individuellement les URLs problématiques trouvées.
- Page Deep Audit — auditer en profondeur les pages critiques avec visuel + Lighthouse + IA.
- Content Freshness — monitorer en complément les pages obsolètes.
- Competitor Analysis — benchmark contre la concurrence.
- Content Audit ≠ Site Audit. Content Audit (
/audit) est le scanner de qualité de contenu (score SEO, score qualité, recommandations par page). Site Audit (/site-audit) est le crawler avec détection d'issues + bridge automatique de grounding — deux modules distincts à focus complémentaire.