Comment j’ai automatisé la publication de mon blog vers LinkedIn et Facebook (100% self-hosted)
Petit retour d’expérience après la mise en place de mon propre pipeline de publication. J’ai récemment construit une architecture simple mais efficace pour automatiser la diffusion de contenu. Objectif : Publier une seule fois… et distribuer automatiquement sur plusieurs canaux. 👉 Concrètement : Saisie du contenu via un frontend interne (Workflow Manager) Envoi vers Strapi, utilisé comme CMS central À la publication : → un webhook met à jour le blog → un second webhook déclenche un workflow n8n → réception d’un email pour valider (ou non) la publication → génération automatique des tags via OpenAI → publication automatique sur LinkedIn et Facebook après validation 👉 Stack utilisée : 🖥️ Hébergement LXC sur Proxmox VE 🧩 Strapi ⚙️ n8n 💻 Frontend custom 🔗 Webhooks pour l’orchestration 🤖 IA pour l’enrichissement du contenu 👉 Résultat : ✔ Une seule source de vérité ✔ Publication multi-canaux automatisée ✔ Validation humaine avant diffusion ✔ Enrichissement automatique via IA ✔ Architecture simple, découplée et scalable Sans automatisation : - rédaction : ~10 min - publication blog (article + labels / catégories) : ~8 min - LinkedIn (rédaction + tags) : ~6 min - Facebook (rédaction + tags) : ~6 min 👉 total : ~30 min / article Avec automatisation : - rédaction : ~10 min - validation : ~30 sec 👉 total : ~10 min / article Soit ~65% de temps gagné, avec en plus : ✅ génération automatique des tags ✅ structuration du contenu (labels / SEO) 👉 Coûts : 💶 Stack technique : 0€ (100% open-source) 💶 IA (OpenAI) : ~0.00008$ / exécution 👉 coût marginal quasi nul à l’usage Ce type d’approche change la façon de gérer du contenu : moins d’outils, moins de friction, plus de cohérence. Et surtout, le gain de temps se fait sur la distribution, qui est souvent le véritable point de blocage. Cette publication a été produite de cette manière, elle est publiée sur linkedin, facebook et sur mon site. Dans la suite, je détaille la mise en place technique complète : architecture, webhooks, configuration et implémentation.

1. Pipeline global
2. Infrastructure (self-hosted)
Stack globale
- Hyperviseur : Proxmox VE
- Conteneurisation : LXC
- Segmentation réseau : firewall (type VyOS ou équivalent)
Segmentation minimum recommandée :
- LAN : administration
- DMZ :
- - n8n
- - site web public
- Zone interne :
- - Strapi
- - SaaS (Next.js)
👉 Objectif :
- - Strapi non exposé publiquement
- - n8n exposé uniquement pour les webhooks
- - séparation stricte des flux
3. SaaS (Frontend de rédaction)
Stack
- Framework : Next.js
- Éditeur : recommandé → TipTap ou Slate.js
Fonction
Interface interne permettant :
- - création d’articles
- - édition riche (WYSIWYG)
- - envoi vers Strapi via API REST
Logique

- L’utilisateur rédige un articleLe contenu est structuré (JSON ou HTML)
- Envoi via API vers Strapi :
- titre
- contenu
- image
- statut = draft ou published
4. Strapi (CMS central)
Stack
- CMS : Strapi
- LXC dédiée
Rôle
Source de vérité unique
Contient :
- articles
- images
- statuts de publication
- métadonnées (tags, SEO…)
Configuration clé
a. Content Type
Créer un type Article :

- title (string)
- content (rich text)
- slug (pour le lien direct article)
- tags (relation ou string)
- labels (pour classement sur le site)
b. Webhook
Configurer un webhook :
- trigger :
entry.publish - destination : n8n (URL publique DMZ)
5. n8n (orchestration)
Stack
- Outil : n8n
- Déployé en DMZ
Rôle
Cœur du système :
- - réception webhook Strapi
- - transformation des données
- - enrichissement
- - validation
- - publication multi-plateformes
6. Workflow n8n (logique détaillée)
Étapes
a. Webhook (entrée)
- - reçoit payload Strapi
- extrait :
- - titre
- - contenu
- - image
b. Séparation contenu (Javascript)
- texte
- image
👉 permet :
- gestion spécifique par plateforme
- optimisation formats
c. Enrichissement via IA
- API : OpenAI
Utilisation :
- - génération de hashtags
d. Validation (critique)
Envoi d’un email :
- contenu généré
- liens de validation :
- ✅ publier
- ❌ annuler
👉 permet de garder le contrôle humain
e. Publication
Après validation :
- - API officielle
- - publication sur page personnelle avec commentaire engagement
-
- - Graph API
- - publication sur page entreprise avec commentaire engagement
-
7. Intégration LinkedIn
Plateforme
Étapes
- Créer une app LinkedIn Developer
- Obtenir :
- client ID
- client secret
- Générer un token avec scopes :
w_member_socialr_liteprofiler_emailaddress
- Associer la page entreprise

👉 Attention : LinkedIn est restrictif → validation de l’app nécessaire
8. Intégration Facebook
Plateforme
- Meta
Étapes
- Créer une app Meta Developer
- Ajouter produit : Facebook Login
- Générer un token long-lived
Permissions nécessaires :
pages_manage_postspages_read_engagement
- Récupérer :
- - page ID
- - page access token
-
9. Site web (blog)
Stack
- Framework : Next.js
- (ou Nest.js si API backend séparée)
Fonctionnement
Publication dans le blog du site

- - récupération des articles via API Strapi
- - génération des pages (SSR ou SSG)Publication en encart en fonction des labels dans les pages dédiées
SEO
- - gestion des tags
- - slug optimisé
- - meta description
Conclusion Ce type d’architecture reste volontairement simple, mais pose des bases solides : centralisation du contenu, découplage et orchestration par événements.
- Elle peut ensuite évoluer vers des usages plus avancés (multi-canaux, scoring, personnalisation, automatisation SEO).
- Si vous travaillez sur ce type de sujets, je serai intéressé d’échanger sur vos architectures ou vos contraintes.
Pierre-Marie Esposito