Ranki.io SEO/AEO consultant

officiel

Le serveur MCP SEO et AEO gratuit qui transforme votre bureau Claude / Cursor / ChatGPT Desktop en consultant SEO + AEO senior. Audite n'importe quelle URL, génère sitemap.xml / llms.txt / robots.txt, détecte les lacunes de mots-clés et indique précisément à votre IA quoi corriger — le tout en utilisant vos propres crédits IA, jamais les nôtres.

Que pouvez-vous faire avec Ranki Io SEO AEO Consultant MCP ?

  • Audit on-page SEO — Exécutez audit_seo sur n’importe quelle URL pour obtenir un score de 0 à 100 couvrant les titres, méta-descriptions, canoniques, couverture des attributs alt d’images et présence JSON-LD, avec des recettes correctives par échec.
  • Audit Answer Engine Optimization — Utilisez audit_aeo pour vérifier le schéma FAQPage, les introductions définitionnelles, llms.txt, les permissions des bots IA et les titres de type réponse, afin que votre site soit cité par ChatGPT et Claude.
  • Mesurez les Core Web Vitals et la vitesse — Appelez audit_speed ou audit_core_web_vitals pour récupérer les scores Lighthouse réels et les métriques LCP/CLS/INP, puis obtenez des commandes d’optimisation d’images précises via optimize_images.
  • Générez des fichiers SEO essentiels — Produisez en une seule étape des fichiers robots.txt, sitemap.xml, llms.txt et un schéma JSON-LD prêts pour le déploiement avec seo_starter_kit ou les outils individuels generate_*.
  • Trouvez des opportunités de contenu — Demandez find_topic_ideas pour un brief structuré de 15 sujets d’articles par intention, ou utilisez find_keyword_gap pour découvrir des mots-clés pour lesquels vos concurrents se classent et pas vous.
  • Classez les pages cachées — Exécutez audit_hidden_pages sur un domaine pour identifier les routes d’administration, les brouillons et les pages noindex, puis recevez un bloc robots.txt prêt à être copié.

Documentation

Ranki MCP — SEO, AEO, optimisation de la vitesse et des images gratuit pour Cursor, Claude Code, Windsurf et ChatGPT

Le MCP qui ne se contente pas de rapporter — votre agent corrige. Audite n'importe quelle URL pour le SEO et l'Optimisation pour les Moteurs de Réponses, mesure les Core Web Vitals réels via Google PageSpeed Insights, et demande à votre agent de convertir les images en AVIF et WebP, de réécrire les balises <img> en <picture> responsive avec srcset et alt, d'ajouter du schéma JSON-LD, de générer sitemap.xml / llms.txt / robots.txt, de classifier les pages cachées — puis relance l'audit pour prouver que le score a évolué. Le tout dans Claude Code, Claude Desktop, Cursor, Windsurf et ChatGPT Desktop.

MCP 2024-11-05 License: MIT npm @ranki.io/mcp live mcp.ranki.io Skill repo

Installation en une ligne

npx @ranki.io/cli install

La CLI détecte automatiquement quel éditeur IA vous avez installé (Claude Code, Claude Desktop, Cursor, Windsurf, ChatGPT Desktop), écrit la bonne configuration MCP au bon endroit et télécharge le fichier Skill compagnon depuis le dépôt ranki-seo-skills. Ré-exécutez npx @ranki.io/cli update plus tard pour rafraîchir le Skill ; npx @ranki.io/cli check vérifie la configuration.

Vous préférez le snippet JSON manuel ? Des exemples pour chaque éditeur se trouvent dans la section Installation ci-dessous.

Deux implémentations, mêmes outils

Ce dépôt fournit le MCP en deux implémentations paritaires afin que vous puissiez choisir celle qui convient à votre stack :

  • server/ — référence PHP 8.4, le déploiement de production qui alimente mcp.ranki.io. Hébergé, renforcé, zéro dépendance, s'exécute derrière Cloudflare. C'est sur cela que mcp.ranki.io est construit.
  • ts-server/ — référence Node / TypeScript, publié en tant que @ranki.io/seo-aeo-mcp sur npm. Alternative native Node pour les développeurs qui préfèrent l'outillage JavaScript, installable via npx -y @ranki.io/seo-aeo-mcp (stdio) ou npx @ranki.io/seo-aeo-mcp --serve (HTTP).

