17 min de lecture

EmDash, le « successeur de WordPress » piloté par un agent IA

Cloudflare a sorti EmDash 1.0, un CMS open source pensé dès le départ pour être piloté par des agents IA. Ce qu'il est (et n'est pas) pour un utilisateur WordPress, puis six prompts pour monter un blog tech, le mettre en ligne et le piloter depuis Claude via MCP.

Cloudflare a sorti EmDash 1.0, un CMS open source pensé dès le départ pour être piloté par des agents IA. Ce qu'il est (et n'est pas) pour un utilisateur WordPress, puis six prompts pour monter un blog tech, le mettre en ligne et le piloter depuis Claude via MCP.
Mode de lecture :

Lundi matin, vous ouvrez l’admin de votre WordPress. Quatorze mises à jour de plugins vous attendent, dont une « de sécurité ». Vous cliquez, vous croisez les doigts, vous vérifiez que le site tient debout. Et vous vous demandez, une fois de plus, ce que font vraiment ces quarante plugins qui ont tous un accès complet à votre base de données.

C’est précisément ce problème que Cloudflare prétend résoudre avec EmDash, un CMS open source présenté comme le « spiritual successor to WordPress ». La version 1.0 est sortie le 28 septembre 2026. Mais ce qui m’a le plus intéressé n’est pas la sécurité des plugins : c’est qu’EmDash est le premier CMS que j’ai vu pensé dès le départ pour être piloté par un agent IA.

Cet article se lit en trois temps :

  1. Ce qu’est EmDash, expliqué pour quelqu’un qui connaît WordPress.
  2. On le met en place avec Claude Code, en six prompts : création du projet et thème « blog tech » en local, mise en ligne sur Cloudflare, puis rédaction et publication d’articles depuis le chat, directement sur le site en production.
  3. Ce qu’EmDash ne remplace pas (encore), parce qu’une 1.0 vieille d’une semaine mérite un regard lucide.

Important : vous n’avez pas besoin de savoir coder pour suivre la partie pratique, mais un terminal ne doit pas vous faire peur. C’est justement le propos : l’agent écrit le code, vous décidez de ce que vous voulez.


EmDash, c’est quoi exactement ?

EmDash est un CMS complet écrit en TypeScript et construit sur le framework web Astro. Il a été annoncé le 1er avril 2026, puis développé à un rythme effréné : 42 versions en six mois, plus de 175 contributeurs, et une 1.0 stable fin septembre. Il est sous licence MIT et ne contient aucune ligne de code de WordPress.

Le plus parlant, c’est encore la comparaison :

WordPressEmDash
LangagePHPTypeScript (Astro)
Base de donnéesMySQLSQLite, Cloudflare D1, PostgreSQL
HébergementN’importe quel hébergeur PHPCloudflare Workers, ou n’importe quel serveur Node.js
ÉditeurGutenbergÉditeur riche, contenu stocké en JSON structuré (Portable Text)
ThèmesInstallables en un clic depuis l’adminUn projet Astro : on change le design dans le code
PluginsAccès total au siteIsolés, avec des permissions déclarées et approuvées
ConnexionIdentifiant + mot de passePasskeys (Touch ID, Face ID, clé de sécurité), SSO
LicenceGPLMIT

Côté utilisateur, on retrouve ses repères : une interface d’administration (traduite en français), des articles et des pages, des catégories et des étiquettes, des menus, des widgets, des révisions, la publication programmée, la recherche, les commentaires, le SEO. Le blog officiel de Cloudflare tourne d’ailleurs dessus depuis août 2026.

La promesse de départ : la sécurité des plugins

D’après Cloudflare, l’immense majorité des failles de sécurité WordPress viennent des plugins. Le problème est structurel : un plugin WordPress s’exécute avec les pleins pouvoirs.

Dans EmDash, un plugin démarre sans aucun droit. Il doit déclarer ce dont il a besoin (lire le contenu, envoyer des e-mails, appeler tel nom de domaine…), et l’administrateur approuve ces permissions, comme sur un smartphone. Le plugin tourne ensuite dans un environnement isolé. Depuis la 1.0, les plugins sont distribués via un registre décentralisé, où chaque version est signée par son auteur.

Connexion, rôles et accès des agents

