<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Guillaume Orsal</title>
	<link>https://www.orsal.fr/</link>
	<description>Ing&#233;nieur informatique, d&#233;veloppeur Web Freelance, cr&#233;ation site Internet, conseil en r&#233;f&#233;rencement, expert Laravel, SEO, Intelligence Artificielle</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://www.orsal.fr/spip.php?id_rubrique=19&amp;page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>llms.txt : un standard de documentation pour l'usage des contenus par les mod&#232;les d'IA</title>
		<link>https://www.orsal.fr/llms-txt-un-standard-de</link>
		<guid isPermaLink="true">https://www.orsal.fr/llms-txt-un-standard-de</guid>
		<dc:date>2025-12-30T14:03:07Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Guillaume Orsal</dc:creator>



		<description>
&lt;p&gt;Faut-il mettre en place un fichier llms.txt sur son site ? &#192; quoi sert-il vraiment, et est-ce que les IA le respectent ? Tour d'horizon concret de ce standard &#233;mergent, entre bonnes pratiques, limites r&#233;elles et usages possibles.&lt;/p&gt;


-
&lt;a href="https://www.orsal.fr/Referencement-SEO-GEO" rel="directory"&gt;R&#233;f&#233;rencement SEO/GEO&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logos' alt=&quot;&quot; align=&quot;right&quot; src='https://www.orsal.fr/local/cache-vignettes/L150xH150/arton71-fcc41.png' width='150' height='150' onmouseover=&quot;this.src='local/cache-vignettes/L150xH150/artoff71-83c70.png'&quot; onmouseout=&quot;this.src='local/cache-vignettes/L150xH150/arton71-fcc41.png'&quot; style='height:150px;width:150px;' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;llms.txt est un standard &#233;mergent qui permet d'indiquer aux mod&#232;les d'IA comment les contenus d'un site web peuvent &#234;tre utilis&#233;s. Cette page d&#233;taille le r&#244;le du fichier llms.txt, son fonctionnement, ses principaux cas d'usage, ainsi que ses implications pour l'IA g&#233;n&#233;rative, le droit d'auteur et la notion de consentement des donn&#233;es.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Faut-il mettre en place un fichier &lt;strong&gt;llms.txt&lt;/strong&gt; sur son site ? &#192; quoi sert-il vraiment, et est-ce que les IA le respectent ? Tour d'horizon concret de ce standard &#233;mergent, entre bonnes pratiques, limites r&#233;elles et usages possibles.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; TL ;DR &lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;llms.txt&lt;/strong&gt; est un &lt;strong&gt;fichier texte&lt;/strong&gt; plac&#233; &#224; la racine d'un site web (&lt;strong&gt;/llms.txt&lt;/strong&gt;) permettant de documenter, de fa&#231;on d&#233;clarative, les conditions d'utilisation de ses contenus par des &lt;strong&gt;mod&#232;les d'IA&lt;/strong&gt; (LLMs). Ce standard &#233;mergent vise &#224; am&#233;liorer la transparence entre cr&#233;ateurs de contenu et d&#233;veloppeurs d'IA, &lt;strong&gt;sans m&#233;canisme technique contraignant&lt;/strong&gt;. Il permet notamment d'autoriser l'entra&#238;nement des mod&#232;les tout en en fixant les limites (usage commercial, attribution, donn&#233;es sensibles). Il s'inscrit dans la continuit&#233; des standards du web ouvert comme &lt;strong&gt;robots.txt&lt;/strong&gt; ou &lt;a href='https://www.orsal.fr/Humans-txt-creer-un-fichier-de' class='spip_in'&gt;Humans.txt&lt;/a&gt;.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Introduction : llms.txt, un standard &#233;mergent pour l'&#232;re de l'IA g&#233;n&#233;rative &lt;/h2&gt;
&lt;p&gt;Avec la g&#233;n&#233;ralisation des mod&#232;les de langage de grande taille (Large Language Models, ou LLMs), une question devient centrale : comment les cr&#233;ateurs de contenu peuvent-ils indiquer aux syst&#232;mes d'IA les conditions d'utilisation de leurs donn&#233;es ?&lt;/p&gt; &lt;p&gt;Le fichier &lt;strong&gt;llms.txt&lt;/strong&gt; est une proposition de standard visant &#224; r&#233;pondre &#224; ce besoin. Il permet &#224; un site web de documenter, de mani&#232;re lisible par des agents automatis&#233;s, ses pr&#233;f&#233;rences concernant l'utilisation de ses contenus par des mod&#232;les d'IA.&lt;/p&gt; &lt;p&gt;L'objectif n'est pas d'imposer un m&#233;canisme technique de contr&#244;le, mais de fournir un cadre d&#233;claratif, simple et d&#233;centralis&#233;, que les d&#233;veloppeurs d'IA peuvent choisir de respecter.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Contexte : pourquoi llms.txt a &#233;merg&#233; &lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;L'explosion des LLMs et des donn&#233;es d'entra&#238;nement&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Depuis 2023, avec la d&#233;mocratisation de mod&#232;les comme ChatGPT, les LLMs sont entra&#238;n&#233;s sur des volumes massifs de donn&#233;es issues du web public.&lt;/p&gt; &lt;p&gt;Concr&#232;tement, cela signifie que des contenus peuvent &#234;tre r&#233;utilis&#233;s pour entra&#238;ner des mod&#232;les sans que leurs auteurs aient forc&#233;ment &#233;t&#233; inform&#233;s, ni m&#234;me qu'ils aient eu l'occasion d'exprimer une position sur cet usage.&lt;/p&gt; &lt;p&gt;Ce flou pose un probl&#232;me assez basique : il n'existe pas vraiment de moyen standard pour dire ce qui est acceptable ou non. C&#244;t&#233; cr&#233;ateurs, difficile d'indiquer des conditions d'utilisation claires. Et c&#244;t&#233; d&#233;veloppeurs, tout aussi difficile de savoir sur quelles bases ils peuvent s'appuyer pour utiliser ces contenus.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;L'insuffisance des outils existants&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;robots.txt&lt;/strong&gt; permet de r&#233;guler l'exploration des pages par des moteurs de recherche, mais ne s'applique pas explicitement aux usages li&#233;s &#224; l'entra&#238;nement des mod&#232;les d'IA. Les balises &lt;strong&gt;&lt;meta&gt;&lt;/strong&gt; offrent une granularit&#233; limit&#233;e et ne couvrent pas les cas d'usage sp&#233;cifiques aux LLMs.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;llms.txt&lt;/strong&gt; propose une approche compl&#233;mentaire : un fichier plac&#233; &#224; la racine du site (&lt;strong&gt;/llms.txt&lt;/strong&gt;), destin&#233; &#224; &#234;tre consult&#233; par des agents IA pour comprendre les r&#232;gles d'usage d&#233;clar&#233;es par le propri&#233;taire du contenu.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Qu'est-ce que llms.txt et comment l'utiliser &lt;/h2&gt;
&lt;p&gt;Le fichier &lt;strong&gt;llms.txt&lt;/strong&gt; est un document texte simple, accessible publiquement, qui permet de documenter les politiques d'utilisation des contenus d'un site par des syst&#232;mes d'IA et des LLMs.&lt;/p&gt; &lt;p&gt;Il ne constitue ni une obligation l&#233;gale, ni une barri&#232;re technique, mais un m&#233;canisme de transparence destin&#233; &#224; faciliter le respect des pr&#233;f&#233;rences exprim&#233;es par les cr&#233;ateurs.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Ce que permet concr&#232;tement llms.txt &lt;/h2&gt;
&lt;p&gt;Contrairement &#224; une id&#233;e assez r&#233;pandue, &lt;strong&gt;llms.txt&lt;/strong&gt; ne sert pas uniquement &#224; interdire l'entra&#238;nement.&lt;/p&gt; &lt;p&gt;Son int&#233;r&#234;t est justement de permettre des positions plus nuanc&#233;es. On peut tr&#232;s bien &lt;strong&gt;autoriser l'entra&#238;nement des mod&#232;les&lt;/strong&gt;, tout en encadrant les usages qui en sont faits ensuite. Par exemple, accepter un usage dans un cadre de recherche ou d'indexation, mais refuser une exploitation commerciale directe ou une &lt;strong&gt;int&#233;gration dans un mod&#232;le propri&#233;taire&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;De la m&#234;me mani&#232;re, il devient possible de poser des conditions d'attribution explicites, ou d'exclure certaines cat&#233;gories de donn&#233;es, notamment lorsqu'elles sont personnelles ou sensibles.&lt;/p&gt; &lt;p&gt;Selon les cas, on peut aussi aller plus loin et d&#233;finir des r&#232;gles diff&#233;rentes en fonction des acteurs ou des types de mod&#232;les, m&#234;me si ce point reste encore assez informel aujourd'hui.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Structure recommand&#233;e (exemple indicatif) &lt;/h2&gt;
&lt;p&gt;Le format suivant est une proposition illustrative, inspir&#233;e de mises en &#339;uvre r&#233;elles. Il ne s'agit pas d'une sp&#233;cification officielle et peut &#233;voluer.&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;# llms.txt &#8211; AI usage policy (example)&lt;br /&gt; &lt;br /&gt; [Preferences]&lt;br /&gt; Allow-LLM-Training: true&lt;br /&gt; Allow-Document-Indexing: true&lt;br /&gt; Allow-LLM-Scraping: true&lt;br /&gt; Allow-Embedded-LLM-Training: false&lt;br /&gt; &lt;br /&gt; [Restrictions]&lt;br /&gt; Content-Restrictions: commercial-use-restriction, copyright-sensitive&lt;br /&gt; Sensitive-Data: excluded&lt;br /&gt; &lt;br /&gt; [Rules]&lt;br /&gt; GPT-4: allow-training, allow-indexing&lt;br /&gt; Claude: allow-training, allow-indexing&lt;br /&gt; OpenSource-Models: allow-training&lt;br /&gt; &lt;br /&gt; [Attribution-Requirements]&lt;br /&gt; Citation-Required: true&lt;br /&gt; Attribution-Format: Author, Date, URL&lt;br /&gt; &lt;br /&gt; [Contact]&lt;br /&gt; Email: contact@example.com&lt;br /&gt; &lt;br /&gt; [Last-Updated]&lt;br /&gt; Date: 2026-01-04&lt;br /&gt; Version: 1.1&lt;/code&gt;&lt;/div&gt;
&lt;h2 class='h3 spip'&gt; Explication des principaux champs &lt;/h2&gt;
&lt;p&gt;Les principaux champs utilis&#233;s restent assez simples &#224; comprendre, m&#234;me sans sp&#233;cification formelle :&lt;/p&gt; &lt;p&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;strong&gt;Allow-LLM-Training&lt;/strong&gt; : autorise l'utilisation du contenu pour l'entra&#238;nement des mod&#232;les d'IA
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;strong&gt;Allow-Embedded-LLM-Training&lt;/strong&gt; : interdit l'int&#233;gration directe du contenu dans des mod&#232;les propri&#233;taires ferm&#233;s
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;strong&gt;Allow-Document-Indexing&lt;/strong&gt; : autorise l'usage pour des syst&#232;mes de r&#233;cup&#233;ration de documents (RAG)
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;strong&gt;Sensitive-Data&lt;/strong&gt; : exclut explicitement toute donn&#233;e personnelle ou sensible
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;strong&gt;Rules&lt;/strong&gt; : permet de d&#233;finir des r&#232;gles sp&#233;cifiques par acteur ou type de mod&#232;le
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;strong&gt;Citation-Required&lt;/strong&gt; : rend l'attribution obligatoire pour tout usage&lt;/p&gt; &lt;p&gt;L'ensemble reste volontairement simple, l'objectif &#233;tant d'&#234;tre lisible plut&#244;t qu'exhaustif.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Pourquoi impl&#233;menter llms.txt &lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Pour les cr&#233;ateurs de contenu&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Pour un cr&#233;ateur de contenu, l'int&#233;r&#234;t de &lt;strong&gt;llms.txt&lt;/strong&gt; est surtout de pouvoir reprendre la main sur quelque chose qui, jusqu'ici, restait implicite.&lt;/p&gt; &lt;p&gt;On peut autoriser l'entra&#238;nement sans pour autant accepter tous les usages derri&#232;re. Cela permet par exemple de poser des limites sur l'exploitation commerciale, de clarifier les conditions d'attribution, ou simplement d'exprimer une position sur la mani&#232;re dont ses contenus peuvent &#234;tre r&#233;utilis&#233;s.&lt;/p&gt; &lt;p&gt;Au-del&#224; de l'aspect juridique, il y a aussi une logique de transparence. Formaliser ces r&#232;gles, m&#234;me de mani&#232;re d&#233;clarative, revient &#224; rendre explicite ce qui ne l'&#233;tait pas.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Pour les d&#233;veloppeurs d'IA&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;C&#244;t&#233; d&#233;veloppeurs, l'int&#233;r&#234;t est diff&#233;rent mais compl&#233;mentaire.&lt;/p&gt; &lt;p&gt;Disposer d'un fichier &lt;strong&gt;llms.txt&lt;/strong&gt; permet d'identifier plus facilement les contenus qui peuvent &#234;tre utilis&#233;s, et dans quelles conditions. Dans un contexte o&#249; les questions de droit d'auteur et de responsabilit&#233; sont de plus en plus pr&#233;sentes, ce type d'information devient utile pour cadrer les pratiques.&lt;/p&gt; &lt;p&gt;Cela ouvre aussi la voie &#224; des processus plus tra&#231;ables, o&#249; les sources et les conditions d'utilisation ne sont plus compl&#232;tement implicites.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Bonnes pratiques &lt;/h2&gt;
&lt;p&gt;Dans la pratique, l'enjeu principal est d'&#233;viter toute ambigu&#239;t&#233;.&lt;/p&gt; &lt;p&gt;Un &lt;strong&gt;llms.txt&lt;/strong&gt; efficace est d'abord un fichier explicite et coh&#233;rent. Il doit distinguer clairement les diff&#233;rents usages &#8212; entra&#238;nement, indexation, int&#233;gration &#8212; sans introduire de contradictions.&lt;/p&gt; &lt;p&gt;Lorsque le contenu est amen&#233; &#224; &#234;tre r&#233;utilis&#233;, il est g&#233;n&#233;ralement pertinent de pr&#233;ciser les attentes en mati&#232;re d'attribution. De la m&#234;me mani&#232;re, les donn&#233;es sensibles devraient &#234;tre exclues sans ambigu&#239;t&#233;.&lt;/p&gt; &lt;p&gt;Enfin, comme pour les autres fichiers de ce type, il est utile de maintenir le document &#224; jour et de l'inscrire dans un ensemble plus large, aux c&#244;t&#233;s de &lt;strong&gt;robots.txt&lt;/strong&gt;, &lt;a href='https://www.orsal.fr/Humans-txt-creer-un-fichier-de' class='spip_in'&gt;Humans.txt&lt;/a&gt; ou &lt;a href=&quot;https://securitytxt.org/&quot; class='spip_out' rel='external'&gt;security.txt&lt;/a&gt;.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Impl&#233;mentation technique &lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Cr&#233;ation du fichier&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Cr&#233;er un fichier texte nomm&#233; &lt;strong&gt;llms.txt&lt;/strong&gt; &#224; la racine du site (&lt;strong&gt;/llms.txt&lt;/strong&gt;).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;V&#233;rification de l'accessibilit&#233;&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;curl -I https://www.example.com/llms.txt&lt;br /&gt; # Doit retourner : 200 OK&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Lien optionnel depuis le site&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;link rel=&quot;llms-policy&quot; href=&quot;/llms.txt&quot; /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Ou via un lien visible :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;a href=&quot;/llms.txt&quot;&gt;Politique d'utilisation IA (llms.txt)&lt;/a&gt;&lt;/code&gt;&lt;/div&gt;
&lt;h2 class='h3 spip'&gt; Adoption et perspectives &lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;llms.txt&lt;/strong&gt; reste aujourd'hui un &lt;strong&gt;standard &#233;mergent&lt;/strong&gt;, apparu autour de 2023&#8211;2024, et dont l'adoption est encore assez h&#233;t&#233;rog&#232;ne.&lt;/p&gt; &lt;p&gt;Il n'existe pas, &#224; ce stade, de reconnaissance formelle par un organisme de standardisation. Pour autant, la dynamique n'est pas nouvelle : on retrouve un sch&#233;ma assez proche de celui de &lt;strong&gt;robots.txt&lt;/strong&gt; &#224; ses d&#233;buts, avec une adoption progressive port&#233;e par les usages, avant une &#233;ventuelle normalisation.&lt;/p&gt; &lt;p&gt;Dans le m&#234;me temps, les &#233;volutions r&#233;glementaires, notamment en Europe avec l'&lt;a href=&quot;https://artificial-intelligence-act.eu/&quot; class='spip_out' rel='external'&gt;AI Act&lt;/a&gt;, pourraient renforcer l'int&#233;r&#234;t de ce type de m&#233;canisme d&#233;claratif. Sans forc&#233;ment le rendre obligatoire, elles contribuent &#224; installer l'id&#233;e qu'une certaine transparence sur l'usage des donn&#233;es devient n&#233;cessaire.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Limitations et consid&#233;rations &lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;llms.txt&lt;/strong&gt; pr&#233;sente aujourd'hui des limites qu'il vaut mieux avoir en t&#234;te d&#232;s le d&#233;part.&lt;/p&gt; &lt;p&gt;D'abord, son respect repose enti&#232;rement sur la bonne volont&#233; des acteurs qui choisissent de le consulter. Il n'existe aucun m&#233;canisme technique permettant de s'assurer qu'un agent s'y conforme r&#233;ellement.&lt;/p&gt; &lt;p&gt;Ensuite, le fichier ne pr&#233;voit pas de syst&#232;me d'authentification. En pratique, il est donc impossible de distinguer de mani&#232;re fiable les diff&#233;rents types d'agents ou de v&#233;rifier leur identit&#233;.&lt;/p&gt; &lt;p&gt;Enfin, la granularit&#233; reste assez limit&#233;e. Les r&#232;gles s'appliquent globalement au site, sans possibilit&#233; fine de d&#233;finir des politiques diff&#233;rentes selon les pages ou les sections.&lt;/p&gt; &lt;p&gt;Ces limites n'enl&#232;vent pas tout int&#233;r&#234;t au fichier, mais elles rappellent qu'il s'agit avant tout d'un outil de transparence, et non d'un dispositif de contr&#244;le.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Conclusion : une ouverture encadr&#233;e plut&#244;t qu'un refus global &lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;llms.txt&lt;/strong&gt; n'est pas un outil de blocage, mais un moyen d'exprimer clairement des conditions d'utilisation raisonn&#233;es.&lt;/p&gt; &lt;p&gt;Il permet d'autoriser l'entra&#238;nement des mod&#232;les d'IA tout en en fixant les limites : attribution, respect du droit d'auteur, exclusion des donn&#233;es sensibles et refus de certaines int&#233;grations propri&#233;taires.&lt;/p&gt; &lt;p&gt;&#192; l'image de &lt;strong&gt;robots.txt&lt;/strong&gt; ou &lt;a href='https://www.orsal.fr/Humans-txt-creer-un-fichier-de' class='spip_in'&gt;Humans.txt&lt;/a&gt;, &lt;strong&gt;llms.txt&lt;/strong&gt; s'inscrit dans la tradition du web ouvert : un &#233;cosyst&#232;me fond&#233; sur des conventions partag&#233;es, la transparence et la responsabilit&#233;.&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Ressources et r&#233;f&#233;rences &lt;/h2&gt;
&lt;p&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;a href=&quot;https://llmstxt.org/&quot; class='spip_out' rel='external'&gt;Site officiel llmstxt.org&lt;/a&gt;&lt;/p&gt; &lt;h2 class='h3 spip'&gt; Voir aussi &lt;/h2&gt;
&lt;p&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;a href='https://www.orsal.fr/Humans-txt-creer-un-fichier-de' class='spip_in'&gt;Humans.txt&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Obfuscation d'email : CSS vs JavaScript, am&#233;lioration des performances SEO (LCP, CLS)</title>
		<link>https://www.orsal.fr/Obfuscation-d-email-CSS-vs</link>
		<guid isPermaLink="true">https://www.orsal.fr/Obfuscation-d-email-CSS-vs</guid>
		<dc:date>2025-12-06T17:20:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Guillaume Orsal</dc:creator>



		<description>
