SocialBlaze.ai

SocialBlazeDéveloppeurs
SOCIALBLAZE POUR VOTRE IA ET VOS APPLICATIONS

Vos réseaux.
Votre assistant IA.

Connectez un assistant à votre espace SocialBlaze. Consultez les publications et rapports enregistrés, préparez des brouillons et programmez selon les permissions choisies.

Votre offre SocialBlaze et vos permissions actuelles s’appliquent
COMMENCEZ PAR UNE REQUÊTE EN LECTURE SEULE
« Affiche mes canaux connectés et les 10 prochaines publications programmées. »
S
Travaillez avec vos données SocialBlaze enregistrées.

Gardez séparée la publication de chaque canal. Vérifiez son statut, sa légende, ses médias et sa date prévue.

Vous choisissez les comptes et les actions auxquels votre assistant peut accéder.
COMMENCEZ ICI / MCP

Connectez-vous en trois étapes.

MCP permet à un client IA compatible d’utiliser les outils SocialBlaze. Inutile d’écrire du GraphQL pour lire les publications, créer des brouillons ou programmer avec les outils nommés.

01

Connectez vos réseaux

Connectez-vous à SocialBlaze et associez les réseaux souhaités. Un assistant ne voit que les canaux inclus dans son accès.

Gérer vos canaux
02

Ajouter le serveur MCP

Dans les paramètres MCP distants personnalisés de votre client, saisissez l’URL du serveur ci-dessous. Choisissez OAuth si le client prend en charge l’autorisation SocialBlaze.

03

Autorisez, puis consultez

Connectez-vous, vérifiez les actions demandées et sélectionnez les canaux. Commencez par get_account ou list_channels. Vérifiez les permissions demandées par votre client. Si la publication est demandée, l’approbation exige un accord explicite pour publier. Pour un accès en lecture seule, le client doit demander uniquement ces portées ; les statistiques nécessitent leur permission distincte.

URL du serveur MCP distant
https://backend.socialblaze.ai/api/developer/mcp

OAuth dans un client compatible

Utilisez le parcours de connexion et de consentement dans le navigateur. Une connexion OAuth ne nécessite pas de créer ni de coller une clé API développeur. Gardez à l’esprit la sélection de canaux de la connexion existante.

Les fonctionnalités des clients et leur disponibilité selon les comptes varient. Une connexion MCP personnalisée ne signifie pas qu’un connecteur est référencé sur une place de marché. Pour une application serveur personnelle, utilisez Démarrage rapide de l’API; pour d’autres utilisateurs, utilisez Enregistrement d’une application OAuth.

Connecter Claude

  1. Ouvrez Personnaliser > Connecteurs, choisissez Ajouter, puis Ajouter un connecteur personnalisé. Nommez-le SocialBlaze, collez l’URL du serveur MCP ci-dessus et continuez.
  2. Vérifiez les paramètres d’authentification détectés. Choisissez Sign in now puis, sous OAuth client, Register automatically. SocialBlaze utilise l’enregistrement automatique plutôt que l’identité publiée de Claude. Connectez-vous à SocialBlaze, vérifiez les permissions demandées et sélectionnez les canaux, puis terminez avec Add. Cette connexion OAuth ne nécessite aucune clé API.
  3. Dans une nouvelle conversation, ouvrez +, puis Connecteurs, et activez SocialBlaze. Si Claude indique que le serveur est déjà connecté, utilisez l’entrée existante dans Vos connecteurs au lieu d’en créer une autre.

Les administrateurs de l’espace de travail devront peut-être ajouter le connecteur au préalable. Consultez le Guide du connecteur personnalisé Claude pour les écrans actuels et les exigences relatives au compte.

Un canal connecté manque dans mon assistant IA

Vérifiez que le canal est déverrouillé et accessible dans SocialBlaze. Reconnectez ensuite SocialBlaze depuis votre application IA, vérifiez les permissions et sélectionnez le canal manquant. Ajouter ou déverrouiller un canal ne l’ajoute pas à une connexion IA existante ; actualiser cette connexion conserve sa sélection. Gardez la connexion actuelle jusqu’à la réussite de la reconnexion. Inutile de reconnecter Instagram ou Facebook pour modifier seulement les canaux de votre connexion IA.

Si vous avez la permission de statistiques et voyez le canal, mais qu’aucun rapport enregistré n’est disponible, il s’agit d’un problème distinct de disponibilité des données. Modifier la sélection des canaux ne collecte ni n’actualise les statistiques.

Essayez des requêtes utiles et délimitées

« Affiche mes 10 prochaines publications programmées. Conserve chaque destination de canal comme publication distincte. »

« Enregistre ceci comme brouillon. Ne le publie pas. »

« Lis mon rapport de performances enregistré pour ces dates. Indique-moi ce qui est indisponible. »

Pour les « 10 dernières publications », gardez séparée chaque publication de canal retournée, même si les légendes ou liens sont identiques. Les résultats couvrent les canaux autorisés, pas forcément tout le compte. Un rapport absent ou un indicateur inconnu n’est pas zéro ; lire un rapport n’actualise pas le réseau. Les cartes d’aperçu sont en préversion. Dans ChatGPT, le premier affichage peut échouer : choisissez Réessayer pour les charger. Si une image ne se charge pas, ouvrez la publication enregistrée dans SocialBlaze. La disponibilité varie ailleurs. Les images hébergées à l’extérieur peuvent être indisponibles ; un aperçu ne répare pas leur source. Une publication programmée ou acceptée n’est pas une livraison confirmée : vérifiez le statut avant d’annoncer la réussite.

L’état des services dispose de sa propre page.

Consultez les données actuelles sur les services principaux, l’API et MCP ainsi que la publication sur les réseaux sur la Page d’état des services.

Suivez ce que nous développons.

Consultez les fonctionnalités livrées, les améliorations en cours et les orientations prévues sur la Page de la feuille de route.

01 / COMMENCER À DÉVELOPPER

Créez votre première requête API.

Connectez-vous à votre compte SocialBlaze, ouvrez la console développeur et créez une clé. Choisissez les canaux et les permissions nécessaires à votre intégration. Copiez le secret une seule fois et conservez-le sur votre serveur.

Une clé développeur est distincte de votre connexion au site. Ne l’exposez pas dans du JavaScript public, des URL ou le contrôle de version. La publication nécessite une autorisation distincte.

Lire vos canaux
curl -A 'SocialBlazeDeveloperClient/0.1 (+https://socialblaze.ai/api)' 'https://backend.socialblaze.ai/api/developer/graphql' \
  -H "Authorization: Bearer $SOCIALBLAZE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"query":"{ channels { id name service connected } }"}'

Les ID de canal retournés relèvent de votre accès sélectionné. Utilisez-les lors de la création des publications. La console propose un explorateur exécutable qui garde son identifiant en mémoire pour la durée de la session.

02 / DU CONTENU AUX CANAUX

Brouillon. Validation. Programmation. Publication.

Travaillez sur de vraies publications

Créez des brouillons, consultez versions et médias, modifiez les publications futures et annulez les programmations locales admissibles.

Utilisez votre vraie file

Publiez maintenant, choisissez une date, ajoutez à la file ou donnez la priorité. Déplacez une publication future en tête ou en fin de file.

Publier sur les canaux sélectionnés
mutation Publish($key: String!, $channels: [ID!]!, $text: String!) {
  createPost(requestKey: $key, channelIds: $channels, text: $text,
    mode: publishNow) {
    accepted published
    posts { id channelId status publishingState publishedUrl
      failure { code message automaticRetrySafe } }
  }
}

Accepté ne signifie pas livré. Lisez post.allowedActions pour des indications locales de modification ou d’annulation à portée limitée ; chaque mutation revérifie la version et l’état de publication actuels. Lisez chaque ID de publication retourné pour vérifier son état, son URL publiée et les détails d’échec. Un lot mixte invalide n’enregistre rien. Ne réessayez jamais une écriture incertaine avec une nouvelle clé de requête.

Conservez contentItemId depuis createPost ou createThread. Supprimer une destination peut préserver le brouillon source. Pour retirer tout le groupe local de contenus, lisez sa version actuelle et utilisez deleteContentItem; vérifiez ensuite l’absence du groupe et de ses publications.

Choisir une date ou une position dans la file

Utilisez mode: schedule avec une date future explicite dans dueAt pour une heure fixe. Utilisez addToQueue ou prioritize sans date pour utiliser la file native du canal. Les actions de file nécessitent la fonctionnalité de files intelligentes de votre offre et la permission de publication. Pour déplacer une publication future existante, utilisez movePostInQueue ou l’outil MCP nommé move_post_in_queue avec sa dernière version et une clé de requête stable.

Déplacer une publication peut modifier l’heure prévue des autres publications en file. Après un déplacement, relisez les publications programmées du canal et leurs versions. Le déplacement en fin de file d’une publication admissible créée par la file peut regrouper les publications dont la propriété est sûre dans les créneaux existants ; une publication à date fixe n’intègre pas cette file simplement parce qu’elle partage un horodatage. Une propriété mixte, un état de publication non sûr ou des créneaux fixes occupés peuvent empêcher le réordonnancement. L’acceptation retournée ne constitue pas une confirmation de diffusion.

Déplacer une publication au bas de sa file
mutation MoveInQueue($id: ID!, $version: String!, $key: String!) {
  movePostInQueue(id: $id, version: $version, requestKey: $key,
    position: "bottom") { id version deleted }
}
# Read the post's current version first. Use "top" for priority placement.
# Then read this channel's scheduled posts again to check actual due times.

Lire les publications diffusées sans regrouper les canaux

