Que fait SEOG — SEO local via MCP ?
Présentation
SEOG (seog.ai) est une plateforme de SEO local basée sur l'IA destinée aux entreprises présentes sur Google Maps. Son serveur MCP distant expose l'intégralité du produit sous forme de 90 outils — les mêmes services de domaine que les boutons de l'application web appellent — afin qu'un agent puisse mener une pratique complète de SEO local sans ouvrir de navigateur : importer une entreprise, suivre les positions de mots-clés, scanner la visibilité sur une grille géographique, synchroniser et répondre aux avis Google, surveiller les concurrents, auditer le site web et la Search Console, publier des publications Google et générer des rapports PDF.
Point de terminaison : https://api.seog.ai/mcp (HTTP streamable), authentifié avec un token personnel.
Chaque appel s'exécute sous le compte SEOG associé — il n'y a pas de mode anonyme.
Instructions
Configuration
Inscrivez-vous sur https://app.seog.ai, puis Paramètres → Accès MCP pour générer un token personnel (affiché une fois). Installez de l'une des deux manières suivantes :
En tant que plugin Claude Code (recommandé — regroupe cette compétence et la configuration du serveur) :
/plugin marketplace add TerminalSkills/skills
/plugin install seog@terminal-skills
Claude Code demande le token lors de l'installation et le stocke dans le gestionnaire d'identifiants. En mode non interactif (scripts, CI) :
claude plugin marketplace add TerminalSkills/skills
claude plugin install seog@terminal-skills --config mcp_token="$SEOG_MCP_TOKEN"
Vérifiez avec /plugin list (seog → enabled) et /mcp (seog → connected).
En tant que compétence + serveur MCP enregistré manuellement (n'importe quel client) :
npx terminal-skills install seog
claude mcp add --transport http seog https://api.seog.ai/mcp \
--header "Authorization: Bearer $SEOG_MCP_TOKEN"
Pour Codex / Gemini CLI / Cursor, enregistrez un serveur MCP HTTP avec la même URL et l'en-tête Authorization: Bearer. Vérifiez avec tools/list — 90 outils du serveur seog-platform (moins sur les comptes white-label ; voir Directives).
Compte, forfait et crédits — à lire avant d'exécuter des outils payants
- Le token identifie un compte SEOG ; les outils agissent uniquement sur les données de ce compte.
- SEOG facture en crédits (CR) selon une règle : tout ce qui appelle une API externe est payant, au même prix que le clic équivalent dans l'application. Les lectures de données déjà stockées sont gratuites. Cela inclut les annulations et suppressions — chaque appel rejoue un appel vers Google.
get_credit_balanceretourne le solde + le forfait ;list_feature_pricesdonne le prix de chaque outil payant. Vérifiez les deux avant une campagne multi-entreprises.- Un outil payant qui échoue n'est pas facturé (livré ou remboursé), donc un échec ne coûte jamais d'argent en silence.
create_reportest le seul cas asynchrone : il retourne immédiatement un rapport QUEUED et l'argent est débité lors de la génération du PDF (remboursé en cas d'échec), donc interrogezget_reportplutôt que de supposer que les crédits ont été déplacés lors de la mise en file d'attente.
Carte des outils
Schémas complets des paramètres et notes de prix : references/mcp-tools.md.
💳 = dépense des crédits.
| Domaine | Outils |
|---|---|
| Entreprises | list_businesses, get_business, search_places💳, import_business💳, update_business, delete_business |
| Santé du profil | get_business_audit, get_action_plan, list_recommendations, analyze_business_profile, set_recommendation_status |
| Édition du profil (écrit vers Google) | apply_profile_fix💳, undo_profile_fix💳, draft_business_description💳, apply_business_description💳, undo_business_description💳, list_profile_photos, delete_profile_photo💳, get_profile_fix_options, list_recent_profile_edits |
| Positions | list_keywords, add_keyword💳, check_keyword💳, refresh_rankings💳, keyword_history, keyword_recommendations💳, keyword_recommendations_cache, toggle_keyword, remove_keyword |
| Grille cartographique + réponses IA | run_grid_scan💳, get_latest_grid_scan, get_keyword_grid_scan, get_grid_history, get_grid_snapshot, check_ai_overview💳, get_ai_overview |
| Avis | list_reviews, review_stats, sync_reviews💳, draft_review_response, generate_review_reply💳, publish_review_reply💳, verify_review_reply💳 |
| Concurrents | discover_competitors💳, get_discovered_competitors, list_competitors, add_competitor💳, remove_competitor, set_competitor_watchlist, snapshot_competitor💳, refresh_competitors💳, compare_competitors, list_competitor_alerts, mark_competitor_alerts_read, scan_competitor_spam |
| Visibilité IA | get_ai_visibility, get_ai_visibility_pillars, get_ai_presence_matrix, check_ai_visibility💳, list_citations, check_citations💳 |
| Site web + Search Console | get_website_analysis, refresh_website_analysis💳, refresh_website_all💳, get_search_performance, get_search_console_status, load_search_performance💳 |
| Publications Google | list_posts, get_post_templates, validate_post, draft_post_content💳, publish_post💳, refresh_posts💳, delete_post💳 |
| Connexion Google | get_google_connection_status, get_gbp_performance, load_gbp_performance💳, load_gbp_keyword_history💳, list_gbp_import_locations, import_gbp_business💳 |
| Compte + rapports | get_dashboard, get_credit_balance, list_feature_prices, get_metrics_history, list_reports, create_report💳, get_report, delete_report, refresh_business_profile💳, refresh_business_overview💳 |
Workflows principaux
Onboarding — search_places → import_business avec le placeId choisi. Si le compte Google de l'utilisateur est déjà connecté, privilégiez list_gbp_import_locations → import_gbp_business : cela lie la connexion propriétaire, ce qui est nécessaire pour les réponses aux avis et les publications.
Suivi des positions — lisez keyword_recommendations_cache (gratuit) avant de payer pour keyword_recommendations ; add_keyword (locationLabel optionnel pour classer depuis un quartier) ; check_keyword pour une vérification en direct ou refresh_rankings pour tous les mots-clés actifs en une seule facturation ; keyword_history pour la tendance ; run_grid_scan pour la couverture cartographique sur une grille (le prix dépend de gridSize).
Gérer les avis — sync_reviews → list_reviews(filter="needs-response") → generate_review_reply pour un brouillon → demander à l'utilisateur → publish_review_reply (visible publiquement sur Google) → verify_review_reply pour confirmer la publication. draft_review_response enregistre un brouillon local et ne publie rien.
Corriger la fiche — get_action_plan / get_business_audit pour identifier les lacunes, puis apply_profile_fix (téléphone, site web, horaires, nom, statut) ou draft_business_description → apply_business_description. Les deux écrivent dans la fiche en direct ; undo_profile_fix / undo_business_description permettent d'annuler.
Diagnostic au-delà de la fiche — get_website_analysis + get_search_performance (lectures gratuites des dernières exécutions), refresh_website_all pour relancer les deux en une seule facturation ; get_ai_visibility_pillars et list_citations pour l'état de préparation aux réponses IA et la cohérence NAP.
Exemples
Exemple 1 : Résumé hebdomadaire, conscient des crédits
« Comment se portent mes clients cette semaine ? »
1. get_credit_balance → 180 CR (forfait Growth) — assez pour la campagne
2. list_businesses → 15 entreprises
3. par entreprise : refresh_rankings # une facturation pour tous les mots-clés actifs
sync_reviews → list_reviews(filter="needs-response")
compare_competitors + list_competitor_alerts # les deux gratuits
4. generate_review_reply pour chaque avis négatif sans réponse → présenter les brouillons
5. get_action_plan(businessId) → correctifs priorisés pour le résumé
La publication (publish_review_reply) attend le « oui » explicite du propriétaire.
Exemple 2 : Crédits épuisés en cours de campagne
> run_grid_scan(businessId, keywordId, gridSize=7)
✗ Pas assez de crédits : cette action coûte 45 CR et le solde du compte est de 12 CR.
Rien n'a été exécuté et rien n'a été facturé. Rechargez ou passez à un forfait supérieur sur
https://app.seog.ai/billing, puis réessayez.
Comportement correct : transmettez les chiffres et le lien, arrêtez la campagne payante (ne réessayez pas en boucle), et terminez le résumé avec des lectures gratuites — list_keywords, get_latest_grid_scan, review_stats, get_action_plan fonctionnent toujours.
Directives
- L'argent est réel. N'exécutez jamais un outil payant que l'utilisateur n'a pas demandé. Évaluez le coût d'un lot avec
list_feature_priceset vérifiezget_credit_balanced'abord. Privilégiez les facturations groupées (refresh_rankings,refresh_website_all,refresh_business_overview) plutôt que des boucles par élément — elles coûtent moins cher pour le même travail. - Publier est public et difficile à annuler.
publish_review_reply,publish_post,apply_profile_fixetapply_business_descriptionécrivent dans la fiche Google en direct. Citez le texte exact et obtenez l'approbation d'abord. Changer le NOM de l'entreprise peut entraîner une revérification par Google — prévenez avant de le faire. - Les outils irréversibles nécessitent
confirm: true—delete_business,delete_profile_photo,delete_post,remove_keyword,remove_competitor,delete_report. Sans ce paramètre, ils refusent de s'exécuter, par conception : citez exactement ce qui sera supprimé, obtenez un oui, puis transmettez-le.delete_businesscascade les avis, mots-clés, positions et concurrents ; les photos et publications supprimées ne peuvent pas être restaurées. Privilégieztoggle_keywordlorsque l'utilisateur souhaite seulement interrompre le suivi. - Lisez l'erreur au lieu de réessayer. Les erreurs d'outil sont auto-descriptives :
INSUFFICIENT_CREDITSdonne le prix, le solde et l'URL de recharge ;PLAN_REQUIREDsignifie que l'essai est terminé ou qu'aucun forfait n'existe ;FEATURE_NOT_IN_PLANnomme la fonctionnalité et le forfait. Transmettez-les — une boucle de réessai échouera à nouveau. - Certains outils sont absents par conception. Les comptes white-label/agence ne disposent pas des outils qui renvoient du contenu Google brut (
search_places,check_keyword,sync_reviews,discover_competitors,run_grid_scan,import_gbp_business, …). Si un outil est « introuvable », dites que le compte n'y est pas autorisé plutôt que de deviner. - Le téléchargement de photos et l'OAuth Google / Search Console restent dans l'application web (fichiers octets et un navigateur). Tout le reste est disponible ici.
- Les ID sont des UUID limités au compte du token — une erreur 404 sur un UUID d'apparence valide signifie généralement qu'il appartient à un autre compte.
- Le token est un identifiant : ne le commettez jamais et nettoyez-le des logs et transcriptions. Un code 401 signifie qu'il a été révoqué dans les Paramètres — demandez à l'utilisateur d'en générer un nouveau.