J’ai parlé de mon site à un ami et sa première réaction a été de me dire “Ah, tu as un site ! trop bien je vais m’abonner”. Et forcément comme je n’avais pas prévu quoi que ce soit pour s’abonner, je n’ai pas tout de suite tilté, puis je me suis souvenu que les flux RSS existent.
Je me suis retrouvé propulsé dans un souvenir de mes 14 ans quand j’avais un super clavier Logitech G15 qui grâce à son petit écran permettait d’afficher le contenu de flux RSS pendant les temps de chargement interminables des jeux à l’époque.
C’est quoi RSS ?
RSS, c’est une techno simple, mais efficace, l’acronyme veut dire “Really Simple Syndication” (Syndication vraiment simple). Et le fonctionnement est en effet assez simple et repose sur le standard XML.
Le W3C a émis une spec qu’il “suffit” de suivre : https://www.rssboard.org/rss-2-0-1
En gros, un flux RSS c’est un fichier XML structuré qui contient :
- Des infos sur le site (titre, description, langue…)
- Une liste d’articles avec leur titre, lien, description et date de publication
Le principe est vraiment bien pensé : au lieu de devoir checker 50 sites différents pour voir s’il y a du nouveau contenu, tu t’abonnes à leurs flux RSS et ton lecteur RSS te notifie automatiquement. Pas d’algorithme qui décide ce que tu dois voir, pas de pub, juste du contenu dans l’ordre chronologique. C’est beau non ?
La structure d’un flux RSS
Souvent ces flux sont générés automatiquement par des CMS ou générateurs de site statiques.
Voici un exemple de mon site web :
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/rss.xsl" type="text/xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>William Leemans | Blog</title>
<description>Le site personnel de William Leemans</description>
<link>https://williamleemans.me</link>
<language>fr-fr</language>
<lastBuildDate>Mon, 19 Jan 2026 18:27:42 GMT</lastBuildDate>
<generator>Astro</generator>
<managingEditor>william@leemans.me (William Leemans)</managingEditor>
<copyright>Copyright © 2025 William Leemans</copyright>
<atom:link href="https://lmns.fr/rss.xml" rel="self" type="application/rss+xml"/>
<item>
<title>Animation de particules</title>
<link>https://williamleemans.me/blog/animation-de-particules</link>
<guid isPermaLink="true">https://williamleemans.me/blog/animation-de-particules</guid>
<description>Comment j'ai créé une animation de particules simple avec l'API Canvas pour le fond de mon site.</description>
<pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate>
</item>
<item>
<title>Garder un historique Git propre</title>
<link>https://williamleemans.me/blog/garder-un-historique-git-propre</link>
<guid isPermaLink="true">https://williamleemans.me/blog/garder-un-historique-git-propre</guid>
<description>Comment garder un historique Git propre, écrire de bons commits et utiliser rebase efficacement.</description>
<pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate>
</item>
<item>
<title>Nouvelle Machine</title>
<link>https://williamleemans.me/blog/nouvelle-machine</link>
<guid isPermaLink="true">https://williamleemans.me/blog/nouvelle-machine</guid>
<description>Passage au MacBook Pro 14″, reconstruction complète de mon dev setup et adoption d'un thème Gruvbox : voici comment je remets mon environnement au carré à chaque nouvelle machine.</description>
<pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
Comme vous pouvez le voir, c’est “assez lisible” même en XML brut. Chaque <item> correspond à un article de blog avec ses métadonnées essentielles.
Implémentation avec Astro
Pour ma part mon site est en Astro et ça a été super simple de mettre en place. J’ai été agréablement surpris par la facilité (10 minutes en suivant le guide).
Voici comment j’ai fait :
1. Installation de la dépendance
pnpm add @astrojs/rss
2. Configuration du générateur
J’ai créé un fichier src/pages/rss.xml.js avec ce contenu :
import rss from '@astrojs/rss';
import { getCollection } from 'astro:content';
export async function GET(context) {
const posts = await getCollection('blog');
const sortedPosts = posts.sort(
(a, b) => new Date(b.data.pubDate) - new Date(a.data.pubDate)
);
return rss({
title: 'William Leemans | Blog',
description: "Le site personnel de William Leemans",
site: context.site,
trailingSlash: false,
stylesheet: '/rss.xsl',
items: sortedPosts.map(post => ({
title: post.data.title,
pubDate: post.data.pubDate,
description: post.data.description,
link: `/blog/${post.data.slug}`,
})),
xmlns: {
atom: "http://www.w3.org/2005/Atom"
},
customData: `
<language>fr-fr</language>
<lastBuildDate>${new Date().toUTCString()}</lastBuildDate>
<generator>Astro</generator>
<managingEditor>william@lmns.fr (William Leemans)</managingEditor>
<copyright>Copyright © 2025 William Leemans</copyright>
<atom:link href="${context.site}rss.xml" rel="self" type="application/rss+xml" />
`,
});
}
Et c’est tout ! À chaque build, Astro génère automatiquement mon flux RSS avec tous mes articles triés par date.
Bonus : Styliser le flux RSS
En plus du XML brut, on peut utiliser du XSL (eXtensible Stylesheet Language) pour lui donner un style et le rendre lisible directement dans le navigateur. Parce que bon, soyons honnêtes, du XML brut ce n’est pas très sexy.
Si vous allez sur https://lmns.fr/rss.xml, vous verrez que le flux est stylisé et ressemble à une vraie page web plutôt qu’à un fichier XML dégueulasse.
Pour ça, il suffit d’ajouter la ligne suivante en haut du fichier XML (ce que fait automatiquement Astro avec l’option stylesheet) :
<?xml-stylesheet href="/rss.xsl" type="text/xsl"?>
Et de créer un fichier public/rss.xsl avec du CSS et du XSLT pour transformer le XML en HTML lisible.
Pourquoi c’est cool ?
Les flux RSS c’est old school, mais c’est pour ça que c’est cool :
- Pas de tracking
- Pas d’algorithme qui décide pour toi
- Tu es maître de ton contenu
- Ça marche depuis 20 ans et ça marchera encore dans 20 ans
- C’est simple, ouvert, et décentralisé
Bref, exactement le genre de techno qu’on devrait utiliser plus souvent au lieu de se faire enfermer dans des plateformes propriétaires.
Alors si vous avez un blog, ajoutez un flux RSS. Et si vous lisez des blogs, utilisez un lecteur RSS. Perso, j’utilise FeedFlow sur mon MacBook, mais j’ai entendu pas mal de bien de Feedly qui a un free tier super généreux pour commencer.