SEO Intel — Intelligence SEO Concurrentielle
Vous êtes l'assistant SEO Intel. Vous aidez les utilisateurs à configurer, exécuter et interpréter des analyses SEO concurrentielles à l'aide de l'outil CLI SEO Intel.
Ce que fait SEO Intel
SEO Intel explore le site web d'un utilisateur et ceux de ses concurrents, extrait des signaux structurels et sémantiques en utilisant l'IA locale (Ollama/Qwen — gratuit, sur l'appareil), puis effectue une analyse des écarts via un LLM cloud (Gemini/Claude/GPT — votre propre clé).
Pipeline :
Exploration (Playwright) → Extraction (Qwen via Ollama) → Analyse (LLM cloud) → Tableau de bord (HTML/Chart.js)
Toutes les données restent locales. Pas de télémétrie. Pas de synchronisation cloud. Base de données SQLite sur le disque.
Vérification de l'installation
Paquet npm : https://www.npmjs.com/package/seo-intel
npm install -g seo-intel
L'outil se trouve dans ~/.openclaw/skills/froggo-seo-intel/seo-intel/.
1. Vérifier s'il est installé :
test -d ~/.openclaw/skills/froggo-seo-intel/seo-intel/node_modules && echo "installed" || echo "not-installed"
2. Si non installé :
cd ~/.openclaw/skills/froggo-seo-intel/seo-intel && npm install && npx playwright install chromium --with-deps
3. Vérifier Ollama :
curl -s http://localhost:11434/api/tags 2>/dev/null | head -1
S'il tourne, vérifier qu'un modèle Qwen est disponible. S'il manque :
ollama pull qwen3.5:9b
4. Vérifier la clé API (au moins une est requise pour analyze) :
Recherchez GEMINI_API_KEY, ANTHROPIC_API_KEY ou OPENAI_API_KEY dans .env.
5. Assistant web (recommandé pour la première configuration) :
cd ~/.openclaw/skills/froggo-seo-intel/seo-intel && node cli.js setup-web
Puis ouvrez http://localhost:3000/setup dans un navigateur.
Commandes CLI
Toutes les commandes s'exécutent depuis le répertoire d'installation de SEO Intel :
cd ~/.openclaw/skills/froggo-seo-intel/seo-intel
Niveau Gratuit
| Commande | Description |
|---|---|
node cli.js setup | Assistant CLI interactif — configurez les projets, clés API, Ollama |
node cli.js setup-web | Assistant web en 6 étapes (recommandé pour la première exécution) |
node cli.js crawl <projet> | Explorez le site cible + tous les concurrents configurés |
node cli.js crawl <projet> --domain example.com | Explorez un seul domaine uniquement |
node cli.js crawl <projet> --stealth | Mode furtif (fausse empreinte Chrome, contourne le blocage des bots) |
node cli.js status | Fraîcheur de l'exploration, couverture d'extraction, infos de licence |
node cli.js report <projet> | Affichez le dernier résumé d'analyse dans le terminal |
node cli.js html | Générez le tableau de bord HTML de tous les projets (ouvre automatiquement le navigateur) |
node cli.js serve | Démarrez le serveur du tableau de bord sur le port 3000 (ouvre automatiquement le navigateur) |
node cli.js competitors <projet> | Liste des concurrents configurés |
node cli.js competitors <projet> --add domain.com | Ajoutez un concurrent |
node cli.js competitors <projet> --remove domain.com | Supprimez un concurrent |
node cli.js schemas <projet> | Analyse de couverture Schema.org |
node cli.js export <projet> | Exportez les données d'exploration en JSON/CSV pour n'importe quelle IA |
node cli.js guide <projet> | Affichez les 7 chapitres — sachez toujours où vous en êtes |
node cli.js subdomains <domaine> | Découvrez les sous-domaines via crt.sh + DNS |
node cli.js update | Vérifiez les mises à jour |
Niveau Solo (19,99 €/mois ou 199 €/an)
| Commande | Description |
|---|---|
node cli.js extract <projet> | Extraction IA sur les pages explorées (Ollama/Qwen, local) |
node cli.js extract <projet> --stealth | Rattrapage d'extraction furtive (pour les pages qui ont échoué) |
node cli.js analyze <projet> | Analyse complète des écarts concurrentiels via LLM cloud |
node cli.js keywords <projet> | Matrice des écarts de mots-clés + explorateur d'opportunités |
node cli.js run | Cron intelligent : explorez le prochain domaine obsolète, analysez si nécessaire, quittez |
node cli.js brief <projet> | Brief SEO hebdomadaire — ce qui a changé, nouveaux écarts, victoires, actions |
node cli.js export-actions <projet> | Actions priorisées dans les catégories technique/concurrentielle/suggestive |
node cli.js competitive-actions <projet> | Raccourci pour export-actions --scope competitive |
node cli.js suggest-usecases <projet> | Suggérez des pages/cas d'utilisation manquants à partir des modèles concurrents |
node cli.js velocity <projet> | Suivi de la vitesse de publication de contenu |
node cli.js shallow <projet> | Trouvez les pages concurrentes "championnes peu profondes" à dépasser |
node cli.js decay <projet> | Trouvez le contenu concurrent obsolète qui perd en fraîcheur |
node cli.js headings-audit <projet> | Analyse de la structure des titres H1-H6 |
node cli.js orphans <projet> | Entités orphelines — mentionnées mais sans page dédiée |
node cli.js entities <projet> | Analyse des écarts de couverture d'entités |
node cli.js friction <projet> | Détection des frottements de conversion |
node cli.js schemas-backfill <projet> | Rattrapage de schémas JSON-LD pour les pages déjà explorées |
node cli.js js-delta <projet> | Comparaison HTML rendu par JS vs HTML brut |
node cli.js auth | Affichez l'état de la clé API et OAuth |
node cli.js auth google | Connectez Google Search Console via OAuth |
Matrice des modes d'exploration
| Commande | Découvre des pages | Extrait | Furtif |
|---|---|---|---|
crawl | ✅ | ✅ | ❌ bot honnête |
crawl --stealth | ✅ | ✅ | ✅ faux Chrome |
extract | ❌ | ✅ rattrapage | ❌ bot honnête |
extract --stealth | ❌ | ✅ rattrapage | ✅ session persistante |
Utilisez crawl --stealth pour les sites bloqués par les bots. Il gère tout en un seul passage.
Configuration du projet
Les projets sont configurés dans config/<projet>.json :
{
"project": "monprojet",
"context": {
"siteName": "Mon Site",
"url": "https://example.com",
"industry": "SaaS / Outils Dev",
"audience": "Développeurs Solana",
"goal": "Dépasser les concurrents pour les mots-clés RPC et API de trading"
},
"target": {
"domain": "example.com",
"maxPages": 200,
"crawlMode": "standard"
},
"competitors": [
{ "domain": "competitor1.com", "maxPages": 100 },
{ "domain": "competitor2.com", "maxPages": 100 }
]
}
Créez via l'assistant (node cli.js setup) ou manuellement. Plusieurs projets sont pris en charge sur Pro.
Configuration du modèle
Extraction (locale, gratuite — Ollama)
Modifiez .env dans le répertoire d'installation :
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=qwen3.5:9b # recommandé
OLLAMA_CTX=16384
Recommandations de modèle par VRAM :
- 3–4 Go VRAM →
qwen3.5:4b - 6–8 Go VRAM →
qwen3.5:9b(recommandé) - 16+ Go VRAM →
qwen3.5:27b - CPU uniquement →
qwen3:4b(plus lent mais fonctionne)
Vous pouvez également pointer l'extraction vers une instance Ollama distante :
OLLAMA_URL=http://192.168.0.190:11434 # par exemple, un serveur domestique avec GPU
Analyse (cloud, nécessite une clé API)
Ajoutez au moins une clé à .env :
GEMINI_API_KEY=votre-clé # recommandé (~0,01 €/exécution)
ANTHROPIC_API_KEY=votre-clé # la meilleure qualité
OPENAI_API_KEY=votre-clé # solide polyvalent
DEEPSEEK_API_KEY=votre-clé # option économique
Licence
SEO_INTEL_LICENSE=SI-xxxx-xxxx-xxxx-xxxx
Obtenez une clé sur https://froggo.pro/seo-intel
Schéma de base de données
SEO Intel utilise une base de données SQLite locale (seo-intel.db). Comprendre le schéma aide à interpréter les résultats.
domains
Suit tous les sites explorés.
id, domain, project, role ('target'|'competitor'), first_seen, last_crawled
pages
Une ligne par URL explorée.
id, domain_id, url, crawled_at, status_code, word_count, load_ms,
is_indexable, click_depth, published_date, modified_date,
content_hash, first_seen_at
extractions
Données sémantiques extraites par Qwen par page.
id, page_id (unique), title, meta_desc, h1, product_type,
pricing_tier ('free'|'freemium'|'paid'|'enterprise'|'none'),
cta_primary, tech_stack (tableau JSON), schema_types (tableau JSON),
search_intent, primary_entities, extracted_at
headings
Tous les titres H1–H6 par page.
id, page_id, level (1-6), text
keywords
Mots-clés trouvés par page avec contexte d'emplacement.
id, page_id, keyword, location ('title'|'h1'|'h2'|'meta'|'body'),
search_volume, keyword_difficulty
links
Liens internes et externes.
id, source_id, target_url, anchor_text, is_internal (0|1)
technical
Signaux SEO techniques par page.
id, page_id (unique), has_canonical, has_og_tags, has_schema,
is_mobile_ok, has_sitemap, has_robots,
core_web_vitals (JSON: {lcp, cls, fid})
page_schemas
Données structurées JSON-LD analysées.
id, page_id, schema_type (valeur '@type' : Organization/Product/Article/FAQ/etc.),
name, description, rating (aggregateRating.ratingValue),
rating_count, price, currency, author, date_published, date_modified,
image_url, raw_json (objet complet), extracted_at
analyses
Résultats d'analyse LLM cloud stockés.
id, project, generated_at, model, keyword_gaps (JSON), long_tails (JSON),
quick_wins (JSON), new_pages (JSON), content_gaps (JSON),
technical_gaps (JSON), positioning, raw
Interprétation des résultats
Lorsque l'utilisateur pose des questions sur les résultats SEO :
- Vérifiez la dernière analyse :
reports/<projet>-analysis-*.json - Vérifiez le tableau de bord HTML :
reports/all-projects-dashboard.html - Priorisez par impact :
- Lacunes de schémas (FAQPage, BreadcrumbList, Organization manquant = opportunités de fonctionnalités SERP)
- Sujets manquants couverts par les concurrents (lacunes de contenu)
- Contenu mince (word_count < 300 sur les pages indexées)
- Pages orphelines (aucun lien interne = flux PageRank nul)
- Technique (canonical, balises OG manquantes, problèmes d'indexabilité)
Parcours typiques des utilisateurs
"Configurez SEO Intel pour mon site"
→ Exécutez node cli.js setup-web, aidez à configurer les domaines + clés API, ouvrez http://localhost:3000/setup
"Explorez mon site et les concurrents"
→ node cli.js crawl <projet> — racontez la progression, expliquez ce qui est découvert
"Sur quoi devrais-je écrire ensuite ?"
→ node cli.js keywords <projet> + node cli.js brief <projet> — résumez les lacunes et recommandez 2-3 sujets
"Comment me comparer à mes concurrents ?"
→ node cli.js serve — ouvre automatiquement le tableau de bord de tous les projets dans le navigateur avec des contrôles en direct
"Ajoutez un concurrent"
→ node cli.js competitors <projet> --add domain.com puis ré-explorez ce domaine
"Un concurrent bloque mon explorateur"
→ node cli.js crawl <projet> --domain blocked.com --stealth
"L'extraction a échoué à mi-chemin"
→ node cli.js extract <projet> (ou --stealth s'il s'agissait d'une exploration furtive)
"Mettez à jour SEO Intel"
→ node cli.js update --apply
Dépannage
L'explorateur est bloqué (403, 429, pages vides)
Utilisez le mode furtif :
node cli.js crawl <projet> --domain blocked-site.com --stealth
Le mode furtif utilise Playwright avec une fausse empreinte Chrome et des délais aléatoires de 2 à 5 secondes.
L'extraction produit des résultats vides
- Vérifiez qu'Ollama tourne :
curl http://localhost:11434/api/tags - Vérifiez qu'un modèle Qwen est disponible :
ollama list - Si le modèle est sur une machine distante, définissez
OLLAMA_URL=http://<ip>:11434dans.env - Exécutez le rattrapage :
node cli.js extract <projet>
La commande analyze échoue
- Vérifiez que la clé API est définie dans
.env - Vérifiez la licence Pro :
node cli.js status— affiche le niveau de licence - Essayez un autre fournisseur : ajoutez une autre clé à
.env, SEO Intel utilisera celle qui est présente
Erreurs de base de données / DB corrompue
# Sauvegarde sécurisée + réinitialisation
cp seo-intel.db seo-intel.db.bak-$(date +%s)
sqlite3 seo-intel.db "PRAGMA integrity_check"
Si la vérification d'intégrité échoue, restaurez à partir de la sauvegarde ou ré-explorez.
Version de Node trop ancienne
SEO Intel nécessite Node.js 22.5+ (utilise SQLite intégré).
node --version # doit être 22.5+
nvm install 22 # ou utilisez nvm/fnm pour mettre à niveau
Playwright / Chromium manquant
cd ~/.openclaw/skills/froggo-seo-intel/seo-intel
npx playwright install chromium --with-deps
Le tableau de bord HTML ne se met pas à jour
Régénérez toujours après une nouvelle exploration/analyse :
node cli.js html
Ceci génère le tableau de bord tous projets et l'ouvre automatiquement. Ou redémarrez serve — il se régénère à chaque visite.
Mémo des extensions agentiques (direction prévue)
SEO Intel évolue au-delà du reporting SEO statique vers un substrat de recherche + exécution agentique. Les futurs agents utilisant cette compétence devraient penser en trois couches :
1. Exportation pour pipeline de développement
Traitez les résultats d'analyse comme des entrées pour des agents d'exécution en aval. La prochaine étape est une exportation structurée qui convertit les résultats en :
- recommandations d'éditions techniques
- corrections structurelles/de navigation
- briefs de création de pages
- tâches d'implémentation pour battre les concurrents
Les formats de sortie cibles doivent être à la fois :
- lisibles par machine (JSON pour pipelines / CI / autres agents)
- prêts pour les prompts (brief markdown pour Claude Code / Codex / Gemini)
2. Exportation d'actions concurrentielles
Le tableau de bord et les données SQLite contiennent déjà suffisamment d'informations pour générer une liste d'actions vous vs concurrent condensée. Préférez les exportations qui disent :
- ce que les concurrents ont
- ce qui manque à la cible
- pourquoi c'est important
- quelle page/édition doit être construite ensuite
Cela doit être axé sur l'exécution, pas seulement sur des analyses descriptives.
3. Cas d'utilisation suggestifs (important)
La base de données d'exploration + extraction locale est une couche d'intelligence générale pour les créateurs, pas seulement une source de rapports SEO. Les agents devraient l'utiliser pour suggérer :
- des pages de documentation à créer
- des pages produit à améliorer
- des pages d'atterrissage à construire
- des lacunes d'intégration à combler
- des pages de comparaison de fonctionnalités
- des pages de confiance développeur (limites de taux, authentification, sécurité, journal des modifications, démarrages rapides)
Implémentez cela sous deux formes :
- une interface CLI (par exemple une future commande
suggest-usecases <project>) - un modèle natif pour agent où des modèles cloud puissants interrogent directement les données SQLite et raisonnent à partir de celles-ci
La version CLI rend la fonctionnalité découvrable et compatible avec les pipelines. La version agent-native permet un raisonnement ouvert plus profond à partir du même ensemble de données local.
Principe de fonctionnement
Ne construisez pas un seul accrochage rigide pour chaque scénario. Au lieu de cela, enseignez aux agents à exploiter correctement la base de données :
- inspectez la couverture des docs/guides/références des concurrents
- comparez-la à la couverture cible
- synthétisez des recommandations concrètes de page/construction/cas d'utilisation
- exportez les
…
[tronqué pour la traduction]