Problématique
WordPress ne propose aucune solution native pour convertir du contenu au format Gutenberg via API, bloquant complètement mes workflows d'automatisation.
Le problème technique :
- L'API REST WordPress n'accepte que du HTML brut (format "Classic")
- La seule conversion native Gutenberg nécessite d'ouvrir l'article en édition
- Impossible de créer programmatiquement des blocs Gutenberg natifs
- Les solutions open-source existantes sont soit abandonnées, soit limitées
- Aucune API tierce fiable pour ce besoin spécifique
Impact sur mes workflows :
- Je génère automatiquement du contenu (IA, migration, syndication)
- Mais je dois ensuite ouvrir manuellement chaque article pour le convertir
- Cela rend impossible toute industrialisation de la publication
- Perte de plusieurs heures par semaine sur des tâches manuelles
- Limitation sévère de mes outils d'automatisation SEO
Tentatives infructueuses :
- WordPress Classic Editor : format obsolète, mauvaise expérience
- Plugins de conversion : nécessitent toujours une action manuelle
- Solutions tierces : introuvables ou mal maintenues
Cette limitation technique bloquait complètement mon ambition d'industrialiser la publication de contenu sur WordPress.
Solution technique
J'ai développé une API Node.js dédiée qui comble cette lacune de WordPress en offrant une conversion robuste et performante.
Architecture de l'API :
Parsing intelligent :
- J'ai implémenté un parser basé sur JSDOM pour analyser la structure HTML
- Support natif du Markdown via un parser dédié
- Détection automatique du format d'entrée (HTML vs Markdown)
- Analyse de la hiérarchie du document (titres, paragraphes, listes, images, code)
Conversion en blocs Gutenberg :
- J'ai mappé chaque élément HTML vers son bloc Gutenberg correspondant :
<h1>→core/heading(level 1)<p>→core/paragraph<img>→core/image(avec lazy loading)<pre><code>→core/code<ul>/<ol>→core/list- etc.
- Préservation des attributs (classes CSS, IDs, data-attributes)
- Gestion des blocs imbriqués (colonnes, groupes)
- Validation du JSON Gutenberg produit
API RESTful :
J'expose un endpoint simple POST :
POST /api/convert
Content-Type: application/json
{
"content": "<h1>Mon titre</h1><p>Mon contenu...</p>",
"format": "html"
}
Réponse :
{
"blocks": [
{
"blockName": "core/heading",
"attrs": {"level": 1},
"innerHTML": "Mon titre"
},
{
"blockName": "core/paragraph",
"attrs": {},
"innerHTML": "Mon contenu..."
}
]
}
Hébergement et performance :
- Déployé sur Vercel en serverless pour une scalabilité automatique
- Temps de réponse moyen < 100ms
- Pas de limite de requêtes pour usage interne
- Logs et monitoring intégrés
Intégration dans mes workflows :
Je l'utilise maintenant dans tous mes outils d'automatisation :
- Génération de contenu (IA ou autre)
- Appel à mon API de conversion
- Récupération du JSON Gutenberg
- Publication directe via API REST WordPress
Cette approche me permet de publier automatiquement sur WordPress avec des blocs Gutenberg natifs, sans jamais ouvrir l'interface d'administration.
Le projet
J'ai développé une API de conversion permettant de transformer n'importe quel contenu HTML ou Markdown en blocs Gutenberg natifs WordPress, sans jamais avoir à ouvrir l'éditeur.
Le besoin initial
Je publie quotidiennement du contenu automatisé sur plusieurs blogs WordPress, notamment du contenu généré par IA. Le problème : WordPress Gutenberg ne propose aucune conversion automatique via son API REST, forçant à ouvrir manuellement chaque article en édition.
Cas d'usage principaux
- Publication automatisée : Je génère du contenu par IA et je le publie directement sur WordPress
- Migration de contenu : Import massif d'articles depuis d'autres plateformes
- Syndication cross-sites : Distribution automatique de contenu sur plusieurs sites
- Workflows SEO : Création et publication de contenus optimisés sans intervention manuelle
Architecture technique
J'ai conçu une API stateless ultra-performante :
Input: HTML ou Markdown
↓
Parsing & Analyse (JSDOM)
↓
Conversion en blocs Gutenberg
↓
Output: JSON prêt pour WordPress
L'API est hébergée sur Vercel en serverless, me permettant de traiter des milliers de conversions par jour avec un temps de réponse < 100ms.