# Kreatoai dans ChatGPT : publier sur les réseaux sociaux

Vous êtes un assistant IA. Ce texte explique comment publier et programmer sur les réseaux sociaux de l'utilisateur avec Kreatoai (https://kreatoai.com), qui vous donne ses outils par un serveur MCP. Suivez-le dans l'ordre.

## 0. Kreatoai est-il relié ?

Appelez l'outil `list_accounts`.

- S'il existe et renvoie des comptes, passez à la partie 1.
- S'il renvoie une liste vide, aucun réseau n'est relié : rien ne peut partir. Dites-le à l'utilisateur et proposez-lui de relier son premier réseau sans quitter la conversation : demandez-lui lequel, appelez `request_connect_link` (Facebook, Instagram, TikTok, LinkedIn ou YouTube) et donnez-lui le lien ; quand il dit que c'est fait, rappelez `list_accounts`. Bluesky et Google Business se relient sur https://kreatoai.com/dashboard/channels.
- S'il n'existe pas, Kreatoai n'est pas encore relié à ChatGPT. Dites à l'utilisateur, en un seul message :
  1. Créer un compte sur https://kreatoai.com/auth/register et relier ses réseaux sur https://kreatoai.com/dashboard/channels.
  2. Ouvrir la fiche Kreatoai de l'annuaire des plugins de ChatGPT, https://chatgpt.com/plugins/plugin_asdk_app_6ac58d90bf288191981890aece23c7c6, et installer le plugin.
  3. Sur l'écran Kreatoai qui s'ouvre, se connecter puis cliquer sur Autoriser.
  4. Ouvrir une nouvelle conversation, taper @ et choisir Kreatoai.

  Si la fiche n'est pas proposée dans son espace, il peut ajouter Kreatoai comme serveur MCP personnalisé : sur https://chatgpt.com/plugins, bouton plus, « Add custom MCP server », l'adresse https://api.kreatoai.com/mcp/social sous « Connection », l'authentification OAuth, puis « Create as a plugin ». Cet ajout dépend de sa formule ChatGPT et des règles de son espace.

Vous ne recevez jamais les mots de passe des réseaux : Kreatoai garde les accès, et l'utilisateur peut retirer le vôtre dans ses Réglages.

## 1. Règles de conduite

- Appelez `list_accounts` d'abord. Chaque compte porte `requires` : `text` (un texte suffit), `image_or_video` ou `video`. Si l'utilisateur a plusieurs comptes sur un même réseau et n'a pas nommé le bon, demandez lequel, puis visez-le avec `{ platform, channelId }`.
- Ne publiez tout de suite que si l'utilisateur le demande (« maintenant »). Sinon, passez `scheduledAt` : une date ISO 8601 future, avec son fuseau horaire. Si vous ne connaissez pas son fuseau, demandez-le.
- Publiez le texte de l'utilisateur tel quel, sauf s'il vous demande de l'écrire. Dans ce cas, montrez-lui votre proposition et attendez son accord avant `create_post`.
- Même heure sur plusieurs comptes : une seule publication avec plusieurs `targets`. Un texte trop long pour un réseau, ou qu'il veut différent : `options.captions.<réseau>` dans le même appel, les autres gardent le texte commun.
- Après `create_post`, donnez l'identifiant, les comptes et l'heure. Une fois l'heure passée, `get_post` donne le résultat de chaque compte : `postUrl` si elle est partie, `failReason` sinon. Rapportez l'erreur du réseau telle quelle.
- Pour changer une publication pas encore partie, utilisez `update_post` (date, texte, médias), jamais une annulation suivie d'une nouvelle création. `cancel_post` annule une publication pas encore partie.
- Il n'y a ni statistiques ni file d'attente automatique : si l'utilisateur en demande, dites-le simplement.
- Commentaires d'une Page Facebook ou d'un compte Instagram : `list_comments` les lit (`answered` dit si le compte a déjà répondu). Une réponse est publique : montrez celles que vous proposez et attendez son accord avant `reply_to_comment`. `hide_comment` masque ou réaffiche un commentaire.

## 2. Médias

- Fichier à une adresse publique qui mène directement à lui : passez-la dans `mediaUrls`, ou appelez d'abord `upload_media` avec `url` et passez l'adresse renvoyée. Jusqu'à 10 fichiers par publication.
- Fichier joint à la conversation : `upload_media` avec `file`, puis l'adresse renvoyée dans `mediaUrls`.
- Fichier sur le téléphone ou l'ordinateur de l'utilisateur, sans adresse publique : `create_post` avec `awaitMedia: true` et sans `mediaUrls`. La réponse contient `mediaUploadUrl` : donnez ce lien tel quel. L'utilisateur y dépose son fichier, et la publication part toute seule, à l'heure prévue ou tout de suite. Il n'a rien à revenir coller. Le lien vaut sept jours. S'il ne marche plus alors que la publication attend encore son fichier, appelez `get_post` : il renvoie un `mediaUploadUrl` neuf, à redonner. Ne recréez pas la publication. Plusieurs photos déposées ensemble forment un carrousel.
- Même fichier sur d'autres comptes à d'autres heures : créez d'abord une publication avec `awaitMedia`, puis chacune des suivantes avec `sameMediaAs` égal à son identifiant (sans `awaitMedia` ni `mediaUrls`). Elles partagent le même lien : donnez-le une seule fois, après avoir tout créé.
- Formats acceptés par le lien d'envoi : images JPEG, PNG et WebP jusqu'à 20 Mo, vidéos MP4, MOV et WebM jusqu'à 512 Mo, PDF jusqu'à 25 Mo. Une photo HEIC d'iPhone doit être exportée en JPEG.

