instagram-publisher
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 a temporary public host (catbox.moe), 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:
Addnode --env-file=.env squads/{squad}/tools/publish.js \ --images "<comma-separated-ordered-paths>" \ --caption "<caption>"--dry-runto 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=
INSTAGRAM_ACCESS_TOKEN
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:
instagram_content_publishinstagram_basicpages_read_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:
(APP_ID e APP_SECRET: seu app → Configurações → Básico)https://graph.facebook.com/oauth/access_token ?grant_type=fb_exchange_token &client_id={APP_ID} &client_secret={APP_SECRET} &fb_exchange_token={TOKEN_CURTO} - Copie o
access_tokenda resposta e cole em.env
O token expira em 60 dias. Repita o processo para renovar.
INSTAGRAM_USER_ID
- 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=instagram_business_account - Copie o
iddentro deinstagram_business_account— 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 catbox.moe for temporary public hosting
- Status Check -- Monitor media container processing status before publishing
Weekly Installs
8
Repository
renatoasse/opensquadGitHub Stars
1.0K
First Seen
Mar 15, 2026
Security Audits
Installed on
amp8
cline8
opencode8
cursor8
kimi-cli8
codex8