Lisez séparément chaque publication réseau en conservant son ID, son canal et l’URL retournée. L’ordre décroissant des ID d’enregistrement, utilisé par défaut, correspond au fil du site pour les canaux autorisés par l’identifiant. Une autorisation limitée à certains canaux n’expose pas tous les canaux de l’espace de travail. Pour un ordre chronologique fondé sur les preuves de diffusion enregistrées admissibles, demandez sort: [{field: publishedAt, direction: desc}] et, éventuellement, publishedAfter/publishedBefore. Lisez la valeur nullable publishedAt et publishedAtBasis. native_terminal_delivery_observed correspond à la première confirmation terminale locale, pas à un instant de publication initial chez le fournisseur vérifié indépendamment ; les dates de programmation, de création et de modification ne remplacent jamais une heure de publication inconnue. Les heures inconnues sont classées en dernier et ne permettent pas d’affirmer disposer des dix dernières publications chronologiques complètes. Réinitialisez les curseurs lorsque les filtres ou le tri changent.

Lire dix enregistrements diffusés dans l’ordre du site
query {
  posts(first: 10, status: "delivered") {
    nodes { id channelId text publishedUrl publishedAt publishedAtBasis }
    pageInfo { endCursor hasNextPage }
  }
}
# Default order matches the website feed's descending record IDs.
# For known recorded publication times, use sort:[{field:publishedAt,direction:desc}].

Filtrer et paginer les listes de publications

Omettez statuses pour laisser l’état sans restriction. Une valeur vide explicite de statuses: [] ne sélectionne aucune publication ; GraphQL statuses: null laisse également le filtre sans restriction. Si vous fournissez la forme singulière status avec statuses, leurs valeurs forment une seule sélection : un statut singulier continue donc de s’appliquer avec un tableau vide. Ces règles s’appliquent aussi au comptage correspondant. Avec dueAt dans l’ordre croissant, les publications sans date programmée apparaissent en premier ; dans l’ordre décroissant, elles apparaissent en dernier. publishedAt place les heures inconnues en dernier dans les deux sens. Utilisez dueAtPresence: present si vous souhaitez uniquement des dates programmées. Continuez avec la valeur retournée pageInfo.endCursor; recommencez sans after lorsque les filtres, le tri ou l’accès sélectionné changent, ou lorsqu’un curseur est refusé. Un curseur enregistré avant la mise à jour du classement par échéance ne peut pas être réutilisé pour un tri contenant dueAt dans l’ordre croissant.

Images, vidéos et documents

Joignez des images JPEG, PNG ou WebP dans les limites de chaque destination, ou une vidéo MP4/MOV. Les publications standard acceptent jusqu’à 10 images sur Facebook, Instagram, Tumblr et WordPress ; 20 sur LinkedIn et Threads ; 35 sur TikTok ; 4 sur Bluesky, Mastodon et Google Business Profile ; 1 sur Pinterest. YouTube exige une vidéo. Tumblr accepte une vidéo H.264 MP4/MOV de dix minutes maximum, dans la limite d’import de 50 Mo. Une publication partagée doit respecter toutes les destinations sélectionnées. Les groupes et fils gardent un total de huit pièces jointes par requête. Les images peuvent inclure un aperçu protégé distinct thumbnailUrl pour leur aperçu SocialBlaze ; cela ne remplace pas l’image envoyée au réseau. Les images acceptent aussi un champ protégé distinct animatedThumbnail: un aperçu GIF ou WebP public de 1 Mio maximum. Les aperçus statiques et animés utilisent chacun leur propre quota d’import et conservent des URL distinctes. L’image d’origine doit toujours respecter les règles de la destination. Les lectures de média exposent les deux URL ; isAnimated reste null jusqu’à ce que l’animation soit mesurée ; une URL d’aperçu ne prouve donc pas que l’image d’origine est animée. LinkedIn accepte aussi un PDF avec un titre et une thumbnailUrl HTTPS facultative pour l’aperçu SocialBlaze. Les images d’aperçu sont des fichiers JPEG, PNG ou WebP validés, limités à 1 Mo ; LinkedIn génère ses propres pages de document. Les images sont limitées à 8 Mo chacune, les vidéos à 50 Mo et les PDF à 20 Mo. La validation propre au canal reste applicable ; interrogez configuration et channel.capabilities.

Les ressources PDF enregistrées exposent des valeurs nullables pour numPages (nombre de pages mesuré) et filesize (octets de l’import validé). Pour les anciens médias ou lorsque le nombre de pages n’est pas disponible, la valeur reste null, jamais un zéro inventé ; la taille mesurée peut rester disponible même si le nombre de pages est inconnu. Ces valeurs décrivent le PDF importé et stocké, pas une copie rendue par le fournisseur. Les lire ne télécharge pas de nouveau le fichier et ne complète pas les anciens médias. L’outil MCP nommé get_post et list_posts incluent ces champs. Pour le client Node 0.1.14 immuable, utilisez une sélection GraphQL explicite si vous avez besoin de ces nouveaux champs.

Lire les métadonnées mesurées d’un PDF enregistré
query SavedDocument($postId: ID!) {
  post(id: $postId) {
    id version
    assets { type title mimeType numPages filesize }
  }
}

Programmer une publication avec un média sans légende

Pour une destination prise en charge, createPost et les outils nommés create_post acceptent text: "" avec des images valides ou une vidéo. Un texte vide sans média est refusé. Les titres obligatoires, les choix propres aux réseaux et les limites des médias restent applicables ; un exemple de brouillon uniquement textuel ne montre pas ce processus. Dans une connexion de publication interactive, la carte préparée peut aussi conserver une légende vide avec un média : vérifiez les comptes sélectionnés et le contenu avant de choisir Schedule ou Post.

Programmer une vidéo sans légende
mutation ScheduleVideo($key: String!, $channel: ID!, $url: String!,
    $when: String!) {
  createPost(requestKey: $key, channelIds: [$channel], text: "",
    video: {url: $url}, mode: schedule, dueAt: $when) {
    contentItemId accepted published posts { id channelId status dueAt version }
  }
}
# Use a direct public HTTPS MP4/MOV URL and an eligible video channel.
# Choose a future ISO 8601 time with an explicit UTC offset.
# Check that channel's required publishing options before submitting.

Modifier et demander une validation en une opération

Pour un brouillon simple à un seul canal, détenu par l’intégration et soumis à validation, utilisez updatePost avec approvalChange: request ou revert. L’outil MCP nommé edit_post prend en charge ces choix sans texte. Fournissez la dernière version, une clé de requête stable, drafts:write et posts:review. Le contenu et les pièces jointes changent de façon atomique avec la demande de validation. L’approbation seule ne publie rien : soumettez ensuite explicitement le brouillon approuvé sans le modifier. Toute modification du contenu approuvé exige une nouvelle validation.

Changer le mode d’une publication future

Utilisez updatePost(publishingMethod: automatic) ou reminder, ou l’opération nommée edit_post, pour convertir une publication future admissible tout en conservant son ID. Fournissez sa version actuelle et une clé de requête stable. Les permissions de brouillon et de publication sont nécessaires. Une publication automatique doit avoir une unique date future ; un rappel doit être en attente et non notifié. Les publications ayant des tentatives de publication, une validation requise ou appartenant à un fil ne sont pas convertibles. Un rappel exige un appareil mobile actif, connecté et habilité aux notifications. La conversion revérifie la destination, l’offre, les médias et l’accès actuel ; elle ne confirme pas la livraison au réseau.

Suivre l’origine dans l’éditeur

createDraft, createPost, createThread et chaque createContentItemVariants acceptent une valeur nullable pour source, une étiquette de suivi déclarée par l’appelant, de 250 caractères maximum. Les outils MCP nommés correspondants la prennent en charge à la création, y compris pour les publications à valider. Un fil partage la même étiquette entre ses entrées ; les variantes peuvent en utiliser des distinctes. Consultez-la via post.provenance.composerSource et composerSourceBasis; l’opération nommée get_post et Node getPost incluent la provenance. Les lectures de listes ordinaires l’incluent aussi ; les listes avec des indicateurs enregistrés omettent la provenance et les métadonnées d’aperçu animé pour respecter le même budget de requête. Lisez les publications individuellement pour obtenir les deux. L’omission ou la valeur null à la création laisse le libellé inconnu. Les modifications de brouillons et de publications futures l’acceptent aussi : l’omission conserve le libellé et null l’efface. Ce libellé ne modifie pas le transport de création enregistré, n’accorde aucune permission et ne prouve pas une rédaction par l’IA.

Déclarer l’assistance de l’IA

Les modifications des brouillons et publications futures acceptent une valeur nullable pour aiAssisted, y compris l’outil MCP nommé edit_post. False reste false, null efface la déclaration de l’appelant et l’omission la conserve. Cela ne change pas le mode de création et ne détecte pas l’auteur du texte. Utilisez la dernière version et la même clé de requête pour une nouvelle tentative inchangée.

Règles propres à chaque format

Lisez configuration.services.contentRules ou channel.capabilities.contentRules pour chaque format de publication automatique et type de pièce jointe. Les règles comprennent le comptage des légendes et titres, le nombre de pièces jointes, les types de fichier autorisés et leurs limites en octets, les choix de canal obligatoires et la prise en charge du premier commentaire. Ce catalogue décrit la validation SocialBlaze. Votre offre, vos permissions actuelles, les dimensions et les contrôles du fournisseur restent applicables ; il ne confirme pas la diffusion. Les Reels nécessitent une vidéo ; les Stories automatiques nécessitent une image ou une vidéo.

Métadonnées des canaux et mentions

Lisez le nombre total de membres de l’espace de travail et les limites natives de l’offre avec account.organizations. Les canaux incluent les ID de destination du fournisseur, les URL sûres de profil, les icônes des réseaux et les capacités de publication. Paginez les grandes sélections avec channels(first, afterId); MCP list_channels retourne les métadonnées de pagination.

Les médias des publications et de la bibliothèque retournent les valeurs stockées mimeType, width et height lorsqu’elles sont connues ; les valeurs inconnues restent null. Aucun téléchargement de média n’est nécessaire pour les lire. Les mentions structurées de Pages Facebook et de LinkedIn utilisent channelOptions.mentions avec des décalages de début et de longueur en points de code Unicode et un libellé correspondant. Consultez post.annotations pour les mentions validées et les liens littéraux. Les plages invalides ou qui se chevauchent sont refusées ; une légende modifiée doit fournir les positions mises à jour des mentions.

