Publication sociale
Objectif
Publier le contenu de lancement selon un calendrier depuis un seul endroit, via l'API officielle de chaque plateforme, sans perdre un compte personnel au profit de la marque ni la marque au profit d'un compte personnel. L'outil utilisé ici est Postiz (open source, auto-hébergé) ; les étapes spécifiques à chaque plateforme s'appliquent à tout planificateur.
Prérequis
- Comptes de marque déjà créés : compte Instagram professionnel, profil Threads (découle d'Instagram), compte X, éventuellement TikTok.
- Un domaine sur Cloudflare (pour le nom d'hôte du tunnel), Docker Desktop, une machine qui reste allumée aux heures de publication (ou un petit VPS).
- La configuration
console-automationsi les consoles sont pilotées depuis un navigateur. - Un calendrier éditorial (voir « Calendrier » ci-dessous).
Réalité des plateformes (vérifiez à nouveau avant de commencer ; cela change)
| Plateforme | Voie officielle | Ce qui vous bloque |
|---|---|---|
| Application Meta + Connexion Facebook, compte professionnel IG lié à une Page Facebook | Les nouvelles applications Meta obtiennent la configuration Instagram « Connexion unifiée », qui nécessite un portfolio professionnel ; l'ancienne configuration réservée à la connexion Instagram n'est « pas disponible pour les applications plus récentes ». Les Stories sont publiées comme des médias simples : pas de sondage, de lien ou d'autocollant de compte à rebours via l'API. | |
| Threads | Application Meta avec le cas d'utilisation Threads | Jusqu'à l'examen de l'application, seuls les comptes disposant du rôle Testeur Threads peuvent se connecter ; le testeur accepte dans Threads › Paramètres › Compte › Autorisations du site Web › Invitations. |
| X | Compte développeur avec accès API payant (vérifiez la tarification actuelle de l'API X) | Nécessite un mode de paiement ; définissez un plafond de dépenses. |
| TikTok | API de publication de contenu | Les applications non auditées publient uniquement en privé jusqu'à ce que l'audit soit réussi (l'audit prend du temps). Les nouveaux comptes ont besoin d'une vérification téléphonique, et un numéro ne peut appartenir qu'à un seul compte. |
| YouTube | Téléchargement via l'API Data | Les projets API non vérifiés téléchargent en privé jusqu'à un audit de conformité. |
Planifiez en fonction des blocages : commencez les audits tôt, publiez TikTok/YouTube en natif (programmateurs TikTok Studio, YouTube Studio) jusqu'à ce que les audits soient réussis, ou abandonnez la plateforme.
Procédure
1. Auto-héberger Postiz (Docker)
- Partez du fichier officiel
postiz-docker-compose. Avantup:- Supprimez les services dont vous n'avez pas besoin et ceux qui lient des ports déjà utilisés sur la machine (le fichier amont lie l'interface utilisateur de Temporal à
127.0.0.1:8080). - Supprimez Elasticsearch : définissez
ENABLE_ES=falseetSKIP_ADD_CUSTOM_SEARCH_ATTRIBUTES=true(visibilité SQL). Postiz n'enregistre que deux attributs de mots-clés. Si Temporal a été démarré avec ES, sa base de données contient toujours les attributs de texte par défaut et Postiz échoue avec « cannot have more than 3 search attribute of type Text » : recréez le volume de la base de données Temporal avant de planifier quoi que ce soit. - Liez Postiz uniquement à
127.0.0.1; définissezMAIN_URL,FRONTEND_URL,NEXT_PUBLIC_BACKEND_URLsur le nom d'hôte HTTPS public. - Placez les secrets (
JWT_SECRET, jeton du tunnel, clés d'application) dans un fichier.envignoré par git, référencé comme${VAR}dans le fichier compose. - Ajoutez
mem_limit/cpuspar service. Postiz exécute le frontend, le backend et l'orchestrateur dans un seul conteneur ; nous avons observé environ 1,5 Go d'utilisation, donc une limite de 2 Go a évité d'atteindre le plafond. Sous Windows, limitez également la VM WSL dans%USERPROFILE%\.wslconfig(memory=4GB,processors=4,autoMemoryReclaim=gradual), puiswsl --shutdownet redémarrez Docker Desktop.
- Supprimez les services dont vous n'avez pas besoin et ceux qui lient des ports déjà utilisés sur la machine (le fichier amont lie l'interface utilisateur de Temporal à
- Créez le premier compte dans le navigateur après l'hydratation de la page (un formulaire non hydraté s'envoie en GET et met le mot de passe dans l'URL). Ensuite, définissez
DISABLE_REGISTRATION=trueet redémarrez. - Gardez
restart: alwayset activez « Démarrer Docker Desktop à l'ouverture de session » ; désactivez la mise en veille si la machine est le planificateur.
2. Nom d'hôte public (tunnel Cloudflare)
- Créez un tunnel géré à distance (API :
POST /accounts/{id}/cfd_tunnelavecconfig_src: cloudflare,PUT .../configurationsavec la règle d'entrée, unCNAMEproxyfié vers<tunnel-id>.cfargotunnel.com,GET .../token). - Exécutez
cloudflareden tant que service dans le même réseau compose et pointez l'entrée vershttp://postiz:5000, paslocalhost. - APPROBATION : un tunnel expose un service local à Internet ; demandez avant de le créer. Vous pouvez éventuellement ajouter Cloudflare Access devant (nécessite Zero Trust activé sur le compte ; gardez
/uploadsaccessible pour la récupération des médias par Meta).
3. Meta (Instagram + Threads)
- Créez une application Meta distincte pour la publication (n'ajoutez pas de cas d'utilisation à une application qui alimente déjà une fonctionnalité intégrée à l'application, comme le partage de Stories Instagram). Cas d'utilisation : « Gérer la messagerie et le contenu sur Instagram » et « Accéder à l'API Threads ».
- Instagram :
- Créez un portfolio professionnel lorsque le cas d'utilisation le demande (gratuit ; nom, nom du propriétaire, email professionnel). La vérification n'est nécessaire que pour les données d'autres personnes et l'examen de l'application.
- Créez une Page Facebook pour la marque (également requise pour les publicités Meta) et liez le compte professionnel Instagram à celle-ci : Paramètres de la Page › Comptes liés › Instagram › Connecter. La fenêtre contextuelle OAuth se connecte avec le compte Instagram que le navigateur détient : lisez le nom « Connectez-vous en tant que … » ; s'il s'agit d'un compte personnel, changez d'abord de compte (connecter un compte personnel le convertit en compte professionnel).
- Dans le cas d'utilisation Instagram, ajoutez exactement les autorisations demandées par le planificateur (Postiz :
instagram_basic,pages_show_list,pages_read_engagement,business_management,instagram_content_publish,instagram_manage_comments,instagram_manage_insights). Définissez l'URI de redirection de la connexion Facebook pour les entreprises sur le callback du planificateur (Postiz :/integrations/social/instagram). - ID + secret de l'application (Paramètres de l'application › Basique ; afficher le secret demande le mot de passe Facebook) →
FACEBOOK_APP_ID/SECRET.
- Threads : ajoutez
threads_basic,threads_content_publish,threads_manage_replies,threads_manage_insights; définissez la redirection (/integrations/social/threads) ainsi que les URL de callback de désinstallation/suppression ; prenez l'ID/secret de l'application Threads distinct ; ajoutez le profil de la marque en tant que Testeur Threads et acceptez l'invitation sur le téléphone. - Si l'URL de consentement Threads atterrit sur la page d'accueil de Threads au lieu de l'écran de consentement, la session du navigateur se trouve sur
threads.comtandis que le planificateur utilisethreads.net: ouvrez la même URL surthreads.com. - Si le navigateur agit actuellement en tant que la Page (après l'avoir modifiée), le consentement Facebook affiche d'abord « Vous devez passer à » ; continuez en tant que personne, pas en tant que Page.
- Lors du consentement Facebook, Meta par défaut à « toutes les Pages/Entreprises/Comptes Instagram actuels et futurs ». Sur un compte qui gère d'autres marques, choisissez « actuels uniquement » et sélectionnez les actifs de la marque.
4. X
- Inscription à la console développeur : nom du compte, une description précise du cas d'utilisation (propre compte uniquement, pas de revente de données, pas de likes/suivis/MD automatisés), acceptez les conditions.
- Achetez le plus petit pack de crédits ; désactivez la recharge automatique et définissez un plafond de cycle de facturation. Le total du tableau de bord peut accuser un retard par rapport à la page des crédits.
- Application › Paramètres d'authentification utilisateur : Lecture et écriture, « Application Web, Application automatisée ou Robot », callback = callback du planificateur (Postiz :
/integrations/social/x), site Web, conditions et URL de confidentialité. L'enregistrement affiche le secret du client OAuth 2.0 une fois. - Postiz utilise OAuth 1.0a : régénérez la Clé consommateur et copiez la clé + « Secret de la clé consommateur » (cette étiquette exacte) une fois →
X_API_KEY/X_API_SECRET. - Autorisation : cochez « Je fais confiance à cette application », confirmez que l'écran affiche le pseudo de la marque, puis Autoriser.
5. TikTok (optionnel)
Compte :
- Les nouveaux comptes nécessitent une vérification téléphonique et un numéro ne peut être utilisé que sur un seul compte ; une inscription sur le Web peut aboutir sur « continuer dans l'application ». Options : un deuxième numéro pour les comptes de marque, ou convertir un compte personnel existant (nouveau nom d'utilisateur et nom d'affichage, photo de profil, biographie ; archiver/rendre privées les anciennes vidéos personnelles).
- Dans certaines régions, l'option « Passer à un compte Professionnel » en un clic a disparu ; le menu propose « Devenir un compte Professionnel vérifié », ce qui demande des documents d'entreprise. Un compte personnel suffit : la programmation TikTok Studio, les analyses, les Spark Ads et l'API de publication de contenu fonctionnent tous avec. La bibliothèque musicale professionnelle est la principale perte.
- Le nom d'utilisateur peut changer une fois tous les 30 jours, le nom d'affichage une fois tous les 7 jours. Le profil Web (nom, biographie, photo, statistiques) peut accuser un retard d'un jour ou plus par rapport à l'application ; faites confiance à l'application.
- La région du compte est définie lors de l'inscription en fonction de la carte SIM/de l'adresse IP et ne peut pas être modifiée dans les paramètres.
Application développeur (pour le planificateur) :
- L'inscription sur developers.tiktok.com n'affiche que « Développeur Entreprise » (email + code + mot de passe), mais lors de la création de l'application, vous pouvez choisir la propriété Individuelle, donc aucune entreprise n'est nécessaire pour commencer.
- Créez l'application, puis un Bac à sable : informations de base (icône 1024², catégorie, description ≤120 caractères, URL des conditions/de confidentialité, URL de la plateforme Web), produits Login Kit (URI de redirection Web = callback du planificateur ; Postiz
/integrations/social/tiktok) et API de publication de contenu (activez Direct Post), et toutes les autorisations demandées par le planificateur. Postiz demandeuser.info.basic,user.info.profile,user.info.stats,video.list,video.upload,video.publish; une autorisation manquante affiche « Une erreur s'est produite … corrigez ce qui suit : scope » sur la page de consentement. Cliquez sur « Appliquer les modifications » après chaque modification. - Ajoutez le compte de la marque en tant qu'Utilisateur cible du bac à sable (la fenêtre contextuelle de connexion accepte un scan QR depuis l'application téléphonique). Utilisez la clé/secret du client du bac à sable dans le planificateur.
- Le push par fichier ne nécessite aucune vérification de domaine ; le pull par URL, oui.
- Avant l'audit : le mode
UPLOADenvoie la vidéo dans la boîte de réception TikTok du compte en tant que brouillon (publiez depuis le téléphone dans les 24 h ; max 5 en attente par 24 h).DIRECT_POSTfonctionne mais publie uniquement en privé. Soumettez l'application de production pour examen avec une vidéo de démonstration pour une publication directe publique. - L'étape de consentement peut demander « Vérifions qu'il s'agit bien de vous » avec un code email. Après de nombreuses modifications de compte en une seule journée (email, nom, biographie, nouvelles connexions), TikTok limite le nombre de ces codes (« Nombre maximum de tentatives atteint ») : arrêtez et réessayez le jour suivant au lieu de forcer.
6. Vérifier
- La liste des canaux du planificateur affiche chaque compte de marque (nom/pseudo), aucun n'est désactivé.
- Publiez un test à faible enjeu/privé par plateforme, ou un brouillon, avant le début du calendrier.
- Utilisation des ressources après un jour :
docker stats --no-stream.
Calendrier
- Ancrez le calendrier de publication sur des événements de lancement réels, pas sur des dates fixes : pré-lancement (pas d'appel à l'action pour le téléchargement, pas de prix), puis lancement de chaque boutique, puis les deux en ligne. Les dates d'examen des boutiques bougent ; réancrez le calendrier lorsqu'elles changent.
- Vérifiez chaque affirmation dans une publication par rapport à la version livrée, et chaque appel à l'action par rapport à ce qui est réellement en ligne sur chaque boutique.
- Les Stories avec des sondages, des liens ou des comptes à rebours ne peuvent pas être publiées via l'API ; publiez-les dans l'application.
Points de décision nécessitant une approbation humaine
Création de comptes de marque, portfolio professionnel, Page Facebook ; exposition d'un service local via un tunnel ; achat de crédits API et plafond de dépenses ; quels comptes personnels ne peuvent jamais être connectés ; conversion d'un compte personnel ; suppression de volumes ou de données Docker.
Pièges courants
- Connexion du compte Instagram personnel parce que la fenêtre contextuelle OAuth a réutilisé la session du navigateur.
- Supposer que l'ancienne configuration de connexion Instagram existe sur une nouvelle application Meta.
- Ajouter des cas d'utilisation de publication à l'application Meta qui est intégrée dans l'application mobile.
- Elasticsearch laissé dans la pile alors que la visibilité SQL de Temporal est suffisante.
- Le fichier compose amont qui s'empare d'un port déjà utilisé par un autre service local.
- Clé X enregistrée à partir de la mauvaise étiquette (« Secret de la clé consommateur », pas le titre de la boîte de dialogue).
- Calendrier rédigé comme si l'application était en ligne sur les deux boutiques dès le premier jour.
- Effectuer toutes les modifications de compte TikTok et la connexion développeur le même jour, ce qui déclenche la limite de taux du code de vérification.