Comment construire un flux atom avec Emacs. Ma méthode est très artisanale. Elle correspond bien à mon rythme de publication.
Dans Emacs
Créer un fichier qui contiendra le flux. Par exemple : feed.atom. Ce fichier sera créé à la racine du site. Par défaut, le fichier n’est pas reconnu par Emacs qui lui attribue le mode fundamental.
Pour le passer en syntaxe xml, il suffit d’activer le mode xml sur le fichier avec la commande M-x xml-mode. Cela permet de bénéficier de la détection d’erreur du module car Emacs vérifie en permanence la validité d’un fichier xml. C’est très pratique.
Modèle de flux
Je me suis basé sur ce qui est publié dans cet article Wikipedia Atom syndication format et dans l’article Comment construire un flux atom.
Partie feed
Contenu de l’en-tête du fichier feed.atom.
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
<id>href="https://www.olivier-web-garden.fr/index.html</id>
<title>Olivier Web Garden</title>
<updated>2026-01-11T12:50:16+01:00</updated>
<link href="https://www.olivier-web-garden.fr/"/>
<link href="www.olivier-web-garden.fr/feed.atom" rel="self" type="application/atom+xml"/>
<author>
<name>Olivier K.</name>
</author>
</feed>
Le champ update doit être mis à jour à chaque ajout d’article dans le flux. Il doit respecter la syntaxe 2026-01-11T12:50:16+01:00.
Partie entry
Il y a une entry pour chaque article. J’ai décidé de publier l’intégralité de l’article dans le flux. Ce n’est pas une obligation, c’est mon choix.
Exemple avec l’article /emacs-extra-brut.html/
<entry xml:lang="fr">
<id>https://www.olivier-web-garden.fr/emacs-extra-brut.html</id>
<link rel="alternate" type="text/html"
href="https://www.olivier-web-garden.fr/emacs-extra-brut.html"/>
<title>Emacs extra-brut</title>
<published>2026-01-04T06:05:24+01:00</published>
<updated>2026-01-04T06:05:24+01:00</updated>
<content type="html">
<p>Utiliser Emacs sans aucun package supplémentaire.</p>
<p>Aujourd’hui, j’estime que l’application a suffisamment de ressources pour répondre à tous mes besoins sans être obligé d’installer des paquets en plus. Je ne suis pas contre l’installation de packages, je ne me vois pas réécrire le package <em>markdown-mode</em>, mais ne pas en installer me force à explorer Emacs et comprendre comment il fonctionne.</p>
</content>
</entry>
L’article n’est pas reproduit en entier, c’est juste pour montrer.
Entre les balises content, je colle le contenu de mon article au format html. Pour être plus précis, tout ce qui se trouve entre les deux balises main de mon article au format html.
Ensuite, pour le contenu entre les deux balises content de mon entry, je transforme certains caractères pour qu’il ne soit pas interprété :
| caractère | subtitution |
|---|---|
| < | < |
| > | > |
| " | " |
Je prépare mes entry à part : un fichier entry par article (ex. entry_creer-un-flux-atom.xml). Que je remplis complètement.
Quand il est complet, je l’inclus dans feed.atom
Inclure une entry dans le fichier principal feed
Dans le fichier feed.atom, se placer juste après la balise </author>. Faire un M-x inster-file (C-x i) pour ajouter l’entry au fichier. Mettre toujours la plus récente en premier. Mettre à jour la partie updated du feed et publier (pour moi c’est avec FTP).
Dans la page index.html
Mon flux est défini et utilisable uniquement sur la page index. Ajouter la ligne suivante dans la partie head :
<link rel="alternate" type="application/atom+xml" href="https://www.olivier-web-garden.fr/feed.atom" title="Flux du site www.olivier-web-garden.fr" >
Inclure la ligne suivante dans la navigation : <li><a href="feed.atom">Flux Atom</a></li>
Validation
Enfin, valider le flux à cette adresse : https://validator.w3.org/feed/
Sources
- Sur openweb.eu.org : Comment construire un flux atom
- Wikipedia : Atom Syndication Format
- La RFC Atom rfc 4287