Provenance enregistrée et état du compte

Lisez post.provenance pour le transport de création enregistré et l’assistance IA facultative déclarée par l’appelant. Définissez aiAssisted explicitement lorsqu’elle est connue ; une valeur inconnue reste null. Une requête via un client IA ne prouve pas que l’IA a rédigé sa légende. La déclaration vidéo du fournisseur utilise son propre paramètre de canal.

account.preferences retourne vos codes enregistrés de calendrier et d’affichage de l’heure lorsqu’ils sont connus. Les lectures de canaux distinguent queuePaused, workspacePublishingPaused et credentialsExpired; mettre la publication en pause ne signifie pas en soi que l’identifiant du fournisseur a expiré.

Comptage du texte par réseau

Bluesky affiche des libellés d’URL compacts tout en conservant les destinations complètes dans des facettes de lien indexées en octets UTF-8. Les légendes enregistrées gardent les URL d’origine. Mastodon utilise les métadonnées configurées de son instance et les règles officielles de graphèmes, d’URL réservées et de mentions distantes ; les avertissements sont comptés littéralement. Consultez textLimitsBasis, textLimitsMetadataAvailable et charactersReservedPerUrl dans les capacités de publication pour distinguer les métadonnées de l’instance actuelle d’une valeur de repli prudente. Les lectures de métadonnées sont bornées et mises en cache.

Photos, vidéos et diffusion TikTok

Les légendes photo acceptent 4 000 unités UTF-16 et un titre facultatif de 90 unités maximum. Les légendes vidéo acceptent 2 200 unités. Définissez channelOptions.isAiGenerated explicitement pour la déclaration relative à la vidéo ; true est refusé pour les photos. Les modifications des métadonnées d’une vidéo future conservent une valeur false explicite. Consultez tiktokPostingChoices(channelId) ou MCP get_tiktok_posting_choices pour les véritables choix de confidentialité, restrictions d’interaction et durée vidéo du créateur sélectionné. Ces lectures peuvent utiliser un cache datant de 60 secondes maximum ; la publication les revalide. Choisissez explicitement l’audience et le consentement. Un ID de publication retourné confirme l’acceptation : les publications développeur restent en traitement jusqu’à ce qu’un rappel vérifié du fournisseur ou une lecture bornée de son état confirme la diffusion pour la même tentative initiale. Vérifier l’état ne soumet pas une autre publication. L’URL publique de la publication peut rester inconnue.

Mentions sur les images Instagram

Définissez images[].userTags avec une valeur publique pour handle sans @ et des coordonnées numériques x/y entre 0 et 1. Utilisez au maximum vingt identifiants uniques par image. Les images du fil et les éléments enfants des carrousels prennent en charge les mentions positionnées ; les éléments parents des carrousels et les Stories automatiques ne les acceptent pas. Retirez les mentions positionnées avant de programmer une Story automatique. Ces champs sont propres à Instagram ; les identifiants invalides ou dupliqués et les coordonnées invalides sont refusés. Les modèles de bibliothèque conservent les mentions d’image lors de leur réutilisation. Il ne s’agit pas d’étiquettes de contenu internes.

Rappels de publication manuelle

Définissez publishingMethod: reminder pour les canaux sélectionnés. Chacun reçoit son propre rappel. Activez d’abord les notifications dans l’application mobile SocialBlaze connectée. Le rappel conserve un brouillon préparé et ouvre son contenu à l’échéance ; il ne publie jamais automatiquement. La date explicite, le prochain créneau de la file manuelle et la priorité sont pris en charge. changeReminder le reprogramme, l’annule ou enregistre votre propre confirmation de publication. Pour les rappels Instagram, stickerFields peuvent contenir de la musique, des produits, du texte, des sujets et d’autres instructions de finition, jusqu’à 2 000 caractères chacun. L’écran de rappel connecté les affiche et permet de les copier. Ajoutez vous-même ces détails dans Instagram ; la publication automatique refuse les champs de finition remplis. Une notification envoyée ou une confirmation manuelle ne constitue pas une confirmation de diffusion sur le réseau. Une requête multicanal partage les médias importés et enregistre soit tout le groupe, soit rien. Supprimer son élément de contenu annule tous les rappels en attente. Pour une validation en équipe, définissez aussi requestApproval: true avec posts:review et un consentement explicite posts:publish. Le rappel attend la validation native, reste protégé contre la publication automatique et est annulé si la demande de validation est retirée ou si l’approbation devient obsolète.

Paramètres des vidéos YouTube

Choisissez privacy et madeForKids explicitement. Interrogez configuration.youtubeCategories pour les ID de catégorie du fournisseur et définissez categoryId si nécessaire. Les paramètres facultatifs embeddable, license (youtube ou creativeCommon), notifySubscribers et isAiGenerated sont transmis au téléversement natif YouTube. Les valeurs false explicites sont conservées. Vous pouvez modifier ces paramètres sur une publication future avec updatePost.channelOptions sans remplacer sa vidéo. La déclaration relative à l’IA concerne les contenus réalistes modifiés ou synthétiques ; respectez les exigences de déclaration de YouTube.

Couvertures vidéo

Pour une vidéo Instagram, TikTok ou Pinterest, définissez thumbnailOffset dans les options du canal, sur le décalage en millisecondes de l’image de couverture. Il doit se situer dans la durée de la vidéo importée. Pour une publication future sûre, updatePost peut modifier la couverture d’un média importé existant appartenant au tenant, ou remplacer la vidéo et choisir sa couverture dans une même requête. Les publications natives existantes peuvent utiliser cette modification lorsque leur média est un import pris en charge appartenant au tenant ; les URL vidéo externes arbitraires ne permettent pas de modifier uniquement la couverture. L’omission des médias et de la programmation conserve la ressource et l’horaire enregistrés. Réutilisez la même clé de requête après une réponse incertaine. Pinterest reçoit le décalage de l’image en secondes entières et accepte une vidéo MP4/MOV importée de 50 Mo maximum ; la vidéo est téléversée et traitée avant la création de l’Épingle. Les Reels Instagram acceptent également shareToFeed, y compris une valeur false explicite. Les autres canaux et les Stories Instagram refusent ces options.

Une modification future exige la version actuelle et une programmation à plus de deux minutes. Les publications en cours ou livrées ne sont pas modifiables. Modifier le partage d’un Reel dans le fil conserve sa vidéo et sa couverture si ces champs sont omis. Pour Pinterest, modifiez channelOptions.destinationUrl pour modifier son lien de destination ; une valeur null explicite efface le lien enregistré. Les lectures de publication retournent cette valeur dans destinationUrl et dans les options du canal. Ces modifications ne publient pas immédiatement.

Cartes de lien

Pour une publication standard Facebook, LinkedIn, Bluesky ou Threads sans autre pièce jointe, fournissez linkUrl dans les options du canal. LinkedIn et Bluesky acceptent également linkTitle et linkDescription. Facebook et Threads utilisent l’aperçu du site de destination. LinkedIn et Bluesky acceptent également linkThumbnailUrl avec l’URL du lien : un JPEG, PNG ou WebP public direct de 1 000 000 octets maximum, avec huit aperçus distincts par requête. Il est importé de manière protégée et téléversé chez le fournisseur ; un échec de téléversement arrête l’opération avant la publication. Enregistrez un nouvel aperçu dans le brouillon avant de le soumettre. Null efface un aperçu enregistré. Les liens HTTPS ne peuvent pas contenir d’identifiants. Aucune extraction de page n’a lieu côté serveur. Modifiez les futures cartes avec updatePost.channelOptions; une valeur null explicite pour linkUrl efface la carte ainsi que son titre et sa description. L’effacement et le remplacement des médias dans une même requête sont atomiques. Les options de brouillon fusionnent les champs explicitement modifiés ; une liste vide réinitialise tous les choix.

Lieux et sujets Threads

Les publications du fil/Reels Instagram et de Threads acceptent un identifiant numérique du fournisseur locationId et, éventuellement, locationName. Les éléments d’un carrousel Instagram ne reçoivent pas l’étiquette. Les Stories Instagram automatiques refusent cette option. Threads accepte aussi un topic jusqu’à 50 unités UTF-16, sans esperluette ni point. Les choix omis sont conservés lors des modifications futures ; null les efface.

Avertissements de contenu et déclaration d’IA

Mastodon accepte spoilerText; l’avertissement est compté littéralement et partage la limite de caractères configurée de l’instance avec la légende préparée. Les règles d’URL et de mentions distantes s’appliquent à la légende, pas à l’avertissement. Utilisez null pour effacer un avertissement enregistré. Les vidéos Instagram, YouTube et TikTok acceptent isAiGenerated. Instagram l’envoie uniquement sur le conteneur média parent. Les options non prises en charge par un réseau sont refusées avant tout enregistrement.

Premiers commentaires

Les premiers commentaires ont des limites UTF-16 distinctes : Facebook 5 000, Instagram 2 200, LinkedIn 1 250 et Threads 500. Consultez maxFirstCommentLength et firstCommentLengthUnit dans la capacité du canal. Un emoji peut compter pour deux unités. Les destinations non prises en charge et les Stories refusent les commentaires ; le texte n’est jamais tronqué silencieusement. Les permissions de l’offre existante restent applicables.

Limites des légendes

La plupart des légendes développeur sont comptées en unités UTF-16, où beaucoup d’emoji valent deux unités. Les URL HTTP(S) LinkedIn valent 24 unités ; les sauts de ligne logiques Instagram en valent deux. Facebook autorise 5 000 unités, Instagram 2 196 ; les titres Pinterest et YouTube en autorisent 100. Google Business conserve sa limite native de 1 500. Mastodon utilise les métadonnées bornées de l’instance avec une valeur de repli prudente configurée ; consultez les capacités pour connaître la base et la disponibilité actuelles. Bluesky compte les graphèmes après réduction des libellés de liens, tout en gardant les URL complètes dans les facettes. Les légendes enregistrées d’origine restent inchangées. Lisez les capacités du canal pour connaître sa limite et son unité de comptage.