Les deux exposent les mêmes 22 outils avec la même sortie JSON, la même protection SSRF, la même sémantique de limite de débit et la même posture de sécurité. L'implémentation TS exécute les 15 outils gratuits nativement dans Node, et proxyfie les 7 outils payants vers la même API REST à app.ranki.io que le serveur PHP utilise. Aucun des deux n'ouvre jamais de base de données — les outils payants passent par le middleware ApiKeyAuth de Laravel et sont limités aux données de l'utilisateur appelant.

Ce qu'il fait réellement — 22 outils

Le serveur MCP expose 22 outils. Votre agent les appelle comme n'importe quel autre outil MCP ; ils retournent des rapports Markdown que votre agent affiche en ligne puis sur lesquels il agit — conversion de fichiers, réécriture de HTML, génération de nouveaux fichiers, commit du résultat.

Audit

  • audit_seo(url) — Fiche de score SEO on-page en 10 points : longueur du titre, meta description, unicité du H1, canonique, viewport, HTTPS, complétude OpenGraph, couverture des attributs alt des images, nombre de liens internes, présence de JSON-LD. Retourne un score de 0 à 100 avec des recettes de correction par échec.
  • audit_aeo(url) — Fiche de score d'Optimisation pour les Moteurs de Réponses en 8 points : JSON-LD FAQPage / Article, introduction définitionnelle de moins de 80 mots, signature de l'auteur, présence de llms.txt, robots.txt autorise GPTBot / ClaudeBot / PerplexityBot, titres H2/H3 de style réponse, tableaux de comparaison.
  • audit_hidden_pages(urls, domain) — classifie chaque chemin comme robots-disallow, noindex, keep ou unsure avec justification. Détecte les routes d'administration, les points de terminaison API, les brouillons, les pages de connexion, les tableaux de bord de compte, les pages de remerciement, les artefacts de build et les URL de résultats de recherche. Retourne un bloc robots.txt prêt à coller.

Vitesse et images — c'est la partie que rien d'autre ne fait

  • audit_speed(url, strategy) — scores Lighthouse réels (Performance, Accessibilité, SEO, Bonnes Pratiques) et Core Web Vitals (LCP, CLS, INP, FCP, TTFB) via Google PageSpeed Insights. Retourne les opportunités d'images avec les octets économisés par fichier, le JS / CSS bloquant le rendu, et les audits SEO on-page en échec. La stratégie par défaut est mobile (Google classe en priorité la version mobile).
  • audit_core_web_vitals(url) — un paragraphe par métrique avec la recette de correction littérale. "L'élément LCP est hero.png à 2,4 Mo, la conversion en WebP économise 1,8 Mo → -1,1s LCP." Extrait l'URL de l'élément LCP de Lighthouse pour que l'agent sache exactement quel fichier optimiser.
  • optimize_images(images, max_width) — pour chaque image : format cible (AVIF + WebP), largeurs responsive 1×/2×, suggestion de texte alternatif, les commandes littérales sharp-cli / cwebp / avifenc, et un bloc <picture> prêt à coller avec srcset. Votre agent exécute la conversion localement dans le dépôt et réécrit les balises <img>.

Générer

  • generate_sitemap_xml(urls) — construit un sitemap.xml prêt à déployer à partir d'une liste d'URL avec les horodatages lastmod actuels.
  • generate_llms_txt(site_name, summary, key_pages) — génère llms.txt, le standard émergent pour indiquer aux robots d'exploration IA ce qu'est votre site et quelles pages citer.
  • generate_robots_txt(sitemap_url, allow_ai, disallow_paths) — construit un robots.txt qui autorise ou refuse explicitement GPTBot, ChatGPT-User, ClaudeBot, anthropic-ai, PerplexityBot et Google-Extended.

