Caractéristiques et avantages du module
- Markdown construit à partir des objets PrestaShop, et non par conversion d’une page rendue — le document ne contient ni menu, ni pied de page, ni formulaires, ni code d’autres modules.
- Coût en tokens radicalement plus faible côté agent : l’en-tête X-Markdown-Tokens-Estimate dans chaque réponse indique la taille estimée du document, et le panneau affiche une comparaison Markdown versus HTML pour l’entité indiquée.
- Deux canaux de diffusion indépendants — négociation de contenu à l’adresse canonique et adresses .md distinctes — ainsi l’agent accède au contenu qu’il envoie ou non l’en-tête Accept.
- Garde-fou de diagnostic avant l’activation de la négociation : le module ne permet pas d’activer la fonction tant qu’il n’a pas mesuré, au moyen de véritables requêtes HTTP, qu’un intermédiaire de cache n’empoisonnera pas le cache partagé.
- Principe « l’agent ne voit jamais plus qu’un visiteur » implémenté comme règle, et non comme une série d’exceptions — les paramètres de visibilité de la boutique s’appliquent aux agents exactement comme à un visiteur anonyme.
- Prix calculés dans le contexte d’un visiteur, avec résolution explicite de la devise et du pays, afin que le cache n’enregistre pas le prix d’un client pour le servir ensuite à tous les autres.
- Prise en charge complète du multiboutique et du multilingue : paramètres, fichiers llms, cache et compteur sont gérés séparément pour chaque boutique et chaque langue.
- Zéro dépendance externe — sans Composer, sans bibliothèques externes, sans appels à des services tiers ; le module n’envoie les données de votre boutique nulle part ailleurs que dans la réponse à la requête.
- Ne collecte pas de données personnelles : le compteur de visites enregistre uniquement le jour, la boutique, le canal et la famille de client, sans adresses IP, sessions, URL complètes ni User-Agent complet.
- Compatibilité de PrestaShop 1.7.1.0 à 9.x et de PHP 7.0 à 8.5, vérifiée sur de véritables arborescences de sources, et non de manière déclarative.
Fonctionnalités principales du module
- Négociation de contenu sur les adresses canoniques de la boutique : une requête avec Accept: text/markdown reçoit un document Markdown, une requête de navigateur reçoit le HTML inchangé.
- En-tête Vary: Accept et balise Link: rel="alternate" sur les pages HTML prises en charge par le module, afin que les intermédiaires et les agents sachent qu’une version alternative existe.
- Adresses parallèles markdown/{typ}/{id}.md pour les produits, catégories, pages CMS et fabricants, sous leur propre préfixe, afin d’éviter les conflits avec d’autres modules qui réécrivent les adresses.
- Fichier llms.txt — liste organisée des sections les plus importantes de la boutique : catégories de premier niveau, pages d’information et lien vers l’index complet.
- Fichier llms-full.txt — index compact des entités : titre, adresse canonique, adresse .md, prix, disponibilité, SKU et résumé ; automatiquement découpé en plusieurs parties après dépassement de la taille configurée.
- Génération de llms-full.txt exclusivement via un endpoint cron protégé par jeton, jamais pendant une requête de visiteur, avec budget de temps et reprise d’une reconstruction interrompue.
- Jeton cron distinct pour chaque boutique, comparé en temps constant, avec une commande curl prête à être copiée dans le panneau.
- Cache du Markdown généré dans la base de données avec durée de vie configurable et invalidation par hooks lors d’un changement de produit, combinaison, prix promotionnel, règle de prix, état du stock, catégorie, page CMS et fabricant.
- Onglet Diagnostic : sept vérifications effectuées au moyen de véritables requêtes HTTP contre le propre point de sondage du module, avec distinction séparée entre les pannes « HTML servi à l’agent » et « Markdown servi au navigateur ».
- Vérification informative de l’adresse réelle du catalogue après activation de la négociation, présentée séparément et sans bloquer la fonctionnalité.
- Aperçu du document dans le panneau pour le type et l’identifiant d’entité indiqués, avec compteur de tokens Markdown versus HTML et verdict explicite sur la visibilité de l’entité.
- Onglet Fichiers : état des fichiers llms pour chaque langue (présence, taille, date, nombre d’entités, nombre de parties), bouton de reconstruction manuelle avec budget de temps et commande cron.
- Compteur de visites des agents : agrégat jour × boutique × canal × famille de client, avec répartition par canaux négociation, route .md et llms ainsi que par familles openai, anthropic, perplexity, google, bing, script, browser et other.
- En-têtes de réponse conformes à l’usage du contenu : X-Robots-Tag: noindex, nofollow sur les documents Markdown, X-Content-Type-Options: nosniff, ETag avec prise en charge de 304 ainsi qu’une politique Cache-Control différenciée pour l’adresse canonique et l’adresse .md.
- Données produit dans l’en-tête du document : type, identifiant, adresse canonique, adresse Markdown, titre, SKU, marque, prix TTC et HT, devise, information fiscale, disponibilité, indication de lot, exigence de personnalisation, état du produit, catégories, langue et date de mise à jour.
- Prix standard ainsi que montant et pourcentage de remise lorsque le produit est en promotion — l’agent ne verra pas le prix promotionnel comme un prix ordinaire.
- Tableau des variantes avec prix, quantité, disponibilité et identifiant de combinaison, afin que l’agent puisse indiquer une variante précise, et non seulement la décrire.
- Contenu des lots de produits avec quantités et liens vers les documents Markdown de chaque élément.
- Information sur les champs de personnalisation obligatoires, en excluant les champs appartenant à d’autres modules que PrestaShop n’affiche pas sur le front-office.
- Sélection des types d’entités mis à disposition des agents, appliquée uniformément sur tous les canaux : sur les routes .md, dans les fichiers llms et dans la balise de version alternative.
- Répertoire de travail du module protégé contre la lecture directe depuis le réseau, et fichiers llms servis exclusivement par les contrôleurs du module.
- Respect du mode maintenance de la boutique et de la géolocalisation — une boutique fermée aux visiteurs l’est aussi pour les agents.
- Panneau dans la convention PD avec en-tête du module et barre d’onglets, avec indications sur les paramètres aux conséquences coûteuses, telles que la fragmentation du cache CDN.
Usage métier
- Pour les boutiques PrestaShop qui veulent être correctement lues par les assistants d’achat et les agents IA, au lieu de compter sur le fait que le modèle nettoie lui-même la page HTML.
- Pour les vendeurs qui veulent contrôler exactement ce qui parvient aux agents — périmètre des types d’entités, visibilité des prix et des quantités, ainsi que mode de publication.
- Pour les boutiques avec un catalogue étendu, où la différence entre une page HTML complète et un document Markdown se traduit par une différence réelle de coût côté requérant.
- Pour les déploiements multiboutiques, où chaque boutique exige ses propres paramètres, ses propres fichiers llms et son propre jeton cron.
- Pour les entreprises qui veulent fonder la décision de poursuivre les investissements dans ce canal sur des données — le compteur de visites montre si les agents interrogent réellement la boutique, et par quel chemin.
- Pour les boutiques fonctionnant derrière un CDN ou un reverse proxy, où l’activation autonome de la négociation de contenu sans vérification risquerait de servir une mauvaise version de la page aux clients ordinaires.
Ce que le module ne fait pas
- Ce n’est pas un module SEO et il n’améliore pas la position de la boutique dans les résultats de recherche Google — les documents Markdown sont explicitement marqués comme non indexables.
- Il ne modifie ni l’apparence, ni le contenu, ni les performances de la page HTML vue par les clients ; la page prise en charge par le module reçoit uniquement des en-têtes supplémentaires informant de l’existence d’une version alternative.
- Il n’envoie les données de la boutique à aucun service externe et ne nécessite ni compte ni clé API.
- Il ne traduit pas les libellés structurels du document — les noms de champs restent fixes et en anglais, car ils sont destinés à la machine, tandis que le contenu des entités est toujours dans la langue de la boutique.
Compatibilité
- PrestaShop : 1.7.1.0 - 9.x
- PHP : 7.0 - 8.5
- Sans Composer et sans bibliothèques externes
- Multiboutique : oui, paramètres et fichiers gérés séparément pour chaque boutique
- Multilingue : oui, documents et fichiers llms pour chaque langue active