Communitygithub.com

sultanlive/instagram-post

Publie et planifie des publications Instagram, Reels et carrousels depuis OpenClaw, Hermes, Claude Code ou Codex via le serveur MCP 1Social (OAuth, sans clé API). Vérifie les règles de caption, hashtags, ratio d'aspect et médias d'Instagram avant publication, planifie jusqu'à 30 jours à l'avance et retourne un accusé de réception.

Qu'est-ce que instagram-post ?

Cette compétence permet de publier et planifier du contenu Instagram (photos, Reels, carrousels) directement depuis des agents d'IA comme Claude Code, Cursor, OpenClaw, Hermes ou Codex, en utilisant le serveur MCP 1Social. L'authentification se fait via OAuth (pas de clé API) et le workflow inclut la vérification des règles Instagram (caption, hashtags, ratio d'aspect 4:5 à 1.91:1), la prévisualisation gratuite, la confirmation utilisateur, et la publication ou planification jusqu'à 30 jours. Les médias peuvent être attachés via un fichier dans le chat, une URL HTTPS, ou un upload via `upload_media`. La compétence retourne un reçu par réseau et permet aussi de publier simultanément sur TikTok, LinkedIn, X, Threads, Facebook Pages, YouTube Shorts et Bluesky. Après publication, on peut vérifier le statut, modifier ou annuler une publication planifiée, ou supprimer une publication (sauf Instagram qui n'a pas d'API de suppression).

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/sultanlive/1social-skills/tree/main/plugins/instagram-by-1social/skills/instagram-post

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Instagram avec 1Social

1Social publie sur le compte Instagram de l'utilisateur et rapporte ce qui a réellement été diffusé.

Configuration (une fois)

Ces étapes pilotent le serveur MCP 1Social. Si des outils comme list_accounts ne sont pas disponibles, connectez-le d'abord. La connexion se fait par OAuth dans le navigateur ; il n'y a pas de clé API à stocker. Demandez à l'utilisateur avant d'exécuter ces commandes — l'étape de connexion ouvre une page où il se connecte lui-même à 1Social.

  • OpenClaw : openclaw mcp set 1social '{"url":"https://mcp.1social.dev/mcp","transport":"streamable-http","auth":"oauth"}', puis openclaw mcp login 1social. Vérifiez avec openclaw mcp doctor 1social --probe.
  • Hermes : ajoutez dans ~/.hermes/config.yaml :
    mcp_servers:
      1social:
        url: "https://mcp.1social.dev/mcp"
        auth: oauth
    
    puis hermes mcp login 1social (sur un hôte sans écran : hermes mcp login 1social --flow device).
  • Claude Code : claude mcp add --transport http 1social https://mcp.1social.dev/mcp
  • Tout autre client : https://1social.dev/mcp liste la configuration pour chacun.

L'utilisateur a besoin d'un compte 1Social. Les nouveaux comptes commencent avec un essai gratuit ; la publication après l'essai nécessite un plan payant (https://1social.dev/pricing).

Workflow

  1. Trouver le compte. Appelez list_accounts. Cela renvoie les canaux connectés avec leurs identifiants, les limites en direct de chaque réseau, le plan et le quota mensuel restant. Si aucun compte Instagram n'est connecté, dites à l'utilisateur d'en connecter un sur https://1social.dev/app — la connexion nécessite un navigateur et ne peut pas être faite depuis le chat. Si list_accounts signale une limite différente de celle de cette compétence, faites confiance à list_accounts.
  2. Rédiger pour le réseau. Rédigez la publication selon les règles ci-dessous. Une publication est une liste de segments ; chaque segment est { text, mediaIds? }.
  3. Attacher des médias.
    • L'utilisateur a attaché un fichier dans le chat → mettez-le dans media.
    • Vous avez un lien https public → mettez-le dans mediaUrls.
    • Vous avez seulement un fichier sur le disque (OpenClaw, Hermes, Claude Code, Codex ou un autre agent CLI) → appelez upload_media et suivez les étapes de téléchargement que sa description donne, puis mettez le publicUrl retourné dans mediaUrls. Une URL localhost ne fonctionne jamais. Avant cela, montrez à l'utilisateur exactement quels fichiers vous allez télécharger et attendez un oui : un téléchargement obtient un lien public immédiatement, et refuser la publication après ne supprime pas le fichier.
  4. Prévisualiser. Appelez preview_post avec les identifiants de canal et le brouillon. C'est gratuit et ne publie rien. Corrigez chaque problème signalé et prévisualisez à nouveau.
  5. Confirmer avec l'utilisateur. Montrez le texte final, le compte de destination, les médias et quand la publication sera diffusée. La publication est publique et certains réseaux ne peuvent pas annuler une publication, alors attendez un oui clair.
  6. Publier ou planifier. Appelez publish_post. scheduledAt: null publie maintenant ; un horodatage UTC ISO-8601 comme 2026-11-03T07:00:00Z planifie (dans le futur, au maximum 30 jours à l'avance). Convertissez vous-même l'heure locale de l'utilisateur en UTC, et s'il nomme une heure sans fuseau horaire, demandez lequel. Définissez un idempotencyKey (une chaîne stable de 8 à 128 caractères pour ce brouillon) afin qu'un appel répété ne puisse pas publier deux fois.
  7. Rapporter honnêtement. Le résultat est un reçu par réseau. Rapportez chaque réseau exactement comme retourné. unknown signifie que 1Social n'a pas pu déterminer si la publication a été diffusée — dites-le, ne l'appelez jamais un succès ou un échec.

Règles Instagram

  • Chaque publication a besoin d'une image ou d'une vidéo. Une légende seule est rejetée — demandez un média à l'utilisateur avant de rédiger.
  • Limite de légende : 2 200 caractères. Jusqu'à 30 hashtags ; 3 à 5 pertinents fonctionnent généralement mieux qu'un mur de tags.
  • Le rapport hauteur/largeur de l'image doit être entre 4:5 (portrait) et 1.91:1 (paysage). Le carré 1:1 est sûr. Les bannières larges sont rejetées par Instagram avec une erreur de "rapport hauteur/largeur".
  • PNG et JPEG fonctionnent tous les deux.
  • Pas de fils : si le brouillon a plusieurs segments, 1Social les fusionne en une seule légende. Écrivez une seule légende à la place.
  • Les liens dans les légendes ne sont pas cliquables sur Instagram. Si l'utilisateur veut du trafic, suggérez plutôt le libellé "lien dans la bio" au lieu d'une URL brute.
  • Une publication Instagram publiée ne peut pas être supprimée via 1Social — Instagram n'a pas d'API de suppression pour cela. Assurez-vous que l'utilisateur est satisfait de la légende avant de publier.

Conseils de rédaction

  • Commencez par un accroche dans les 125 premiers caractères — c'est ce qui s'affiche avant "plus".
  • Mettez les hashtags à la fin de la légende, après un saut de ligne.

Publier également sur d'autres réseaux

Le même compte 1Social peut publier une seule publication sur Instagram, TikTok, LinkedIn, X, Threads, Facebook Pages, YouTube Shorts et Bluesky en même temps : listez plusieurs identifiants de canaux depuis list_accounts. preview_post vérifie le brouillon contre chaque réseau sélectionné.

Après la publication

  • Vérifier le statut : list_posts (donnez un postId pour une publication). Il inclut les métriques d'engagement stockées lorsque le réseau les fournit.
  • Modifier une publication planifiée : update_post. Fonctionne uniquement avant que la publication ne soit diffusée.
  • Annuler la planification : cancel_post. Utilisez ceci, pas delete_post, pour une publication qui n'a pas encore été publiée.
  • Supprimer une publication publiée : delete_post, uniquement après confirmation de l'utilisateur. Rapportez par réseau ce qui a réellement été retiré : les publications Instagram, TikTok, Threads et YouTube restent en ligne et seul l'utilisateur peut les supprimer.
  • Une livraison a échoué : retry_delivery réessaie un réseau et consomme à nouveau du quota. Il est refusé pour les échecs permanents comme une connexion révoquée — l'utilisateur doit alors se reconnecter sur https://1social.dev/app.
  • Une livraison est unknown : demandez à l'utilisateur de vérifier sur le réseau. Ce n'est que lorsque l'utilisateur vous dit si la publication est en ligne que vous appelez confirm_delivery avec sa réponse. Ne devinez jamais, et ne faites jamais retry_delivery avec force sans demander — cela pourrait publier un deuxième exemplaire.

Skills associés