Contenu et stratégie

  • seo_starter_kit(domain) — retourne les quatre fichiers de base que la plupart des sites codés rapidement n'ont pas (robots.txt, sitemap.xml, llms.txt, JSON-LD) prêts à coller dans votre dépôt.
  • find_topic_ideas(url) — lit votre page d'accueil, déduit votre niche, et retourne un brief structuré pour générer 15 sujets d'articles couvrant les intentions informationnelles, commerciales et transactionnelles avec des critères de priorisation.
  • find_keyword_gap(url, competitors) — retourne une méthodologie étape par étape pour trouver les mots-clés sur lesquels les concurrents se classent mais pas vous. Si aucun concurrent n'est donné, demande à votre éditeur de demander d'abord.
  • propose_titles_metas(urls, focus_keyword) — extrait le titre réel, le h1 et le premier paragraphe de chaque URL (ou accepte une description en texte libre pour les pages non déployées), puis retourne un tableau Markdown avec 5 candidats de titre et de meta description par page selon 5 angles (descriptif, axé sur les bénéfices, format question, nombre spécifique, mot-clé en premier). Chaque candidat est signalé pour la conformité de longueur.
  • explain_seo_terms(category) — glossaire de référence de plus de 40 termes SEO et AEO : SEO, AEO, GEO, JSON-LD, FAQPage, canonique, llms.txt, Core Web Vitals, E-E-A-T, mise à jour du contenu utile, pages passerelles, et plus. Filtrer par catégorie : bases, AEO, technique, analytique, pénalité.

Installation

  • install_skill(agent) — retourne les commandes d'installation pour le Skill ranki-seo-skills sur Claude Code, Claude Desktop, Cursor, Windsurf, les Projets web Claude.ai et les agents AGENTS.md génériques.

Votre compte Ranki.io — données de classement réelles dans votre IDE (clé API payante)

  • get_account() — whoami pour votre clé API : nom, email, plan, limites quotidiennes et mensuelles, utilisation actuelle.
  • list_projects() — liste les projets dans votre compte Ranki.io.
  • list_articles(project_id) — index paginé des articles dans un projet : nano_id, titre, statut, langue, focus_keyword[], plan de la table des matières, nombre de mots, score SEO. Filtre de statut optionnel.
  • get_article(article_id) — récupère un seul article par son nano_id : titre, HTML, mots-clés principaux, table des matières, URL des images intégrées, score SEO.
  • list_rank_tracking(project_id) — résumé Google Search Console pour un projet : totaux sur 28 jours, top 20 des mots-clés par clics, top 20 des mots-clés d'opportunité (position > 10 avec impressions — les gains faciles).
  • list_gsc_keywords(project_id) — liste complète paginée des mots-clés GSC, triable par clics / impressions / position / CTR.
  • ai_visibility(project_id) — instantanés enregistrés de citations IA : lesquels de vos sujets suivis sont apparus dans les SERP de ChatGPT, Claude, Perplexity et Google AI Overviews au moment de la capture.

À quoi ressemble une session typique

You:    audit my site speed and fix the slow images

Claude: → Calling ranki.audit_speed(url="https://myapp.dev")
        ← Lighthouse: 42 perf · LCP 4.8s · 3 images blocking the paint.
        → Calling ranki.optimize_images([hero.png, banner.jpg, card.png])…
        ← 3 files, recipes returned.
        → Running sharp-cli to convert hero.png → hero.avif + hero.webp + hero@2x.avif…
        → Editing app/page.tsx — rewriting <img> as <picture srcset>, adding alt text…
        → Calling ranki.audit_speed again to verify…
        ← Lighthouse: 96 perf · LCP 1.4s.

You:    now find pages that shouldn't be in Google

Claude: → Calling ranki.audit_hidden_pages(domain="https://myapp.dev")
        ← 8 robots-disallow, 12 noindex, 118 keep, 4 unsure.
        → Editing public/robots.txt to disallow /admin /dashboard /checkout /account…
        → Adding <meta name="robots" content="noindex"> to app/search/page.tsx…
        Done. Submit URL-removal requests in Search Console for the 8 admin pages.

Le fichier Skill (dans ranki-seo-skills) indique à votre agent quand appeler quel outil, dans quel ordre, et où dans votre dépôt appliquer chaque correction.

Limites de débit