Pas de mot de passe. EmDash utilise par défaut les passkeys (standard WebAuthn). Au lieu d’un mot de passe, votre appareil crée une paire de clés : la clé privée reste chez vous (dans votre gestionnaire de mots de passe ou sur votre appareil), et le site ne stocke que la clé publique. Il n’y a donc aucun mot de passe à voler en base, ni à saisir sur un faux site : une passkey ne fonctionne que sur le domaine pour lequel elle a été créée.

D’autres façons de se connecter sont prévues : comptes GitHub, Google ou Microsoft (à configurer avec des variables d’environnement), lien de connexion par e-mail (valable 15 minutes, si l’envoi d’e-mails est configuré), ou Cloudflare Access pour passer par l’annuaire d’une entreprise.

Des rôles familiers. Abonné, Contributeur (crée des brouillons sans publier), Auteur (publie ses propres contenus), Éditeur (gère tout le contenu) et Administrateur : on retrouve la logique de WordPress. Les nouveaux utilisateurs sont invités depuis Réglages → Utilisateurs, avec un lien valable 7 jours.

Les agents IA restent dans les clous. Un agent se connecte par OAuth ou avec un jeton personnel, jamais avec votre session du navigateur. Ses droits sont l’intersection des permissions que vous lui accordez et de votre rôle : il ne peut jamais en faire plus que vous. Et il crée ses contenus en brouillon par défaut.

Pourquoi il intéresse quelqu’un qui utilise l’IA

C’est la partie qui justifie cet article. EmDash est livré avec tout ce qu’il faut pour qu’un agent IA travaille dessus :

  • Des skills d’agent : des fiches d’instructions que Claude Code (ou Codex, Cursor, Copilot…) charge automatiquement. Elles lui expliquent comment construire un site EmDash, créer un plugin ou utiliser la ligne de commande. Elles sont déjà présentes dans chaque nouveau projet.
  • Un serveur MCP intégré à chaque site : 72 outils qui permettent à un assistant IA de créer, modifier, publier et planifier du contenu, gérer les médias, les catégories et les menus, directement depuis une conversation.
  • Un serveur MCP de documentation, lui aussi préconfiguré, pour que l’agent consulte la doc officielle à jour plutôt que de deviner.
  • Un fichier AGENTS.md dans chaque template, qui donne à l’agent les règles de design du thème.

Même Matt Mullenweg, cofondateur de WordPress et pourtant très critique envers EmDash, l’a reconnu dans son billet de réaction : « The Skills are amazing, a brilliant strategy ».

Et avec un autre agent ? Les skills fonctionnent aussi avec Codex, Cursor, GitHub Copilot ou Factory : npx skills add emdash-cms/skills les installe pour la plupart des agents, et le serveur MCP du site est compatible avec tout client MCP.

Passons à la pratique.


Prérequis

  • Node.js 24 LTS (nodejs.org) : la doc annonce 22.16, mais certaines dépendances exigent une version plus récente.
  • Claude Code installé (claude.ai/code)
  • Un compte Cloudflare gratuit, pour la mise en ligne, avec R2 activé : dans le tableau de bord, ouvrez R2 Object Storage et activez le service. C’est gratuit dans la limite des quotas, mais Cloudflare peut demander un moyen de paiement. Sans cette activation, le déploiement échoue.
  • Un navigateur récent pour créer votre passkey

Le plan est simple :

  1. En local, on ne touche qu’au code : création du projet et design. Pas de base de données à installer : Cloudflare émule sa base et son stockage de fichiers sur votre machine.
  2. On met en ligne sur Cloudflare.
  3. En production, on crée son compte avec une passkey, puis on branche Claude sur le site pour rédiger et publier.

Étape 1 : Créer le projet

Créez un dossier de travail, ouvrez-y un terminal et lancez Claude Code :

mkdir mes-projets && cd mes-projets
claude

Premier prompt :

« Crée un blog avec EmDash, le CMS de Cloudflare, en suivant la documentation officielle : https://docs.emdashcms.com/getting-started/. Dossier mon-blog, template blog pour Cloudflare, npm. Lance ensuite le serveur de développement. »

Le lien vers la documentation est important : à ce stade, Claude n’a encore aucune skill EmDash (elles arrivent avec le projet), et le CMS est trop récent pour qu’il le connaisse à coup sûr. Avec la doc sous les yeux, il ne devine pas. Lors de mon test, il a lu la page, consulté l’aide de l’outil de création pour trouver ses options non interactives, puis lancé :

npm create emdash@latest mon-blog -- --template cloudflare:blog --pm npm --install --yes