Publications Google Business

Utilisez channelOptions.businessPost pour les actualités standard, les évènements et les offres. Les évènements et offres exigent un titre ainsi que des dates locales de début et de fin. Les heures facultatives, fournies par paire, utilisent HH:mm; omettre les deux couvre toute la journée locale. La programmation UTC reste distincte. Les actualités et évènements standard acceptent des boutons d’action ; les offres utilisent un coupon, un lien d’utilisation et des conditions. Les boutons d’appel utilisent le téléphone de l’établissement sans URL d’action. Les autres boutons exigent une URL HTTPS. Ces options nécessitent la publication automatique, conservent les limites existantes de résumé et d’image et ne confirment jamais la livraison au fournisseur.

Audio Instagram

Parcourez ou recherchez des musiques sous licence et des sons originaux via les requêtes du catalogue audio. Facebook Login est requis. Pour un Reel à une seule vidéo, fournissez un ID audio et, si nécessaire, les volumes dans les options du canal. Les aperçus expirent ; les erreurs de permission et de résultat partiel sont explicites. Les options enregistrées dans le brouillon sont conservées à la soumission.

Fils ordonnés

Bluesky, Mastodon et Threads acceptent 2 à 25 entrées. Les réponses attendent la livraison confirmée du parent. Reprogrammer ou annuler la racine garde ensemble ses réponses futures admissibles. Bluesky et Threads acceptent aussi linkUrl ; Bluesky accepte linkTitle, linkDescription et un linkThumbnailUrl protégé. Les cartes ne se combinent pas avec d’autres médias ; Threads utilise l’aperçu du site de destination. Mastodon refuse les cartes. Les fils autorisent huit pièces jointes par requête et au plus 100 publications de destination.

Programmer un fil
mutation {
  createThread(requestKey: "launch-thread-001", channelIds: ["YOUR_CHANNEL_ID"],
    mode: schedule, dueAt: "2026-11-01T14:00:00+00:00",
    entries: [{text: "First part"}, {text: "The follow-up"}]) {
    contentItemId accepted posts { id status thread { rootPostId parentPostId position total } }
  }
}

Modifier les pièces jointes d’un fil futur

Utilisez updateContentItem.threadEntries ou l’outil nommé edit_content_item pour remplacer ou effacer les pièces jointes et les options de lien de l’ensemble du fil existant. Fournissez chaque entrée dans l’ordre, sa légende, la version actuelle du groupe et une clé de requête stable. Les pièces jointes omises restent inchangées ; images: [] ou clearMedia: true les supprime. Les téléversements partagés sont importés une fois par entrée pour tous les canaux. Chaque destination doit être sans tentative, non publiée et prévue à plus de deux minutes. L’ensemble de la modification est enregistré atomiquement. Conservez le même nombre d’entrées et modifiez la programmation séparément ; le changement du nombre d’entrées et les modifications combinées des médias et de la programmation ne sont pas pris en charge.

Filtres des groupes de contenu

Filtrer contentItems par draftContent ou postContent, et trier selon createdAt et updatedAt. Par défaut, la recherche se limite à votre intégration. Une sélection explicite de discovery: workspace nécessite une autorisation distincte pour content:read ainsi que posts:read; les identifiants existants ne l’obtiennent pas automatiquement. L’opération lit aussi les groupes visibles selon vos permissions natives et les canaux sélectionnés. Les groupes contenant une destination inaccessible sont exclus, y compris leur texte et leurs médias partagés. Vérifiez managedByCurrentIntegration; les modifications de groupe entre intégrations restent bloquées, tandis que chaque publication garde ses contrôles d’autorisation distincts. Les curseurs sont liés à la recherche, aux filtres, à l’ordre et à l’accès aux canaux ; recommencez la pagination si ces paramètres changent. SDK0.1.14 fournit contentItems(options) et contentItem(id, options) comme fonctions de lecture.

Validation par l’équipe

Utilisez posts:review et requestApproval: true pour créer des publications dont la diffusion est suspendue. requestPostApproval envoie une publication existante non publiée en validation. withdrawPostApproval la renvoie vers les brouillons uniquement si vos permissions natives de validation le permettent. La permission de validation n’autorise jamais la publication automatique.

UNE CAMPAGNE / DES CANAUX DISTINCTS

Adaptez chaque destination.

Utilisez createContentItemVariants lorsque chaque canal nécessite une légende, un titre, une pièce jointe, une option native ou une programmation différente. Fournissez des ID de canal sélectionnés distincts dans posts. Le groupe accepte jusqu’à 25 destinations et huit pièces jointes au total, dans vos limites existantes de médias et de publications. Les entrées média identiques partagent un seul import protégé.

Créer des variantes indépendantes par canal
mutation Campaign($key: String!, $posts: [ContentVariantInput!]!) {
  createContentItemVariants(requestKey: $key, title: "Product launch", posts: $posts) {
    contentItemId accepted published
    posts { id channelId text title status isDraft publishingMethod
      manualReminder { state providerDeliveryConfirmed } dueAt version }
  }
}
# Each posts entry supplies its own channelId, text, optional media,
# channelOptions, mode and dueAt. Read real channel IDs first.

La validation et l’enregistrement sont atomiques : l’échec d’une variante n’enregistre aucune campagne partielle. Chaque entrée utilise la file par défaut, ou la programmation fournie. Utilisez mode: publishNow uniquement pour une soumission immédiate intentionnelle. Définissez requestApproval: true pour une validation en équipe en attente. L’acceptation ne confirme toujours pas la diffusion.

Lisez contentItem.hasChannelVariants et la version du groupe, puis lisez les ID individuels des publications pour obtenir les détails complets. Modifiez une publication individuellement pour conserver des légendes différentes. Une modification du texte ou des médias du groupe applique intentionnellement le même changement à toutes les destinations futures sûres. Les versions de groupe et les versions individuelles sont distinctes.

Convertir un brouillon existant

Lisez un brouillon sans canal, détenu par l’intégration et non soumis, ainsi que la version actuelle de son groupe. Appelez promoteContentItemDraft avec une valeur non vide pour posts pour transformer le même élément de contenu en publications distinctes par canal. Chaque entrée fournit son propre ID de canal, un texte explicite et, éventuellement, des médias, des options natives et une programmation. La légende et les pièces jointes sources restent enregistrées ; une entrée dont les médias sont omis n’en hérite pas.

Convertir un brouillon en variantes par canal
mutation Promote($id: ID!, $version: String!, $key: String!,
    $posts: [ContentVariantInput!]!) {
  promoteContentItemDraft(id: $id, version: $version, requestKey: $key,
    posts: $posts) {
    contentItemId accepted published
    posts { id channelId text status isDraft publishingMethod
      manualReminder { state providerDeliveryConfirmed } dueAt version }
  }
}
# Each entry needs its channelId and explicit text, plus any media/options.
# Read the existing draft's ID/version first; do not mix posts and channelIds.

Utilisez la forme par canal posts ou la forme partagée existante channelIds . Ne les combinez pas et ne mélangez pas les choix des entrées avec les options de programmation du niveau supérieur. L’échec d’une destination n’enregistre aucune conversion partielle. Réutilisez la même clé de requête lors d’une nouvelle tentative inchangée ; un brouillon soumis ne peut pas être converti à nouveau avec une nouvelle clé. Demander une validation nécessite drafts:write et posts:review; la soumission automatique exige posts:publish. Les règles natives de validation d’équipe restent applicables. Les entrées utilisent ContentVariantInput. Chaque entrée accepte une valeur nullable pour aiAssisted: false reste false ; null ou l’omission laisse l’assistance inconnue, et un texte d’entrée modifié n’hérite jamais de la déclaration du brouillon d’origine. Chaque destination peut rester un brouillon, utiliser la publication automatique ou un rappel manuel. Conservez contentItemId pour nettoyer l’ensemble du groupe.

Raccourcissement automatique des URL par processus

Le raccourcissement intervient avant l’enregistrement final, à l’aide des connecteurs configurés par l’auteur. Aucun paramètre n’est désactivé silencieusement. La prise en charge dépend du processus, de la pièce jointe et des options natives du canal ; les combinaisons non prises en charge retournent une erreur permettant d’agir.

