Créer un flux atom

11 janvier 2026

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">
   &​lt;p&​gt;Utiliser Emacs sans aucun package supplémentaire.&​lt;/p&​gt;
  &​lt;p&​gt;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 &​lt;em&​gt;markdown-mode&​lt;/em&​gt;, mais ne pas en installer me force à explorer Emacs et comprendre comment il fonctionne.&​lt;/p&​gt;
    </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èresubtitution
<&lt;
>&gt;
"&quot;

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