Interface de configuration initiale :
{
"business_context": {
"industry": "[E-commerce/B2B/SaaS/Local/Lead-gen]",
"avg_transaction_value": "[range ou N/A]",
"team_resources": "[Heures SEO/semaine disponibles]",
"dev_resources": "[Jours dev/mois disponibles]",
"budget_content": "[Budget création contenu/mois]",
"priorities": ["Acquisition", "Conversion", "Technique", "Branding"],
"constraints": ["Budget", "Temps", "Technique", "Légal"]
}
}Process de validation par batch :
Métriques de suivi :
Objectif : Générer 20-30 recommandations actionnables avec ROI business justifié
Budget cible : ~23€ par audit
Philosophie : Ne pas tout analyser, mais analyser ce qui compte
En SEO moderne, analyser tout coûte trop cher. Notre stratégie : filtrer intelligemment à chaque étape pour concentrer les ressources sur le contenu qui peut vraiment performer.
Le parcours : Comprendre ce qu'on a → Mesurer ce qui marche → Comparer à la concurrence → Faire analyser par l'IA → Prioriser par ROI
Google évalue si le contenu est créé par de vraies personnes expertes :
Signaux à détecter : Page auteur, mentions de certifications, témoignages clients réels, date de mise à jour, sources citées
Règle d'or : Les SERP features montrent l'intention réelle, plus fiable que notre analyse du contenu.
C'est notre scanner qui crée l'inventaire complet. Avant de savoir ce qui marche, il faut savoir ce qui existe.
Export CSV avec colonnes :
- URL, Title, Meta Description, H1, H2 Count
- Word Count, Images Count, Status Code
- Loading Time, Last Modified, Indexable
- Search Intent (via Custom Extraction IA)
Configuration IA pour Search Intent :
"Analyze the page content and determine the primary search intent.
Return ONLY one of these values:
- informational
- transactional
- navigational
- commercial
- local"Formule d'exclusion :
Tags manuels possibles :
protected_manual : Pages stratégiques à analyser même si faible performanceexcluded_manual : Pages hors périmètre SEOScreaming Frog dit ce qui existe, Search Console dit ce qui fonctionne. C'est la réalité terrain.
Endpoint : searchanalytics.query
Appel 1 - Performance par page :
- dimensions : ["page"]
- metrics : ["impressions", "clicks", "ctr", "position"]
- dateRange : 6 derniers mois
- rowLimit : 10000
Appel 2 - Mots-clés par page :
- dimensions : ["page", "query"]
- metrics : ["impressions", "clicks", "ctr", "position"]
- filters : clicks > 0
- dateRange : 6 derniers moisIdentification mot-clé principal :
Détection patterns temporels :
Détection pages orphelines :
Formule anti faux-positifs :
Google regarde si les visiteurs restent (signal positif) ou repartent vite (mauvais match).
Endpoint : analyticsdata.runReport
Paramètres :
- dimensions : [{ name: "pagePath" }]
- metrics : [
{ name: "sessions" },
{ name: "engagementTime" },
{ name: "bounceRate" },
{ name: "screenPageViewsPerSession" }
]
- dateRanges : [{ startDate: "180daysAgo", endDate: "today" }]SI pas de données GA4 disponibles :
Formule de sélection de base :
Pages stratégiques manuelles :
protected_manual : Analyser même si clicks < 101. Analyse SERP (pour chaque mot-clé principal)
Endpoint : /v3/serp/google/organic/live/advanced
Paramètres :
- keyword : [mot-clé principal de la page]
- location_code : 2250 (France)
- device : "mobile"
- depth : 10
Données récupérées :
- Top 5 concurrents organiques
- SERP features présentes
- Types de contenu (items[].type)2. Autorité des domaines
Endpoint : /v3/backlinks/domain_pages_summary/live
Paramètres :
- target : [domaine]
- limit : 1
À faire sur :
- Notre domaine (référence)
- Domaines concurrents uniques (éviter doublons)
Données récupérées :
- referring_domains
- backlinks_count
- domain_rank3. Analyse technique concurrents
Endpoint : /v3/on_page/lighthouse/live
Paramètres :
- url : [URL concurrent]
- for_mobile : true
Métriques récupérées :
- Core Web Vitals (LCP, FID, CLS)
- Performance score4. Backlinks pages spécifiques (conditionnel)
SI position ENTRE 3 ET 19 :
Endpoint : /v3/backlinks/summary/live
Paramètres :
- target : [URL de la page concurrente]
- target_type : "exact_url"
Récupérer :
- backlinks_count
- referring_domains
- rank (si disponible)Calcul Authority Gap composé :
Pour chaque concurrent :
1. Domain Gap = concurrent_domain_rank / notre_domain_rank
2. Page Gap = concurrent_page_backlinks / notre_page_backlinks (si données disponibles)
3. Final Gap = (Page Gap * 0.4) + (Domain Gap * 0.6)
Authority Gap final = MIN(Final Gap des 5 premiers concurrents)
SI < 1.2 → "facile" (ROI max 10)
SI < 2.0 → "possible" (ROI max 7)
SI ≥ 2.0 → "difficile" (ROI max 4)Gestion cas sans backlinks page :
SI pas de données page backlinks :
Final Gap = Domain Gap uniquementDétection intention via SERP features :
Formule de sélection :
Structure du prompt (format JSON) :
{
"role": "Expert SEO - Analyse technique et sémantique uniquement",
"context_page": {
"url": "[URL]",
"main_keyword": "[mot-clé principal]",
"clicks": [nombre],
"impressions": [nombre],
"ctr": [pourcentage],
"position": [position moyenne],
"pattern": "[en_progression/en_declin/stable/nouveau_contenu]"
},
"content": {
"title": "[title actuel]",
"meta_description": "[meta actuelle]",
"h1": "[H1 actuel]",
"word_count": [nombre mots],
"search_intent_sf": "[intent détecté par SF]",
"engagement_time": [secondes] ou "Non disponible",
"bounce_rate": [pourcentage] ou "Non disponible"
},
"competition": {
"authority_gap": [valeur],
"feasibility": "[facile/possible/difficile]",
"serp_features": [liste],
"real_intent": "[intent déduit des SERP features]",
"intent_mismatch": "[description si décalage]",
"top_competitors": [
{
"domain": "[domaine]",
"title": "[title concurrent]",
"meta_description": "[meta concurrente]",
"backlinks": [nombre],
"avg_pagespeed": [score]
}
]
},
"eeat_signals": {
"author_page": [true/false],
"expertise_mentions": [liste],
"trust_elements": [liste],
"last_updated": "[date]"
},
"analysis_required": {
"1": "Diagnostic technique principal (title, meta, structure)",
"2": "Gaps sémantiques vs concurrents (mots-clés manqués)",
"3": "Opportunités E-E-A-T concrètes",
"4": "Adaptations SERP features spécifiques",
"5": "Problèmes UX/Core Web Vitals détectés",
"6": "Actions techniques prioritaires (liste ordonnée)",
"7": "Difficulté technique estimée (simple/moyen/complexe)",
"8": "Effort estimé par action (Low/Medium/High)",
"9": "Risques/obstacles potentiels"
}
}Calcul des scores factuels :
// Technical Score (0-10)
Technical_Score = f(
authority_gap_normalized, // 40%
ctr_vs_expected, // 30%
position_improvement_potential, // 30%
)
// Opportunity Score (0-10)
Opportunity_Score = f(
impressions_volume, // 35%
serp_features_missed, // 25%
semantic_gaps_count, // 25%
intent_mismatch_severity // 15%
)
// Feasibility Score (0-10)
Feasibility_Score = f(
technical_complexity_ia, // 50%
authority_gap, // 30%
content_gap_size // 20%
)
// Score automatique final
Auto_Priority = (Technical_Score * 0.4) + (Opportunity_Score * 0.4) + (Feasibility_Score * 0.2)Pour chaque page Auto_Priority ≥ 6 :
{
"business_context_required": {
"industry": "[B2B/B2C/Local/E-commerce/Lead-gen]",
"keyword_business_value": "[Faible/Moyen/Élevé/Critique]",
"conversion_potential": "[Informatif/Commercial/Transactionnel]",
"seasonal_factor": "[Stable/Saisonnier/Événementiel]",
"internal_resources": "[1-2h/semaine | 1jour/semaine | Dédié]",
"strategic_importance": "[Nice-to-have/Important/Critique/Top3]"
},
"human_estimates": {
"time_required": "[2-4h | 1-2j | 1semaine | 1mois+]",
"roi_confidence": "[Faible/Moyen/Élevé]",
"business_impact": "[Faible/Moyen/Élevé]",
"final_tier": "[1|2|3|later]"
}
}Tier 1 - Quick Wins :
Tier 2 - Strategic :
Tier 3 - Long terme :
Tier 4 - Pages orphelines :
Tier 5 - Cannibalisation :
Tier 1 - Quick Wins validés :
Tier 2 - Strategic validés :
Tier 3 - Long terme :
Tier 4 - Pages orphelines :
Tier 5 - Cannibalisation :
Onglet 1 - Executive Summary
Onglet 2 - Validation Dashboard Pages en attente de validation humaine (Auto_Priority ≥ 6) Colonnes : URL | Mot-clé | Auto Priority | Technical Score | Opportunity Score | Feasibility Score | Actions IA suggérées | Status Validation
Interface de validation :
Onglet 3 - Quick Wins Validés (Tier 1) Colonnes : URL | Mot-clé | Position | Clics | CTR | Auto Priority | Business Impact | Time Required | Actions techniques IA | Validation Notes
Onglet 4 - Opportunités Stratégiques (Tier 2) Colonnes : URL | Authority gap | SERP features manquées | Semantic gaps | Business Value | Timeline | Strategic Importance
Onglet 5 - Long Terme (Tier 3) Colonnes : URL | Blockers identifiés | Resources required | Strategic rationale | Future timeline
Onglet 6 - Pages Orphelines (Tier 4) Colonnes : URL | Word count | Indexable | Auto Priority | Actions recommandées | Pages pour maillage | Business relevance
Onglet 7 - Cannibalisation (Tier 5) Colonnes : Requête | Pages en conflit | Positions | Business impact | Solution recommandée | Page à privilégier
Onglet 8 - Issues Techniques Colonnes : URL | Problème technique | Impact UX | Difficulté correction | Priorité business
Onglet 9 - Learning Dashboard (V1 simple) Log des décisions pour amélioration future : Colonnes : URL | Auto Priority | Human Final Tier | Business Justification | Time Actual vs Estimated | Success Metrics
Onglet 10 - Analyse IA Complète Export brut des analyses IA pour référence technique Colonnes : URL | Diagnostic technique | Gaps sémantiques | E-E-A-T opportunities | SERP adaptations | Technical complexity | Effort estimates
Paramètres ajustables :
- seuil_clicks_minimum : 10
- seuil_impressions_cannibalisation : 100
- position_max_analyse : 50
- ctr_alerte : 1.0
- authority_gap_facile : 1.2
- authority_gap_possible : 2.0
- budget_max_pages : 200
- budget_max_ia : 100| Service | Calcul | Coût |
|---|---|---|
| DataForSEO SERP | 200 requêtes × 0.03€ | 6€ |
| DataForSEO Authority | 50 domaines × 0.10€ | 5€ |
| DataForSEO Backlinks | 50 pages × 0.06€ | 3€ |
| DataForSEO Lighthouse | 100 tests × 0.02€ | 2€ |
| OpenAI GPT-4o | 100 analyses × 0.06€ | 6€ |
| APIs Google | GSC + GA4 | 1€ |
| TOTAL | 23€ |
Un audit qui équilibre stratégie business et précision technique.