Flux de travailPrise en charge disponible
Conversion automatiquePubliez immédiatement, programmez, ajoutez à la file ou priorisez avec les formats natifs de texte et de médias pris en charge. Les limites des canaux, les contraintes horaires et les permissions actuelles restent applicables.
Pièces jointesImages et carrousels dans les limites natives, vidéos uniques prises en charge et documents PDF LinkedIn. Les choix de confidentialité et de consentement YouTube/TikTok doivent être fournis lorsqu’ils sont requis ; ils ne sont jamais déduits.
Brouillons de destination enregistrésLes textes, images ou vidéos enregistrés restent sans déclenchement de publication, y compris lorsqu’une validation est enregistrée. Les groupes hétérogènes peuvent conserver différents médias enregistrés aux côtés d’entrées automatiques et manuelles. L’enregistrement ne nécessite pas de nouvelle connexion de publication.
Activer une destination existanteUtilisez le même ID avec le contenu et les médias actuellement enregistrés ainsi qu’un nouveau mode et une nouvelle date. Les options natives enregistrées prises en charge, les transformations approuvées et la validation explicite restent contrôlées indépendamment.
Sous-types Story et ReelLes Stories Facebook/Instagram conservent le profil natif à un seul média et sans premier commentaire. Les Reels exigent une vidéo. Les sous-types sont conservés ; les images ne sont pas converties en Reels.
VérifierLes règles natives actuelles de propriétaire, d’équipe, de canal et de destinataire s’appliquent. La validation client du gestionnaire exige le format natif de chaîne de destinataires ; la validation du planificateur de contenu d’une équipe provisionnée accepte aussi les canaux de validation client selon les règles natives actuelles. L’appelant ne choisit pas les destinataires. Les combinaisons de rôles anciennes non prises en charge restent refusées. Une nouvelle validation avec le même ID laisse la programmation inactive ; une validation enregistrée reste sans programmation. L’approbation seule ne publie rien.
Groupes hétérogènesCombinez des destinations enregistrées, automatiques et à rappel manuel à partir du catalogue natif de texte et de médias. Chaque entrée peut utiliser les options natives implémentées selon les validateurs de son type de publication, notamment les métadonnées, aperçus et mentions structurées pris en charge. L’audio Instagram automatique utilise des observations vérifiées du catalogue ; l’audio enregistré ou manuel reste inactif, sans consultation du catalogue ni OAuth de publication, jusqu’à une action automatique ou native ultérieure. Les choix obligatoires YouTube/TikTok restent explicites ; les options inconnues et combinaisons non prises en charge sont refusées.
File et prioritéLes entrées automatiques utilisent la réservation native de programmation. Les entrées manuelles conservent la cadence et les déplacements natifs des rappels, avec les exigences actuelles d’appareil connecté et de configuration.
Site natifLe partage, la simple reprogrammation et le clonage indépendant d’une publication à l’état terminal utilisent les permissions natives et les paramètres de l’auteur initial. L’historique d’origine est conservé ; la publication automatique exige toujours une validation et une connexion actuelles.
Choix des canaux et métadonnéesLes métadonnées natives prises en charge, les informations d’aperçu, d’audio et de couverture ainsi que les mentions structurées Facebook/LinkedIn suivent leur processus validé. Les URL de métadonnées restent littérales ; les anciens champs de mention opaques ne sont pas traités comme des options structurées.
Sélections UTM existantesLes sélections UTM enregistrées appartenant au créateur conservent l’ordre natif, y compris la conversion d’usine lorsque le raccourcissement est désactivé. Aucun nouveau sélecteur UTM public n’est fourni.

Le profil textuel de base couvre Facebook, Bluesky, LinkedIn, Threads, Tumblr, Google Business Profile, Mastodon et WordPress. Les profils d’images soumis aux limites natives incluent aussi Instagram et Pinterest ; les profils vidéo comprennent YouTube/TikTok selon leur prise en charge native et les autres services validés. La conversion programmée uniforme et les transitions stockées ou natives existantes disposent de catalogues d’options validées distincts ; les règles des groupes mixtes ci-dessus n’autorisent pas des options arbitraires. La confidentialité et le consentement explicites enregistrés ainsi que la validation native actuelle restent requis. Enregistrer ne déclenche jamais le travail, et valider n’autorise jamais à publier. Consultez allowedActions et les versions actuelles ; retirez la demande de validation en attente avant la suppression lorsque cette action est proposée. L’acceptation de la préparation et le raccourcissement ne confirment pas la diffusion sur le réseau.

Enregistrer une destination avant de la programmer

Définissez saveToDraft: true sur une entrée pour enregistrer un brouillon associé à un canal. Il nécessite drafts:write, sans permission de publication ni nouvelle connexion de publication. L’enregistrement seul ne programme aucune publication ni aucun rappel téléphonique. Le mode et la date d’une entrée enregistrée ne la programment pas et ne deviennent pas des instructions réutilisables : choisissez de nouveaux paramètres lors d’une programmation explicite ultérieure. Null n’est pas accepté pour saveToDraft.

Enregistrer un brouillon pour un canal
mutation SaveForChannel($key: String!, $channel: ID!, $text: String!) {
  createContentItemVariants(requestKey: $key, posts: [{
    channelId: $channel, text: $text, saveToDraft: true
  }]) {
    contentItemId accepted published
    posts { id channelId isDraft publishingMethod version }
  }
}

Lisez l’ID de la destination et sa dernière version, puis utilisez armDestinationDraft ou l’outil nommé arm_destination_draft pour programmer cette même publication. L’outil nommé désigne l’ID par postId. Choisissez publishNow, schedule avec dueAt, addToQueue ou prioritize. Sans mode, une date fournie sélectionne la programmation ; sinon la file est utilisée. La publication automatique revérifie les permissions actuelles, l’accès au canal, les médias, les exigences de validation et l’état de connexion.

Programmer la destination enregistrée
mutation ScheduleSavedDraft($id: ID!, $version: String!, $key: String!,
    $when: String!) {
  armDestinationDraft(id: $id, version: $version, requestKey: $key,
    mode: schedule, dueAt: $when) {
    id version deleted
  }
}
# Use the destination post ID and its latest version, not the group ID.
# Then read the post to check publishing state; this is not a delivery receipt.

Renvoyer une destination future vers les brouillons

Pour une destination automatique gérée par le propriétaire dont la publication n’a pas commencé, updatePost(saveToDraft: true) peut conserver le même ID de destination, le groupe source et les pièces jointes tout en désactivant son unique programmation future. Fournissez la version actuelle et une clé de requête stable, avec les permissions de publication et de brouillon. La programmation doit être à plus de deux minutes. Renvoyez d’abord la destination vers les brouillons, puis modifiez séparément son brouillon actuel ; les états de validation, rappel, fil et tentative de publication conservent leurs processus dédiés. Réactivez explicitement le brouillon lorsque vous êtes prêt.

Faire valider un brouillon enregistré

Sur un canal soumis à approbation, combinez saveToDraft: true avec requestApproval: true. Les permissions de brouillon et de validation sont nécessaires. Le brouillon reste sans programmation après approbation : programmez ensuite explicitement sa version approuvée inchangée. Toute modification exige une nouvelle approbation. En revanche, demander une validation pendant la programmation explicite d’une publication automatique suspend cette programmation jusqu’à l’approbation.

Garder la publication manuelle explicite

Définissez, pour une entrée, la valeur de publishingMethod: reminder lorsqu’une personne terminera la publication sur son téléphone. Un brouillon enregistré conserve ce choix sans nécessiter d’appareil. Lors de sa programmation ultérieure, l’omission de la méthode de publication conserve le choix enregistré ; une méthode explicite sélectionne à nouveau cette méthode. Null n’est pas accepté. Programmer un rappel nécessite les permissions de brouillon et de publication, un appareil de notification actif et connecté ainsi que toute validation requise. publishNow ajoute un rappel à échéance immédiate ; cela ne publie pas automatiquement sur le réseau.

Lisez isDraft, publishingMethod et manualReminder.state ensemble. Une entrée enregistrée en attente de validation reste un brouillon, et un choix de rappel enregistré n’a pas encore de rappel actif. providerDeliveryConfirmed: false ne prouve pas la diffusion sur le réseau. Les groupes mixtes peuvent contenir des entrées enregistrées, programmées et de rappel ; leurs actions par publication restent distinctes. Utilisez edit_post avec draft: true pour modifier une destination enregistrée sûre, et la forme canonique deleteContentItem ou delete_content_item pour nettoyer tout le groupe. Retirez d’abord la demande de validation en attente. Une publication prise en charge ou incertaine nécessite une réconciliation plutôt qu’une suppression aveugle.

Outils nommés pour les clients IA

get_publishing_configuration et get_channel exposent les véritables exigences relatives aux médias et au consentement. Utilisez list_content_items, get_content_item, create_content_item_draft, promote_content_item_draft et create_content_item_variants sans écrire de GraphQL. Les outils de modification, suppression et association conservent les mêmes contrôles de portée, de version et de nouvelle tentative.

03 / VOTRE BIBLIOTHÈQUE EXISTANTE

Réutilisez vos contenus enregistrés.

Parcourez, créez et modifiez les modèles de votre véritable bibliothèque SocialBlaze. Réutilisez les modèles texte, image, vidéo et PDF dans des brouillons. Toute modification exige la version actuelle. Supprimer un modèle conserve les fichiers importés partagés.

Parcourir les modèles de la bibliothèque
query {
  libraryItems(first: 20) {
    nodes { id title text description emoji visibility version assets { type url title altText } }
    pageInfo { endCursor hasNextPage }
  }
}

Utilisez createDraftFromLibraryItem avec son ID, sa version, sa clé de requête et les canaux sélectionnés. L’accès à la bibliothèque suit votre offre et vos permissions d’équipe actuelles.

Les modèles acceptent une description facultative (jusqu’à 1 000 caractères), un emoji (jusqu’à 32 caractères) et une visibilité : internal pour votre espace de travail ou private pour leur créateur. Les modèles existants et ceux dont la visibilité est omise restent internes. Seul le créateur peut rendre privé un modèle partagé ; les modèles privés sont masqués aux autres membres dans l’API, la bibliothèque native et les lectures mobiles. Filtrez libraryItems(visibility: private) ou internal. Il n’existe aucun catalogue public de modèles sélectionnés. Null efface la description ou l’emoji ; les champs omis sont conservés. Les modifications natives maintiennent ces choix.

04 / DES DONNÉES POUR VOS OUTILS

Construisez le rapport dont vous avez besoin.

Les collectes explicites auprès de TikTok n’énumèrent que les vidéos publiques. enumerationComplete décrit ce parcours de la source ; complete reste false, car les photos et vidéos privées sont exclues. Consultez basis et note dans les rapports, références agrégées et couvertures de classement avant d’interpréter les totaux ou les résultats vides.

Les rapports ordinaires de canal, les indicateurs par publication, les classements et les agrégats utilisent uniquement les données existantes du site SocialBlaze et les instantanés enregistrés. Une lecture ne contacte aucun fournisseur, ne lance aucune collecte et n’actualise pas les données absentes. Les indicateurs disponibles varient selon le réseau ; les valeurs indisponibles restent inconnues, ne sont jamais remplacées par zéro.

Lire un instantané de performances existant
query Report($channel: ID!, $start: String!, $end: String!, $report: ID,
    $first: Int = 20, $after: String) {
  channelReport(channelId: $channel, startDate: $start,
    endDate: $end, reportId: $report) {
    id state complete basis note enumerationComplete metricsUpdatedAt expiresAt errorCode
    metrics { key value status basis }
    posts(first: $first, after: $after) { nodes { externalId text publishedAt publicationDate publicationTimeBasis
      metrics { key value status } }
      pageInfo { endCursor hasNextPage } }
  }
}

