Table des matières

🔍 Outil d'Audit GEO - Documentation

Analyseur en ligne pour évaluer l'optimisation GEO (Generative Engine Optimization) d'une page web.

Installation

Structure des fichiers

Créez un dossier sur votre serveur avec cette structure :

geo-audit/
├── index.html          (Interface utilisateur)
├── audit.php           (Backend d'analyse)
├── export-pdf.js       (Export PDF professionnel)
├── scraping-config.json (Configuration scraping - optionnel)
└── README.md           (Documentation)

Prérequis serveur

Configuration Apache

Si vous utilisez Apache, créez un fichier .htaccess :

# Réécriture d'URL
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
</IfModule>
 
# Sécurité
<Files "audit.php">
    Order allow,deny
    Allow from all
</Files>
 
# Compression GZIP
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript application/json
</IfModule>
 
# Cache
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/html "access plus 0 seconds"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>

Configuration Nginx

Si vous utilisez Nginx, ajoutez à votre configuration :

location / {
    try_files $uri $uri/ /index.html;
}
 
location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
 
# Sécurité
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;

Utilisation

URL d'accès

Accédez à l'outil via : https://audit.ticoet.me/

Analyse d'une page

  1. Entrez l'URL de la page à analyser
  2. Sélectionnez le type de page (article, homepage, etc.)
  3. Cochez les options si nécessaire (mode compatible, service de scraping)
  4. Cliquez sur “Lancer l'audit GEO”
  5. Consultez les résultats détaillés

Mode HTML (pour sites protégés)

Si la page est protégée par Cloudflare :

  1. Ouvrez la page dans votre navigateur
  2. Affichez le code source (Ctrl+U / Cmd+Option+U)
  3. Sélectionnez tout (Ctrl+A)
  4. Copiez (Ctrl+C)
  5. Collez dans l'onglet “Analyser du HTML

Métriques analysées

Entités Schema.org

Type Description
Organization Entreprises/organisations
Person Personnes avec relations (worksFor, memberOf)
Service Services proposés
Product Produits
LocalBusiness Entreprises locales

Éléments multimédias

Élément Analyse
Images Comptage total et vérification des attributs alt
Vidéos Détection (YouTube, Vimeo, hébergées)
Audio Détection des fichiers audio
Médias GEO Détection des blocs optimisés (geo-image, geo-video, geo-audio)

Contenu structuré

Élément Analyse
FAQ Détection des FAQ (<details>, Schema.org FAQPage)
Citations Comptage des <blockquote> et <cite>
JSON-LD Vérification de la présence de Schema.org en JSON-LD
Microdata Détection du balisage microdata

Métadonnées

Élément Analyse
Title Présence et longueur
Description Présence et longueur
Open Graph Vérification des balises OG
WordPress Détection automatique du CMS

Calcul du score

Le score maximum est de 100 points répartis en 4 catégories :

Catégorie Points max Critères
Entités 30 Organization (+10), Person (+5 chacune), Total ≥3 (+10)
Médias 25 Images avec alt (+10), Vidéos (+10), Audio (+5)
Structure 25 FAQ ≥2 (+10), FAQSchema (+5), Citations (+5), JSON-LD (+5)
Métadonnées 20 Title (+5), Description (+5), Open Graph (+5), JSON-LD (+5)

Interprétation du score


Export des résultats

Export PDF

Le rapport PDF professionnel inclut :

Export CSV

Le fichier CSV Excel-friendly inclut :


Services de scraping tiers

Pour les sites protégés par Cloudflare ou des systèmes anti-bot.

Services supportés

Service Description Tarification
ScrapingBee Excellent pour Cloudflare, JavaScript rendering 1000 crédits gratuits
ScraperAPI Rotation d'IP automatique 5000 crédits gratuits
Browserless Headless Chrome complet Limité sans abonnement
ZenRows Anti-bot avec IA 1000 crédits gratuits

Configuration

  1. Créez un compte sur le service de votre choix
  2. Récupérez votre clé API
  3. Modifiez le fichier scraping-config.json :
{
    "service": "scrapingbee",
    "api_key": "VOTRE_CLE_API",
    "options": {
        "render_js": "true",
        "premium_proxy": "true",
        "country_code": "fr"
    }
}

Stratégies de récupération

L'outil utilise plusieurs stratégies en cascade :

  1. Service de scraping (si demandé et configuré)
  2. Mode compatible avancé : Google Cache, Web Archive, Googlebot UA, Mobile UA
  3. Headers Chrome réalistes
  4. cURL basique
  5. file_get_contents
  6. Fallback service de scraping (si configuré mais non demandé)

Plugins WordPress recommandés

Si votre site utilise WordPress, l'audit recommande automatiquement :

GEO Blocks Suite

Blocs Gutenberg optimisés pour le SEO et les moteurs d'IA :

:icon-link: Documentation GEO Blocks Suite

GEO Authority Suite

Suite complète pour l'autorité et la visibilité IA :

:icon-link: Documentation GEO Authority Suite


Dépannage

Erreur "Impossible de récupérer la page"

Cause : L'URL cible bloque les requêtes (Cloudflare, anti-bot)

Solutions :

  1. Cochez l'option “Mode compatible”
  2. Cochez l'option “Service de scraping tiers” (si configuré)
  3. Utilisez l'onglet “Analyser du HTML

Vérifier CURL

php -m | grep curl
 
# Installer CURL si absent (Ubuntu/Debian)
sudo apt-get install php-curl
sudo systemctl restart apache2

Timeout

Cause : Page trop lourde ou serveur lent

Solution : Les timeouts sont configurés à 120 secondes pour les services de scraping.


Personnalisation

Modifier les coefficients de score

Éditez audit.php, fonction calculateBreakdown() :

// Exemple : augmenter l'importance des FAQ
if ($audit['content']['faq'] >= 2) $breakdown['structure'] += 15; // au lieu de 10

Ajouter de nouvelles analyses

  1. Créez une fonction dans audit.php
  2. Appelez-la dans analyzeHTML()
  3. Mettez à jour l'affichage dans index.html

Sécurité

Protection contre les abus

Ajoutez un rate limiting dans audit.php :

session_start();
 
// Limite : 10 audits par heure
if (!isset($_SESSION['audit_count'])) {
    $_SESSION['audit_count'] = 0;
    $_SESSION['audit_reset'] = time() + 3600;
}
 
if (time() > $_SESSION['audit_reset']) {
    $_SESSION['audit_count'] = 0;
    $_SESSION['audit_reset'] = time() + 3600;
}
 
if ($_SESSION['audit_count'] >= 10) {
    http_response_code(429);
    echo json_encode(['error' => 'Limite atteinte']);
    exit;
}
 
$_SESSION['audit_count']++;

Ressources


Licence

MIT License - Libre d'utilisation et de modification


Auteur

Erwan Tanguy - Ticoët

:icon-link: https://www.ticoet.fr/


Support

Pour toute question ou bug :


Version : 2.0
Dernière mise à jour : 20 Janvier 2025