&lt;p&gt;Lors d'une analyse de performance web, un JavaScript charg&#233; uniquement pour l'obfuscation d'une adresse email a &#233;t&#233; identifi&#233; comme inutile. Cet article pr&#233;sente une alternative bas&#233;e sur du CSS pur, puis une solution c&#244;t&#233; serveur permettant d'am&#233;liorer les performances SEO (LCP, CLS) tout en pr&#233;servant l'exp&#233;rience utilisateur, notamment sur mobile.&lt;/p&gt;


-
&lt;a href="https://www.orsal.fr/Referencement-SEO-GEO" rel="directory"&gt;R&#233;f&#233;rencement SEO/GEO&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logos' alt=&quot;&quot; align=&quot;right&quot; src='https://www.orsal.fr/local/cache-vignettes/L150xH150/arton72-eb5a9.jpg' width='150' height='150' onmouseover=&quot;this.src='local/cache-vignettes/L150xH150/artoff72-85da7.jpg'&quot; onmouseout=&quot;this.src='local/cache-vignettes/L150xH150/arton72-eb5a9.jpg'&quot; style='height:150px;width:150px;' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Lors d'une analyse de performance web, un JavaScript charg&#233; uniquement pour l'obfuscation d'une adresse email a &#233;t&#233; identifi&#233; comme inutile. Cet article pr&#233;sente une alternative bas&#233;e sur du CSS pur, puis une solution c&#244;t&#233; serveur permettant d'am&#233;liorer les performances SEO (LCP, CLS) tout en pr&#233;servant l'exp&#233;rience utilisateur, notamment sur mobile.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class='h3 spip'&gt;Pourquoi l'obfuscation d'email pose un probl&#232;me de performance&lt;/h2&gt;
&lt;p&gt;L'&lt;strong&gt;obfuscation d'email&lt;/strong&gt;, qui d&#233;signe les techniques utilis&#233;es pour rendre une adresse moins directement exploitable par des robots tout en restant lisible pour un humain, est une probl&#233;matique ancienne du web. Historiquement, elle a souvent &#233;t&#233; trait&#233;e via du JavaScript charg&#233; au runtime pour reconstruire une adresse ou un lien &lt;code class='spip_code' dir='ltr'&gt;mailto:&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;M&#234;me si ce type de script n'a pas toujours un impact mesurable imm&#233;diat sur les &lt;strong&gt;Core Web Vitals&lt;/strong&gt;, il alourdit la page en ajoutant une &lt;strong&gt;ressource non essentielle&lt;/strong&gt;. Il complexifie le rendu c&#244;t&#233; client, introduit des d&#233;pendances &#233;vitables et peut d&#233;grader marginalement le LCP sur des pages simples. &#192; cela s'ajoute un effet sur la lisibilit&#233; du code, ce qui nuit &#224; long terme &#224; la maintenabilit&#233;.&lt;/p&gt; &lt;p&gt;Dans une d&#233;marche d'&lt;strong&gt;optimisation SEO moderne&lt;/strong&gt;, chaque ressource doit justifier sa pr&#233;sence.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Rappel : Core Web Vitals et performance per&#231;ue&lt;/h2&gt;
&lt;p&gt;Les Core Web Vitals sont un ensemble d'indicateurs d&#233;finis par Google pour &#233;valuer la qualit&#233; de l'exp&#233;rience utilisateur r&#233;elle. Ils ne mesurent pas uniquement la rapidit&#233; brute, mais la perception du chargement et la stabilit&#233; de l'interface.&lt;/p&gt; &lt;p&gt;Le &lt;strong&gt;LCP (Largest Contentful Paint)&lt;/strong&gt; refl&#232;te la vitesse d'affichage du contenu principal.&lt;/p&gt; &lt;p&gt;Le &lt;strong&gt;CLS (Cumulative Layout Shift)&lt;/strong&gt; mesure la stabilit&#233; visuelle de la page.&lt;/p&gt; &lt;p&gt;Un script JavaScript non essentiel peut retarder l&#233;g&#232;rement le rendu initial ou provoquer des recalculs inutiles.&lt;/p&gt; &lt;p&gt;M&#234;me lorsqu'un script n'entra&#238;ne pas de d&#233;gradation mesurable imm&#233;diate, sa suppression simplifie la cha&#238;ne de rendu et am&#233;liore la performance per&#231;ue, en particulier sur mobile. Ces principes s'inscrivent dans les recommandations de Google pour favoriser des pages rapides, stables et adapt&#233;es &#224; l'&lt;strong&gt;indexation mobile-first&lt;/strong&gt;.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;R&#233;duire le JavaScript pour am&#233;liorer le SEO technique&lt;/h2&gt;
&lt;p&gt;La performance web ne se r&#233;sume pas &#224; un score PageSpeed. Elle repose sur plusieurs principes cl&#233;s : limiter le JavaScript non essentiel, r&#233;duire le travail du navigateur, stabiliser l'affichage pour &#233;viter les d&#233;calages visuels (CLS) et am&#233;liorer la performance per&#231;ue, notamment sur mobile.&lt;/p&gt; &lt;p&gt;Supprimer un script inutile est souvent l'une des optimisations les plus simples et les plus efficaces.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Obfuscation d'email sans JavaScript : approche CSS&lt;/h2&gt;
&lt;p&gt;Il est possible d'afficher une adresse email sans qu'elle soit directement exploitable dans le code source, en utilisant uniquement du HTML et du &lt;strong&gt;CSS&lt;/strong&gt;, sans JavaScript c&#244;t&#233; client.&lt;/p&gt; &lt;p&gt;La technique consiste &#224; d&#233;couper l'email dans des attributs &lt;code class='spip_code' dir='ltr'&gt;data-*&lt;/code&gt;. Le CSS se charge ensuite de masquer le placeholder, et de reconstituer le contenu visible &#224; partir des attributs. Ainsi, il n'y a plus de code c&#244;t&#233; client qui r&#233;alise le masquage de l'information.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Structure HTML&lt;/h2&gt;
&lt;p&gt;L'email est d&#233;coup&#233; en deux parties stock&#233;es dans des attributs &lt;code class='spip_code' dir='ltr'&gt;data-*&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Il n'appara&#238;t jamais directement sous forme exploitable dans le HTML.&lt;/p&gt; &lt;p&gt;L'application de la classe de style masque le contenu initial et reconstruit l'affichage via le CSS.&lt;/p&gt; &lt;p&gt;Le texte pr&#233;sent dans le &lt;code class='spip_code' dir='ltr'&gt;&lt;span&gt;&lt;/code&gt; reste dans le DOM mais n'est plus visible.&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;span class=&quot;protected-email&quot;&lt;br /&gt; data-email-user=&quot;guillaume&quot;&lt;br /&gt; data-email-domain=&quot;orsal.net&quot;&gt;&lt;br /&gt; [email protected]&lt;br /&gt; &lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;h2 class='h3 spip'&gt;Feuille de style CSS&lt;/h2&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;/* Masque le contenu initial du bloc */&lt;br /&gt; .protected-email {&lt;br /&gt; font-size: 0;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; /* Reconstruit visuellement l'email &#224; partir des attributs data-* */&lt;br /&gt; .protected-email::before {&lt;br /&gt; font-size: 14px;&lt;br /&gt; content: attr(data-email-user) &quot;@&quot; attr(data-email-domain);&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Le choix de &lt;code class='spip_code' dir='ltr'&gt;font-size: 0&lt;/code&gt; masque le texte sans modifier la structure du DOM ni provoquer de recalcul de layout.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;B&#233;n&#233;fices en termes de performance et de r&#233;f&#233;rencement&lt;/h2&gt;
&lt;p&gt;Cette solution pr&#233;sente plusieurs avantages du point de vue SEO et performance.&lt;/p&gt; &lt;p&gt;Il n'y a aucun JavaScript &#224; charger ou ex&#233;cuter, l'impact est donc nul sur le LCP et le CLS, le rendu est imm&#233;diat sans recalcul.&lt;/p&gt; &lt;p&gt;La compatibilit&#233; est maximale avec les navigateurs et la lecture reste possible par les moteurs de recherche.&lt;/p&gt; &lt;p&gt;Enfin, elle continue d'offrir une protection suffisante contre les collectes automatis&#233;es basiques des robots et s'inscrit dans une logique de sobri&#233;t&#233; et d'optimisation structurelle du front-end.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Limite fonctionnelle : l'exp&#233;rience utilisateur sur mobile&lt;/h2&gt;
&lt;p&gt;Cette approche purement CSS pr&#233;sente toutefois une limite : l'adresse email affich&#233;e n'est pas cliquable.&lt;/p&gt; &lt;p&gt;Sur desktop, cela peut &#234;tre acceptable. Sur mobile, l'utilisateur s'attend &#224; ce qu'un email soit interactif et ouvre son client de messagerie.&lt;/p&gt; &lt;p&gt;Une optimisation technique ne doit pas se faire au d&#233;triment de l'exp&#233;rience utilisateur.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;R&#233;tablir l'UX sans JavaScript : redirection c&#244;t&#233; serveur&lt;/h2&gt;
&lt;p&gt;Pour concilier performance, UX et protection minimale contre les bots, une solution consiste &#224; utiliser une redirection c&#244;t&#233; serveur vers un lien &lt;code class='spip_code' dir='ltr'&gt;mailto:&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;L'email n'est jamais expos&#233; sous forme de lien dans le HTML, et aucune logique JavaScript n'est ajout&#233;e.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Script de redirection contact.php&lt;/h2&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;?php&lt;br /&gt; // D&#233;sactivation explicite du cache HTTP&lt;br /&gt; header('Cache-Control: no-cache, no-store, must-revalidate');&lt;br /&gt; header('Pragma: no-cache');&lt;br /&gt; header('Expires: 0');&lt;br /&gt; &lt;br /&gt; // Redirection vers le mailto&lt;br /&gt; header('Location: mailto:email@example.com?subject=contact');&lt;br /&gt; exit;&lt;br /&gt; ?&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Les en-t&#234;tes HTTP d&#233;sactivant le cache sont essentiels. Une redirection mise en cache par un navigateur, un proxy ou un CDN pourrait conserver un comportement obsol&#232;te, ignorer une &#233;volution future ou introduire des effets de bord difficiles &#224; diagnostiquer.&lt;/p&gt; &lt;p&gt;Le script ne prend volontairement aucun param&#232;tre utilisateur afin de limiter les risques d'abus, de d&#233;tournement, ou d'envoi involontaire vers un point d'entr&#233;e exploitable.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Utilisation c&#244;t&#233; HTML&lt;/h2&gt;
&lt;p&gt;L'email masqu&#233; est ensuite encapsul&#233; dans un lien pointant vers le script de redirection.&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;a href=&quot;/contact.php&quot; title=&quot;Me contacter par email&quot; rel=&quot;nofollow&quot;&gt;&lt;br /&gt; &lt;span class=&quot;protected-email&quot; data-email-user=&quot;guillaume&quot; data-email-domain=&quot;orsal.net&quot;&gt;&lt;br /&gt; [email protected]&lt;br /&gt; &lt;/span&gt;&lt;br /&gt; &lt;/a&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Le lien est marqu&#233; en &lt;code class='spip_code' dir='ltr'&gt;nofollow&lt;/code&gt; car l'objectif est uniquement l'action utilisateur, pas le r&#233;f&#233;rencement du script.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Cette approche supprime une d&#233;pendance JavaScript inutile, ce qui contribue &#224; pr&#233;server des indicateurs tels que le LCP et le CLS. L'interactivit&#233; attendue sur mobile est &#233;galement pr&#233;serv&#233;e, tout comme la limitation de l'exposition de l'adresse email. Le code obtenu est simple, maintenable et &#233;l&#233;gant.&lt;/p&gt; &lt;p&gt;L'optimisation des performances web et du r&#233;f&#233;rencement repose parfois sur des choix simples et structurants.&lt;/p&gt; &lt;p&gt;R&#233;duire le JavaScript non essentiel en exploitant les capacit&#233;s du CSS aura permis ici d'am&#233;liorer &#224; la fois le SEO technique et la performance per&#231;ue, sans modifier l'exp&#233;rience utilisateur.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Audit SEO : d&#233;tecter les pages avec une balise noindex via script automatis&#233;</title>
		<link>https://www.orsal.fr/Audit-SEO-detecter-les-pages-avec</link>
		<guid isPermaLink="true">https://www.orsal.fr/Audit-SEO-detecter-les-pages-avec</guid>
		<dc:date>2024-12-08T14:05:07Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Guillaume Orsal</dc:creator>



		<description>