Lisez readMode, storedAnalytics ainsi que les plages de dates enregistrées disponibles lorsqu’aucun rapport normalisé n’est disponible. Les sections natives conservent leurs libellés et bases de mesure d’origine. L’horodatage de mise à jour d’une ligne ne prouve pas que tous ses indicateurs ont été recueillis à cet instant. Les données manquantes restent indisponibles ; l’expiration du seul jeton de publication n’empêche pas une lecture historique autorisée. Les plages de dates restent limitées à l’historique disponible du compte. Examinez complete, puis, pour chaque indicateur, status et basis avant d’interpréter les totaux. Chaque rapport de canal et référence agrégée identifie son service réseau. La valeur agrégée metricsUpdatedAt correspond au dernier horodatage contributif connu ; oldestMetricsUpdatedAt indique l’instant contributif le plus ancien et reste null lorsque la fraîcheur d’une source prête est inconnue.

Les statistiques vidéo LinkedIn facultatives incluent, pour chaque publication, les valeurs uniques viewers et totalTimeWatched en minutes. Les spectateurs uniques ne sont jamais additionnés entre publications. Pour Instagram, follows est un nombre attribué aux publications du fil et Stories admissibles, pas aux Reels ni à la croissance nette des abonnés. Ces valeurs dépendent des accès et de la disponibilité chez le fournisseur ; les valeurs indisponibles restent null. Aucune unité de durée de visionnage Instagram n’est déduite.

Le parcours des rapports LinkedIn est borné. Si la limite de pages est atteinte ou si la lecture ne peut avancer sans risque, les lignes observées utilisables peuvent être retournées avec une couverture partielle. Leurs totaux décrivent uniquement ce sous-ensemble, jamais toutes les publications du compte. Lisez la note du rapport et le statut d’énumération avant de comparer les canaux.

Les lignes de performance peuvent exposer publicationDate et publicationTimeBasis séparément de publishedAt. Un jour calendaire natif historique dont le fuseau est inconnu conserve publishedAt: null; n’inventez pas une heure de publication à minuit UTC. Gardez séparées les publications des différents réseaux, même si elles renvoient vers le même article.

Lire les sections statistiques enregistrées du site

Utilisez storedChannelAnalytics ou l’outil MCP nommé get_stored_channel_analytics avec analytics:read, un canal autorisé et des dates de début et de fin exactes. Chaque section précise sa source, sa disponibilité et sa base temporelle. availableRanges énumère les plages enregistrées ; aucune ne remplace les dates demandées. Une section brute indisponible ou trop volumineuse ne prouve pas l’absence de publications ; vérifiez son code d’erreur et la liste paginée channelReport comme projection.

Pour TikTok, Pinterest, Tumblr et WordPress, le champ report peut exposer une collection explicite déjà enregistrée, libellée saved_developer_report. Ce sont des données de rapport enregistrées, pas la preuve d’une collecte sur le site natif. Sans rapport enregistré correspondant, le résultat est indisponible ; la lecture n’en collecte pas. Un rapport peut être prêt alors que complete ou enumerationComplete vaut false. Préservez la couverture partielle et les indicateurs indisponibles dans vos rapports.

Lire les statistiques natives enregistrées et la provenance des sections
query StoredAnalytics($channel: ID!, $start: String!, $end: String!) {
  storedChannelAnalytics(channelId: $channel, startDate: $start, endDate: $end) {
    channelId service state complete basis note errorCode
    metricsUpdatedAt recordUpdatedAt freshness
    availableRanges { startDate endDate recordUpdatedAt }
    sections { name available source data rangeBasis startDate endDate
      metricsUpdatedAt recordUpdatedAt freshness errorCode note }
  }
}
# This reads saved data only. Use actual channel IDs and the requested dates.
# availableRanges does not silently replace a missing requested date range.

Pour paginer un rapport normalisé, conservez ensemble l’ID de rapport retourné, le canal et les dates, puis transmettez posts.pageInfo.endCursor comme valeur suivante de after. Recommencez sans curseur lorsque vous changez d’instantané. Une mesure enregistrée pour une publication et un rapport de canal incomplet peuvent avoir des couvertures différentes : indiquez le statut et la base propres à chaque résultat.

Collecter de nouvelles données uniquement sur demande

Utilisez la valeur explicite refreshChannelReport comme mutation ou l’outil MCP nommé refresh_channel_report uniquement après une demande de l’utilisateur visant à recueillir de nouvelles données du fournisseur. La collecte peut nécessiter une permission actuelle d’accès aux statistiques du fournisseur et consomme le budget d’actualisation distinct. Elle peut retourner un état en attente ; interrogez le même ID de rapport retourné et les mêmes dates avec channelReport. Les lectures ordinaires ne connectent jamais un utilisateur, ne reconnectent aucun compte et ne lancent jamais cette opération automatiquement.

Collecter explicitement un nouveau rapport fournisseur
mutation CollectNewReport($channel: ID!, $start: String!, $end: String!) {
  refreshChannelReport(channelId: $channel, startDate: $start, endDate: $end) {
    id channelId state complete errorCode
  }
}
# Only run after an explicit request to collect new provider data.
# If queued, poll channelReport using the returned report ID and dates.

Inclure les indicateurs enregistrés dans la lecture des publications

Définissez includeMetrics: true sur post ou posts, ou l’outil MCP nommé get_post et list_posts. Fournissez metricSnapshots avec un ID de canal, un ID de rapport et des dates de début et de fin correspondantes pour chaque canal. Les deux valeurs posts:read et analytics:read sont obligatoires. Cette opération lit uniquement les instantanés existants ; elle ne contacte jamais un réseau et ne lance aucune collecte de rapport. Consultez metricsState, metricsErrorCode, le statut et la base de chaque indicateur, ainsi que metricsUpdatedAt. Les indicateurs manquants ou indisponibles restent null. L’historique stocké peut être périmé : conservez les indicateurs de fraîcheur et d’ancienneté du rapport associé au lieu de le traiter comme une collecte récente. Omettez l’option pour les lectures ordinaires de publications ; les limites habituelles de sélection et de complexité s’appliquent.

Avec l’outil MCP nommé list_posts avec includeMetrics: true, la sélection complète par défaut et un instantané fixé, l’omission de first retourne actuellement au maximum 18 lignes avec la limite standard de complexité de 1 000 points. Un nombre supérieur d’instantanés peut réduire ce maximum par défaut. Une valeur explicite de first n’est jamais réduite silencieusement : 19 lignes complètes avec un instantané dépassent cette limite. Les listes ordinaires de publications restent à 20 par défaut ; sélectionner moins de champs peut permettre des pages plus grandes. Suivez pageInfo.endCursor au lieu de supposer qu’une réponse contient toutes les publications. Cet ajustement automatique de la page relève de l’outil nommé ; une requête GraphQL explicite doit choisir une taille de page adaptée à sa sélection.

Lire les indicateurs d’un instantané existant
query SavedPostMetrics($id: ID!, $pins: [PostMetricSnapshotInput!]!) {
  post(id: $id, includeMetrics: true, metricSnapshots: $pins) {
    id metricsState metricsErrorCode metricsUpdatedAt
    metrics { name value unit status basis comparisonBasis }
  }
}
# pins: [{channelId: YOUR_CHANNEL_ID, reportId: EXISTING_REPORT_ID,
#         startDate: MATCHING_START_DATE, endDate: MATCHING_END_DATE}]
# Supply these as JSON variables, using the snapshot's actual IDs and dates.

Compter les enregistrements locaux de publication

publishingActivity compte les enregistrements de publications automatiques conservés selon leur date de création initiale dans le fuseau horaire choisi. Chaque destination et chaque entrée de fil compte séparément. Les totaux incluent les enregistrements supprimés logiquement, excluent les brouillons et les rappels manuels, et ne peuvent pas récupérer les enregistrements purgés ou l’historique propre au fournisseur. Les brouillons natifs peuvent conserver une date de création plus ancienne après leur soumission. Il ne s’agit pas des dates historiques exactes de soumission ou de publication ; currentlyDelivered décrit l’état actuel de ces enregistrements. Gardez visibles la base et la note retournées.

recordedCommitEvents compte séparément les tentatives natives conservées selon la date d’accusé de réception enregistrée du fournisseur, indépendamment des dates de création initiales. Une republication intentionnelle compte à nouveau. L’acceptation peut précéder le traitement ou la diffusion ; il ne s’agit donc pas de totaux de diffusion. Gardez commitEventBasis, commitEventCountUnit, commitEventNote et la valeur false de commitEventHistoryComplete visible.

Compter les enregistrements locaux par mois calendaire
query {
  publishingActivity(startDate: "2026-09-01", endDate: "2026-09-30",
    timezone: "America/New_York") {
    count currentlyDelivered complete basis countUnit note
    recordedCommitEvents commitEventBasis commitEventCountUnit
    commitEventHistoryComplete commitEventNote
    channels { channelId service coverage count }
  }
}

Compter les heures de publication connues et enregistrées

publishedActivity compte les enregistrements de destination conservés actuellement diffusés dont l’heure de diffusion native enregistrée admissible appartient à la plage calendaire et au fuseau horaire demandés. Il applique les mêmes règles d’horodatage que la valeur nullable post.publishedAt; les dates de création, de modification, de programmation ou d’accusé de réception ne les remplacent jamais. Chaque enregistrement de destination ou de fil compte séparément, y compris les enregistrements supprimés logiquement dans les agrégats. Conservez rangeStartUtc, rangeEndUtcExclusive, basis, countUnit et complete: false. unknownTimeExcluded compte tous les enregistrements diffusés conservés et sélectionnés dont l’heure est inconnue, et non des publications inconnues attribuées à ce mois. L’historique purgé, écrasé ou disponible uniquement chez le fournisseur reste hors de ce sous-ensemble à heure connue.