avant de démarrer le serveur avec npm run dev. Le tout en moins d’une minute et demie. Votre blog est disponible sur http://localhost:4321. Il est vide, c’est normal : le contenu viendra plus tard, directement en production. Inutile aussi de créer un compte dans l’administration locale, on le fera en ligne.

Piège évité : demandez bien npm. Avec pnpm, le template exige la version 11, et l’installation échoue avec une version plus ancienne.

Le projet contient déjà tout le nécessaire pour l’agent :

mon-blog/
├── .agents/skills/       ← les skills EmDash (site, plugins, CLI)
├── .claude/skills        ← lien vers le dossier ci-dessus, pour Claude Code
├── .mcp.json             ← le serveur MCP de la documentation EmDash
├── AGENTS.md             ← les règles du thème
├── seed/seed.json        ← le schéma du contenu (articles, pages, catégories…)
├── src/styles/theme.css  ← le fichier pour personnaliser le design
└── wrangler.jsonc        ← la configuration Cloudflare

Pour que Claude Code charge ces skills, relancez-le depuis le projet :

cd mon-blog
claude

Au démarrage, Claude Code vous demande d’approuver le serveur MCP emdash-docs déclaré dans le projet : acceptez.


Étape 2 : Un thème « blog tech »

Le template blog est sobre et bien construit : du CSS natif organisé en design tokens (couleurs, typographie, espacements), un mode sombre, une table des matières, la recherche, un flux RSS. Le fichier AGENTS.md du template déconseille d’ailleurs d’ajouter une bibliothèque de composants sans bonne raison. On va donc rester en CSS natif.

« Transforme ce blog en blog tech, sans ajouter de bibliothèque CSS. Palette sobre avec un accent vert émeraude, en clair comme en sombre, titres en JetBrains Mono, code inline façon terminal. Les blocs de code n’ont pas de coloration syntaxique : ajoute-la avec le composant Code d’Astro. Respecte les règles du fichier AGENTS.md. »

C’est ici que les skills font la différence. Grâce à building-emdash-site et au AGENTS.md, Claude sait que tout le thème se pilote depuis un seul fichier, src/styles/theme.css, où il ajuste les couleurs et la typographie sans toucher au reste. Pour la coloration du code, il ajoute un petit composant basé sur celui d’Astro, sans aucune dépendance supplémentaire.

Le détail varie d’une fois à l’autre, c’est le principe d’un agent. Lors de mon essai, qui a pris un peu plus de trois minutes, il en a même fait plus que demandé : vérification de son travail sur une page de test supprimée ensuite, et mise à jour du AGENTS.md pour décrire le nouveau design, afin que les prochains agents ne réintroduisent pas le bleu d’origine du template.

Le blog étant encore vide, vous verrez surtout les couleurs et la typographie. La coloration du code, elle, apparaîtra dans le premier article, à l’étape 5.

Et en français ? Le template affiche son interface publique en anglais (« No posts yet », « Continue reading », « On this page »…). Un prompt suffit pour la traduire : « Passe toute l’interface publique du site en français : attribut lang, textes, libellés d’accessibilité, format des dates et temps de lecture. » L’administration d’EmDash, elle, est déjà disponible en français : elle suit la langue de votre navigateur.


Étape 3 : Mettre en ligne sur Cloudflare

Connectez d’abord votre compte Cloudflare. Cette commande ouvre votre navigateur ; lancez-la vous-même depuis Claude Code en la préfixant d’un ! :

! npx wrangler login

Puis :

« Déploie le blog sur Cloudflare sous le nom mon-blog. Déclare la clé de chiffrement du .env comme secret Cloudflare, puis vérifie que tout est bien configuré. »

Claude renomme le projet dans la configuration, lance le déploiement, puis déclare la clé de chiffrement comme secret sans jamais l’afficher. Au premier déploiement, Cloudflare crée automatiquement la base de données D1, le stockage R2 pour les médias et un espace pour les sessions.

Votre blog est en ligne sur une adresse en *.workers.dev, que vous pourrez ensuite remplacer par votre propre nom de domaine.

Lors de mon premier essai, R2 n’était pas activé sur mon compte. Claude l’a détecté avant de toucher à quoi que ce soit, a préparé tout ce qui pouvait l’être, puis s’est arrêté pour me demander de l’activer : c’est la seule action qu’il ne peut pas faire à votre place.