NiveauPlafond quotidienPortéeOutils disponibles
Sans clé5 appelspar IP15 outils gratuits (audits, générateurs, vitesse, optimisation d'images, stratégie de contenu, installation)
Clé API Ranki.io500 appelspar cléLes 22 outils, y compris les 7 outils passerelles qui lisent vos mots-clés GSC réels, le suivi de classement, les citations IA, la liste de projets et la bibliothèque d'articles depuis votre compte Ranki.io

Obtenez une clé sur app.ranki.io/developer. X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset sont retournés à chaque réponse. Les messages d'erreur du répartiteur incluent le compte à rebours de réinitialisation et le chemin de mise à niveau.


Installation

Claude Desktop / Claude Code (recommandé pour la plupart des codeurs rapides)

Ajoutez à ~/.claude/claude_desktop_config.json :

{
  "mcpServers": {
    "ranki": {
      "command": "npx",
      "args": ["-y", "@ranki.io/mcp"],
      "env": { "RANKI_API_KEY": "rk_live_..." }
    }
  }
}

Redémarrez Claude Desktop. L'indicateur MCP devrait afficher ranki avec 22 outils.

Cursor (transport HTTP, pas besoin de npx)

.cursor/mcp.json dans votre projet :

{
  "mcpServers": {
    "ranki": {
      "url": "https://mcp.ranki.io",
      "headers": { "X-API-Key": "rk_live_..." }
    }
  }
}

ChatGPT Desktop, Continue.dev, Zed, tout ce qui est compatible MCP

Si le client supporte MCP stdio, utilisez le snippet Claude Desktop. S'il supporte MCP HTTP, utilisez le snippet Cursor.

Obtenez votre clé API gratuite

Visitez app.ranki.io/developer et cliquez sur Révéler. Votre clé existe déjà — chaque compte Ranki.io en reçoit une créée automatiquement. Les outils de conseil gratuits fonctionnent sans clé (5 appels/IP/jour) ; les outils passerelles list_projects et get_article en nécessitent une.


Comment les codeurs rapides l'utilisent

Scénario 1 : "Je viens de livrer un site, que dois-je faire ?"

You: I just shipped my Next.js app at https://myapp.com. What SEO do I need?

Claude (via Ranki MCP):
  → Calling seo_starter_kit(domain="myapp.com")
  ← [Returns robots.txt + sitemap.xml + llms.txt + JSON-LD templates]
  → Writing public/robots.txt
  → Writing public/sitemap.xml (enumerating pages from app/ directory…)
  → Writing public/llms.txt
  → Adding JSON-LD <script> to app/layout.tsx
  → Calling audit_seo to verify…
  ← Score: 92/100. 🎉

Scénario 2 : "Pourquoi ChatGPT ne cite-t-il pas ma documentation ?"

You: Why doesn't ChatGPT cite my docs site?

Claude (via Ranki MCP):
  → Calling audit_aeo(url="https://docs.myproduct.com")
  ← Score 38/100. Failing: no FAQPage schema, no llms.txt, robots.txt blocks ClaudeBot.
  → Fixing each failure in your repo…
  ← Score 88/100. Re-deploy and ChatGPT should pick it up within 7-14 days.

Scénario 3 : "Je ne sais pas quels articles de blog écrire"

You: I have a Stripe alternative landing page but the blog is empty. Help.

Claude (via Ranki MCP):
  → Calling find_topic_ideas(url="https://mystripe-alt.com")
  ← [Returns brief with topic generation methodology + 15-topic structure]
  → [Generates 15 topics organized by intent, picks top 3]
  ← Recommended first 3 articles:
     1. "How to switch payment processors without losing customers" (transactional)
     2. "Stripe vs us: side-by-side fee comparison for $10K/mo MRR" (commercial)
     3. "What is interchange-plus pricing and why most SaaSes overpay" (informational)

Scénario 4 : "Quels mots-clés de gap me manquent ?"

You: My competitors are stripe.com and lemonsqueezy.com. What am I missing?

Claude (via Ranki MCP):
  → Calling find_keyword_gap(url="https://mystripe-alt.com",
                              competitors=["stripe.com","lemonsqueezy.com"])
  ← [Returns methodology + per-competitor analysis steps]
  → Crawling /blog on both competitors…
  → Cross-referencing against your sitemap…
  ← 5 high-value gaps found:
     - "PCI compliance for small SaaS" (covered by Stripe, not you)
     - "How to handle subscription dunning" (covered by both, not you)
     - … 3 more

Architecture

┌────────────────────────┐         ┌──────────────────────────┐
│  Claude / Cursor / etc │         │  mcp.ranki.io (PHP)      │
│                        │         │                          │
│  1. Sees 22 tools      │ JSON-RPC│  - 22 tool definitions   │
│  2. Decides to use one ├────────►│  - HTTP + stdio (npx)    │
│  3. Receives advice    │         │  - 5/IP or 500/key per   │
│  4. Acts on the repo   │         │    UTC day rate limit    │
│                        │         │  - REST API bridge       │
└────────────────────────┘         └────────────┬─────────────┘
                                                │ (only for keyed tools)
                                                ▼
                                   ┌──────────────────────────┐
                                   │  app.ranki.io REST API   │
                                   │  /api/v1/projects        │
                                   │  /api/v1/articles/...    │
                                   └──────────────────────────┘

Deux transports

  • stdio (Claude Desktop, Claude Code, la plupart des clients MCP) — installez le package npm @ranki.io/mcp, qui est un shim Node.js de 50 lignes proxyfiant stdio JSON-RPC vers https://mcp.ranki.io.
  • HTTP (Cursor, clients personnalisés) — pointez directement vers https://mcp.ranki.io. Aucune installation Node nécessaire.

Disposition du dépôt

ranki-mcp/
├── server/                     # PHP MCP server (deployed to mcp.ranki.io)
│   ├── public/index.php        #   GET → marketing landing page (HTML)
│   ├── index.php               #   POST → JSON-RPC 2.0 dispatcher
│   ├── lib/
│   │   ├── jsonrpc.php         #   JSON-RPC reply helpers
│   │   ├── registry.php        #   Tool registry + REST API bridge
│   │   └── ratelimit.php       #   Per-IP rate limit (5/day for free tier)
│   └── tools/
│       ├── seo_starter_kit.php
│       ├── find_topic_ideas.php
│       ├── find_keyword_gap.php
│       ├── audit_aeo.php
│       ├── audit_seo.php
│       ├── generate_sitemap_xml.php
│       ├── generate_llms_txt.php
│       ├── generate_robots_txt.php
│       ├── list_projects.php
│       └── get_article.php
└── npx/                        # Node.js stdio shim (published as @ranki.io/mcp)
    ├── package.json
    ├── index.js                #   ~50 lines: stdin→POST→stdout
    └── README.md

SEO vs AEO — quelle est la différence ?

SEO (Search Engine Optimization) consiste à faire en sorte que votre site se classe dans les 10 liens bleus classiques sur Google. Les signaux : balises title, meta descriptions, H1, canoniques, sitemap, liens internes, vitesse de la page, adapté aux mobiles, HTTPS. Des outils comme Ahrefs / SEMrush / SurferSEO notent ces éléments.

AEO (Answer Engine Optimization) consiste à faire en sorte que votre site soit cité lorsque ChatGPT, Claude, Perplexity ou Google AI Overviews répondent à la question d'un utilisateur. Les signaux sont différents :

  • JSON-LD FAQPage — le plus grand signal de citation unique.
  • Intros définitionnelles — le premier paragraphe est une réponse concise "X est …".
  • Signature de l'auteur + E-E-A-T — les LLM préfèrent les sources citées avec des auteurs nommés.
  • llms.txt — invitation explicite pour que les LLM utilisent votre contenu.
  • robots.txt autorisant les robots IA — GPTBot / ClaudeBot / PerplexityBot ne doivent PAS être bloqués.
  • Titres de style réponse — H2/H3 formulés comme des questions ("Qu'est-ce que X ?", "Comment fonctionne X ?").
  • Tableaux de comparaison — l'élément HTML le plus cité dans les AI Overviews.

audit_aeo vérifie ces 8 points et dit exactement à votre IA quoi corriger. En 2026, le trafic AEO est le canal SEO à la croissance la plus rapide et la plupart des sites ont une couverture nulle.


llms.txt — le standard émergent de recherche IA

Inspiré par robots.txt mais pour les LLM. Un fichier Markdown à /llms.txt indique aux robots d'exploration IA :

  • De quoi parle votre site (en anglais simple, pas en métadonnées).
  • Quelles pages sont les plus importantes.
  • Comment vous citer.
# Acme Corp

> Acme makes the SDK for shipping React Native apps faster.

## Key pages

- [Homepage](https://acme.dev/)
- [Documentation](https://acme.dev/docs)
- [Pricing](https://acme.dev/pricing)
- [Blog](https://acme.dev/blog)

## About

- Founded 2024, based in Berlin.
- Used by 12,000+ teams including Linear and Notion.
- Open source SDK on github.com/acme/sdk.

Utilisez generate_llms_txt pour en créer un en 5 secondes.


Auto-hébergement

Le serveur MCP est du PHP 8.4 simple — pas de framework, pas de base de données, pas de dépendances Composer. Déposez le répertoire server/ derrière un vhost Nginx servant public/index.php et c'est terminé.

server {
  server_name mcp.yourdomain.com;
  root /var/www/ranki-mcp/server/public;
  index index.php;
  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }
  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
  }
}

Le lib/ratelimit.php utilise des fichiers dans /tmp/ pour la limitation de débit par IP — fonctionne immédiatement. Pour une limitation de débit soutenue par Redis à grande échelle, échangez l'implémentation.


Contribuer

Les PR sont les bienvenues pour de nouveaux outils de conseil. Pour ajouter un outil :

  1. Créez server/tools/your_tool.php renvoyant un function (array $args, string $apiKey): array appelable.
  2. Renvoyez rk_mcp_text_content("...your structured advice...").
  3. Enregistrez l'outil dans server/lib/registry.php sous rk_mcp_tool_definitions().

Nommage des outils : <verb>_<noun> snake_case (ex. audit_aeo, find_topic_ideas).

Philosophie des outils : renvoyer des données + des instructions pour l'IA appelante, ne jamais appeler un LLM vous-même.


FAQ

Est-ce que cela coûte de l'argent ?

Les outils de conseil (tout sauf list_projects / get_article) sont gratuits — 5 appels par IP par jour UTC. Pour supprimer cette limite, obtenez une clé API gratuite sur app.ranki.io/developer. Les outils de pont nécessitent une clé car ils extraient vos données privées Ranki.io.

Ranki MCP utilise-t-il mes crédits Claude ?

Oui — et uniquement les vôtres. Nous ne faisons jamais d'appels LLM. Le serveur MCP renvoie des conseils structurés ; votre Claude / Cursor les évalue et agit en conséquence en utilisant vos propres crédits.

Où circulent les données ?

  • Les outils de conseil (audit_*, generate_*, seo_starter_kit, find_*) récupèrent l'URL que vous passez (aucun autre appel réseau).
  • Les outils de pont (list_projects, get_article) appellent app.ranki.io/api/v1/... via HTTPS avec votre X-API-Key.
  • Nous ne journalisons pas le corps des requêtes. Nous journalisons l'IP + le nom de l'outil + le statut de la réponse pour la limitation de débit + le débogage.

Est-ce open source ?

Oui — licence MIT, code source complet dans ce dépôt.

Puis-je l'exécuter dans le VPC de mon entreprise ?

Oui — server/ est du PHP simple, sans dépendance de service externe sauf app.ranki.io pour les outils de pont (que vous pouvez désactiver en supprimant ces fichiers d'outils).

En quoi est-ce différent de concurrents comme Surfer / Frase / Outrank ?

Ce sont des tableaux de bord SaaS qui auditent une URL à la fois et recommandent des modifications. Ranki MCP est une couche de protocole qui permet à votre IA d'utiliser ces audits en ligne pendant qu'elle écrit du code dans votre IDE. Forme différente, prix différent (gratuit), public différent (vibe-codeurs, pas professionnels du SEO).

Je suis un vibe-codeur et je n'ai aucune idée de ce que signifie AEO.

C'est littéralement pour vous. Commencez par seo_starter_kit("yourdomain.com") — votre Claude vous guidera à travers tout.

Allez-vous entraîner une IA sur mes données ?

Nous n'entraînons pas de modèles. Nous n'avons pas de modèles. Nous sommes un conseiller léger basé sur des vérifications déterministes.


Licence

MIT. Voir LICENSE.

Conçu avec soin par Ranki.io — automatisation SEO IA + AEO pour les fondateurs, agences et créateurs.