Compter les heures de publication connues et enregistrées
query {
  publishedActivity(startDate: "2026-09-01", endDate: "2026-09-30",
    timezone: "America/New_York") {
    count unknownTimeExcluded complete includesSoftDeleted
    rangeStartUtc rangeEndUtcExclusive basis countUnit unknownTimeExcludedBasis note
    channels { channelId service count unknownTimeExcluded coverage }
  }
}

Utilisez les outils MCP nommés get_published_activity, Node publishedActivity ou le CLI tools call get_published_activity. Cette opération lit les enregistrements locaux sans collecte auprès du fournisseur. La cohorte de création d’origine publishingActivity et le mécanisme fondé sur un accusé de réception recordedCommitEvents conservent leurs significations distinctes.

Classer les performances observées

rankedPosts nécessite un indicateur explicite et l’une des deux valeurs lifetime ou period_total comme base. Les valeurs inconnues et les bases incompatibles sont exclues ; zéro reste un score réel. La couverture par réseau distingue les sources complètes, partielles, en attente et indisponibles. Réutilisez les ID de rapport pour stabiliser les comparaisons. Chaque résultat indique l’unité de son indicateur ; les taux d’engagement sont exprimés en pourcentage et conservent leur base de comparaison. Des formules de taux connues différentes ne sont pas classées ensemble, et les taux ne sont jamais additionnés. La portée unique LinkedIn n’est pas additionnée entre publications. Les réactions J’aime de Facebook restent distinctes du total des réactions lorsque le fournisseur les retourne ; les valeurs manquantes restent null. Les performances ne prouvent pas que le texte a causé le résultat.

Classer les publications retournées selon un indicateur choisi
query {
  rankedPosts(startDate: "2026-09-01", endDate: "2026-09-30",
    metric: "reactions", metricBasis: "lifetime", first: 10) {
    state complete metric metricBasis note
    posts { channelId externalId text publishedAt publicationDate publicationTimeBasis value }
    channels { channelId service reportId coverage basis note enumerationComplete missingMetricPosts }
  }
}

Les outils MCP nommés sont get_publishing_activity et rank_posts. Les méthodes du SDK sont publishingActivity et rankPosts.

05 / DÉVELOPPER POUR D’AUTRES UTILISATEURS

Se connecter avec OAuth.

Enregistrez un client public PKCE ou une application serveur confidentielle dans la console. Déclarez les URL de rappel exactes, choisissez les portées et indiquez l’URL de confidentialité de votre application. Chaque client choisit ses canaux et peut déconnecter votre application.

  1. Générez un vérificateur aléatoire et son challenge S256. Conservez une valeur state aléatoire pour vérifier le retour.
  2. Ouvrez /api/developer/oauth/authorize avec l’ID client, l’URI de redirection enregistrée, les portées, l’état, le challenge, code_challenge_method=S256 et la ressource demandée.
  3. Échangez le code retourné à l’adresse /api/developer/oauth/token, avec le vérificateur et la ressource d’origine. Les clients confidentiels s’authentifient aussi avec leur secret.
  4. Stockez les identifiants de manière sûre. Les jetons d’accès durent une heure ; les jetons d’actualisation sont renouvelés par rotation et expirent après 30 jours. Ne réutilisez jamais un jeton d’actualisation remplacé.

Les ressources sont https://backend.socialblaze.ai/api/developer ou ses points de terminaison /graphql ou /mcp . Les jetons existants des connecteurs IA utilisent une audience distincte.

Métadonnées de découverte OAuth
06 / VOTRE ASSISTANT IA

Votre compte à portée de vos outils.

Utilisez une connexion MCP distante personnalisée dans un assistant ou client développeur compatible. Le point de terminaison est https://backend.socialblaze.ai/api/developer/mcp. Utilisez la connexion OAuth si votre client la prend en charge ; aucune clé développeur n’est nécessaire dans ce cas. N’utilisez une clé développeur à portée limitée que dans les clients compatibles avec une authentification Bearer sécurisée.

Configuration MCP distante personnalisée
{
  "mcpServers": {
    "socialblaze": {
      "url": "https://backend.socialblaze.ai/api/developer/mcp",
      "headers": {"Authorization": "Bearer YOUR_DEVELOPER_KEY"}
    }
  }
}

La syntaxe de configuration varie selon le client. Les outils sont filtrés par les portées accordées. Ils couvrent la lecture du compte et des canaux, les brouillons, la publication, les fils, la validation, les modèles et les rapports. Les ressources de schéma et outils GraphQL génériques utilisent les mêmes permissions et quotas. Leur présence ici ne signifie pas qu’un connecteur figure sur une place de marché.

Ces exemples utilisent le point de terminaison MCP développeur et son catalogue actuel d’outils à portée limitée. Une connexion de publication interactive SocialBlaze peut proposer un autre ensemble d’outils et de comptes. Si un outil nommé est absent, vérifiez la connexion et les permissions utilisées ; une connexion de publication n’implique pas l’accès aux rapports.

Formats génériques de requête et de résultat MCP

Avec un client MCP initialisé, transmettez l’objet indiqué {name, arguments} à tools/call comme paramètres. execute_query nécessite une valeur fidèle à la réalité pour summary (500 caractères maximum) et query; execute_mutation nécessite summary et mutation. Les variables et le nom d’opération sont facultatifs. La requête du compte exige accounts:read; créer un brouillon nécessite drafts:write.

Lire avec execute_query
{
  "name": "execute_query",
  "arguments": {
    "summary": "Read the connected account identifier.",
    "query": "query ConnectedAccount { account { id } }",
    "operationName": "ConnectedAccount"
  }
}
Enregistrer un brouillon avec execute_mutation
{
  "name": "execute_mutation",
  "arguments": {
    "summary": "Save an unpublished text draft.",
    "mutation": "mutation SaveDraft($key: String!) { createDraft(requestKey: $key, text: \"Draft for review\") { postId version published } }",
    "variables": {
      "key": "my-draft-001"
    },
    "operationName": "SaveDraft"
  }
}

Les résultats d’appel MCP peuvent définir isError et exposent structuredContent.error ou les détails de validation ; une réponse GraphQL peut aussi contenir errors ou un appel typé MutationError. Le JSON-RPC brut contient le résultat de l’outil sous result et peut comporter, au niveau supérieur, error. Examinez aussi le contenu retourné : HTTP 200 ne suffit pas à indiquer une réussite.

Modifier un brouillon existant, puis le lire

Lisez d’abord l’ID et la version actuels du brouillon. Remplacez les valeurs d’exemple par les valeurs réelles retournées par get_post ; ne soumettez pas les valeurs d’exemple inchangées. La modification d’un brouillon détenu utilise edit_post avec draft: true, un texte explicite, une clé de requête stable et drafts:write. Omettez saveToDraft, mode et dueAt pour cette modification du brouillon. L’opération retourne postId et version. L’éditeur des publications programmées dans le futur retourne plutôt id, version et deleted. Sélectionnez uniquement les champs de cette opération ; récupérez le texte et les médias séparément avec get_post avec posts:read.

Modifier la légende d’un brouillon détenu
{
  "name": "edit_post",
  "arguments": {
    "postId": "YOUR_DRAFT_ID",
    "version": "CURRENT_64_CHARACTER_VERSION",
    "requestKey": "my-draft-edit-001",
    "draft": true,
    "text": "Updated draft caption",
    "fields": "postId,version"
  }
}
Lire le brouillon et les ressources enregistrés
{
  "name": "get_post",
  "arguments": {
    "postId": "YOUR_DRAFT_ID",
    "fields": "id,version,text,isDraft,assets.{type,url,altText}"
  }
}

Remplacer les médias d’un brouillon enregistré

Pour un brouillon détenu par l’intégration, non soumis et non programmé, omettez draft et définissez saveToDraft: true. Fournissez son ID et sa version actuels, une clé de requête stable, drafts:write et les médias de remplacement ; omettez mode et dueAt. Ne combinez pas draft: true avec saveToDraft: true. Cette route d’édition de publication retourne id, version et deleted, pas postId. L’exemple PDF LinkedIn remplace la liste de pièces jointes par un document. Remplacez tous les paramètres fictifs, notamment l’URL et le titre, et conservez la légende souhaitée. Relisez la publication pour confirmer ses médias et son état de brouillon. Cette modification ne soumet, ne programme et ne publie pas le brouillon.

Remplacer la pièce jointe d’un brouillon LinkedIn par un PDF
{
  "name": "edit_post",
  "arguments": {
    "postId": "YOUR_OWNED_DRAFT_ID",
    "version": "CURRENT_64_CHARACTER_VERSION",
    "requestKey": "my-draft-media-edit-001",
    "saveToDraft": true,
    "text": "Current draft caption",
    "document": {
      "url": "https://YOUR_MEDIA_HOST/your-document.pdf",
      "title": "Your document title"
    },
    "fields": "id,version,deleted"
  }
}

n8n

Ajoutez une étape MCP Client, choisissez HTTP Streamable et utilisez https://backend.socialblaze.ai/api/developer/mcp. Sélectionnez Bearer Auth et enregistrez votre clé à portée limitée dans un identifiant n8n. Choisissez un outil, puis utilisez une entrée JSON pour les paramètres imbriqués. Commencez par get_account ou une mutation de brouillon ; conservez la même clé de requête lors d’une nouvelle tentative pour un évènement.

Documentation de n8n MCP Client

Zapier

Dans les connexions d’applications, ajoutez MCP Client by Zapier. Saisissez le point de terminaison ci-dessus, puis choisissez Streamable HTTP et OAuth. Connectez-vous à SocialBlaze, vérifiez les permissions et sélectionnez les canaux. Utilisez un outil en lecture seule pour les rapports, ou Run Tool pour une action autorisée sur un brouillon. Activez la gestion des erreurs et examinez les données structurées retournées avant l’étape suivante.

