ia

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.


Graphique publication contenu

1. Pipeline global

Pipeline

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 :firewall
    • - 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

  1. L’utilisateur rédige un articleLe contenu est structuré (JSON ou HTML)
  2. Envoi via API vers Strapi : validation
    • 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 : content

  • 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 n8n

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 :

email
  • contenu généré
  • liens de validation :
    • ✅ publier
    • ❌ annuler

👉 permet de garder le contrôle humain


e. Publication

Après validation :

LinkedIn
  • - API officielle
  • - publication sur page personnelle avec commentaire engagement

Facebook

  • - Graph API
  • - publication sur page entreprise avec commentaire engagement

7. Intégration LinkedIn

Plateforme

  • LinkedIn

Étapes

  1. Créer une app LinkedIn Developer
  2. Obtenir :
    • client ID
    • client secret
  3. Générer un token avec scopes :
  • w_member_social
  • r_liteprofile
  • r_emailaddress
  1. Associer la page entreprise

👉 Attention : LinkedIn est restrictif → validation de l’app nécessaire


8. Intégration Facebook

Plateforme

  • Meta

Étapes

  1. Créer une app Meta Developer
  2. Ajouter produit : Facebook Login
  3. Générer un token long-lived

Permissions nécessaires :

  • pages_manage_posts
  • pages_read_engagement
  1. 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