Un mot sur cette clé, EMDASH_ENCRYPTION_KEY : générée à la création du projet, elle chiffre les réglages sensibles des plugins (des clés d’API, par exemple). Gardez-en une copie dans votre gestionnaire de mots de passe : Cloudflare ne permet pas de relire un secret, et sans elle, ces réglages deviennent illisibles.

Combien ça coûte ?

A priori rien, pour un blog personnel. L’offre gratuite de Workers inclut 100 000 requêtes par jour, et D1 et R2 ont leurs propres quotas gratuits. L’offre payante (5 $ par mois) ne devient nécessaire que pour activer les plugins isolés.

Et sans Cloudflare ?

EmDash n’y est pas lié : chaque template existe aussi en version Node.js (--template blog --platform node à l’étape 1). Le site tourne alors sur n’importe quel VPS, avec SQLite ou PostgreSQL, et les médias sur le disque ou un stockage compatible S3. La documentation de déploiement Node.js fournit même un Dockerfile.


Étape 4 : Créer votre compte avec une passkey

Ouvrez https://mon-blog.<votre-compte>.workers.dev/_emdash/admin. La base de production est neuve : l’assistant d’installation se lance.

Faites-le tout de suite après le déploiement. Tant que l’assistant n’a pas été rempli, le premier visiteur de /_emdash/admin peut créer le compte administrateur. L’adresse en *.workers.dev n’est pas secrète : ne laissez pas un site fraîchement déployé sans propriétaire.

L’assistant tient en trois écrans, en partie traduits en français :

  1. Site : le titre du site (« Mon blog tech ») et le slogan (« Dev, IA et DevOps, sans bullshit »). L’assistant demande ensuite comment démarrer : Sample content (les articles d’exemple du template), Empty site (les types de contenu, sans contenu) ou Import an existing EmDash site. Choisissez Empty site : votre premier article sera celui que Claude rédigera.
  2. Compte : votre e-mail et votre nom.
  3. Se connecter : la création de votre passkey. L’écran explique ce que c’est, puis le bouton Create passkey ouvre la fenêtre de votre système (sur Mac, celle de macOS) ou celle de votre gestionnaire de mots de passe s’il gère les passkeys (Bitwarden, 1Password, le Gestionnaire de mots de passe de Google dans Chrome…). Choisissez où l’enregistrer, puis confirmez avec Touch ID, Windows Hello ou le code de votre appareil.

Un message Passkey created confirme la création, et le bouton Open the dashboard vous emmène dans l’administration, en français. EmDash ne reçoit jamais votre empreinte ni votre code : seulement la clé publique.

Pour vous reconnecter plus tard, la page de connexion propose « Se connecter avec une clé d’accès » (c’est le nom français des passkeys) : votre navigateur ou votre gestionnaire vous propose la passkey enregistrée, et vous confirmez avec votre empreinte ou votre code. La même page propose aussi « Se connecter avec un lien envoyé par e-mail », qui ne fonctionne que si l’envoi d’e-mails est configuré.

Prévoyez une passkey de secours. Si votre passkey n’existe que sur un seul appareil et que vous le perdez, la récupération passe par un lien envoyé par e-mail… à condition que l’envoi d’e-mails soit configuré. Une passkey synchronisée par Google ou iCloud vous protège déjà en grande partie. Pour plus de sécurité, ajoutez-en une seconde sur un autre support (clé de sécurité, autre appareil) depuis les réglages de sécurité de votre compte EmDash, qui en accepte jusqu’à dix.


Étape 5 : Brancher Claude sur votre site en production

Jusqu’ici, Claude a travaillé sur le code du site. Maintenant, on va lui donner accès à son contenu, comme le ferait un rédacteur connecté à l’administration.

Chaque site EmDash expose un serveur MCP à l’adresse /_emdash/api/mcp. Quittez Claude Code, ajoutez le serveur de votre site, puis relancez Claude :

claude mcp add --transport http emdash-blog https://mon-blog.<votre-compte>.workers.dev/_emdash/api/mcp
claude

Tapez /mcp, sélectionnez emdash-blog puis Authenticate. Votre navigateur s’ouvre sur une page d’autorisation EmDash (vous devez être connecté à l’administration dans ce navigateur), qui liste les quinze permissions demandées par Claude.