Certains éditeurs MCP Client de Zapier transmettent les tableaux textuels sous forme de chaînes. channelIds nécessite un véritable tableau. Si l’éditeur l’aplatit, utilisez execute_mutation avec une chaîne de mutation GraphQL contenant la valeur littérale channelIds: ["YOUR_CHANNEL_ID"]. Commencez par une date future, conservez la clé de requête et examinez les erreurs avant de continuer.

Configuration de Zapier MCP Client

Ces exemples utilisent les clients MCP génériques des plateformes. La disponibilité des comptes clients et les frais des fournisseurs sont indépendants des limites de l’API SocialBlaze.

La publication automatique exige une permission explicite. Utilisez des portées de validation seule si vous souhaitez que l’assistant prépare du travail sans le publier.

07 / UNE CONSOMMATION PRÉVISIBLE

Des limites pour concevoir vos intégrations.

Quotas actuels de l’aperçu développeur, partagés dans l’espace de travail
RessourceQuota
Unités de travail API60/minute · 500/jour · 7 500/mois
Médias importés100 Mo/jour · 1 Go/mois
Actualisations des rapports20/jour · 500/mois
Publications créées via l’API25/canal/jour
Taille de la requête / demandeRequête de 16 Ko · Corps JSON de 32 Ko

Les fenêtres UTC sont partagées entre toutes les clés et applications autorisées. Ajouter des clés ne multiplie pas les quotas. Seules l’opération sélectionnée et les fragments accessibles sont facturés : une unité pour 25 points de complexité, arrondie au supérieur, avec un minimum d’une unité et deux unités supplémentaires pour les mutations. Les en-têtes de réponse et les métadonnées MCP indiquent les unités de travail comptabilisées et leur base de calcul. Cette politique initiale est prudente ; les actualisations des fournisseurs et les médias conservent des budgets distincts. Les lectures en cache consomment toujours du travail de requête local. La publication sur le site et les limites des réseaux ou fournisseurs sont distinctes.

  • 401: identifiant expiré, révoqué ou invalide.
  • 403: portée, accès au canal ou permission d’équipe manquants.
  • 409: version obsolète, données de nouvelle tentative modifiées ou état de publication non sûr.
  • 422: examinez les détails de validation, notamment channels.ID.
  • 429: suivez Retry-After; réutilisez la même clé de mutation.

GraphQL peut retourner des erreurs avec HTTP 200. Examinez toujours errors. Chaque mutation possède aussi un try comme variante, par exemple tryCreateDraft, avec un résultat de réussite typé result ou MutationError. Sélectionnez __typename et les champs de l’erreur code, httpStatus, message, fields et retryAfterSeconds. Une erreur typée peut apparaître dans data avec HTTP 200 ; vérifiez donc aussi ce résultat.

Les appelants MCP doivent aussi examiner isError et structuredContent: les erreurs peuvent apparaître sous forme d’erreurs GraphQL errors, un MutationError, error ou validation même lorsque la requête de transport réussit. Si disponible, _meta comprend httpStatus, chargedWorkUnits, les quotas restants et retryAfterSeconds. Un client qui masque les métadonnées ne prouve pas qu’un appel était gratuit. Corrigez les erreurs de permission ou de validation avant de réessayer. En cas d’écriture incertaine, gardez la clé de requête et les entrées d’origine ; consultez l’état enregistré au lieu de créer une autre publication.

Ces limites s’appliquent à l’aperçu ; elles ne garantissent pas qu’un fournisseur autorise le même volume.

08 / AUTOMATISER VOTRE TRAVAIL

Commencez par un petit processus.

Robot de rapport du vendredi

Exécutez un déclencheur hebdomadaire, lisez les publications diffusées et les instantanés de performances existants de la semaine, puis envoyez le rapport via votre propre connexion Slack.

D’un formulaire à un brouillon

Utilisez un webhook Zapier ou un nœud HTTP Request n8n pour appeler createDraft. Stockez l’identifiant dans le coffre de secrets de la plateforme et conservez un ID d’évènement stable comme requestKey.

De la bibliothèque à la campagne

Choisissez un modèle enregistré, créez son brouillon et envoyez-le en validation. Ne programmez qu’une fois les exigences d’approbation satisfaites.

Rapports personnalisés

Intégrez les indicateurs des canaux sélectionnés à votre tableau de bord. Réutilisez les ID d’instantané lors des consultations répétées et préservez les valeurs inconnues ou incomplètes.

Importer un processus n8n

Téléchargez un processus, choisissez Import from File dans n8n, modifiez les entrées et associez votre identifiant Bearer Auth à l’étape MCP Client. Chaque exemple démarre manuellement et reste inactif après import. Les clés appartiennent au gestionnaire d’identifiants n8n, jamais au JSON.

Importé avec n8n 2.43.5 ; appels du nœud MCP vérifiés sur une API de test isolée. L’exécution hébergée avec vos identifiants nécessite une vérification distincte. Ces exemples utilisent des clients MCP génériques et n’impliquent ni application référencée sur une place de marché ni modèle Zapier publié. Gérez l’autorisation des messages externes dans votre propre processus.

09 / LE CONTRAT RÉEL

Lisez le schéma actuel.

La référence est générée à partir des types GraphQL implémentés. L’introspection authentifiée et l’explorateur fournissent le contrat déployé. SocialBlaze utilise ses propres identifiants et son propre schéma.

Télécharger le schéma GraphQL

Donnez à votre assistant de développement le Guide API lisible par les assistants IA afin qu’il utilise les bons points de terminaison, permissions, versions et règles de nouvelle tentative.

Client Node côté serveur

Le paquet versionné comprend les déclarations TypeScript et un client en ligne de commande. Installez le fichier téléchargé avec npm install ./socialblaze-developer-client-0.1.14.tgz. Conservez votre clé dans une variable d’environnement côté serveur.

Utilisez les commandes nommées pour les publications et brouillons, tools list, tools describe NAME, tools call NAME, schema describe TYPE et doctor. Fournissez le JSON directement, depuis un fichier ou depuis stdin. --dry-run vérifie les règles d’entrée de base annoncées sans appeler l’outil ; la découverte utilise toujours du quota et ne confirme ni la validation du fournisseur ni la diffusion. Le CLI ne réessaie jamais automatiquement les écritures.

Les lectures de publications prennent en charge postTypes et dueAtPresence comme filtres sur les formats natifs enregistrés et la présence d’une date programmée. Réinitialisez le curseur lorsque les filtres changent. Ces filtres n’activent aucun format de publication supplémentaire.

L’opération nommée list_channels accepte des pages de 1 à 100 éléments, 20 par défaut, avec afterId. Réduisez les champs pour les pages plus grandes ; les limites habituelles de complexité et de travail s’appliquent. Les filtres de format incluent aussi les éléments Google Business event, offer et whats_new, à partir des métadonnées natives enregistrées. Ces catégories recoupent volontairement les publications ordinaires et n’activent aucun nouveau format de publication.

Node getPost et contentItem retournent les URL des ressources, y compris les aperçus statiques et animés. Node listPosts conserve sa projection compacte sans ressources ; utilisez une lecture individuelle ou une sélection GraphQL explicite. Node getPost comprend isDraft mais conserve une projection compacte sans méthode de publication ni état de rappel manuel. Utilisez les commandes nommées get_post ou une requête GraphQL explicite pour ces champs ; le client générique et le CLI peuvent transmettre les nouvelles opérations de brouillon sans modifier le paquet SDK immuable.

Sélectionner les champs de réponse

Les appels CLI nommés acceptent --fields 'id,text' et les groupes associés tels que --fields 'nodes.{id,text},pageInfo.endCursor'. Les chemins sont relatifs au résultat nommé. Le serveur construit une sélection GraphQL réduite et la valide avant exécution. La consommation reflète cette sélection. Conservez les ID et versions pour suivre les écritures, ainsi que la base, les notes et la couverture des rapports. all rétablit la sélection standard de l’outil, et non tous les champs du schéma. Les outils MCP nommés acceptent la même valeur fields comme chaîne. Les métadonnées de pagination des canaux restent disponibles lorsque les champs affichés omettent les ID. Les commandes de requête génériques utilisent leur document explicite.

Configuration de la CLI et consignes pour les agents

socialblaze init enregistre les valeurs par défaut locales ; config path et config get --all permettent de les examiner. Les identifiants d’environnement sont recommandés. Seule une commande explicite init --save-token enregistre durablement un jeton dans un fichier global non chiffré hors du projet actuel. La configuration du dépôt ne prend en charge que le fuseau horaire et le délai d’attente ; elle ne peut ni fournir d’identifiant ni rediriger son origine. L’affichage de la configuration masque les clés enregistrées ; leur suppression locale ne révoque pas la clé sur le serveur.

context --list énumère les rubriques d’agent fournies ; context affiche hors ligne la compétence et les indications de rapport. completion bash, zsh, fish ou powershell affiche un script de complétion du shell. Utilisez socialblaze install claude ou install codex pour une installation gérée explicite de la compétence hors ligne ; uninstall claude ou uninstall codex annule une installation inchangée. Les dossiers personnalisés ou liés sont conservés. L’installation du paquet et init n’installent aucune compétence et ne modifient pas les profils de shell. Les suggestions couvrent les groupes de commandes statiques. La version 0.1.5 corrige la complétion zsh imbriquée. Les suggestions statiques sont vérifiées dans de véritables environnements hors ligne bash, zsh ZLE et fish ; la sortie PowerShell est vérifiée par son analyseur. Ces contrôles n’exécutent aucun outil distant et n’autorisent pas la publication.

Lisez la compétence d’agent fournie. Elle respecte votre autorisation et distingue les nombres d’enregistrements locaux, les classements observés et les historiques incomplets des fournisseurs. Consultez sa référence liée sur les rapports pour ces procédures.

Télécharger le client Node 0.1.14

Besoin d’aide pour une requête précise ? Écrivez à [email protected] avec le nom de l’opération, son état et un code d’erreur sûr. N’incluez jamais votre clé, votre jeton d’actualisation ni vos identifiants de réseaux sociaux.

×