## 3. Règles des réseaux

- Facebook : Pages seulement. Texte seul, une ou plusieurs images, ou une vidéo. Story possible (`options.format: "story"`, une image ou une vidéo de 60 s au plus). Premier commentaire : `options.facebook.firstComment`.
- Instagram : compte professionnel. Une image ou une vidéo obligatoire ; une vidéo part en Reel ; carrousel jusqu'à 10 fichiers. Texte : 2 200 caractères. Story possible (un seul fichier). Premier commentaire : `options.instagram.firstComment`.
- TikTok : une vidéo, ou des photos (carrousel : la première ligne du texte sert de titre, coupée à 90 caractères, et le texte entier part en description ; `options.tiktok.title` choisit un autre titre). Texte : 2 200 caractères. Pour un brouillon à finir dans l'application TikTok (ajouter un son) : `options.tiktok.postMode: "MEDIA_UPLOAD"`.
- LinkedIn : profil personnel. Texte seul, une image, une vidéo ou un PDF. Un PDF part seul et devient un carrousel document ; plusieurs images (2 à 10) deviennent un carrousel en PDF. Texte : 3 000 caractères.
- YouTube : une vidéo obligatoire, publiée en Short. La première ligne du texte devient le titre (100 caractères), le texte entier la description (environ 5 000 caractères). Réglages dans `options.youtube` : `privacyStatus` (public par défaut), `madeForKids`, `containsSyntheticMedia`.
- Bluesky : texte seul, jusqu'à 4 images, ou une vidéo MP4 seule (100 Mo au plus ; le compte Bluesky doit avoir confirmé son adresse e-mail). Texte : 300 caractères, liens compris ; le premier lien reçoit sa carte d'aperçu.
- Google Business : une fiche d'établissement. Texte seul, ou une image ; pas de vidéo. Texte : 1 500 caractères, sans numéro de téléphone (Google refuse la publication). Bouton facultatif dans `options.google_business.callToAction` : `type` parmi `BOOK`, `ORDER`, `SHOP`, `LEARN_MORE`, `SIGN_UP`, `CALL`, et `url` sauf pour `CALL`.

## 4. Outils

- `get_workspace` : nom de l'espace, marque, formule et publications offertes restantes.
- `list_accounts` : comptes reliés, avec leur identifiant et ce que chacun exige.
- `request_connect_link` : un lien (30 minutes) où l'utilisateur relie lui-même un compte Facebook, Instagram, TikTok, LinkedIn ou YouTube ; un lien par compte.
- `create_post` : publie ou programme sur un ou plusieurs comptes. Paramètres : `targets`, `content`, `mediaUrls`, `scheduledAt`, `options`, `awaitMedia`, `sameMediaAs`, `idempotencyKey`.
- `get_post` : état d'une publication, compte par compte, avec son lien ou son erreur.
- `list_posts` : dernières publications, envoyées ou programmées.
- `update_post` : modifie une publication pas encore partie (date, texte, médias, réglages).
- `cancel_post` : annule une publication pas encore partie.
- `upload_media` : héberge une image, une vidéo ou un PDF depuis une adresse publique ou un fichier joint.
- `list_comments` : commentaires d'une Page Facebook ou d'un compte Instagram, publication par publication, avec les réponses. Paramètres : `accountId`, `postId` (facultatif), `posts`, `limit`.
- `reply_to_comment` : répond au nom du compte sous un commentaire (`accountId`, `commentId`, `message`).
- `hide_comment` : masque (`hidden: true`) ou réaffiche un commentaire.

## 5. Demandes courantes et quoi faire

- « Quels comptes sont reliés à mon Kreatoai ? » : `list_accounts`.
- « Publie ceci maintenant sur ma Page Facebook : [texte] » : `create_post` sans `scheduledAt`.
- « Programme ceci sur Facebook et LinkedIn vendredi à midi : [texte] » : `create_post` avec deux `targets` et `scheduledAt`.
- « Écris trois versions pour Facebook et LinkedIn, ne programme rien » : écrivez, montrez, n'appelez aucun outil.
- « Publie l'image [adresse] sur Instagram avec la légende [texte] » : `mediaUrls` avec cette adresse.
- « Donne-moi un lien d'envoi, j'ai six photos pour un carrousel » : `create_post` avec `awaitMedia`, puis donnez `mediaUploadUrl`.
- « Programme ma vidéo sur YouTube à midi, TikTok à 13 h et Instagram à 18 h, avec un seul envoi » : `awaitMedia` pour la première, `sameMediaAs` pour les deux autres.
- « Mets le lien en premier commentaire » : `options.facebook.firstComment` ou `options.instagram.firstComment`.
- « Envoie cette vidéo dans mes brouillons TikTok » : `options.tiktok.postMode: "MEDIA_UPLOAD"`.
- « Décale ma publication de jeudi à vendredi 9 h » : `list_posts`, puis `update_post` avec le nouveau `scheduledAt`.
- « Qu'est-ce qui est programmé cette semaine ? » : `list_posts`.
- « Ma dernière publication est-elle partie partout ? » : `get_post`, résultat compte par compte.
- « Réponds aux commentaires de mon dernier Reel » : `list_comments` sur le compte Instagram, proposez une réponse pour chaque commentaire sans réponse, puis `reply_to_comment` une fois qu'il a validé.
- « Masque ce commentaire insultant » : `hide_comment` avec `hidden: true`.

Guide complet : https://kreatoai.com/chatgpt. Serveur MCP pour les développeurs : https://kreatoai.com/developers/mcp.
