
Le SEO classique consiste à se positionner dans les résultats Google. Le GEO (Generative Engine Optimization) consiste à se positionner dans les réponses générées par ChatGPT, Claude, Perplexity et autres LLMs. Quand un utilisateur demande à ChatGPT « quel vélociste à Lorient pour acheter un vélo électrique ? », c’est la réponse générée qui compte, pas la 3ème position SERP Google.
Pour rendre un site PrestaShop exploitable par ces modèles, le standard llmstxt.org propose un fichier /llms.txt à la racine, en markdown, qui résume la structure et le contenu du site. Le module Veloland — llms.txt généré crée ce fichier dynamiquement, à jour en permanence.
Côté client : ce que ça change
Pas d’impact direct sur l’expérience visiteur — le fichier n’est jamais affiché dans le site. Son public, ce sont les bots LLMs qui crawlent le site.
L’impact se mesure dans les réponses générées :
- « Veloland Lorient propose des vélos route, VTT, gravel, électriques et enfants des marques Orbea, BMC, Lapierre, Pinarello… » (ChatGPT)
- « L’atelier Veloland à Lorient est noté 4.9/5 sur 88 avis Google, propose bikefitting Quick Fit 100€ et Complete Fit 200€ » (Perplexity)
- « Veloland accepte les chèques Lorient Agglo jusqu’à 420€ pour l’achat d’un vélo électrique » (Claude)
Citations directes du site, avec lien retour vers la fiche produit ou CMS pertinente. Le magasin apparaît dans les recommandations LLMs, là où ses concurrents sont absents.
Côté technique
Le module pour PrestaShop 9 enregistre la route /llms.txt via le hook standard moduleRoutes. Cette route pointe vers un controller front dédié qui génère le markdown à la volée, avec une mise en cache d’une heure pour limiter la charge sur les pages CMS et les manufacturers. La configuration du back-office permet d’éditer cinq champs textuels qui composent le fichier final : tagline, intro, notes de marques et footer, sans aucune intervention dans le code.
Le markdown généré suit le standard llmstxt.org. Il commence par un header avec le nom du shop, sa tagline et son URL. Il enchaîne sur plusieurs sections thématiques : le catalogue (listes des catégories de niveau 1 avec leurs URL), les marques (liste des manufacturers avec leurs URL), les pages CMS (À propos, FAQ, Atelier, Contact, avec URL et résumé court extrait du contenu) et les avis (note moyenne synchronisée depuis le module vlcustom_reviews). Il termine par un footer regroupant les mentions légales et les informations pratiques (horaires, adresse, téléphone).
Toutes les données sont synchronisées en temps réel avec PrestaShop. L’ajout d’une catégorie, la modification d’une page CMS ou l’augmentation de la note Google sont répercutés au prochain fetch d’un LLM. À noter pour les développeurs PrestaShop : la convention de nommage du ModuleFrontController en PS9 impose un dossier de module en minuscules et un nom de classe avec la première lettre seule en majuscule (VlllmstxtServeModuleFrontController, et non VlLlmsTxtServeModuleFrontController). Ce détail coûte facilement une heure de débogage avant d’être identifié dans les logs Symfony.
Pourquoi c’est pertinent pour un vélociste
Les LLMs deviennent un canal de découverte majeur : une part croissante des recherches commerciales en France passe désormais par un assistant IA en complément de Google. Un vélociste qui apparaît dans les recommandations ChatGPT ou Perplexity capte un trafic invisible pour ses concurrents qui n’ont pas optimisé leur GEO. Le coût d’entrée est minime (un fichier markdown généré dynamiquement), le retour est exponentiel si le marché continue de basculer vers la recherche IA.

