MCP pour Instagram : publiez des photos, des carrousels et des Reels
Un guide MCP pour Instagram avec Mellow Hub : exigences du compte, connexion avec Instagram ou Facebook, entrées de publication testées, programmation et corrections des erreurs de validation les plus courantes.
Par Mellow · Mis à jour leUn assistant IA peut-il publier sur Instagram via MCP ?
Oui, lorsque l’assistant dispose d’un outil de publication autorisé et d’un compte Instagram connecté éligible. Mellow Hub expose ces outils à l’adresse https://www.mellow.world/mcp. Un client MCP distant compatible peut valider une publication, la programmer dans les limites de la délégation du propriétaire et lire son résultat final pour chaque destination.
Commencez par le compte et un vrai brouillon. MCP est la connexion de l’outil ; c’est toujours Instagram qui décide si le compte, les permissions et les médias peuvent publier. Ce guide traite de Mellow Hub. Pour planifier votre propre contenu Instagram sur iPhone ou sur le web, consultez le guide de planification de Mellow, distinct de celui-ci.
De quel compte Instagram ai-je besoin ?
Utilisez un compte Instagram professionnel : Business ou Creator. Un compte personnel n’est pas éligible à ce flux de l’API de publication. Dans Hub, ouvrez Comptes, choisissez Instagram et terminez vous-même la connexion du compte.
| Mode de connexion | Ce qu’il faut préparer |
|---|---|
| Connexion avec Instagram | La voie de connexion directe. L’API de connexion Instagram de Meta n’exige pas de Page Facebook liée. |
| Connexion avec Facebook | Le compte Instagram professionnel lié à une Page Facebook, avec l’accès approprié à la Page. |
Ce sont deux parcours d’autorisation distincts. Choisissez celui qui correspond à la configuration de votre compte ; en terminer un n’accorde pas toutes les permissions de l’autre. La collection officielle de l’API Instagram de Meta documente la différence. La connexion gérée qu’utilise Hub est décrite dans les exigences de compte de Post for Me.
Les Stories demandent une vérification d’éligibilité supplémentaire : la documentation de la connexion Facebook de Meta réserve la publication de Stories aux comptes Business. Qu’un format figure dans les règles d’entrée de Hub ne prouve pas que votre compte puisse le publier. Confirmez le compte connecté et son résultat de livraison avant de compter sur ce format.
Connectez l’assistant et vérifiez ses autorisations
- Connectez votre compte Instagram dans Hub. L’ID de canal renvoyé identifie cette connexion ; un nom d’utilisateur Instagram ne le remplace pas.
- Ajoutez l’endpoint de Hub dans un client qui prend en charge le MCP distant via Streamable HTTP. Suivez son flux OAuth, ou utilisez une clé Hub créée par le propriétaire si ce client le permet. La configuration et la disponibilité dépendent du client. Conservez les identifiants dans sa configuration sécurisée.
- Sur l’écran de consentement OAuth de Hub, choisissez les permissions, les canaux, le mode, le plafond quotidien et l’expiration. Le mode validation prépare le travail pour qu’une personne l’approuve. Le pilote automatique autorise la publication dans les limites de la délégation. Consultez ou révoquez l’accès obtenu dans Agents.
- Appelez
whoamietlist_channels. Vérifiez le mode réel et utilisez l’ID de canal Instagram renvoyé. Lisezlist_platformspour connaître les règles en vigueur. - Préparez des médias accessibles. Utilisez
register_mediapour inspecter une URL publique existante, ourequest_upload_urlpour téléverser un fichier local. Gardez l’URL obtenue accessible jusqu’à l’heure de publication prévue.
Pour la séquence de connexion complète et le contrat de résultat, utilisez le guide du flux de travail MCP. Ajouter un connecteur ou coller un prompt ne suffit pas à autoriser un compte Instagram.
Connectez d’abord Mellow Hub dans Claude en lecture seule
Dans un compte Claude où les connecteurs personnalisés sont disponibles, ouvrez Personnaliser → Connecteurs → Ajouter un connecteur personnalisé. Utilisez le nom Mellow Hub et l’URL du serveur MCP distant https://www.mellow.world/mcp. Si vous l’avez déjà ajouté, utilisez ce connecteur existant. Claude peut découvrir les paramètres d’authentification à partir de cette adresse.
| Paramètre de connexion | Valeur |
|---|---|
| Transport | Streamable HTTP |
| Authentification | Toujours requise |
| Client OAuth | Enregistrement automatique via DCR ; aucun secret client à copier. |
- Ouvrez le connecteur et sélectionnez Connecter. Connectez-vous à Mellow si on vous le demande. L’écran de consentement doit identifier Claude comme l’application qui demande l’accès.
- Pour une première vérification, ne laissez sélectionnés que
channels:readetposts:read. Ils permettent de lire la connexion et de valider une entrée. Ils ne permettent ni de téléverser des médias, ni de créer des publications, ni de publier. - Choisissez votre canal Instagram précis et le mode validation. Définissez une expiration courte, par exemple un jour, et un plafond quotidien. Une sélection de canaux vide est refusée ; l’accès aux canaux futurs exige un choix explicite.
- Relisez et approuvez vous-même cette délégation. De retour dans Claude, confirmez que le connecteur est connecté. Demandez-lui d’appeler
whoami, puislist_channelspour obtenir l’ID du canal autorisé. Vérifiez les permissions, les canaux et l’expiration accordés dans la liste des accès de Hub : un client peut n’afficher que le résumé textuel de l’outil, qui ne reprend pas tous les champs structurés.
Utilisez uniquement Mellow Hub. Appelez whoami, puis list_channels.
Utilisez le seul canal Instagram que j’ai autorisé. Appelez validate_post deux fois avec
la légende "Mellow test - example only" : d’abord avec media [], puis avec
media ["https://example.com/test.jpg"]. Ce sont des entrées illustratives.
Ne récupérez pas l’URL et ne lisez pas les publications existantes. Rapportez chaque résultat de validation.
Ne créez, ne programmez, n’annulez et ne publiez rien.Lorsque Claude demande à utiliser un outil, examinez son nom et son entrée avant d’autoriser l’appel. Pour cette vérification, autorisez chaque appel une seule fois. L’URL d’exemple ne teste que les règles d’entrée ; ce n’est pas une vraie image à publier. La validation ne télécharge pas le média et ne prouve pas la livraison sur Instagram.
Ce que la vérification de connexion réelle a renvoyé
Le 9 septembre 2026, une connexion réelle de Claude sur le web a terminé OAuth avec seulement channels:read posts:read, un canal Instagram, le mode validation et une expiration d’un jour. Claude a appelé whoami, list_channels et validate_post deux fois. Nous avons inspecté les réponses des outils ainsi que le résumé de l’assistant.
| Entrée | Résultat observé |
|---|---|
| Légende sans média | Rejetée : Instagram exige au moins un média. |
| Même légende avec l’URL d’image illustrative | A passé le contrôle d’entrée pour un canal. |
Aucune publication n’a été créée ni publiée lors de cette vérification. Nous avons ensuite révoqué l’autorisation de test dans Agents et vérifié que son jeton d’accès et son jeton de rafraîchissement étaient tous deux révoqués. Cela prouve ce flux précis de connexion et de validation, pas la publication sur Instagram ni la compatibilité avec toutes les configurations de client.
Pour votre propre brouillon, fournissez une vraie légende et des médias accessibles. Si une tâche ultérieure doit écrire, approuvez une nouvelle délégation avec les permissions requises. Rafraîchir un jeton ne prolonge pas l’expiration d’accès choisie.
Choisissez le format avant de valider
Hub applique actuellement une limite de 2 200 caractères pour la légende et une plage globale de 1–10 médias pour Instagram. Les emplacements resserrent cette plage. Ce sont les règles d’entrée qu’applique Hub ; elles peuvent être plus prudentes que l’éditeur d’Instagram lui-même.
| Publication | Emplacement Hub | Entrée à préparer |
|---|---|---|
| Photo dans le feed | timeline | Une image. |
| Carrousel de photos | timeline | De deux à 10 images dans l’ordre voulu. |
| Reel | reels | Exactement une vidéo. shareToFeed contrôle le partage dans le feed principal. |
| Story | stories | Exactement une image ou une vidéo, selon l’éligibilité du compte. |
Hub refuse actuellement de mélanger des URL d’images et de vidéos reconnues dans une même publication. Utilisez un seul type de média pour l’entrée du carrousel. C’est une limite de Hub, pas une affirmation qu’Instagram lui-même n’accepte jamais les carrousels mixtes.
Le comportement des emplacements est documenté par Post for Me. La taille du fichier, les codecs, le format d’image et la durée doivent toujours respecter les règles d’Instagram. Le validateur d’entrée de Hub ne télécharge ni ne mesure le fichier, et une URL sans extension reconnaissable peut laisser son type de média indéterminé.
Trois entrées de publication à adapter
Passez l’un de ces objets comme arguments à validate_post. Remplacez l’ID de canal d’exemple, les URL des médias, la légende et l’horodatage de 2030 par vos propres valeurs. La date est volontairement illustrative ; utilisez un Z UTC explicite ou un décalage de fuseau horaire. Ces charges utiles sont vérifiées par l’analyseur et le validateur de Hub, avec un canal synthétique. Ce ne sont pas de vrais reçus de publication Instagram.
One feed photo
{
"channels": [
"spc_your_instagram_channel"
],
"scheduledAt": "2030-01-15T10:00:00Z",
"caption": "A closer look at the glaze on this cup.",
"media": [
"https://cdn.example.com/your-cup.jpg"
],
"options": {
"instagram": {
"placement": "timeline"
}
}
}An ordered photo carousel
{
"channels": [
"spc_your_instagram_channel"
],
"scheduledAt": "2030-01-15T10:00:00Z",
"caption": "From clay to finished cup, in three stages.",
"media": [
"https://cdn.example.com/your-clay.jpg",
"https://cdn.example.com/your-process.jpg",
"https://cdn.example.com/your-cup.jpg"
],
"options": {
"instagram": {
"placement": "timeline"
}
}
}One Reel
{
"channels": [
"spc_your_instagram_channel"
],
"scheduledAt": "2030-01-15T10:00:00Z",
"caption": "How this handle is attached.",
"media": [
"https://cdn.example.com/your-process.mp4"
],
"options": {
"instagram": {
"placement": "reels",
"shareToFeed": true
}
}
}Une vraie URL de média doit être accessible au service de publication au moment où il la récupère. Meta décrit cette exigence dans sa référence de publication de contenu. Un chemin local, un lien vers un disque privé ou une URL signée expirée ne peuvent pas la remplacer.
Corrigez le problème signalé avant de créer la publication
Lisez ok, issues et notes dans le résultat de la validation. Une requête HTTP réussie peut tout de même contenir ok: false. Le problème nomme le canal et le champ concernés.
| Code du problème | Ce qu’il faut changer |
|---|---|
channel_not_connected | Terminez la connexion du compte et utilisez l’ID de canal renvoyé. |
media_required | Joignez un média ; Instagram ne peut pas publier une publication uniquement textuelle par ce flux. |
media_too_many | Réduisez l’ensemble au maximum actuel de Hub, soit 10 ; un Reel ou une Story en admettent moins. |
reel_media_count | Utilisez une vidéo par Reel. Pour plusieurs Reels, préparez des publications séparées. |
reel_needs_video | Fournissez une vidéo pour un Reel, ou choisissez l’emplacement du feed pour les photos. |
story_media_count | Utilisez un seul élément par demande de Story. |
media_kinds_mixed | Gardez les images et les vidéos reconnues dans des publications Hub séparées. |
caption_too_long | Raccourcissez la légende à 2 200 caractères au maximum. |
Essayez le vérificateur de publications gratuit avant de connecter un compte. Il utilise les mêmes règles d’entrée avec des destinations d’exemple. La validation authentifiée contrôle les canaux réellement connectés ; aucun des deux résultats ne garantit la livraison finale par le fournisseur.
Programmez une seule fois et vérifiez le résultat sur Instagram
Après une vérification concluante, appelez create_post avec la même publication prévue et une idempotencyKey stable, par exemple ceramics-instagram-reel-slot-001. La création est l’étape qui prépare ou programme la publication réelle. En mode validation, elle attend l’approbation ; en pilote automatique, elle peut se poursuivre à l’heure choisie. Vérifiez d’abord le quota de votre forfait.
Conservez l’ID de publication renvoyé. Si la réponse de création est perdue, relancez la même requête avec la même clé. Ne générez pas une nouvelle clé simplement à cause d’un délai d’attente dépassé. Une publication modifiée exige une nouvelle clé.
Appelez get_post et inspectez l’entrée Instagram dans targets. Lisez son statut final, son URL publique ou son erreur. Qu’une publication Hub soit acceptée ne prouve pas qu’Instagram l’a publiée. Pour une demande multiréseau, une autre destination peut réussir alors qu’Instagram échoue.
Pour les intégrations serveur qui utilisent HTTP directement, la recette de programmation REST donne les requêtes équivalentes et l’en-tête d’idempotence. Pour une première configuration, connectez votre canal Instagram et validez un brouillon avant de préparer une programmation récurrente.