La convention llms.txt propose une idée simple : plutôt que de laisser un modèle de langage deviner quelles pages d’un site méritent d’être lues en priorité, on lui fournit directement une liste structurée, en Markdown, à la racine du domaine. Ce n’est pas une norme officielle du W3C, mais un usage qui s’installe progressivement, porté par plusieurs outils de documentation technique avant de gagner les sites de contenu classiques.
Sur un projet WordPress, la mise en place demande quelques choix d’architecture, parce que le CMS ne prévoit par défaut aucun mécanisme pour servir un fichier statique à la racine sans passer par le système de fichiers du serveur.
Étape 1 : décider du contenu du fichier
Un llms.txt typique commence par un titre en H1 Markdown, un court résumé du site, puis des sections listant les pages clés sous forme de liens avec une description d’une ligne.
# WP Moderne
> Blog technique dédié au développement WordPress moderne : SEO technique, blocs, performance.
## Pages essentielles
- [Guide du sitemap natif](https://wpmoderne.fr/sitemap-natif-wp55/): fonctionnement et personnalisation du sitemap XML de WordPress.
- [Schema Article en JSON-LD](https://wpmoderne.fr/schema-article-json-ld/): balisage recommandé pour les articles de blog.
## Documentation
- [Archives](https://wpmoderne.fr/archives/): historique complet des articles publiés.
Étape 2 : choisir entre fichier statique et génération dynamique
Deux approches coexistent. La première consiste à déposer un fichier llms.txt statique par FTP à la racine du site, à côté de robots.txt. Simple, mais il faut penser à le mettre à jour manuellement à chaque nouvel article important, ce qui devient vite un oubli récurrent.
La seconde, que nous privilégions sur les projets actifs, génère le fichier dynamiquement à partir du contenu réel de la base WordPress, via une route virtuelle interceptée avant le routage classique.
Étape 3 : intercepter la requête avec une règle de réécriture

On enregistre une règle de réécriture qui redirige les requêtes vers /llms.txt vers un point d’entrée dédié, sans passer par le moteur de templates classique de WordPress :
add_action( 'init', function () {
add_rewrite_rule( '^llms\.txt$', 'index.php?wpmoderne_llms=1', 'top' );
} );
add_filter( 'query_vars', function ( $vars ) {
$vars[] = 'wpmoderne_llms';
return $vars;
} );
add_action( 'template_redirect', function () {
if ( ! get_query_var( 'wpmoderne_llms' ) ) {
return;
}
header( 'Content-Type: text/plain; charset=utf-8' );
echo wpmoderne_generate_llms_txt();
exit;
} );
Après l’ajout de cette règle, il faut impérativement vider les permaliens depuis Réglages > Permaliens, ou exécuter wp rewrite flush en ligne de commande, sinon la règle reste enregistrée sans être active.
Étape 4 : générer le contenu depuis les articles les plus pertinents
La fonction wpmoderne_generate_llms_txt() interroge les articles marqués comme prioritaires — via une taxonomie dédiée ou un simple champ personnalisé — et construit le Markdown à la volée :
function wpmoderne_generate_llms_txt() {
$output = "# " . get_bloginfo( 'name' ) . "\n\n";
$output .= "> " . get_bloginfo( 'description' ) . "\n\n## Pages essentielles\n\n";
$posts = get_posts( array(
'meta_key' => 'llms_prioritaire',
'meta_value' => '1',
'numberposts' => 20,
) );
foreach ( $posts as $post ) {
$output .= sprintf(
"- [%s](%s): %s\n",
get_the_title( $post ),
get_permalink( $post ),
wp_trim_words( get_the_excerpt( $post ), 20 )
);
}
return $output;
}
Étape 5 : vérifier l’accessibilité et l’absence de blocage
- Confirmer que
/llms.txtrépond bien enContent-Type: text/plainet non en HTML enveloppé par le thème. - Vérifier que le fichier n’est pas lui-même bloqué par une règle du
robots.txt, ce qui arrive quand une règle générique interdit l’accès à tous les fichiers texte à la racine. - Éviter d’y placer des informations sensibles : le fichier est public, lisible par n’importe qui, pas seulement par les robots visés.
Un llms.txt qui liste tout le site sans hiérarchie ne sert à rien : l’intérêt est de désigner ce qui compte vraiment, pas de dupliquer le sitemap.
En résumé
Mettre en place un llms.txt sur WordPress ne demande ni plugin lourd ni changement d’architecture profond : une règle de réécriture, une fonction de génération, et une discipline de mise à jour suffisent. La convention est encore jeune et son adoption réelle par les moteurs génératifs reste à confirmer dans les mois qui viennent, mais le coût de mise en place est suffisamment faible pour justifier de s’y préparer dès maintenant.