SKILL.md
Instagram Publisher
When to use
Use the Instagram Publisher when you need to publish carousel posts directly to an Instagram Business account. This skill handles the full workflow: uploading images to imgBB (requires your own API key from https://api.imgbb.com/), creating Instagram media containers via the Graph API, and publishing the carousel. It supports 2-10 JPEG images per post.
Instructions
Workflow
- List JPEG files in
squads/{squad}/output/images/sorted by name.
If no files found: stop and ask the user to add images before continuing.
- Present the image list to the user with AskUserQuestion to confirm order.
- Extract the caption from the content draft:
- Use the hook slide text + CTA slide text - Max 2200 characters (Instagram limit)
- Run the publish script:
`` node --env-file=.env squads/{squad}/tools/publish.js \ --images "<comma-separated-ordered-paths>" \ --caption "<caption>" ` Add --dry-run` to test the full flow without actually publishing.
- On success: save the post URL and post ID to the step output file.
- On failure: display the error and ask the user how to proceed.
Constraints
- Images: JPEG only, 2-10 per carousel
- Caption: max 2200 characters
- Requires Instagram Business account (not Personal or Creator)
- Rate limit: 25 API-published posts per 24 hours
Setup (first-time)
Copy .env.example to .env and fill in the two required variables:
INSTAGRAM_ACCESS_TOKEN=
INSTAGRAM_USER_ID=
INSTAGRAMACCESSTOKEN
Pré-requisito: conta Instagram Business conectada a uma Página do Facebook, e um app criado em developers.facebook.com (tipo: Empresa).
Para obter um token de longa duração (válido 60 dias):
- Acesse seu app → Graph API Explorer
- No dropdown do topo, selecione seu app
- Clique em "Gerar token de acesso"
- Ative as permissões:
- instagramcontentpublish - instagrambasic - pagesread_engagement
- Clique em "Gerar token de acesso" e autorize — você receberá um token de curta duração (1h)
- Converta para longa duração (60 dias) com este GET:
`` https://graph.facebook.com/oauth/accesstoken ?granttype=fbexchangetoken &clientid={APPID} &clientsecret={APPSECRET} &fbexchangetoken={TOKENCURTO} `` (APPID e APPSECRET: seu app → Configurações → Básico)_
- Copie o
access_tokenda resposta e cole em.env
O token expira em 60 dias. Repita o processo para renovar.
INSTAGRAMUSERID
- No Graph API Explorer (com o token acima), faça GET em:
`` /me/accounts ``
- Localize sua Página do Facebook na resposta e anote o
id - Faça GET em:
`` /{page-id}?fields=instagrambusinessaccount ``
- Copie o
iddentro deinstagrambusinessaccount— esse é o seu User ID
Available operations
- Publish Carousel -- Upload images and publish a carousel post to Instagram
- Dry Run -- Test the full publishing flow without actually posting (use
--dry-runflag) - Image Upload -- Upload local JPEG images to imgBB (requires API key)
- Status Check -- Monitor media container processing status before publishing