Toutes les permissions sont cochées par défaut, y compris l’export complet du site et l’accès administrateur. Décochez ce dont Claude n’a pas besoin : pour rédiger et gérer des articles, le contenu, les médias, les catégories, les menus et les réglages suffisent. Dans tous les cas, Claude ne pourra jamais dépasser les droits de votre propre compte. Cliquez sur Approve : le navigateur confirme l’authentification, et emdash-blog apparaît comme connecté dans /mcp, avec ses 72 outils.

Premier essai, pour mettre en place la structure du blog :

« Avec le MCP emdash-blog : crée les catégories Dev, IA et DevOps, et supprime les éventuelles catégories par défaut. »

Rédiger et publier depuis le chat

C’est le moment le plus bluffant pour un utilisateur WordPress.

« Rédige un article “Bien démarrer avec EmDash” : 600 mots, ton accessible, un bloc de code avec la commande d’installation, catégorie Dev. Crée-le en brouillon. »

Claude regarde quels champs comporte un article (titre, extrait, image à la une, contenu, SEO), puis le crée. Il n’a pas besoin de connaître le format interne d’EmDash : le serveur MCP accepte directement du Markdown, et le convertit lui-même, blocs de code compris. Ouvrez l’aperçu : c’est là que vous découvrez la coloration syntaxique ajoutée à l’étape 2.

L’article est créé en brouillon par défaut. Le serveur MCP ne fournit pas de lien de prévisualisation : ouvrez l’article dans l’administration, qui propose un aperçu. Relisez-le, corrigez ce que vous voulez dans l’éditeur, puis :

« Planifie la publication pour lundi 9 h. »

L’article apparaît alors dans le calendrier éditorial de l’administration, nouveauté de la version 1.1. Lors de mon test, Claude a bien interprété l’heure de Paris.

Plus largement, tout ce que vous faites dans l’administration de WordPress, vous pouvez désormais le demander en une phrase : corriger une coquille dans un vieil article, ajouter une catégorie à vingt articles d’un coup, réorganiser le menu, retrouver tous les articles qui parlent de Docker…

Mon conseil : laissez Claude créer en brouillon, et gardez la main sur la publication. C’est aussi ce que recommande la documentation d’EmDash.


Et mon WordPress existant ?

Je ne l’ai pas testé ici, mais des outils existent. EmDash propose un import WordPress depuis son administration, à partir du fichier d’export de WordPress ou d’un plugin dédié, EmDash Exporter. Le contenu passe, mais pas les thèmes ni les plugins. Pour ceux-là, deux skills (wordpress-theme-to-emdash et wordpress-plugin-to-emdash) guident l’agent dans le portage. Tout est détaillé dans le guide de migration officiel. La migration mériterait un article à elle seule.


Ce qu’EmDash ne remplace pas (encore)

J’ai été bluffé, mais soyons lucides avant de quitter WordPress :

  • La 1.0 a une semaine, après six mois de versions parfois incompatibles entre elles et avec plus de 350 tickets ouverts.
  • L’écosystème est minuscule : une poignée de plugins, face aux 60 000 de WordPress. Pas de WooCommerce ni de constructeur de pages.
  • Changer de design, c’est du code : pas de catalogue de thèmes à activer en un clic, même si l’agent rend la chose accessible.
  • La dépendance à Cloudflare fait débat : EmDash tourne ailleurs, mais ses meilleurs atouts (déploiement, cache, registre de plugins) sont opérés par Cloudflare.
  • La sécurité des plugins n’est pas magique : elle ne protège que si l’on lit vraiment les permissions qu’on approuve.

Mon avis : pour un nouveau blog ou un site vitrine, EmDash est déjà une excellente option. Pour migrer un WordPress riche en plugins, attendez quelques mois.


Conclusion

En une petite heure et six prompts, on a installé un CMS, créé un thème sur mesure, rédigé et planifié un article depuis une conversation, et mis le tout en ligne. Sans écrire une ligne de code soi-même, et sans installer un seul plugin.

Ce qui change avec EmDash, ce n’est pas tant le CMS que la façon de le faire évoluer : la documentation, les règles du thème et les outils d’administration sont livrés pour l’agent autant que pour vous. Le prochain grand CMS ne sera peut-être pas celui qui a le plus de plugins, mais celui que les agents savent le mieux piloter.

En attendant, si vous deviez retenir une seule chose : avec EmDash, votre administration, c’est une conversation.


Sources et pour aller plus loin

Article écrit avec l’aide de Claude Opus 5.5.

Back to Blog

Comments (0)

Loading comments...

Leave a Comment