&lt;p&gt;En examinant la Google Search Console d'un site r&#233;cemment, j'ai remarqu&#233; que certaines pages &#233;taient non index&#233;es &#224; cause d'une balise noindex. Ces balises sont des balises meta . Comme je ne savais pas exactement quelles pages &#233;taient concern&#233;es, j'ai d&#233;cid&#233; de cr&#233;er un script simple pour parcourir le site et identifier toutes les pages contenant cette balise. Dans cet article, je partage avec vous ce script et explique comment l'utiliser pour d&#233;tecter les pages avec une balise noindex. Cela peut vous (...)&lt;/p&gt;


-
&lt;a href="https://www.orsal.fr/Referencement-SEO-GEO" rel="directory"&gt;R&#233;f&#233;rencement SEO/GEO&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logos' alt=&quot;&quot; align=&quot;right&quot; src='https://www.orsal.fr/local/cache-vignettes/L150xH150/arton69-81cfa.jpg' width='150' height='150' onmouseover=&quot;this.src='local/cache-vignettes/L150xH150/artoff69-e4df4.jpg'&quot; onmouseout=&quot;this.src='local/cache-vignettes/L150xH150/arton69-81cfa.jpg'&quot; style='height:150px;width:150px;' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;En examinant la Google Search Console d'un site r&#233;cemment, j'ai remarqu&#233; que certaines pages &#233;taient non index&#233;es &#224; cause d'une balise noindex. Ces balises sont des balises meta &lt;meta name=&quot;robots&quot; content=&quot;noindex&quot;&gt;. Comme je ne savais pas exactement quelles pages &#233;taient concern&#233;es, j'ai d&#233;cid&#233; de cr&#233;er un script simple pour parcourir le site et identifier toutes les pages contenant cette balise.&lt;/p&gt; &lt;p&gt;Dans cet article, je partage avec vous ce script et explique comment l'utiliser pour d&#233;tecter les pages avec une balise noindex. Cela peut vous &#234;tre utile si, comme moi, vous souhaitez corriger ce type de probl&#232;me pour am&#233;liorer l'indexation de votre site par les moteurs de recherche.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class='h3 spip'&gt;Introduction : identifier les barri&#232;res d'indexation&lt;/h2&gt;
&lt;p&gt;La balise &lt;strong&gt;noindex&lt;/strong&gt; est un &#233;l&#233;ment cl&#233; de la gestion du SEO. Elle signale aux moteurs de recherche que certaines pages ne doivent pas &#234;tre index&#233;es, ce qui peut impacter significativement votre visibilit&#233; organique si utilis&#233;e &#224; mauvais escient. Lors d'audits SEO, il est courant de d&#233;couvrir des balises noindex involontaires ou mal configur&#233;es qui nuisent &#224; l'indexation de pages strat&#233;giques.&lt;/p&gt; &lt;p&gt;Cet article pr&#233;sente une approche automatis&#233;e pour parcourir un site et identifier toutes les pages contenant une balise noindex. Cette technique est indispensable pour diagnostiquer les probl&#232;mes d'indexation signal&#233;s dans la Google Search Console et &#233;valuer si chaque balise noindex est justifi&#233;e.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Comprendre la balise noindex et ses impacts&lt;/h2&gt;
&lt;p&gt;La balise noindex est une directive du protocole &lt;strong&gt;robots&lt;/strong&gt; plac&#233;e dans la section &lt;strong&gt;&lt;head&gt;&lt;/strong&gt; d'une page HTML. Elle se pr&#233;sente sous la forme :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;meta name=&quot;robots&quot; content=&quot;noindex&quot; /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Ou de mani&#232;re plus compl&#232;te :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;meta name=&quot;robots&quot; content=&quot;noindex, nofollow&quot; /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Impact sur l'indexation&lt;/strong&gt; : Une page avec noindex est index&#233;e &lt;strong&gt;temporairement&lt;/strong&gt; par Google (pour v&#233;rifier la balise), puis &lt;strong&gt;supprim&#233;e des r&#233;sultats de recherche&lt;/strong&gt; apr&#232;s quelques semaines. Ce processus peut causer des fluctuations dans votre classement et votre couverture index&#233;e.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Quand noindex est justifi&#233;e&lt;/strong&gt; :
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; Pages de test ou d&#233;veloppement
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; Contenus en double (variantes de filtre, param&#232;tres d'URL)
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; Pages archiv&#233;es ou d&#233;pr&#233;ci&#233;es intentionnellement
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; Pages avec contenu sensible non destin&#233; au public&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Quand noindex pose probl&#232;me&lt;/strong&gt; :
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; Appliqu&#233;e accidentellement &#224; des pages strat&#233;giques
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; Pr&#233;-configur&#233;e sur un th&#232;me ou un CMS
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; R&#233;sultant de migrations mal g&#233;r&#233;es
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; Pr&#233;sente dans une feuille de style CSS appliqu&#233;e globalement&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Diagnostic : automatiser la d&#233;tection noindex&lt;/h2&gt;
&lt;p&gt;Plut&#244;t que d'inspecter manuellement chaque page, un script d'audit permet un diagnostic rapide et complet. Voici un script shell Linux qui t&#233;l&#233;charge votre site et identifie toutes les pages avec noindex.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Script de d&#233;tection noindex complet&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;#!/bin/bash&lt;br /&gt; &lt;br /&gt; # ============================================&lt;br /&gt; # Script d'audit SEO : d&#233;tection des balises noindex&lt;br /&gt; # Utilisation : ./script.sh https://www.exemple.com [PROFONDEUR]&lt;br /&gt; # ============================================&lt;br /&gt; &lt;br /&gt; # V&#233;rifier si une URL a &#233;t&#233; fournie&lt;br /&gt; if [ -z &quot;$1&quot; ]; then&lt;br /&gt; echo &quot;Usage: $0 &lt;URL&gt; [PROFONDEUR]&quot;&lt;br /&gt; echo &quot;Exemple : $0 https://www.exemple.com 3&quot;&lt;br /&gt; exit 1&lt;br /&gt; fi&lt;br /&gt; &lt;br /&gt; SITE_URL=&quot;$1&quot;&lt;br /&gt; DEPTH=${2:-2} # Profondeur par d&#233;faut : 2&lt;br /&gt; OUTPUT_DIR=&quot;site_scan_$(date +%s)&quot;&lt;br /&gt; NOINDEX_FILE=&quot;noindex_pages_$(date +%Y%m%d_%H%M%S).txt&quot;&lt;br /&gt; &lt;br /&gt; # Cr&#233;er un r&#233;pertoire temporaire pour stocker les pages&lt;br /&gt; mkdir -p &quot;$OUTPUT_DIR&quot;&lt;br /&gt; echo &quot;[*] Cr&#233;ation du r&#233;pertoire : $OUTPUT_DIR&quot;&lt;br /&gt; echo &quot;[*] Profondeur de parcours : $DEPTH&quot;&lt;br /&gt; &lt;br /&gt; # T&#233;l&#233;charger le site avec wget&lt;br /&gt; # --mirror : mode miroir (t&#233;l&#233;charge r&#233;cursivement)&lt;br /&gt; # --convert-links : convertit les liens pour navigation locale&lt;br /&gt; # --adjust-extension : ajoute .html si n&#233;cessaire&lt;br /&gt; # --page-requisites : t&#233;l&#233;charge les ressources (CSS, JS, images)&lt;br /&gt; # --no-parent : n'explore pas les r&#233;pertoires parents&lt;br /&gt; # --level : limite la profondeur de r&#233;cursion&lt;br /&gt; echo &quot;[*] T&#233;l&#233;chargement du site en cours...&quot;&lt;br /&gt; wget --mirror \&lt;br /&gt; --convert-links \&lt;br /&gt; --adjust-extension \&lt;br /&gt; --page-requisites \&lt;br /&gt; --no-parent \&lt;br /&gt; --level=&quot;$DEPTH&quot; \&lt;br /&gt; &quot;$SITE_URL&quot; \&lt;br /&gt; -P &quot;$OUTPUT_DIR&quot; \&lt;br /&gt; --quiet&lt;br /&gt; &lt;br /&gt; # Rechercher les pages contenant la balise noindex&lt;br /&gt; echo &quot;[*] Analyse des pages pour d&#233;tecter noindex...&quot;&lt;br /&gt; find &quot;$OUTPUT_DIR&quot; -type f -name &quot;*.html&quot; | while read -r file; do&lt;br /&gt; # Regex expliqu&#233;e :&lt;br /&gt; # &lt;meta[^&gt;]* : ouverture de la balise meta (accepte tous les attributs)&lt;br /&gt; # name=&quot;robots&quot; : recherche l'attribut name avec la valeur robots&lt;br /&gt; # [^&gt;]* : accepte d'autres attributs (ex: http-equiv)&lt;br /&gt; # content=&quot;[^&quot;]*noindex : v&#233;rifie que noindex est dans l'attribut content&lt;br /&gt; &lt;br /&gt; if grep -qi '&lt;meta[^&gt;]*name=&quot;robots&quot;[^&gt;]*content=&quot;[^&quot;]*noindex' &quot;$file&quot;; then&lt;br /&gt; echo &quot;Page avec noindex trouv&#233;e : $file&quot;&lt;br /&gt; echo &quot;$file&quot; &gt;&gt; &quot;$NOINDEX_FILE&quot;&lt;br /&gt; fi&lt;br /&gt; done&lt;br /&gt; &lt;br /&gt; # Afficher les r&#233;sultats&lt;br /&gt; echo &quot;&quot;&lt;br /&gt; echo &quot;[*] R&#233;sultats :&quot;&lt;br /&gt; if [ -f &quot;$NOINDEX_FILE&quot; ]; then&lt;br /&gt; count=$(wc -l &lt; &quot;$NOINDEX_FILE&quot;)&lt;br /&gt; echo &quot;&#9888;&#65039; $count page(s) contenant une balise noindex d&#233;tect&#233;e(s)&quot;&lt;br /&gt; echo &quot;&#128196; Fichier de r&#233;sultats : $NOINDEX_FILE&quot;&lt;br /&gt; echo &quot;&quot;&lt;br /&gt; echo &quot;=== PAGES AVEC NOINDEX ===&quot;&lt;br /&gt; cat &quot;$NOINDEX_FILE&quot;&lt;br /&gt; else&lt;br /&gt; echo &quot;&#10003; Aucune balise noindex n'a &#233;t&#233; trouv&#233;e.&quot;&lt;br /&gt; fi&lt;/code&gt;&lt;/div&gt;
&lt;h2 class='h3 spip'&gt;Utilisation du script&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Rendre le script ex&#233;cutable&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;chmod +x script_noindex.sh&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;2. Lancer l'audit&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Avec une profondeur par d&#233;faut (2 niveaux) :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;./script_noindex.sh https://www.exemple.com&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Avec une profondeur personnalis&#233;e (ex : 4 niveaux pour un gros site) :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;./script_noindex.sh https://www.exemple.com 4&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;3. Consulter les r&#233;sultats&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Le script g&#233;n&#232;re un fichier &lt;strong&gt;noindex_pages_YYYYMMDD_HHMMSS.txt&lt;/strong&gt; contenant la liste des pages affect&#233;es. Ouvrez ce fichier pour identifier les probl&#232;mes.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Interpr&#233;tation des r&#233;sultats et diagnostic&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Cas 1 : Pages intentionnellement en noindex&lt;/strong&gt;
Si vous trouvez des pages avec noindex que vous aviez volontairement marqu&#233;es, c'est normal. V&#233;rifiez simplement que chacune de ces pages m&#233;rite r&#233;ellement cette balise.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Cas 2 : Pages strat&#233;giques affect&#233;es&lt;/strong&gt;
Si le script d&#233;tecte noindex sur des pages que vous souhaitez indexer :
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; V&#233;rifiez la source du probl&#232;me : CMS, th&#232;me, configuration serveur, ou erreur humaine
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; Supprimez ou modifiez la balise en &lt;strong&gt;noindex, nofollow&lt;/strong&gt; vers &lt;strong&gt;index, follow&lt;/strong&gt; ou supprimez-la compl&#232;tement
&lt;br /&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L8xH11/puce-32883.gif' width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; Forcez une exploration Google en soumettant l'URL via la Search Console&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Cas 3 : Aucune balise noindex d&#233;tect&#233;e&lt;/strong&gt;
Excellent ! Mais assurez-vous que le site &#233;tait complet. V&#233;rifiez la profondeur utilis&#233;e et augmentez-la si certaines sections ne sont pas explor&#233;es.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Limitations et consid&#233;rations importantes&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Respect de robots.txt&lt;/strong&gt; : Le script wget respecte le fichier &lt;strong&gt;robots.txt&lt;/strong&gt; de votre site. Si des pages sont bloqu&#233;es par robots.txt, elles ne seront pas t&#233;l&#233;charg&#233;es. Modifiez la commande wget avec &lt;strong&gt;&#8212;execute robots=off&lt;/strong&gt; si vous voulez ignorer robots.txt (&#224; utiliser avec prudence).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Sites tr&#232;s volumineux&lt;/strong&gt; : Pour les sites avec des milliers de pages, augmenter la profondeur peut &#234;tre tr&#232;s long. Envisagez de limiter le domaine ou d'utiliser des crawleurs SEO professionnels comme Screaming Frog pour les audits complets.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Pages dynamiques&lt;/strong&gt; : Ce script capture le HTML statique. Les pages g&#233;n&#233;r&#233;es en JavaScript c&#244;t&#233; client ne seront pas correctement analys&#233;es. Pour les sites single-page application (SPA), utilisez des outils comme Puppeteer ou Playwright.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Authentification requise&lt;/strong&gt; : Si votre site demande une authentification, le script ne peut pas y acc&#233;der. Vous devrez ajuster wget pour fournir des identifiants ou tester manuellement.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Bonnes pratiques pour la gestion de noindex&lt;/h2&gt;
&lt;p&gt;1. &lt;strong&gt;Documentez vos d&#233;cisions&lt;/strong&gt; : Maintenez un registre des pages intentionnellement en noindex et des raisons sous-jacentes
2. &lt;strong&gt;Auditez r&#233;guli&#232;rement&lt;/strong&gt; : Relancez ce script trimestriellement pour d&#233;tecter toute d&#233;gradation
3. &lt;strong&gt;Validez en Search Console&lt;/strong&gt; : Utilisez l'onglet &#171; Couverture &#187; pour croiser les r&#233;sultats et identifier les pages non index&#233;es pour d'autres raisons
4. &lt;strong&gt;Privil&#233;giez disallow dans robots.txt&lt;/strong&gt; : Pour les pages vraiment priv&#233;es, &lt;strong&gt;robots.txt&lt;/strong&gt; est plus appropri&#233; que noindex
5. &lt;strong&gt;Testez avant d&#233;ploiement&lt;/strong&gt; : Utilisez une branche de staging pour valider vos changements avant production&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;La d&#233;tection automatis&#233;e des balises noindex est une &#233;tape critique d'un audit SEO complet. Ce script vous permet d'identifier rapidement les probl&#232;mes d'indexation et de prendre les mesures correctives n&#233;cessaires. En combinant cet outil avec la Search Console et une bonne compr&#233;hension des impacts, vous pouvez optimiser consid&#233;rablement votre couverture index&#233;e et votre visibilit&#233; organique.&lt;/p&gt; &lt;p&gt;L'important est de maintenir un &#233;quilibre : bloquer intentionnellement ce qui doit l'&#234;tre, tout en assurant que vos pages strat&#233;giques restent pleinement accessibles aux moteurs de recherche.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>SERP, SPIP, breadcrumb et SEO</title>
		<link>https://www.orsal.fr/SERP-SPIP-breadcrumb-et-SEO</link>
		<guid isPermaLink="true">https://www.orsal.fr/SERP-SPIP-breadcrumb-et-SEO</guid>
		<dc:date>2018-04-24T12:48:43Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Guillaume Orsal</dc:creator>



		<description>
&lt;p&gt;Vous avez peut-&#234;tre d&#233;j&#224; remarqu&#233; que les SERP de Google ont souvent un affichage diff&#233;rent. Les SERP, pour Search Engine Result Page, ce sont les pages r&#233;sultats d'un moteur de recherche. La variation qui m'int&#233;resse ici est la ligne qui contient traditionnellement l'url de la page, la petite ligne verte. Parfois, elle se pr&#233;sente sous la forme d'un fil d'ariane, qui reprend le fil d'ariane pr&#233;sent sur la page. Je trouve cela plus parlant pour la personne qui fait une recherche, alors voyons comment (...)&lt;/p&gt;


-
&lt;a href="https://www.orsal.fr/Referencement-SEO-GEO" rel="directory"&gt;R&#233;f&#233;rencement SEO/GEO&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logos' alt=&quot;&quot; align=&quot;right&quot; src='https://www.orsal.fr/local/cache-vignettes/L150xH150/arton65-eac66.jpg' width='150' height='150' onmouseover=&quot;this.src='local/cache-vignettes/L150xH150/artoff65-8ed12.jpg'&quot; onmouseout=&quot;this.src='local/cache-vignettes/L150xH150/arton65-eac66.jpg'&quot; style='height:150px;width:150px;' /&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Vous avez peut-&#234;tre d&#233;j&#224; remarqu&#233; que les &lt;strong&gt;SERP de Google&lt;/strong&gt; ont souvent un affichage diff&#233;rent. Les SERP, pour Search Engine Result Page, ce sont les pages r&#233;sultats d'un moteur de recherche.&lt;/p&gt; &lt;p&gt;La variation qui m'int&#233;resse ici est la ligne qui contient traditionnellement l'url de la page, la petite ligne verte. Parfois, elle se pr&#233;sente &lt;strong&gt;sous la forme d'un fil d'ariane&lt;/strong&gt;, qui reprend le fil d'ariane pr&#233;sent sur la page. Je trouve cela plus parlant pour la personne qui fait une recherche, alors voyons comment mettre &#231;a en place.
[sommaire]&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Web s&#233;mantique &amp; schema.org&lt;/h2&gt;
&lt;p&gt;Bon, aujourd'hui il y a des &lt;a href=&quot;https://www.youtube.com/watch?time_continue=1&amp;v=aaOB-ErYq6Y&quot; class='spip_out' rel='external'&gt;projets de voiture autonome&lt;/a&gt; sans pilote plut&#244;t bien avanc&#233;s. Mais voil&#224;, &lt;strong&gt;un moteur de recherche n'arrive pas encore &#224; d&#233;tecter et lire tout seul le fil d'ariane&lt;/strong&gt; et il va falloir l'aider. Pour cela on va utiliser le &lt;strong&gt;&lt;a href=&quot;http://fr.wikipedia.org/wiki/Web_s%C3%A9mantique&quot; class='spip_glossaire' rel='external'&gt;Web s&#233;mantique&lt;/a&gt;&lt;/strong&gt;. Nous allons ajouter des balises dans les pages Web qui vont &lt;strong&gt;donner du sens au contenu&lt;/strong&gt; en ajoutant des meta informations qui permettent aux moteurs de recherche de mieux comprendre le contenu des pages Web.&lt;/p&gt; &lt;p&gt;&lt;span class='spip_document_40 spip_documents spip_documents_center'&gt;
&lt;img src='https://www.orsal.fr/local/cache-vignettes/L500xH191/serp-google-breadcrumb-seo-64888.jpg' width='500' height='191' alt=&quot;&quot; style='height:191px;width:500px;' /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Il existe plusieurs syst&#232;mes de balises comme &lt;a href=&quot;http://microformats.org/wiki/Main_Page&quot; class='spip_out' rel='external'&gt;microformats&lt;/a&gt; ou &lt;a href=&quot;http://dublincore.org/&quot; class='spip_out' rel='external'&gt;Dublin core&lt;/a&gt;, mais je vais utiliser &lt;strong&gt;&lt;a href=&quot;http://schema.org/&quot; class='spip_out' rel='external'&gt;schema.org&lt;/a&gt;&lt;/strong&gt; car il me semble &#234;tre mieux reconnu par Google. D'ailleurs c'est celui qu'ils utilisent dans &lt;a href=&quot;https://developers.google.com/search/docs/data-types/breadcrumb&quot; class='spip_out' rel='external'&gt;leurs exemples&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Ces diff&#233;rents syst&#232;mes ne sont pas incompatibles entre eux, bien au contraire, je vous invite &#224; tous &lt;strong&gt;les utiliser sur vos pages Web pour am&#233;liorer votre r&#233;f&#233;rencement&lt;/strong&gt;. Ils permettent de repr&#233;senter de mani&#232;re structur&#233;e plein de types d'information. Cela d&#233;passe le cadre de cet article, et nous allons nous focaliser sur les &lt;a href=&quot;http://schema.org/BreadcrumbList&quot; class='spip_out' rel='external'&gt;BreadcrumbList&lt;/a&gt;. &#171; Breadcrumb trail &#187; c'est le terme anglais pour d&#233;signer le fil d'Ariane sur les pages Web.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Prenons un exemple&lt;/h2&gt;
&lt;p&gt;Voici un exemple de fil d'ariane :&lt;/p&gt; &lt;p&gt;&lt;code class='spip_code' dir='ltr'&gt;Accueil &gt; SEO &gt; Web s&#233;mantique &gt; SERP, SPIP et breadcrumb&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Schema.org d&#233;finit donc une &lt;strong&gt;&lt;a href=&quot;http://schema.org/BreadcrumbList&quot; class='spip_out' rel='external'&gt;structure pour les breadcrumb&lt;/a&gt;&lt;/strong&gt;, c'est &#224; dire une liste et une hi&#233;rarchie d'information qui permet de d&#233;finir un fil d'Ariane et ses &#233;l&#233;ments. Pour faire simple, je vais me limiter ici aux champs obligatoires ou les plus pertinents : &lt;strong&gt;le nom, l'url et la position&lt;/strong&gt;. En explorant le site de &lt;a href=&quot;http://schema.org/BreadcrumbList&quot; class='spip_out' rel='external'&gt;schema.org&lt;/a&gt;, vous pourrez d&#233;couvrir tout ce qu'il est possible de param&#233;trer.&lt;/p&gt; &lt;p&gt;Les &#233;l&#233;ments de mon exemple se d&#233;finissent alors ainsi :&lt;/p&gt; &lt;table class=&quot;spip&quot;&gt;
&lt;tr class='row_even'&gt;
&lt;td&gt; nom &lt;/td&gt;
&lt;td&gt; url &lt;/td&gt;
&lt;td&gt; position &lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd'&gt;
&lt;td&gt; Accueil &lt;/td&gt;
&lt;td&gt; &lt;a href=&quot;https://www.orsal.fr/&quot; class='spip_url spip_out' rel='nofollow'&gt;https://www.orsal.fr/&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; 1 &lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even'&gt;
&lt;td&gt; SEO &lt;/td&gt;
&lt;td&gt; &lt;a href=&quot;https://www.orsal.fr/seo/&quot; class='spip_url spip_out' rel='nofollow'&gt;https://www.orsal.fr/seo/&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; 2 &lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd'&gt;
&lt;td&gt; Web s&#233;mantique &lt;/td&gt;
&lt;td&gt; &lt;a href=&quot;https://www.orsal.fr/seo/web-semantique/&quot; class='spip_url spip_out' rel='nofollow'&gt;https://www.orsal.fr/seo/web-semantique/&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; 3 &lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even'&gt;
&lt;td&gt; SERP, SPIP et breadcrumb &lt;/td&gt;
&lt;td&gt; &lt;a href=&quot;https://www.orsal.fr/seo/web-semantique/serp-spip-breadcrumb&quot; class='spip_url spip_out' rel='nofollow'&gt;https://www.orsal.fr/seo/web-semant...&lt;/a&gt; &lt;/td&gt;
&lt;td&gt; 4 &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Il va falloir transformer la gestion du fil d'Ariane en place sur un site SPIP pour obtenir une liste avec les informations ajout&#233;es. Initialement le code HTML pour mon fil d'Ariane ressemble &#224; cela :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;p id=&quot;hierarchie&quot;&gt;&lt;br /&gt; &lt;a href=&quot;https://www.orsal.fr/&quot;&gt;Accueil&lt;/a&gt; &gt;&lt;br /&gt; &lt;a href=&quot;/seo/&quot;&gt;SEO&lt;/a&gt; &gt;&lt;br /&gt; &lt;a href=&quot;/seo/web-semantique/&quot;&gt;Web s&#233;mantique&lt;/a&gt; &gt;&lt;br /&gt; &lt;strong class=&quot;on&quot;&gt;SERP, SPIP et breadcrumb&lt;/strong&gt;&lt;br /&gt; &lt;/p&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;L'objectif est de transformer la g&#233;n&#233;ration du bloc dans le squelette SPIP pour obtenir ce type de bloc :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;ol itemscope itemtype=&quot;http://schema.org/BreadcrumbList&quot; id=&quot;hierarchie&quot;&gt;&lt;br /&gt; &lt;br /&gt; &lt;li itemprop=&quot;itemListElement&quot; itemscope itemtype=&quot;http://schema.org/ListItem&quot;&gt;&lt;br /&gt; &lt;a href=&quot;https://www.orsal.fr/&quot; itemprop=&quot;item&quot;&gt;&lt;br /&gt; &lt;span itemprop=&quot;name&quot;&gt;Accueil&lt;/span&gt;&lt;br /&gt; &lt;/a&gt;&lt;br /&gt; &lt;meta itemprop=&quot;position&quot; content=&quot;1&quot; /&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;br /&gt; &lt;li itemprop=&quot;itemListElement&quot; itemscope itemtype=&quot;http://schema.org/ListItem&quot;&gt; &gt; &lt;br /&gt; &lt;a href=&quot;/seo/&quot; itemprop=&quot;item&quot;&gt;&lt;br /&gt; &lt;span itemprop=&quot;name&quot;&gt;SEO&lt;/span&gt;&lt;br /&gt; &lt;/a&gt;&lt;br /&gt; &lt;meta itemprop=&quot;position&quot; content=&quot;2&quot; /&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;br /&gt; &lt;li itemprop=&quot;itemListElement&quot; itemscope itemtype=&quot;http://schema.org/ListItem&quot;&gt; &gt; &lt;br /&gt; &lt;a href=&quot;/seo/web-semantique&quot; itemprop=&quot;item&quot;&gt;&lt;br /&gt; &lt;span itemprop=&quot;name&quot;&gt;Web s&#233;mantique&lt;/span&gt;&lt;br /&gt; &lt;/a&gt;&lt;br /&gt; &lt;meta itemprop=&quot;position&quot; content=&quot;3&quot; /&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;br /&gt; &lt;li itemprop=&quot;itemListElement&quot; itemscope itemtype=&quot;http://schema.org/ListItem&quot;&gt; &gt; &lt;br /&gt; &lt;strong class=&quot;on&quot;&gt;&lt;br /&gt; &lt;a href=&quot;/seo/web-semantique/serp-spip-breadcrumb&quot; itemprop=&quot;item&quot;&gt;&lt;br /&gt; &lt;span itemprop=&quot;name&quot;&gt;SERP, SPIP et breadcrumb&lt;/span&gt;&lt;br /&gt; &lt;/a&gt;&lt;br /&gt; &lt;/strong&gt;&lt;br /&gt; &lt;meta itemprop=&quot;position&quot; content=&quot;4&quot; /&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;br /&gt; &lt;/ol&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Il s'agit d'une liste de liens. Voici comment la lire.&lt;/p&gt; &lt;p&gt;Les &lt;strong&gt;donn&#233;es structur&#233;es&lt;/strong&gt; schema.org sont les propri&#233;t&#233;s &lt;i&gt;itemprop&lt;/i&gt;, &lt;i&gt;itemscope&lt;/i&gt; et &lt;i&gt;itemtype&lt;/i&gt; :&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;strong&gt;itemscope&lt;/strong&gt; indique que le bloc html courant correspond &#224; un bloc schema.org&lt;/li&gt;&lt;li&gt; &lt;strong&gt;itemtype&lt;/strong&gt; permet de pr&#233;ciser le type du bloc schema.org courant&lt;/li&gt;&lt;li&gt; &lt;strong&gt;itemprop&lt;/strong&gt; d&#233;finit une propri&#233;t&#233; du bloc courant&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;C'est r&#233;cursif, un bloc peut se retrouver l'enfant d'un autre.&lt;/p&gt; &lt;p&gt;Ainsi le bloc &lt;code class='spip_code' dir='ltr'&gt;&lt;ol/&gt;&lt;/code&gt; correspond &#224; une &lt;i&gt;BreadcrumbList&lt;/i&gt;, et chaque &lt;code class='spip_code' dir='ltr'&gt;&lt;li/&gt;&lt;/code&gt; &#224; un &lt;i&gt;itemListElement&lt;/i&gt; enfant de la &lt;i&gt;BreadcrumbList&lt;/i&gt;, de type &lt;i&gt;ListItem&lt;/i&gt;. C'est pas clair ? Relisez doucement le source HTML, &#231;a va venir.&lt;/p&gt; &lt;p&gt;En pla&#231;ant la propri&#233;t&#233; &lt;i&gt;item&lt;/i&gt; sur la balise &lt;code class='spip_code' dir='ltr'&gt;&lt;a/&gt;&lt;/code&gt;, cela permet de d&#233;finir une propri&#233;t&#233; de type &lt;i&gt;url&lt;/i&gt;. J'ai ajout&#233; un bloc &lt;code class='spip_code' dir='ltr'&gt;&lt;span/&gt;&lt;/code&gt;, juste pour porter la propri&#233;t&#233; &lt;i&gt;name&lt;/i&gt;. Enfin pour la position, comme je n'avais pas d'&#233;l&#233;ment o&#249; l'ins&#233;rer, j'ai directement ajout&#233; un bloc &lt;code class='spip_code' dir='ltr'&gt;&lt;meta&gt;&lt;/code&gt;, qui ne s'affichera donc pas, mais sera bien pr&#233;sent dans le code.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Google et les donn&#233;es structur&#233;es&lt;/h2&gt;
&lt;p&gt;La liste des champs/propri&#233;t&#233;s possibles sont disponibles sur le site de schema.org.&lt;/p&gt; &lt;p&gt;Une liste plus synth&#233;tique des champs recommand&#233;s ou obligatoires, sont disponibles dans les &lt;a href=&quot;https://developers.google.com/search/docs/data-types/breadcrumb&quot; class='spip_out' rel='external'&gt;directives pour les donn&#233;es structur&#233;es d&#233;finies par Google&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;En utilisant des &lt;strong&gt;donn&#233;es structur&#233;es&lt;/strong&gt; sur votre site, vous am&#233;liorez la compr&#233;hension de votre site par les moteurs de recherche, donc vous en &lt;strong&gt;am&#233;liorez le r&#233;f&#233;rencement&lt;/strong&gt;, et vous b&#233;n&#233;ficiez parfois d'un affichage optimis&#233; (rich snippet) dans les r&#233;sultats de recherche, comme l'affichage des notes sur des produits, ou les &#233;l&#233;ments d'&lt;a href=&quot;https://www.google.fr/search?q=recette+cr%C3%A8pes&quot; class='spip_out' rel='external'&gt;une recette&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Outil indispensable&lt;/strong&gt; lorsque vous travaillez les donn&#233;es structur&#233;es, Google propose un analyseur de code source qui vous montre le r&#233;sultat de la d&#233;tection par le moteur de recherche des balises s&#233;mantiques, pour &lt;a href=&quot;https://search.google.com/structured-data/testing-tool?hl=fr&quot; class='spip_out' rel='external'&gt;tester vos donn&#233;es structur&#233;es&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Il vous indiquera &#233;galement les erreurs que vous auriez pu commettre dans l'encha&#238;nement des blocs. Utilisez-le pour d&#233;bugger vos balises.&lt;/p&gt; &lt;p&gt;Pas de jaloux, les donn&#233;es structur&#233;es fonctionnent &#233;galement chez &lt;a href=&quot;https://www.bing.com/toolbox/markup-validator&quot; class='spip_out' rel='external'&gt;Microsoft Bing&lt;/a&gt; et &lt;a href=&quot;https://webmaster.yandex.com/tools/microtest/&quot; class='spip_out' rel='external'&gt;Yandex&lt;/a&gt;, entre autres.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;SPIP et les donn&#233;es structur&#233;es&lt;/h2&gt;
&lt;p&gt;L'objectif est d'int&#233;grer ceci &#224; un site SPIP. J'ai fait la modification sur les pages &lt;i&gt;article&lt;/i&gt; et &lt;i&gt;rubrique&lt;/i&gt; pour lesquelles je voyais un int&#233;r&#234;t &#224; avoir un fil d'Ariane.&lt;/p&gt; &lt;p&gt;Pour cela, j'ai copi&#233; les fichiers &lt;i&gt;article.html&lt;/i&gt; et &lt;i&gt;rubrique.html&lt;/i&gt; que j'ai trouv&#233;s dans le r&#233;pertoire de mon th&#232;me actuel, vers le r&#233;pertoire &lt;code class='spip_code' dir='ltr'&gt;squelette/contenu/&lt;/code&gt; du site, pour &lt;strong&gt;surcharger les squelettes&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;J'ai ensuite rechercher et &lt;strong&gt;remplacer le bloc hi&#233;rarchie&lt;/strong&gt; pr&#233;sent dans les fichiers. Voici le morceau de squelette qui permet de g&#233;n&#233;rer le fil d'Ariane avec les m&#233;ta donn&#233;es.&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[(#REM) Fil d'Ariane ]&lt;br /&gt; &lt;ol itemscope itemtype=&quot;http://schema.org/BreadcrumbList&quot; id=&quot;hierarchie&quot;&gt;&lt;br /&gt; &lt;li itemprop=&quot;itemListElement&quot; itemscope itemtype=&quot;http://schema.org/ListItem&quot;&gt;&lt;br /&gt; &lt;a href=&quot;#URL_SITE_SPIP/&quot; itemprop=&quot;item&quot;&gt;&lt;br /&gt; &lt;span itemprop=&quot;name&quot;&gt;&lt;:accueil_site:&gt;&lt;/span&gt;&lt;br /&gt; &lt;/a&gt;&lt;br /&gt; &lt;meta itemprop=&quot;position&quot; content=&quot;1&quot; /&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;BOUCLE_ariane(HIERARCHIE){id_article}&gt;&lt;br /&gt; &lt;li itemprop=&quot;itemListElement&quot; itemscope itemtype=&quot;http://schema.org/ListItem&quot;&gt; &gt; &lt;br /&gt; &lt;a href=&quot;#URL_RUBRIQUE&quot; itemprop=&quot;item&quot;&gt;&lt;br /&gt; &lt;span itemprop=&quot;name&quot;&gt;[(#TITRE|couper{80})]&lt;/span&gt;&lt;br /&gt; &lt;/a&gt;&lt;br /&gt; &lt;meta itemprop=&quot;position&quot; content=&quot;[(#COMPTEUR_BOUCLE|plus{1})]&quot; /&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;/BOUCLE_ariane&gt;&lt;br /&gt; [&lt;li itemprop=&quot;itemListElement&quot; itemscope itemtype=&quot;http://schema.org/ListItem&quot;&gt; &gt; &lt;br /&gt; &lt;a href=&quot;#URL_ARTICLE&quot; itemprop=&quot;item&quot;&gt;&lt;br /&gt; &lt;span itemprop=&quot;name&quot;&gt;(#TITRE|couper{80})&lt;/span&gt;&lt;br /&gt; &lt;/a&gt;&lt;br /&gt; &lt;meta itemprop=&quot;position&quot; content=&quot;[(#TOTAL_BOUCLE|plus{2})]&quot; /&gt;&lt;br /&gt; &lt;/li&gt;]&lt;br /&gt; &lt;/B_ariane&gt;&lt;br /&gt; &lt;/ol&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Le bloc &lt;code class='spip_code' dir='ltr'&gt;&lt;ol/&gt;&lt;/code&gt; est cod&#233; en dur puisqu'il encapsulera toujours le fil d'Ariane. Chaque bloc &lt;code class='spip_code' dir='ltr'&gt;&lt;li/&gt;&lt;/code&gt; qui le constitue correspond &#224; un niveau hi&#233;rarchique.&lt;/p&gt; &lt;p&gt;Le premier &#233;l&#233;ment &lt;code class='spip_code' dir='ltr'&gt;&lt;li/&gt;&lt;/code&gt; correspond &#224; la page d'accueil. La &lt;strong&gt;position du premier &#233;l&#233;ment doit &#234;tre &#233;gale &#224; 1&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Ensuite on entre dans une &lt;strong&gt;boucle sur la hi&#233;rarchie des rubriques entre l'accueil du site et la page courante&lt;/strong&gt;. Pour chaque niveau, on retrouve un bloc &lt;code class='spip_code' dir='ltr'&gt;&lt;li/&gt;&lt;/code&gt;. La position est calcul&#233;e sur la &lt;strong&gt;balise SPIP #COMPTEUR_BOUCLE&lt;/strong&gt; qui nous donne le num&#233;ro d'it&#233;ration. On ajoute 1, avec le filtre &lt;code class='spip_code' dir='ltr'&gt;plus {1}&lt;/code&gt; car le premier c'est la page d'accueil.&lt;/p&gt; &lt;p&gt;A partir de SPIP 3.0, il existe la &lt;strong&gt;balise #PROFONDEUR&lt;/strong&gt; qui indique la profondeur d'une rubrique, mais la num&#233;rotation commence &#224; 0, et la position attendue pour le premier &#233;l&#233;ment est 1. Donc je pr&#233;f&#232;re garder mon syst&#232;me de comptage sur la boucle qui fonctionne pour toutes les versions de SPIP.&lt;/p&gt; &lt;p&gt;Enfin, pour le &lt;strong&gt;dernier &#233;l&#233;ment du fil d'Ariane&lt;/strong&gt;, il s'agit de la page actuellement visit&#233;e, j'ai utilis&#233; un lien vers la page courante pour &lt;strong&gt;ajouter du maillage interne important en SEO&lt;/strong&gt;. J'ai plac&#233; le code dans le bloc optionnel, entre la balise fermante &lt;code class='spip_code' dir='ltr'&gt;&lt;/BOUCLE_ariane&gt;&lt;/code&gt; et la balise fermante &lt;code class='spip_code' dir='ltr'&gt;&lt;/B_ariane&gt;&lt;/code&gt;, pour que la &lt;strong&gt;balise #TOTAL_BOUCLE&lt;/strong&gt; contienne le nombre d'&#233;l&#233;ments trouv&#233;s dans la hi&#233;rarchie. Cela va permettre de calculer la position du dernier &#233;l&#233;ment, via le filtre &lt;code class='spip_code' dir='ltr'&gt;plus {2}&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;De plus ce bloc est entre crochet pour que les balises et filtres soient remplac&#233;s et calcul&#233;s lors de la g&#233;n&#233;ration de la page.&lt;/p&gt; &lt;p&gt;Une fois que vous avez apport&#233; la modification sur les deux squelettes, il n'y a plus qu'&#224; recalculer la page et vider le cache, et enfin attendre que les moteurs de recherche fassent la mise &#224; jour.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;CSS &amp; fil d'ariane&lt;/h2&gt;
&lt;p&gt;Si tout s'est bien pass&#233;, vous devez obtenir une liste ordonn&#233;e qui correspond &#224; votre fil d'Ariane. Mais pour l'instant les &#233;l&#233;ments sont les uns en dessous des autres, avec une num&#233;rotation.&lt;/p&gt; &lt;p&gt;Pour modifier cela, j'ai utilis&#233; un peu de CSS, dans le fichier &lt;code class='spip_code' dir='ltr'&gt;squelette/perso.css&lt;/code&gt; pour surcharger le style de mon th&#232;me.&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;#hierarchie li {&lt;br /&gt; list-style-type: none;&lt;br /&gt; margin-left: 0;&lt;br /&gt; display: inline;&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Cela correspond &#224; :&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;strong&gt;list-style-type&lt;/strong&gt; permet de masquer la num&#233;rotation&lt;/li&gt;&lt;li&gt; &lt;strong&gt;margin-left&lt;/strong&gt; permet de supprimer le d&#233;calage de la num&#233;rotation&lt;/li&gt;&lt;li&gt; &lt;strong&gt;display&lt;/strong&gt; permet d'afficher chaque &#233;l&#233;ment du fil d'Ariane sur la m&#234;me ligne &#224; la suite&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Pensez &#224; rafra&#238;chir le cache pour v&#233;rifier les modifications.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Pour aller plus loin&lt;/h2&gt;
&lt;p&gt;N'oubliez pas de tester le r&#233;sultats de vos modifications avec l'outil de Google, pour v&#233;rifier qu'il d&#233;tecte bien tous vos champs. Vous d&#233;couvrirez au passage peut-&#234;tre d'autres balises d&#233;j&#224; pr&#233;sentes sur la page.&lt;/p&gt; &lt;p&gt;Le champ des possibles avec les donn&#233;es structur&#233;es est immense et reconnu par tous les moteurs de recherche. N'h&#233;sitez pas &#224; en abuser sur vos pages.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Sitemap avec images pour SPIP</title>
		<link>https://www.orsal.fr/Sitemap-avec-images-pour-SPIP</link>
		<guid isPermaLink="true">https://www.orsal.fr/Sitemap-avec-images-pour-SPIP</guid>
		<dc:date>2014-11-09T14:20:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Guillaume Orsal</dc:creator>



		<description>
&lt;p&gt;Le sitemap par d&#233;faut de SPIP contient peu d'information. Les plugins de sitemap que j'ai trouver ne proposaient pas l'int&#233;gration des images dans le sitemap. Pour am&#233;liorer le r&#233;f&#233;rencement naturel de mes sites SPIP, j'ai donc cherch&#233; &#224; int&#233;grer les images puisque Google fait la distinction lors de son int&#233;gration. Petit rappel sur les sitemaps Pour ceux qui ne sauraient pas ce qu'est un sitemap, il s'agit un fichier standardis&#233; qui permet aux moteurs de recherche d'obtenir la liste du contenu de (...)&lt;/p&gt;


-
&lt;a href="https://www.orsal.fr/Referencement-SEO-GEO" rel="directory"&gt;R&#233;f&#233;rencement SEO/GEO&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logos' alt=&quot;&quot; align=&quot;right&quot; src='https://www.orsal.fr/local/cache-vignettes/L150xH146/arton56-8ac0a.jpg' width='150' height='146' onmouseover=&quot;this.src='local/cache-vignettes/L150xH146/artoff56-124f3.jpg'&quot; onmouseout=&quot;this.src='local/cache-vignettes/L150xH146/arton56-8ac0a.jpg'&quot; style='height:146px;width:150px;' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Le sitemap par d&#233;faut de SPIP contient peu d'information. Les plugins de sitemap que j'ai trouver ne proposaient pas l'int&#233;gration des images dans le sitemap.&lt;/p&gt; &lt;p&gt;Pour am&#233;liorer le r&#233;f&#233;rencement naturel de mes sites SPIP, j'ai donc cherch&#233; &#224; int&#233;grer les images puisque Google fait la distinction lors de son int&#233;gration.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class='h3 spip'&gt;Petit rappel sur les sitemaps&lt;/h2&gt;
&lt;p&gt;Pour ceux qui ne sauraient pas ce qu'est un sitemap, il s'agit un fichier standardis&#233; qui permet aux moteurs de recherche d'obtenir la liste du contenu de votre site : pages, images et vid&#233;os.&lt;/p&gt; &lt;p&gt;Vous trouverez plus d'explication sur la structure de ce fichier directement sur le site &lt;a href=&quot;http://www.sitemaps.org/&quot; class='spip_out' rel='external'&gt;sitemaps.org&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Le fichier sitemap joue un r&#244;le important dans la qualit&#233; du r&#233;f&#233;rencement d'un site web. Il faut donc s'assurer que le fichier soit pr&#233;sent, correctement construit, et enfin, il faut indiquer sa pr&#233;sence aux moteurs de recherches, par exemple, en utilisant &lt;a href=&quot;https://www.google.com/webmasters/tools/?hl=fr&quot; class='spip_out' rel='external'&gt;Google Webmaster Tools&lt;/a&gt;.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Images sous Google Webmaster Tools&lt;/h2&gt;
&lt;dl class='spip_document_23 spip_documents spip_documents_center' style=''&gt; &lt;dt&gt;&lt;img src='https://www.orsal.fr/local/cache-vignettes/L500xH364/gestion-sitemap-image-google-webmaster-tool-fc03a.jpg' width='500' height='364' alt='JPEG - 21.6 ko' style='height:364px;width:500px;' /&gt;&lt;/dt&gt; &lt;dt class='spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Int&#233;gration des sitemaps dans Google Webmaster Tools&lt;/strong&gt;&lt;/dt&gt; &lt;dd class='spip_doc_descriptif' style='width:350px;'&gt;Int&#233;gration des images dans les sitemaps sous l'interface de Google Webmaster Tools
&lt;/dd&gt; &lt;/dl&gt;
&lt;p&gt;L'outil d'aide au r&#233;f&#233;rencement de Google, fait justement la distinction entre les pages web et les images qu'il a index&#233;, comme indiqu&#233; sur l'image ci-dessus.&lt;/p&gt; &lt;p&gt;Il est int&#233;ressant d'indexer &#233;galement les images, car c'est un moyen d'am&#233;liorer la longue tra&#238;ne. En ayant plus d'&#233;l&#233;ments r&#233;f&#233;renc&#233;s, cela augmente les possibilit&#233;s d'arriver sur votre site, donc &#224; terme les visites.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;V&#233;rifier l'indexation des images&lt;/h2&gt;
&lt;p&gt;Pour voir si Google indexe vos images, rien de plus simple. Une petite requ&#234;te avanc&#233;e via la recherche d'images en utilisant le param&#232;tre &lt;code class='spip_code' dir='ltr'&gt;inurl:&lt;/code&gt; suivi de l'url de votre site, vous donnera une id&#233;e de ce qui est pris en compte.&lt;/p&gt; &lt;p&gt;Exemple : &lt;a href=&quot;https://www.google.fr/search?q=inurl:www.orsal.fr&amp;source=lnms&amp;tbm=isch&amp;sa=X&quot; target=&quot;_blank&quot; title=&quot;Recherche des images du site www.orsal.fr&quot;&gt;inurl:www.orsal.fr&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Dans mon cas, au moment de la r&#233;daction de cet article, ce n'&#233;tait pas brillant, aucun r&#233;sultat, et ce, malgr&#233; que le site soit plut&#244;t bien r&#233;f&#233;renc&#233; dans la recherche Web.&lt;/p&gt; &lt;blockquote class=&quot;spip&quot;&gt;
&lt;p&gt;Aucune image ne correspond &#224; votre recherche (inurl :&lt;a href='http://www.orsal.fr/' class='spip_url spip_out' rel='nofollow external'&gt;www.orsal.fr&lt;/a&gt;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mon site utilise &lt;a href='http://www.spip.net/' class='spip_out' rel='external'&gt;SPIP&lt;/a&gt;, un outil de gestion de contenu. Pour optimiser l'affichage des pages, l'outil utilise un syst&#232;me de cache. Les liens vers les images &#224; l'int&#233;rieur des pages pointent donc vers le r&#233;pertoire du cache. Or ce r&#233;pertoire est bloqu&#233; aux moteurs de recherche via le fichier robots.txt qui n'indexent donc pas les images.&lt;/p&gt; &lt;p&gt;Je pouvais donc d&#233;bloquer l'acc&#232;s, mais &#224; chaque rafra&#238;chissement du cache, les liens vers les images auraient chang&#233;. Le r&#233;f&#233;rencement serait &#224; chaque fois perdu et cela aurait g&#233;n&#233;r&#233; de nombreuses erreurs 404.&lt;/p&gt; &lt;p&gt;L'autre solution &#233;tait de comprendre comment fonctionne la g&#233;n&#233;ration des sitemaps sous SPIP pour int&#233;grer directement les liens vers le fichier image et non vers le cache.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;SPIP et les sitemaps&lt;/h2&gt;
&lt;p&gt;Le sitemap par d&#233;faut, contient la liste des articles, la fr&#233;quence de modification pour le sommaire, et la date de derni&#232;re modification pour les articles qui ont moins de 24h. Pourtant le standard autorise bien d'autres informations, notamment les images.&lt;/p&gt; &lt;p&gt;Un plugin pour SPIP existe, &lt;a href=&quot;http://contrib.spip.net/Sitemap-Google&quot; class='spip_out' rel='external'&gt;Sitemap-Google&lt;/a&gt;, avec de bonnes id&#233;es, notamment pour la gestion de la priorit&#233; en utilisant la popularit&#233; de l'article. Le code source du plugin est d'ailleurs plus pr&#233;cis que ce qui est pr&#233;sent&#233; dans l'article. Mais ce plugin ne g&#232;re pas les images.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Etat de l'art&lt;/h2&gt;
&lt;p&gt;Parmi les articles les plus int&#233;ressants sur le sujet que j'ai pu trouv&#233;, une tr&#232;s bonne explication par &lt;a href=&quot;http://www.organicweb.fr/&quot; class='spip_out' rel='external'&gt;Organic Web&lt;/a&gt; et de bonnes id&#233;es de solutions dans l'article &lt;a href=&quot;http://blog.organicweb.fr/images_spip_sitemap&quot; class='spip_out' rel='external'&gt;Images, sitemaps et SPIP&lt;/a&gt;. Je vais reprendre leur fonction url_de_logo, mais leur solution ne fonctionne pas bien chez moi, ou pas tout &#224; fait comme je le voudrais. Alors, je vais devoir l'adapter.&lt;/p&gt; &lt;p&gt;Cet article se base lui-m&#234;me sur un article pr&#233;c&#233;dent paru sur le site &lt;a href=&quot;http://www.abondance.com/actualites/20100408-10310-ajouter-les-images-dans-vos-sitemaps.html&quot; class='spip_out' rel='external'&gt;Abondance&lt;/a&gt;. Tr&#232;s succinct. L'article donne juste un aper&#231;u de ce &#224; quoi doit ressembler le sitemap. Dans un autre article du site Abondance, toujours aussi court, Olivier Andrieu pr&#233;sente m&#234;me l'&lt;a href=&quot;http://www.abondance.com/actualites/20100630-10391-des-sitemaps-desormais-multiformats.html&quot; class='spip_out' rel='external'&gt;int&#233;gration des vid&#233;os dans les sitemaps&lt;/a&gt;, qui est directement tir&#233; de l'explication sur l'&lt;a href=&quot;http://googlewebmastercentral.blogspot.fr/2010/06/sitemaps-one-file-many-content-types.html&quot; class='spip_out' rel='external'&gt;int&#233;gration des diff&#233;rents formats par Google&lt;/a&gt;.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Et chez Wordpress ?&lt;/h2&gt;
&lt;p&gt;Travailler avec SPIP n'emp&#234;che pas de regarder ce qui se fait ailleurs. Comme il m'arrive aussi d'utiliser Wordpress, j'ai &#233;t&#233; impressionn&#233; par le &lt;a href=&quot;https://wordpress.org/plugins/wordpress-seo/&quot; class='spip_out' rel='external'&gt;plugin Wordpress SEO par Yoast&lt;/a&gt; et notamment tout ce qu'il propose en mati&#232;re de g&#233;n&#233;ration automatique de sitemap.&lt;/p&gt; &lt;p&gt;L'outil g&#233;n&#232;re plusieurs sitemaps en fonction du type de contenu, qui sont reli&#233;s ensemble par un index de sitemap.&lt;/p&gt; &lt;p&gt;Et plus int&#233;ressant encore, il propose l'int&#233;gration d'une &lt;a href=&quot;https://yoast.com/xsl-stylesheet-xml-sitemap/&quot; class='spip_out' rel='external'&gt;feuille de style pour mettre en forme le sitemap&lt;/a&gt; et rendre sa consultation plus pratique et agr&#233;able.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Fonctions personnalis&#233;es SPIP&lt;/h2&gt;
&lt;p&gt;Pour m'aider au formatage des informations, je vais avoir besoin de filtres personnalis&#233;es. Rien de plus simple, il suffit d'&#233;diter le fichier mes_fonctions.php du r&#233;pertoire /squelettes et de lui ajouter les lignes suivantes (&#224; l'int&#233;rieur du bloc php, donc avant le &#171; ?&gt; &#187; final) :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;function url_de_logo($texte) {&lt;br /&gt; ereg('src=&quot;([^&quot;]*)&quot;', $texte, $regs);&lt;br /&gt; return $regs[1];&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; function add_cdata($texte) {&lt;br /&gt; return &quot;&lt;![CDATA[&quot;.$texte.&quot;]]&gt;&quot;;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; function remove_param($texte) {&lt;br /&gt; if ( $nb = strrpos( $texte, &quot;?&quot; ) )&lt;br /&gt; return substr( $texte, 0, $nb );&lt;br /&gt; else&lt;br /&gt; return $texte;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; function pourcent($valeur) {&lt;br /&gt; return $valeur / 100;&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;h2 class='h3 spip'&gt;Sitemap images et SPIP&lt;/h2&gt;
&lt;p&gt;Tout &#231;a me donne bien envie de d&#233;velopper un plugin pour SPIP qui int&#233;grerait les bonnes id&#233;es picor&#233;es un peu partout, mais je n'ai pas le temps pour l'instant. Je vais donc me contenter de juste modifier le sitemap par d&#233;faut.&lt;/p&gt; &lt;p&gt;Pour surcharger le sitemap par d&#233;faut, je copie le fichier sitemap.xml.html du r&#233;pertoire squelettes-dist vers le r&#233;pertoire squelettes.&lt;/p&gt; &lt;p&gt;J'ai supprim&#233; l'int&#233;gration des br&#232;ves car je ne les utilise pas, mais ce ne doit pas &#234;tre bien compliqu&#233; de les r&#233;int&#233;grer.&lt;/p&gt; &lt;p&gt;J'ai compl&#233;t&#233; les champs, pour que chaque lien ait une fr&#233;quence de modification, une priorit&#233; et une date de derni&#232;re modification.&lt;/p&gt; &lt;p&gt;Enfin j'ai ajout&#233; des boucles sur le logo de l'article et les images qu'il contient, avec utilisation des titres des images.&lt;/p&gt; &lt;p&gt;Voici le contenu de mon fichier sitemap.xml.html :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;#CACHE{0}&lt;br /&gt; #HTTP_HEADER{Content-Type: text/xml; charset=utf-8}&lt;br /&gt; &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;br /&gt; &lt;urlset xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:image=&quot;http://www.google.com/schemas/sitemap-image/1.1&quot; xsi:schemaLocation=&quot;http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd&quot; xmlns=&quot;http://www.sitemaps.org/schemas/sitemap/0.9&quot;&gt;&lt;br /&gt; &lt;url&gt;&lt;br /&gt; &lt;loc&gt;[(#URL_SITE_SPIP)]&lt;/loc&gt;&lt;br /&gt; &lt;BOUCLE_maj(ARTICLES){tout}{par date_modif}{inverse}{0,1}&gt;[(#DATE_MODIF|?{[ &lt;lastmod&gt;(#DATE_MODIF|date_iso)&lt;/lastmod&gt;]})]&lt;/BOUCLE_maj&gt;&lt;br /&gt; &lt;changefreq&gt;hourly&lt;/changefreq&gt;&lt;br /&gt; &lt;priority&gt;1.0&lt;/priority&gt;&lt;br /&gt; &lt;/url&gt;&lt;br /&gt; &lt;br /&gt; &lt;BOUCLE_r(RUBRIQUES){!par date}{0,1000}&gt;&lt;br /&gt; &lt;url&gt;&lt;br /&gt; &lt;loc&gt;[(#URL_RUBRIQUE|url_absolue)]&lt;/loc&gt;&lt;br /&gt; &lt;lastmod&gt;[(#DATE|date_iso)]&lt;/lastmod&gt;&lt;br /&gt; &lt;changefreq&gt;daily&lt;/changefreq&gt;&lt;br /&gt; &lt;priority&gt;0.6&lt;/priority&gt;&lt;br /&gt; &lt;/url&gt;&lt;br /&gt; &lt;/BOUCLE_r&gt;&lt;br /&gt; &lt;br /&gt; &lt;BOUCLE_a(ARTICLES){!par date_modif}{!par date}{0,2000}&gt;&lt;br /&gt; &lt;url&gt;&lt;br /&gt; &lt;loc&gt;[(#URL_ARTICLE|url_absolue)]&lt;/loc&gt;&lt;br /&gt; &lt;lastmod&gt;[(#DATE_MODIF|date_iso)]&lt;/lastmod&gt;&lt;br /&gt; &lt;changefreq&gt;weekly&lt;/changefreq&gt;&lt;br /&gt; &lt;priority&gt;[(#POPULARITE|pourcent)]&lt;/priority&gt;[&lt;br /&gt; &lt;image:image&gt;&lt;br /&gt; &lt;image:loc&gt;#URL_SITE_SPIP/(#LOGO_ARTICLE_RUBRIQUE||url_de_logo|remove_param)&lt;/image:loc&gt;&lt;br /&gt; &lt;image:title&gt;[(#TITRE|textebrut|add_cdata)]&lt;/image:title&gt;&lt;br /&gt; &lt;image:caption&gt;[(#TITRE|textebrut|add_cdata)]&lt;/image:caption&gt;&lt;br /&gt; &lt;/image:image&gt;]&lt;BOUCLE_mesimages(DOCUMENTS){id_article}{mode=image}{doublons}&gt;&lt;br /&gt; &lt;image:image&gt;&lt;br /&gt; &lt;image:loc&gt;[(#URL_DOCUMENT|url_absolue)]&lt;/image:loc&gt;[&lt;br /&gt; &lt;image:caption&gt;(#TITRE|textebrut|add_cdata)&lt;/image:caption&gt;][&lt;br /&gt; &lt;image:title&gt;(#TITRE|textebrut|add_cdata)&lt;/image:title&gt;]&lt;br /&gt; &lt;/image:image&gt;&lt;/BOUCLE_mesimages&gt;&lt;br /&gt; &lt;/url&gt;&lt;br /&gt; &lt;/BOUCLE_a&gt;&lt;br /&gt; &lt;br /&gt; &lt;/urlset&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Pour acc&#233;der &#224; votre sitemap, il suffit d'acc&#233;der &#224; l'url suivante :
http://&lt;votre nom de domaine&gt;/sitemap.xml&lt;/p&gt; &lt;p&gt;Et un petit rappel avec SPIP, lorsque vous faites des modifications, si vous souhaitez forcer le rafra&#238;chissement du fichier, il faut utiliser l'url :
http://&lt;votre nom de domaine&gt;/sitemap.xml ?var_mode=calcul&lt;/p&gt; &lt;p&gt;Mais le fichier sitemap ainsi produit n'est pas tr&#232;s digeste pour les humains que nous sommes.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;XSL et visualisation du sitemap&lt;/h2&gt;
&lt;p&gt;Afin de visualiser de mani&#232;re simple le contenu de votre fichier sitemap, il suffit de lui ajouter une feuille de style xsl.&lt;/p&gt; &lt;p&gt;Pour cela, il faut modifier le fichier de g&#233;n&#233;ration du sitemap sitemap.xml.html au niveau de construction de la premi&#232;re ligne pour qu'elle ressemble &#224; ceci :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;#HTTP_HEADER{Content-Type: text/xml; charset=utf-8}&lt;br /&gt; &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;?xml-stylesheet type=&quot;text/xsl&quot; href=&quot;//www.orsal.fr/squelettes/sitemap.xsl&quot;?&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Enfin, il faut cr&#233;er un fichier sitemap.xsl dans le r&#233;pertoire /squelettes/ pour mettre en forme le contenu du fichier sitemap.&lt;/p&gt; &lt;p&gt;Je ne vais pas expliquer la construction du fichier xsl, vous trouverez sans probl&#232;me de l'aide sur Internet. Voici le contenu de la feuille de style :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;br /&gt; &lt;xsl:stylesheet version=&quot;2.0&quot;&lt;br /&gt; xmlns:html=&quot;http://www.w3.org/TR/REC-html40&quot;&lt;br /&gt; xmlns:image=&quot;http://www.google.com/schemas/sitemap-image/1.1&quot;&lt;br /&gt; xmlns:sitemap=&quot;http://www.sitemaps.org/schemas/sitemap/0.9&quot;&lt;br /&gt; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;&lt;br /&gt; &lt;xsl:output method=&quot;html&quot; version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; indent=&quot;yes&quot;/&gt;&lt;br /&gt; &lt;xsl:template match=&quot;/&quot;&gt;&lt;br /&gt; &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;br /&gt; &lt;head&gt;&lt;br /&gt; &lt;title&gt;XML Sitemap&lt;/title&gt;&lt;br /&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;&lt;br /&gt; &lt;style type=&quot;text/css&quot;&gt;&lt;br /&gt; body {&lt;br /&gt; font-family: Helvetica, Arial, sans-serif;&lt;br /&gt; font-size: 13px;&lt;br /&gt; color: #545353;&lt;br /&gt; }&lt;br /&gt; table {&lt;br /&gt; border: none;&lt;br /&gt; border-collapse: collapse;&lt;br /&gt; }&lt;br /&gt; #sitemap tr.odd td {&lt;br /&gt; background-color: #eee !important;&lt;br /&gt; }&lt;br /&gt; #sitemap tbody tr:hover td {&lt;br /&gt; background-color: #ccc;&lt;br /&gt; }&lt;br /&gt; #sitemap tbody tr:hover td, #sitemap tbody tr:hover td a {&lt;br /&gt; color: #000;&lt;br /&gt; }&lt;br /&gt; #content {&lt;br /&gt; margin: 0 auto;&lt;br /&gt; width: 1000px;&lt;br /&gt; }&lt;br /&gt; .expl {&lt;br /&gt; margin: 18px 3px;&lt;br /&gt; line-height: 1.2em;&lt;br /&gt; }&lt;br /&gt; .expl a {&lt;br /&gt; color: #da3114;&lt;br /&gt; font-weight: bold;&lt;br /&gt; }&lt;br /&gt; .expl a:visited {&lt;br /&gt; color: #da3114;&lt;br /&gt; }&lt;br /&gt; a {&lt;br /&gt; color: #000;&lt;br /&gt; text-decoration: none;&lt;br /&gt; }&lt;br /&gt; a:visited {&lt;br /&gt; color: #777;&lt;br /&gt; }&lt;br /&gt; a:hover {&lt;br /&gt; text-decoration: underline;&lt;br /&gt; }&lt;br /&gt; td {&lt;br /&gt; font-size:11px;&lt;br /&gt; }&lt;br /&gt; th {&lt;br /&gt; text-align:left;&lt;br /&gt; padding-right:30px;&lt;br /&gt; font-size:11px;&lt;br /&gt; }&lt;br /&gt; thead th {&lt;br /&gt; border-bottom: 1px solid #000;&lt;br /&gt; }&lt;br /&gt; .galery {&lt;br /&gt; text-align: center;&lt;br /&gt; }&lt;br /&gt; .galery img {&lt;br /&gt; padding: 5px;&lt;br /&gt; height: 50px;&lt;br /&gt; }&lt;br /&gt; &lt;/style&gt;&lt;br /&gt; &lt;/head&gt;&lt;br /&gt; &lt;body&gt;&lt;br /&gt; &lt;div id=&quot;content&quot;&gt;&lt;br /&gt; &lt;h1&gt;XML Sitemap&lt;/h1&gt;&lt;br /&gt; &lt;p class=&quot;expl&quot;&gt;&lt;br /&gt; Generated by &lt;a href=&quot;https://www.orsal.fr/&quot; title=&quot;Ingenieur informatique, developpeur web independant&quot;&gt;Guillaume Orsal&lt;/a&gt;, this is an XML Sitemap, meant for consumption by search engines.&lt;br/&gt;&lt;br /&gt; You can find more information about XML sitemaps on &lt;a href=&quot;http://sitemaps.org&quot;&gt;sitemaps.org&lt;/a&gt;.&lt;br /&gt; &lt;/p&gt;&lt;br /&gt; &lt;p class=&quot;expl&quot;&gt;&lt;br /&gt; This XML Sitemap contains &lt;xsl:value-of select=&quot;count(sitemap:urlset/sitemap:url)&quot;/&gt; URLs.&lt;br /&gt; &lt;/p&gt;&lt;br /&gt; &lt;table id=&quot;sitemap&quot; cellpadding=&quot;3&quot;&gt;&lt;br /&gt; &lt;thead&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt; &lt;th width=&quot;6%&quot;&gt;Logo&lt;/th&gt;&lt;br /&gt; &lt;th width=&quot;69%&quot;&gt;URL&lt;/th&gt;&lt;br /&gt; &lt;th title=&quot;Index Priority&quot; width=&quot;5%&quot;&gt;Prio&lt;/th&gt;&lt;br /&gt; &lt;th width=&quot;5%&quot;&gt;Images&lt;/th&gt;&lt;br /&gt; &lt;th title=&quot;Change Frequency&quot; width=&quot;5%&quot;&gt;Ch. Freq.&lt;/th&gt;&lt;br /&gt; &lt;th title=&quot;Last Modification Time&quot; width=&quot;10%&quot;&gt;Last Mod.&lt;/th&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;/thead&gt;&lt;br /&gt; &lt;tbody&gt;&lt;br /&gt; &lt;xsl:variable name=&quot;lower&quot; select=&quot;'abcdefghijklmnopqrstuvwxyz'&quot;/&gt;&lt;br /&gt; &lt;xsl:variable name=&quot;upper&quot; select=&quot;'ABCDEFGHIJKLMNOPQRSTUVWXYZ'&quot;/&gt;&lt;br /&gt; &lt;xsl:for-each select=&quot;sitemap:urlset/sitemap:url&quot;&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt; &lt;xsl:if test=&quot;position() mod 2 = 1&quot;&gt;&lt;br /&gt; &lt;xsl:attribute name=&quot;class&quot;&gt;odd&lt;/xsl:attribute&gt;&lt;br /&gt; &lt;/xsl:if&gt;&lt;br /&gt; &lt;td&gt;&lt;br /&gt; &lt;xsl:if test=&quot;count(image:image) &gt; 0&quot;&gt;&lt;br /&gt; &lt;xsl:variable name=&quot;logoURL&quot;&gt;&lt;br /&gt; &lt;xsl:value-of select=&quot;image:image/image:loc&quot; /&gt;&lt;br /&gt; &lt;/xsl:variable&gt;&lt;br /&gt; &lt;xsl:variable name=&quot;titleURL&quot;&gt;&lt;br /&gt; &lt;xsl:value-of select=&quot;image:image/image:title&quot; /&gt;&lt;br /&gt; &lt;/xsl:variable&gt;&lt;br /&gt; &lt;img src=&quot;{$logoURL}&quot; height=&quot;50&quot; alt=&quot;{$titleURL}&quot; /&gt;&lt;br /&gt; &lt;/xsl:if&gt;&lt;br /&gt; &lt;/td&gt;&lt;br /&gt; &lt;td&gt;&lt;br /&gt; &lt;xsl:variable name=&quot;itemURL&quot;&gt;&lt;br /&gt; &lt;xsl:value-of select=&quot;sitemap:loc&quot;/&gt;&lt;br /&gt; &lt;/xsl:variable&gt;&lt;br /&gt; &lt;a href=&quot;{$itemURL}&quot;&gt;&lt;br /&gt; &lt;xsl:value-of select=&quot;sitemap:loc&quot;/&gt;&lt;br /&gt; &lt;/a&gt;&lt;br /&gt; &lt;/td&gt;&lt;br /&gt; &lt;td&gt;&lt;br /&gt; &lt;xsl:value-of select=&quot;concat(sitemap:priority*100,'%')&quot;/&gt;&lt;br /&gt; &lt;/td&gt;&lt;br /&gt; &lt;td&gt;&lt;br /&gt; &lt;xsl:value-of select=&quot;count(image:image)&quot;/&gt;&lt;br /&gt; &lt;/td&gt;&lt;br /&gt; &lt;td&gt;&lt;br /&gt; &lt;xsl:value-of select=&quot;concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))&quot;/&gt;&lt;br /&gt; &lt;/td&gt;&lt;br /&gt; &lt;td&gt;&lt;br /&gt; &lt;xsl:value-of select=&quot;concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))&quot;/&gt;&lt;br /&gt; &lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;xsl:if test=&quot;count(image:image) &gt; 1&quot;&gt;&lt;br /&gt; &lt;tr&gt;&lt;br /&gt; &lt;xsl:if test=&quot;position() mod 2 = 1&quot;&gt;&lt;br /&gt; &lt;xsl:attribute name=&quot;class&quot;&gt;odd&lt;/xsl:attribute&gt;&lt;br /&gt; &lt;/xsl:if&gt;&lt;br /&gt; &lt;td colspan=&quot;6&quot; class=&quot;galery&quot;&gt;&lt;br /&gt; &lt;xsl:for-each select=&quot;image:image&quot;&gt;&lt;br /&gt; &lt;xsl:if test=&quot;position() &gt; 1&quot;&gt;&lt;br /&gt; &lt;xsl:variable name=&quot;imageURL&quot;&gt;&lt;br /&gt; &lt;xsl:value-of select=&quot;image:loc&quot;/&gt;&lt;br /&gt; &lt;/xsl:variable&gt;&lt;br /&gt; &lt;xsl:variable name=&quot;imageALT&quot;&gt;&lt;br /&gt; &lt;xsl:value-of select=&quot;image:title&quot;/&gt;&lt;br /&gt; &lt;/xsl:variable&gt;&lt;br /&gt; &lt;img src=&quot;{$imageURL}&quot; alt=&quot;{$imageALT}&quot; title=&quot;{$imageALT}&quot;/&gt;&lt;br /&gt; &lt;/xsl:if&gt;&lt;br /&gt; &lt;/xsl:for-each&gt;&lt;br /&gt; &lt;/td&gt;&lt;br /&gt; &lt;/tr&gt;&lt;br /&gt; &lt;/xsl:if&gt;&lt;br /&gt; &lt;/xsl:for-each&gt;&lt;br /&gt; &lt;/tbody&gt;&lt;br /&gt; &lt;/table&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt; &lt;/body&gt;&lt;br /&gt; &lt;/html&gt;&lt;br /&gt; &lt;/xsl:template&gt;&lt;br /&gt; &lt;/xsl:stylesheet&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Les deux fichiers dont il est question dans cet article sont en t&#233;l&#233;chargement en bas de page.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Am&#233;liorations&lt;/h2&gt;
&lt;p&gt;Il y a plein d'am&#233;liorations que l'on peut apporter &#224; ce qui est d&#233;crit ici :&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Int&#233;gration des br&#232;ves dans la boucle&lt;/li&gt;&lt;li&gt; Int&#233;gration des vid&#233;os&lt;/li&gt;&lt;li&gt; Int&#233;gration des documents et leur vignettes&lt;/li&gt;&lt;li&gt; Am&#233;lioration de la visualisation, par exemple, en rendant l'image cliquable pour une visualisation en plein &#233;cran&lt;/li&gt;&lt;li&gt; Int&#233;grer tout &#231;a dans un plugin SPIP&lt;/li&gt;&lt;li&gt; G&#233;n&#233;ration de fichiers sitemap diff&#233;rents selon le type de contenu, et g&#233;n&#233;ration d'un fichier sitemap principal&lt;/li&gt;&lt;li&gt; Int&#233;gration d'un lien vers le fichier sitemap.xml dans le fichier robots.txt&lt;/li&gt;&lt;li&gt; Faire une gestion plus fine de la priorit&#233;, peut-&#234;tre en s'inspirant de ce qui est fait chez certains plugins de sitemap pour SPIP.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Mais vous avez les bases pour aller plus loin.&lt;/p&gt; &lt;p&gt;Bon SEO &#224; tous &lt;img alt=&quot;;-)&quot; title=&quot;;-)&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;https://www.orsal.fr/plugins/auto/couteau_suisse/img/smileys/clin_d-oeil.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Plugin SPIP&lt;/h2&gt;
&lt;p&gt;La lecture de cet article a inspir&#233; un d&#233;veloppeur qui a r&#233;alis&#233; l'impl&#233;mentation d'un &lt;a href=&quot;https://contrib.spip.net/Sitemap-images&quot; class='spip_out' rel='external'&gt;plugin SPIP pour les sitemap images&lt;/a&gt;. N'h&#233;sitez pas &#224; aller voir son travail.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		
		<enclosure url="https://www.orsal.fr/IMG/html/sitemap.xml.html" length="1798" type="text/html" />
		
		<enclosure url="https://www.orsal.fr/IMG/zip/sitemap.xsl.zip" length="1815" type="application/zip" />
		

	</item>
<item xml:lang="fr">
		<title>Humans.txt : cr&#233;er un fichier de cr&#233;dits pour vos auteurs et technologies</title>
		<link>https://www.orsal.fr/Humans-txt-creer-un-fichier-de</link>
		<guid isPermaLink="true">https://www.orsal.fr/Humans-txt-creer-un-fichier-de</guid>
		<dc:date>2014-10-12T17:34:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Guillaume Orsal</dc:creator>



		<description>
&lt;p&gt;Humans.txt est un fichier texte permettant de pr&#233;senter les personnes derri&#232;re un site web. Ce standard simple et ouvert met en avant les humains, leurs r&#244;les et leurs valeurs, au-del&#224; du code et des machines.&lt;/p&gt;


-
&lt;a href="https://www.orsal.fr/Referencement-SEO-GEO" rel="directory"&gt;R&#233;f&#233;rencement SEO/GEO&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logos' alt=&quot;&quot; align=&quot;right&quot; src='https://www.orsal.fr/local/cache-vignettes/L150xH146/arton54-a64a4.jpg' width='150' height='146' onmouseover=&quot;this.src='local/cache-vignettes/L150xH146/artoff54-52d1b.jpg'&quot; onmouseout=&quot;this.src='local/cache-vignettes/L150xH146/arton54-a64a4.jpg'&quot; style='height:146px;width:150px;' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Humans.txt est un fichier texte permettant de pr&#233;senter les personnes derri&#232;re un site web. Ce standard simple et ouvert met en avant les humains, leurs r&#244;les et leurs valeurs, au-del&#224; du code et des machines.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;Note contextuelle :&lt;/strong&gt; Cet article a &#233;t&#233; initialement publi&#233; en octobre 2014. Bien que le standard humans.txt soit moins promu aujourd'hui qu'&#224; ses d&#233;buts, ses principes restent pertinents et constituent une bonne pratique de web standards et de reconnaissance des contributeurs. Les informations techniques ont &#233;t&#233; mises &#224; jour pour refl&#233;ter la situation actuelle.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Qu'est-ce que humans.txt et pourquoi l'utiliser&lt;/h2&gt;
&lt;p&gt;Le fichier &lt;strong&gt;humans.txt&lt;/strong&gt; est un standard du web lanc&#233; en 2009 pour r&#233;pondre &#224; une question simple : comment reconna&#238;tre les personnes et technologies qui ont cr&#233;&#233; un site web ?&lt;/p&gt; &lt;p&gt;Contrairement aux approches classiques (page &#171; &#192; propos &#187;, mentions l&#233;gales), &lt;strong&gt;humans.txt&lt;/strong&gt; propose une solution standardis&#233;e et facilement accessible. Le projet d&#233;finit lui-m&#234;me sa mission : &#171; &lt;strong&gt;Nous sommes des humains, pas des machines&lt;/strong&gt; &#187;. L'objectif est double :&lt;/p&gt; &lt;ol class=&quot;spip&quot;&gt;&lt;li&gt; &lt;strong&gt;Reconnaissance des contributeurs&lt;/strong&gt; : cr&#233;diter les d&#233;veloppeurs, designers, int&#233;grateurs, gestionnaires de contenu &lt;/li&gt;&lt;li&gt; &lt;strong&gt;Documentation technique&lt;/strong&gt; : inventorier les technologies, standards et outils utilis&#233;s&lt;/li&gt;&lt;/ol&gt;
&lt;h2 class='h3 spip'&gt;Pourquoi mettre en place humans.txt en 2025&lt;/h2&gt;
&lt;p&gt;&#192; l'&#232;re du web distribu&#233;, des CMS multiples et des &#233;quipes parfois &#233;clat&#233;es, humans.txt r&#233;pond &#224; plusieurs besoins l&#233;gitimes.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Responsabilit&#233; et transparence&lt;/strong&gt; Afficher clairement qui a cr&#233;&#233; et maintient un site respecte une certaine d&#233;ontologie du web. C'est particuli&#232;rement pertinent pour les agences et freelances souhaitant assumer et valoriser leur travail.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Web standards et &#233;thique&lt;/strong&gt; Adh&#233;rer &#224; des initiatives comme humans.txt montre un attachement aux bonnes pratiques du web, m&#234;me si cela n'apporte aucun gain SEO direct.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Reconnaissance professionnelle&lt;/strong&gt; Pour les d&#233;veloppeurs et designers, humans.txt offre une visibilit&#233; discr&#232;te mais pertinente aupr&#232;s d'autres professionnels qui inspectent un site ou sa documentation.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Accessibilit&#233; et documentation&lt;/strong&gt; Un fichier texte simple est universellement lisible, p&#233;renne et ind&#233;pendant de toute plateforme, contrairement aux balises meta propri&#233;taires ou aux solutions centralis&#233;es.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Contexte historique : les balises meta author et publisher&lt;/h2&gt;
&lt;p&gt;Avant humans.txt, Google avait mis en avant les balises &lt;strong&gt;rel=&#171; author &#187;&lt;/strong&gt; et &lt;strong&gt;rel=&#171; publisher &#187;&lt;/strong&gt;, plac&#233;es dans le &lt;strong&gt;&lt;head&gt;&lt;/strong&gt; des pages afin d'identifier les auteurs et, &#224; l'&#233;poque, enrichir certains r&#233;sultats de recherche.&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;link rel=&quot;author&quot; href=&quot;https://plus.google.com/+GuillaumeOrsal&quot; /&gt;&lt;br /&gt; &lt;link rel=&quot;publisher&quot; href=&quot;https://plus.google.com/+GuillaumeOrsal&quot; /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Statut actuel&lt;/strong&gt; Ces balises ne sont plus utilis&#233;es par Google depuis la fermeture de Google+ en 2019. Elles restent document&#233;es mais n'ont plus d'impact SEO.&lt;/p&gt; &lt;p&gt;Pour &#233;valuer la qualit&#233; d'un contenu, Google s'appuie aujourd'hui davantage sur la cr&#233;dibilit&#233; globale d'un site et d'un auteur que sur des balises d&#233;claratives. On voit souvent passer l'acronyme &lt;strong&gt;E-E-A-T&lt;/strong&gt;, qui signifie &lt;strong&gt;Experience, Expertise, Authoritativeness, Trustworthiness&lt;/strong&gt; : exp&#233;rience, expertise, autorit&#233; et fiabilit&#233;. En pratique, cela revient &#224; privil&#233;gier des contenus solides, sourc&#233;s, coh&#233;rents et produits par des personnes identifiables et comp&#233;tentes, plut&#244;t que de simples signaux techniques.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Structure et contenu d'un humans.txt complet&lt;/h2&gt;
&lt;p&gt;Le fichier &lt;strong&gt;humans.txt&lt;/strong&gt; est un document texte simple plac&#233; &#224; la racine du site (&lt;strong&gt;/humans.txt&lt;/strong&gt;). Voici une structure couramment utilis&#233;e.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Section TEAM : les contributeurs&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;/* TEAM */&lt;br /&gt; Web Developer: Guillaume Orsal&lt;br /&gt; Email: contact@orsal.fr&lt;br /&gt; Site: https://www.orsal.fr&lt;br /&gt; From: Paris, France&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Cette section liste les personnes ayant particip&#233; &#224; la cr&#233;ation, l'&#233;volution ou la maintenance du site.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Section THANKS : remerciements&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;/* THANKS */&lt;br /&gt; Humans.txt: http://humanstxt.org&lt;br /&gt; SPIP CMS: https://www.spip.net&lt;br /&gt; Bootstrap: https://getbootstrap.com&lt;br /&gt; jQuery: https://jquery.com&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Elle permet de remercier les projets open source, outils, services tiers ou inspirations majeures.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Section SITE : informations techniques&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;/* SITE */&lt;br /&gt; Last update: 2025/01/20&lt;br /&gt; Language: French&lt;br /&gt; Charset: UTF-8&lt;br /&gt; Standards: HTML5, CSS3, ES6 JavaScript&lt;br /&gt; Doctype: HTML5&lt;br /&gt; Framework: SPIP 4.x&lt;br /&gt; CMS: SPIP&lt;br /&gt; Version Control: Git&lt;br /&gt; Hosting: OVH&lt;br /&gt; Analytics: Matomo (privacy-first)&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Cette section documente les technologies, standards et environnements utilis&#233;s.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Section EXTRAS : informations suppl&#233;mentaires&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Des sections facultatives peuvent &#234;tre ajout&#233;es selon le contexte :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;/* EXTRAS */&lt;br /&gt; Coffee: Decaf&lt;br /&gt; Music: Electro&lt;br /&gt; Hiring: open source contributors welcome&lt;/code&gt;&lt;/div&gt;
&lt;h2 class='h3 spip'&gt;Guide pratique : cr&#233;er votre humans.txt&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&#201;tape 1 : Cr&#233;er le fichier&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Cr&#233;ez un fichier texte nomm&#233; &lt;strong&gt;humans.txt&lt;/strong&gt; &#224; la racine de votre site (&lt;strong&gt;/humans.txt&lt;/strong&gt;). Il doit &#234;tre accessible publiquement et servi avec le type MIME &lt;strong&gt;text/plain&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&#201;tape 2 : Remplir les sections&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Commencez par les sections essentielles (TEAM, THANKS, SITE). Chaque ligne doit &#234;tre utile, claire et compr&#233;hensible.&lt;/p&gt; &lt;p&gt;Exemples de contenu pertinent :&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;strong&gt;Web Developer : Votre Nom&lt;/strong&gt; &lt;/li&gt;&lt;li&gt; &lt;strong&gt;Email : contact&lt;span class='mcrypt'&gt; &lt;/span&gt;example.com&lt;/strong&gt; &lt;/li&gt;&lt;li&gt; &lt;strong&gt;Site : &lt;a href='https://monsite.com/' class='spip_url spip_out' rel='nofollow external'&gt;https://monsite.com&lt;/a&gt;&lt;/strong&gt; &lt;/li&gt;&lt;li&gt; &lt;strong&gt;Language : French&lt;/strong&gt; &lt;/li&gt;&lt;li&gt; &lt;strong&gt;Standards : HTML5, CSS3&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Exemples &#224; &#233;viter :&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; informations personnelles excessives &lt;/li&gt;&lt;li&gt; donn&#233;es sensibles &lt;/li&gt;&lt;li&gt; contenu inutilement verbeux&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&#201;tape 3 : Validation et maintenance&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;V&#233;rifiez l'accessibilit&#233; du fichier :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;curl -I https://www.example.com/humans.txt&lt;br /&gt; # Doit retourner : 200 OK&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Mettez-le &#224; jour lors de changements d'&#233;quipe ou de technologies importantes.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&#201;tape 4 : Lier depuis votre site (optionnel)&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Lien dans le &lt;strong&gt;&lt;head&gt;&lt;/strong&gt; :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;link rel=&quot;author&quot; href=&quot;/humans.txt&quot; /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Ou lien visible dans le pied de page :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;footer&gt;&lt;br /&gt; &lt;p&gt;&lt;a href=&quot;/humans.txt&quot;&gt;Humans.txt&lt;/a&gt; &#8212; Qui a cr&#233;&#233; ce site ?&lt;/p&gt;&lt;br /&gt; &lt;/footer&gt;&lt;/code&gt;&lt;/div&gt;
&lt;h2 class='h3 spip'&gt;Bonnes pratiques et consid&#233;rations&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Clart&#233; avant exhaustivit&#233;&lt;/strong&gt; Un humans.txt concis et lisible est pr&#233;f&#233;rable &#224; une liste exhaustive.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Respect de la vie priv&#233;e&lt;/strong&gt; Ne publiez que des informations accept&#233;es par les contributeurs. Un pr&#233;nom et une localisation g&#233;n&#233;rale suffisent souvent.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mise &#224; jour r&#233;guli&#232;re&lt;/strong&gt; Un fichier obsol&#232;te nuit &#224; la cr&#233;dibilit&#233;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Coh&#233;rence d'&#233;quipe&lt;/strong&gt; D&#233;finissez collectivement ce qui doit appara&#238;tre, notamment dans un contexte agence ou multi-intervenants.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Combinaison avec d'autres initiatives&lt;/strong&gt; Humans.txt compl&#232;te utilement robots.txt, sitemap.xml et security.txt.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Adoption et impact r&#233;el&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Adoption actuelle&lt;/strong&gt; Humans.txt est utilis&#233; par de nombreux sites professionnels et projets open source, mais reste optionnel et non standardis&#233; formellement.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Impact professionnel&lt;/strong&gt; Il offre une reconnaissance discr&#232;te aupr&#232;s des pairs et clients techniques.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Impact SEO&lt;/strong&gt; Aucun impact direct sur le classement. Son int&#233;r&#234;t est avant tout humain, documentaire et professionnel.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Ressources et exploration&lt;/h2&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;strong&gt;Site officiel humans.txt&lt;/strong&gt; : &lt;a href='http://humanstxt.org/' class='spip_out' rel='external'&gt;http://humanstxt.org&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;strong&gt;Exemples&lt;/strong&gt; : consultez les humans.txt de sites open source ou agences &lt;/li&gt;&lt;li&gt; &lt;strong&gt;Exemple concret&lt;/strong&gt; : &lt;a href=&quot;https://www.orsal.fr/humans.txt&quot;&gt;humans.txt d'orsal.fr&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2 class='h3 spip'&gt;Conclusion : une responsabilit&#233;, pas une obligation&lt;/h2&gt;
&lt;p&gt;Humans.txt n'est ni une obligation l&#233;gale ni une n&#233;cessit&#233; technique. C'est une d&#233;marche volontaire qui rappelle que le web est construit par des humains et que ces contributions m&#233;ritent d'&#234;tre reconnues.&lt;/p&gt; &lt;p&gt;Pour une agence, un freelance ou un site professionnel, humans.txt repr&#233;sente une bonne pratique de web standards et une forme simple, discr&#232;te et efficace de reconnaissance et de branding professionnel.&lt;/p&gt; &lt;h2 class='h3 spip'&gt;Voir aussi&lt;/h2&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;a href='https://www.orsal.fr/llms-txt-un-standard-de' class='spip_in'&gt;LLMs.txt : standard de documentation&lt;/a&gt; &#8212; Le fichier permettant de documenter les politiques d'utilisation des contenus par les mod&#232;les d'IA, compl&#233;mentaire et oppos&#233; &#224; humans.txt&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
