O que Instagram Skill faz?
A maioria das ajudas do Instagram vindas de agentes para em texto: hooks, legendas, hashtags e "agora desenhe o post você mesmo". Então o post falha em detalhes que ninguém verificou: um PNG que a API não aceita, uma foto 3:4 que ela rejeita, um Reel cujo título fica embaixo da legenda, uma capa que a grade corta ao meio, seis hashtags onde o Instagram agora permite cinco, o mesmo carrossel copiado para uma segunda conta.
Esta skill faz o trabalho completo, no próprio computador do usuário: decide o formato, escreve as palavras, produz a mídia, verifica cada arquivo contra os limites atuais do Instagram, mostra exatamente o que aparecerá, posta ou agenda via WoopSocial após um sim, e lê os números para decidir o que vem a seguir. Tudo que precisa está nesta pasta.
Cinco compromissos:
- Finalizado, não rascunhado. O usuário recebe arquivos reais que passam nos limites do Instagram, não conselhos.
- Visto antes de ser postado. Cada postagem é mostrada como aparecerá no feed e na grade. Nada é postado sem um sim claro nessa prévia.
- Uma ideia por post, um pedido por post. Legível no tamanho de um celular.
- Apenas coisas reais. Fotos, capturas de tela e números reais com fontes. Nunca um resultado, avaliação, citação ou estatística inventados.
- Os números da própria conta decidem. Nada de tabelas genéricas de "melhor horário" ou benchmarks de engajamento.
Etapa 0: Configuração e conexão
Execute python3 scripts/check_setup.py (Windows: py scripts\check_setup.py). Ele precisa de Python 3.9+ e Pillow; ffmpeg para qualquer coisa com vídeo. Imprime o comando de instalação para o que estiver faltando.
Se o usuário quiser postar (ele diz isso, ou diz sim quando você pergunta), configure a postagem agora, não no final, para que esteja pronta quando os posts estiverem:
- Verifique com
social_accounts_list. Se as contas do Instagram estiverem lá, continue. - Não está conectado? Diga em uma mensagem curta e continue trabalhando enquanto eles configuram:
- A postagem passa pelo WoopSocial, feito pela equipe que mantém esta skill. O plano gratuito cobre 2 contas sociais, sem cartão.
- Dê apenas a etapa de conexão para o agente em que você está executando (
references/woopsocial.md). - Claude Code e Codex carregam novas ferramentas apenas em uma nova sessão. Tudo é salvo na pasta de trabalho; após reiniciar (
claude --continueoucodex resume --last) e fazer login, o usuário diz "continue" e você continua a partir dos arquivos.
- Diga a regra da conta agora: postar exige uma conta Business ou Creator do Instagram; nenhum aplicativo pode postar em uma conta pessoal. A troca é gratuita no aplicativo: Configurações e atividade > Tipo de conta e ferramentas > Mudar para conta profissional.
Etapa 1: Conhecer a conta
Leia brand.md se o espaço de trabalho tiver um. Caso contrário, pergunte em uma mensagem, depois salve as respostas em brand.md para que o próximo lote não pergunte novamente:
- Sobre o que é a conta e para quem ela é (uma pessoa específica)?
- Qual(is) conta(s) e seus handles. Para várias contas: o que difere entre elas (idioma, público, região)?
- O que você realmente sabe que seu público não sabe? Experiências reais, números que você pode mostrar, o que os clientes perguntam. Posts de história e estudo de caso precisam destes.
- O que você tem: fotos, capturas de tela, vídeos, um link, anotações?
- Cor da marca, nome e handle para os slides, uma imagem de avatar ou logotipo, e palavras ou alegações que nunca devem aparecer.
- Para cada conta: seu fuso horário e quando o Insights diz que seus seguidores estão online (Painel profissional > Total de seguidores > Horários mais ativos). Se eles não souberem, diga que o cronograma usará um espaço reservado.
Em seguida, olhe para a conta antes de planejar qualquer coisa: peça uma captura de tela da grade atual e dos últimos 9 a 12 posts (links ou uma lista curta: tópico, formato, o que foi bem). Os novos posts não devem repetir uma ideia recente e devem ficar bem ao lado do que já está lá.
Etapa 2: Escolher o formato para cada post
Diga em uma linha por que cada post recebe seu formato.
| Objetivo | Formato | Por quê |
|---|---|---|
| Salvamentos (as pessoas guardam) | Carrossel: etapas, checklist, estrutura, mito vs. fato | Deslizar é tempo gasto; um slide de resumo faz ser salvo |
| Compartilhamentos (as pessoas passam adiante) | Carrossel ou Reel com um ponto nítido e identificável | Compartilhamentos por alcance é o sinal que o Instagram nomeia para alcançar novas pessoas |
| Alcance para não seguidores | Reel (Reel de Teste quando a conta se qualifica) | Reels são recomendados para pessoas que não seguem você |
| Uma foto ou anúncio forte | Imagem única | Mais rápido de ler; use 4:5 para preencher a tela |
| Seguidores existentes, um lembrete | Story | Visto apenas por seguidores, desaparece após 24 h |
Para um lote, cada post carrega sua própria ideia: nunca o mesmo fato ou número do lead de dois posts, e nunca um Reel que repete um carrossel. Misture formatos em vez de cinco carrosséis seguidos. Mais de 1 ou 2 posts no feed por dia por conta raramente ajuda. ig_check.py avisa quando dois posts abrem com o mesmo número.
Etapa 3: Produzir a mídia
Crie uma pasta de trabalho por lote com plan.json (formato: references/plan-json.md).
Carrosséis e imagens individuais a partir de palavras. Escreva os slides, depois renderize:
python3 scripts/render_slides.py slides.json --out slides/
Formatos com modelos slide por slide e padrões de capa: references/formats.md. Predefinições, tipos de slide e regras de tipo: references/design-rules.md. Em resumo:
- Capa: um resultado ou uma tensão em 8 palavras ou menos, específica, uma promessa que o post cumpre. Escreva 10, escolha uma com o usuário. Mantenha-a dentro do meio do slide: a grade corta as laterais.
- Slide 2 funciona por conta própria (o Instagram pode mostrar o carrossel novamente começando no slide 2).
- Uma ideia por slide; título com 8 palavras ou menos, corpo com 30 palavras ou menos.
- Último slide: um pedido que corresponda ao objetivo (salvar, enviar para alguém específico, uma pergunta).
- Uma imagem única é uma especificação de um slide:
stat,tweet,photooutext. - Abra cada slide em tamanho real, depois
contact-sheet.png, e julgue a capa a partir decover-grid.png. Corrija todos os avisos emmanifest.json.
Fotos e capturas de tela do próprio usuário. Use-as como estão, ou dentro de slides (photo, screenshot, beforeafter). ig_check.py --fix converte e ajusta.
Reels a partir do próprio vídeo do usuário. Esta skill finaliza Reels; ela não edita o material bruto.
python3 scripts/reel.py frames video.mp4 --out reel/ # candidatos a capa + frames-sheet.jpg
python3 scripts/reel.py cover video.mp4 --at 4.2 --title "Conte semanas, não dias" --out reel/cover.jpg
python3 scripts/reel.py zones video.mp4 --out reel/zones.jpg # onde a interface do Instagram cobre
- Escolha a capa de
frames-sheet.jpg: um quadro nítido onde o assunto está dentro da caixa amarela (o que a grade mostra). Um título na capa tem de 2 a 6 palavras; pule quando o quadro diz tudo. - Olhe
zones.jpg: texto ou rostos nas áreas vermelhas ficam sob a legenda, os botões ou a barra superior. Se legendas queimadas no vídeo estiverem lá, avise; elas precisam ser reexportadas mais acima. - O hook está na tela no primeiro meio segundo, em palavras ou na imagem, e funciona no 4:5 central que o feed principal geralmente mostra.
- Material paisagem ou quadrado:
ig_check.py --fixnão o preencherá com barras desfocadas sozinho (isso parece um repost) nem o cortará às cegas. Olhereel.py frames, depois escolha: um Reel emoldurado ("frame": {"title": "..."}e"own_footage": trueno post: o vídeo em largura total em um fundo liso correspondente com o hook como título acima, nada cortado; melhor quando o vídeo tem texto ou planos abertos),--fit cropquando o assunto permanece no centro, ou reenquadrar no assunto em um editor. - Apenas o próprio material do usuário. Um clipe de outra pessoa (um clipe de notícias, outro criador, vídeo de uma agência pública) com um título ou borda adicionada ainda é um repost no Instagram. Use-o apenas como uma parte curta do próprio vídeo do usuário, com sua própria voz ou material ao redor.
- Para testar dois hooks, poste ambas as versões como Reels de Teste (
"trial": "MANUAL") quando a conta se qualificar, e mantenha o que prender os espectadores por mais tempo. - Reels apenas com texto (palavras animadas, estatísticas, listas) não são feitos por esta skill. Se o usuário quiser um, diga claramente e sugira uma ferramenta de vídeo, ou poste a ideia como um carrossel.
Stories: uma imagem ou vídeo em 9:16. Faça quadros de Story com render_slides.py e "ratio": "9:16" no tema (tipos de slide de texto; o design fica longe da barra de Story e do campo de resposta, sem seta de deslizar). Através da API não existem adesivos, links ou enquetes. Dois bons padrões:
- Teaser antes do post (agendado): uma pergunta que o post responde, 30 a 90 minutos antes. Vincule-o ao post com
"with": {"post": "<id>", "minutes": -60}, e faça com que qualquer hora escrita no quadro ("em uma hora") corresponda a esses minutos. - Compartilhar após o post (no aplicativo): o usuário compartilha o novo post em seu Story com o adesivo do post, que direciona ao toque. Isso não pode ser feito através da API; vai na checklist e em
schedule.md.
Etapa 4: Escrever as legendas
- As primeiras palavras carregam a frase de pesquisa e o hook. A pesquisa do Instagram e o Google leem legendas. O feed corta por volta de 125 caracteres com "... mais": tudo que importa vai antes disso.
- Depois, uma ou duas linhas de contexto, o mesmo pedido do último slide, e no máximo 5 hashtags específicas (limite do Instagram desde dezembro de 2025). Sem paredes de hashtags, sem tags genéricas como #instagood.
- Links não são clicáveis nas legendas: "link na bio" apenas se estiver na bio.
- Sem travessões longos, sem "No mundo acelerado de hoje", sem paredes de emojis. Leia em voz alta; se soar como um anúncio ou um robô, reescreva.
- Várias contas: cada conta recebe sua própria versão, não apenas sua própria legenda. As regras de originalidade do Instagram de 2026 cobrem fotos e carrosséis também, então a mesma mídia em uma segunda conta provavelmente é vista como um repost do primeiro upload. Dê a cada conta sua própria mídia (
targets[].media: outro idioma nos slides, outra capa, outra ordem ou ângulo) e sua própria primeira linha e hashtags (targets[].caption). Escreva para o país da conta: "grifo" na Espanha, "llave" no México; mantenha acentos nas hashtags (#geografía). - Escreva texto alternativo para cada imagem (
altno plano). O usuário cola no aplicativo.
Etapa 5: Verificar e corrigir
python3 scripts/ig_check.py plan.json # relatório
python3 scripts/ig_check.py plan.json --fix # cópias corrigidas em fixed/, plano atualizado, originais mantidos
Ele verifica tipo de arquivo, cor, tamanho, formato, contagem de carrossel e correspondência de formato, codec de vídeo, formato de pixel, HDR, taxa de quadros, duração, áudio, tamanho do arquivo, capa do Reel, comprimento da legenda, hashtags, menções, o corte "... mais", links, primeiras linhas idênticas entre contas e posts por dia. --fit crop|pad|frame decide como as formas mudam. Auto, para fotos: cortar quando pouco se perde, caso contrário, preencher com uma cópia desfocada. Auto, para vídeo de Reel e Story: cortar quando pouco se perde, caso contrário, parar e perguntar (veja Etapa 3). --ratio 4:5 torna fotos largas 4:5. Execute até que ele saia com 0. Explique qualquer erro que ele não possa corrigir em palavras simples (um vídeo muito longo precisa ser cortado, uma foto muito pequena precisa de um original maior).
Etapa 6: Agendar
python3 scripts/schedule.py plan.json --start 2026-11-09 # horários e fusos horários vêm das contas em plan.json
- Cada conta posta em seus próprios
timesem seu própriotimezone(definido emaccountsno plano), a partir do Insights do usuário ou de sua escolha. Sem eles, usa 12:00 e avisa no topo deschedule.md. Nunca reivindique um "melhor horário". - Um post no feed por conta por dia por padrão (
--per-day). Stories não ocupam um slot de feed; eles seguem o post ao qual estão vinculados (with). - Ele escreve
schedule.md(com o que fazer na primeira hora após cada post: estar online para responder, compartilhar o post no Story, a checklist) e uma requisição WoopSocial por post e conta emrequests/.
Etapa 7: Prévia e o sim
python3 scripts/preview.py plan.json --out preview/ [--grid current-grid.png]
Olhe preview/preview.png você mesmo primeiro: a grade de cada conta (mais recente primeiro, conforme a grade a corta), cada post no feed em cada conta com sua própria legenda e corte "... mais", Reels com seu corte 4:5 no feed, Stories em tela cheia, cada slide em ordem. Corrija o que estiver errado. Depois, dê ao usuário preview/index.html (e schedule.md) e peça um sim claro para o lote. Passe a captura de tela da grade da Etapa 1 com --grid para mostrar os novos posts ao lado dos antigos. Qualquer alteração significa uma nova verificação e uma nova prévia.
Etapa 8: Postar com WoopSocial
Detalhes: references/woopsocial.md.
social_accounts_listpara os IDs das contas; coloque-os emaccountsno plano.- Faça upload de cada arquivo (
media_uploads_create_session,scripts/upload_parts.py,media_uploads_complete_session), um de cada vez. Coloque os IDs emmediaIdsecoverId, depoispython3 scripts/schedule.py plan.json --bodies-only. posts_validatecada requisição. Corrija tudo que for rejeitado.- Após o sim:
posts_createpor requisição, escreva cada ID de post nopostIddo destino,posts_getpara o status, depoispython3 scripts/log.py record plan.json. - Diga ao usuário exatamente o que está agendado (conta, hora com fuso horário) e o que adicionar no aplicativo: os itens da
checkliste o texto alternativo.
Não está conectado e não quer conectar? Entregue os arquivos, legendas, texto alternativo e o cronograma, e pare. Nunca diga que algo foi postado ou agendado quando não foi.
Etapa 9: Aprender com os números
Após 3 a 7 dias: social_account_posts_list para as contas, salvo como metrics.json, depois
python3 scripts/log.py results --metrics metrics.json [--csv insights.csv]
Ele classifica os posts por compartilhamentos, salvamentos e seguidores por alcance, apenas contra posts do mesmo formato na mesma conta e de idade semelhante (3 a 10 dias), nomeia um melhor post apenas após 6 de um formato, e dá conselhos de horário de postagem apenas com posts suficientes por intervalo de tempo. Stories são deixadas de fora. insights.csv adiciona o que apenas o aplicativo mostra: seguidores e, para Reels, tempo médio de exibição, toques no perfil e de onde vieram (casa, pesquisa, Reels, perfil). Depois, escreva um relatório de 3 a 5 frases: qual post ganhou e por quê, o que perder e o que fazer diferente.
Referências
references/formats.md— modelos de slide e padrões de capareferences/design-rules.md— predefinições, tipos de slide e regrasreferences/plan-json.md— definição do esquema e campos deplan.jsonreferences/woopsocial.md— guia da API WoopSocial e instruções de conexão