Documentation Social Hub
Composez un post, ciblez huit plateformes, personnalisez ce qui doit l'être, planifiez et publiez — le tout depuis un seul endroit.
Vue d'ensemble
Social Hub centralise la publication sur huit plateformes : Facebook, Instagram, LinkedIn, X, Threads, TikTok, WordPress et le blog SiteHub. Un post part d'un contenu de base, cible un ou plusieurs comptes connectés, puis se personnalise par plateforme quand une contrainte (longueur, format d'image, titre requis) l'exige.
LinkedIn, Facebook, Instagram et WordPress publient réellement via leurs API. Le blog SiteHub reçoit un brouillon à relire dans son éditeur ; la mise en ligne se fait ensuite dans SiteHub. Les autres plateformes passent par le flux manuel tant que leur adapter n'est pas activé.
Calendrier
Vue par défaut de l'app. Affiche vos posts planifiés en vue Semaine, Mois ou Liste, avec des filtres par plateforme connectée et par statut. Chaque carte montre l'heure, les icônes de plateforme et un indicateur de statut ; un badge sur chaque jour indique son nombre de posts.
La bascule « Meilleurs créneaux » met en évidence les créneaux suggérés pour publier ; survoler un créneau libre fait apparaître un raccourci « + Planifier » pour ouvrir le composer directement dessus.
Un brouillon ou un post planifié se replanifie par glisser-déposer (annulable pendant 5 secondes) ; cliquer sur une carte ouvre le composer si le post est encore modifiable, sinon un aperçu détaillé de son statut par cible.
Plan éditorial
/plan remplace le tableur externe : chaque sujet à écrire y enregistre un titre, un type (article, post social ou reel), un brief, des mots-clés, une intention, une URL cible, des canaux envisagés et une date cible.
La vue Liste regroupe les sujets par étape du parcours éditorial — Idée, Brieffé, Génération, En relecture, Planifié, Publié, Mesuré — avec un compteur par statut. Des filtres par statut et par type s'appliquent sans changer les compteurs affichés sur les autres chips. La vue Calendrier place les sujets datés sur leur jour cible et liste à part ceux qui n'ont pas encore de date, sous « Sans date » — ce sont justement les sujets qui attendent une décision.
« Créer le contenu » crée un brouillon pré-rempli à partir du brief et l'ouvre dans le composer. Le sujet reste ensuite lié à ce post et suit sa progression automatiquement : à mesure que le post avance (brouillon ou en attente d'approbation → planifié → publié), le sujet passe de lui-même d'En relecture à Planifié puis Publié. Le statut ne peut avancer que dans un sens — un sujet marqué Mesuré à la main y reste, même si son post est republié.
Les éditeurs, approbateurs et administrateurs peuvent créer, modifier et supprimer des sujets ; les autres rôles voient la même liste et le même calendrier et peuvent ouvrir un sujet pour en lire le brief, mais sans les actions de création, modification ou suppression.
Un sujet de type article peut, en option, se rattacher à un mot-clé suivi et à un prompt IA visé depuis le volet « Suivi SEO/GEO » de la boîte de dialogue — cette section n'existe pas pour un post social ou un reel, qui n'ont pas de page à positionner. Choisir une requête déjà couverte par une autre page affiche un avertissement de cannibalisation (« rafraîchir plutôt que créer ? ») : c'est un conseil, jamais un blocage, et le sujet s'enregistre normalement. Depuis Suivi, « Créer un sujet » sur une opportunité ouvre le plan avec un sujet pré-rempli et déjà lié au mot-clé.
File d'attente
Trois onglets — À venir, Publiés et Échecs (avec un compteur sur ce dernier) — listent vos posts groupés par jour.
Chaque ligne propose un menu d'actions : Modifier, Dupliquer, Replanifier, Relancer (après un échec) et Supprimer.
Une déclinaison courte s'imbrique sous son article parent quand les deux sont dans le même onglet ; sinon, une pastille « Dérivé de … » renvoie vers l'article — le même indicateur apparaît sur les cartes du calendrier.
Composer
Choisissez vos cibles sous forme de chips de compte groupées par plateforme, rédigez un texte de base et ajoutez au maximum un média (upload direct ou picker Photos / SiteHub).
Dès qu'au moins une cible est sélectionnée, un onglet de personnalisation par plateforme s'active — texte, média ou titre spécifique, avec un compteur de caractères qui s'ajuste à la limite de chaque plateforme.
Enregistrez un brouillon, soumettez-le à validation si le compte l'exige, ou planifiez-le directement à une date et une heure — choisies via le datepicker et un sélecteur d'heure par créneaux. Une date passée ou une planification incomplète est bloquée avant l'envoi, avec le message d'erreur affiché au bon endroit ; une fois planifié, vous êtes redirigé vers le calendrier.
Un post dont le texte a été rédigé par une IA porte une pastille « IA » discrète. Il ne peut jamais être planifié directement — le seul chemin vers une publication programmée est « Soumettre à validation », quels que soient votre rôle et les règles d'approbation de l'entreprise. Cette origine est fixée à la création et ne change plus ensuite, y compris en cas de duplication du post.
Une fois le post sorti du brouillon (planifié, en attente d'approbation ou publié), une bannière de statut apparaît et les champs se verrouillent. Un post planifié peut être repassé en brouillon pour le modifier de nouveau.
Dès que WordPress ou le blog SiteHub est ciblé, un volet Article apparaît sous le texte de base : un corps en Markdown avec une bascule Écrire / Aperçu, et une section repliable « Extrait & référencement » pour l'extrait, le slug (proposé à partir du titre, puis jamais réécrit), le titre SEO et la description SEO, chacun avec un repère de longueur conseillée. Retirer la dernière cible blog conserve le contenu de l'article et affiche un message expliquant qu'il ne sera publié nulle part tant qu'un blog n'est pas ciblé à nouveau ; une fois publié, le corps Markdown devient le HTML de l'article WordPress, avec l'extrait, le slug et le titre SEO. Le corps comprend aussi les tableaux (colonnes séparées par |) et les images (), rendus à l'identique dans l'aperçu, l'aperçu de validation et l'article publié. Le média joint au post — upload direct ou picker Photos / SiteHub — devient l'image mise en avant de l'article WordPress.
La section FAQ, sous les champs SEO, ajoute jusqu'à 20 questions/réponses à l'article : à la publication, elles partent en bloc FAQ Yoast en fin d'article, avec les données structurées FAQPage qui rendent la page éligible aux résultats enrichis. Sur un site sans Yoast, la FAQ s'affiche simplement en fin d'article. Le validateur la voit dans l'aperçu de validation, à l'endroit où elle apparaîtra sur la page.
La carte du média joint, sous le texte de base, affiche le nom de fichier d'origine de l'envoi et propose un champ « Texte alternatif » optionnel décrivant l'image. Les deux voyagent avec le média jusqu'à WordPress : le fichier y garde son propre nom au lieu de sa clé de stockage interne, et le texte alternatif se publie comme description de l'image sur WordPress et LinkedIn — utile pour les lecteurs d'écran et la recherche d'images.
Dès que la cible est un article WordPress (pas le blog SiteHub), un bloc « Classement sur WordPress » apparaît : la Catégorie se choisit dans la vraie liste du site, vide valant catégorie par défaut du site. Les Étiquettes se saisissent en pastilles — préremplies depuis les mots-clés du sujet quand l'article vient du plan éditorial — avec les plus utilisées du site en suggestion ; à la publication, une étiquette déjà existante est réutilisée, une nouvelle est créée, et un site qui refuse la création d'étiquettes ne fait pas échouer la publication. Un nom d'étiquette ou de catégorie avec une apostrophe ou un « & » s'affiche et se compare correctement, sans créer de doublon.
L'expression clé principale, ainsi que le titre SEO et la description SEO renseignés ci-dessus, remplissent automatiquement les champs Yoast — mais seulement si le site les expose à l'API, ce qui suppose un réglage fait une fois par l'administrateur du site. Quand c'est le cas, l'article WordPress garde son titre éditorial et le titre SEO ne vit que dans Yoast ; sans ce réglage, la publication se comporte comme avant.
La case « Publier en brouillon sur WordPress », sous le corps de l'article, envoie ce dernier dans wp-admin sous « Brouillons » au lieu de le publier tout de suite : invisible sur le site, dans les flux et dans le plan de site, jusqu'à ce qu'un humain le publie lui-même depuis wp-admin. Utile pour un dernier regard sur le site réel avant mise en ligne. L'approbateur voit alors un badge « Brouillon WordPress » sur la carte du post. Décochée — le comportement par défaut — l'article se publie immédiatement, comme avant.
Un article peut donner naissance à des déclinaisons — jusqu'à cinq brouillons courts en un clic, pré-remplis à partir de son extrait et sans plateforme choisie. Chacun reste lié à son article via une pastille « Dérivé de … », se planifie et s'approuve indépendamment, et hérite de la pastille « IA » de l'article s'il en a une ; la relation ne va qu'à un seul niveau, une déclinaison ne peut pas en créer d'autres.
Suivi
/suivi ferme la boucle du contenu : quatre vues montrent ce que les articles rapportent. Rien n'est mesuré par l'application elle-même — un agent d'analyse externe lit Google Search Console et Ubersuggest puis écrit les chiffres via l'API, généralement toutes les deux semaines.
Mots-clés est le registre des requêtes suivies : pour chacune, la page qui la positionne, son cluster, sa position, ses impressions, ses clics et un verdict. Opportunités reprend les requêtes encore libres, classées par priorité avec leur volume et leur difficulté, et propose « Créer un sujet » pour les envoyer vers le plan (voir Plan éditorial). Visibilité IA — l'indicateur principal — montre, prompt par prompt, si chaque moteur nous cite et à quel rang, qui prend la première place sinon, plus un classement de marques. Résultats montre, article par article, la position et les chiffres au jour de la publication puis 28 jours plus tard.
Les quatre vues se lisent quel que soit le rôle ; seuls les éditeurs, approbateurs et administrateurs voient le bouton « Créer un sujet » sur une opportunité.
Approbations
Réservé aux approbateurs et aux administrateurs — le lien n'apparaît pas dans la sidebar des autres rôles. Chaque carte montre un aperçu du post par cible, avec les posts urgents (moins de 24 h) signalés en rouge ; un post marqué « IA » y passe systématiquement, même si le compte concerné n'exige normalement aucune validation.
Approuver publie directement (ou ouvre la planification si aucune date n'est fixée) ; refuser exige une note expliquant le rejet, que l'auteur retrouve sur son brouillon pour le corriger.
Une case à cocher sur chaque carte, plus « Tout sélectionner », ouvre une barre d'action qui reste visible en bas de l'écran et propose les deux mêmes verdicts appliqués à toute la sélection. Approuver la sélection ne demande une date que pour les posts qui n'en ont pas encore, avec un espacement au choix entre eux (même heure, 15, 30, 60 ou 120 minutes) — les posts déjà planifiés gardent la date choisie par leur auteur, sauf à cocher « Remplacer la date ». Refuser la sélection envoie une seule note à tous les auteurs concernés. Ni l'un ni l'autre ne s'arrête au premier échec : le résultat détaille quels posts ont échoué et pourquoi, et ceux-ci restent sélectionnés pour un nouvel essai en un clic.
Au-dessus du champ de note — seule ou par lot — les motifs types enregistrés par l'entreprise s'affichent en pastilles cliquables qui pré-remplissent le texte ; « Enregistrer comme motif type » ajoute la note en cours à cette liste, jusqu'à douze motifs par entreprise.
« Voir les modifications » compare le texte actuel à la dernière version soumise avant un refus, mot par mot : les mots retirés apparaissent barrés, les mots ajoutés soulignés — plus besoin de repérer à l'œil les deux mots changés dans un post corrigé. Une première soumission n'a aucune version précédente à comparer.
Actions manuelles
Pour les plateformes sans publication automatique (X, Threads, TikTok), /actions guide la seule étape manuelle irréductible : copier la légende, partager ou télécharger le média, puis ouvrir la plateforme.
Une fois le post publié à la main, confirmez avec « J'ai publié » ou signalez un échec. La page est optimisée mobile et installable en PWA pour un usage au téléphone ; un badge dans la sidebar indique le nombre d'actions en attente.
Comptes
Une grille de huit cartes, une par plateforme, chacune pouvant contenir plusieurs comptes connectés (par exemple deux pages LinkedIn). Le statut de connexion est visible d'un coup d'œil, avec une bannière si un compte a expiré.
Reconnectez ou déconnectez un compte en un clic depuis son menu ; les boutons de gestion sont masqués (pas seulement désactivés) pour les rôles qui n'y ont pas accès. Déconnecter un compte efface immédiatement ses jetons — voir la politique de confidentialité pour la suppression complète des données.
Une plateforme dont les identifiants OAuth ne sont pas configurés sur ce serveur affiche un état sobre « Non configuré » plutôt qu'un bouton ou une erreur ; si une connexion échoue ou expire, la raison s'affiche dans un bandeau lisible en haut de la page.
WordPress se connecte avec l'adresse du site, un nom d'utilisateur et un mot de passe d'application (pas votre mot de passe de connexion habituel) ; ces identifiants sont vérifiés auprès du site avant d'enregistrer le compte, et un mot de passe refusé, un site injoignable ou une API REST absente sont signalés en clair.
Le blog SiteHub se connecte avec l'identifiant du site de votre entreprise. Une fois l'article validé et planifié, Social Hub crée un brouillon dans SiteHub et affiche un lien vers son éditeur dans les actions à terminer. Les titres, paragraphes, listes, tableaux et images du corps Markdown y restent lisibles ; publiez le brouillon depuis SiteHub après vérification.
Chaque compte affiche son échéance — « Expire dans X jours » — avec un avertissement ambré en dessous de 7 jours restants. L'accès Instagram se renouvelle automatiquement avant d'expirer, sans action de votre part. LinkedIn n'a pas de renouvellement automatique : une reconnexion tous les 60 jours environ y est normale, pas le signe d'une panne. Un compte réellement expiré affiche une action « Reconnecter » bien visible.
Paramètres
Réservé aux administrateurs. Le réglage « Exiger une approbation par défaut » s'applique à tout nouveau compte connecté ; un tableau permet de le surcharger compte par compte. Une carte Entreprise en lecture seule rappelle le fuseau horaire et renvoie vers le Hub pour les réglages qui s'y gèrent.
La section Jetons d'API connecte un programme externe — l'agent de génération, un serveur MCP — sans passer par une session utilisateur. Créer un jeton demande un nom et des autorisations cochées une à une (lire ou écrire le plan, lire ou écrire les posts, lire ou écrire le suivi SEO/GEO) ; le secret sht_… n'est affiché qu'une seule fois, à copier immédiatement — il ne peut plus être récupéré ensuite, seulement révoqué pour en créer un autre. Un jeton révoqué reste visible dans la liste, grisé et daté, pour l'historique.
« Écrire le suivi SEO/GEO » est la portée de l'agent d'analyse : c'est elle qui permet d'enregistrer les mesures et résultats affichés sur Suivi.
Pour importer un plan éditorial ou de courts brouillons avec Claude, créez un jeton avec les droits de lecture et d'écriture du plan et des posts, puis reliez le serveur MCP Social Hub à Claude Code ou Claude Desktop. Un jeton distinct par entreprise conserve les contenus Mirage et POMP séparés. La connexion ChatGPT nécessite une configuration MCP compatible avec les droits d'écriture de votre espace de travail ; demandez à votre administrateur avant de l'utiliser.
Quelles que soient ses autorisations, un jeton ne peut jamais approuver, planifier ni publier — ces actions restent réservées à une validation humaine. Tout ce qu'un jeton crée ou modifie porte la pastille « IA » et suit donc le circuit d'approbation habituel.
Pour connecter Claude, ChatGPT ou un autre assistant, un même jeton se branche sur le serveur MCP fourni avec l'API — les lecteurs techniques trouveront le contrat complet dans docs/specs/socialhub-producer-api.md.