RSS-Proxy : générer des flux RSS sur mesure pour les sites sans flux
Sans mes flux, je suis perdu ! Comment générer des flux RSS propres pour les sites qui n'en ont plus.
Le RSS reste pour moi l'un des meilleurs moyens de suivre l'actualité du web en gardant le contrôle : pas d'algorithme opaque qui choisit ce que je dois lire, pas de fil infini conçu pour me faire perdre du temps, et une lecture chronologique propre dans mon agrégateur.
Le souci, c'est que pas mal de sites modernes ont tout simplement supprimé leur flux RSS natif, ou l'ont tellement bridé qu'il est devenu inutilisable (extraits tronqués, flux cassé à la moindre refonte). Pour contourner ça, RSS-Proxy fait des merveilles.
Qu'est-ce que RSS-Proxy ?
Développé en open-source (damoeb/rss-proxy), RSS-Proxy est une petite application web légère qui convertit n'importe quelle page HTML en un flux RSS ou Atom standard, parfaitement exploitable par votre lecteur de flux préféré (FreshRSS, Miniflux, Thunderbird...).
L'outil propose deux approches :
- La détection automatique : vous lui donnez l'URL de la page cible (un blog, une liste d'articles, un catalogue), et son moteur repère de lui-même les blocs répétés pour en extraire les titres, liens et dates.
- Le ciblage manuel (CSS / XPath) : si la page est un peu alambiquée ou que la détection récupère trop de bruit, vous guidez l'extraction avec vos propres sélecteurs.
Déploiement rapide avec Docker Compose
De mon côté, pour l'intégrer proprement sur le serveur, le plus simple reste un petit compose :
services:
rss-proxy:
image: damoeb/rss-proxy:latest
container_name: rss-proxy
restart: unless-stopped
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- CACHE_MAX_AGE=1800 # Cache interne de 30 minutes
Une fois lancé, l'interface web accessible sur le port 3000 permet de tester ses règles d'extraction en direct dans le navigateur avant de copier l'URL du flux.
Générer son premier flux en pratique
1. En mode automatique (le plus simple)
Pour une page avec une structure d'articles standard :
http://localhost:3000/api/feed?url=https://exemple.com/blog
RSS-Proxy va chercher la page, parser le HTML et vous renvoyer un flux XML Atom/RSS prêt à l'emploi.
2. Avec des sélecteurs CSS sur mesure
Quand la page contient des éléments parasites (barres latérales, menus, encarts pub), on précise les paramètres dans l'URL pour ne garder que le contenu utile :
| Paramètre | Rôle | Exemple |
|---|---|---|
url |
URL de la page cible | https://exemple.com/news |
item |
Conteneur de chaque article | .post-card, article |
title |
Sélecteur du titre | h2.post-title, .entry-title |
link |
Sélecteur du lien | a.read-more, h2 a |
description |
Sélecteur du résumé | .post-excerpt, p |
date |
Sélecteur de la date | time, .published-date |
Exemple concret d'URL générée :
http://localhost:3000/api/feed?url=https://exemple.com/news&item=article.news-item&title=h3&link=a.main-link&description=.summary
Deux ou trois repères à garder en tête
- Pensez au cache : Inutile d'interroger la page cible toutes les deux minutes. Laisser RSS-Proxy mettre en cache quelques dizaines de minutes évite de surcharger le serveur distant et de se faire bannir son IP.
- Sites full-JS (SPA) : Pour les sites qui chargent leur contenu en pur JavaScript côté client (sans SSR), RSS-Proxy peut utiliser un moteur headless (Puppeteer) pour rendre le DOM avant d'extraire les données.
- Intervalles de rafraîchissement : Dans votre lecteur RSS, un rafraîchissement toutes les 1 à 4 heures suffit largement pour la plupart des sources.
En résumé
C'est typiquement le genre d'outil discret et redoutablement efficace qui permet de centraliser toute sa veille au même endroit, sans dépendre de services tiers payants ou de réseaux sociaux fermés. Couplé à une instance FreshRSS, on retrouve le plaisir de lire le web à son rythme ;)