Mentoria Claude Code · Daniel Toledo

Publicar no Instagram pelo terminal

Do zero até o seu primeiro Reels publicado por comando, sem abrir o aplicativo. É a peça que fecha a esteira: você grava, edita, gera a capa e publica, tudo do mesmo lugar. E na Parte 3, com o som em alta do Instagram junto.

São duas vias, e a escolha vem antes de tudo Vídeo com a sua voz, gravação de tela, carrossel e foto vão pela API oficial, Partes 1 e 2. Vídeo que vive de trilha, o POV, vai pela Parte 3. Pela via oficial ele sai mudo, porque a API da Meta não anexa som do catálogo licenciado.

O que trava todo mundo, e ninguém avisa

Entenda isso agora e você economiza duas horas

O Instagram não aceita arquivo do seu computador. Ele baixa o vídeo de uma URL pública, do seu servidor. Não existe "enviar arquivo" na API.

Por isso o caminho é sempre esse, e o segundo passo é o que quase todo tutorial esquece de contar:

arquivo no seu Mac hospedar URL pública publicar

Parte 1 · Ligar o acesso

Cerca de 20 minutos, uma vez só

0110 min

Deixar a conta pronta

A conta do Instagram precisa ser Profissional, comercial ou criador. Se ainda for pessoal, muda em Configurações do app.

Depois entra em developers.facebook.com e cria um aplicativo, ou usa um que já exista.

028 min

Gerar o token

Dentro do app, o caminho de hoje é:

Casos de uso    Gerenciar mensagens e conteúdo no Instagram
                Configuração da API com login do Instagram
                2. Gerar tokens de acesso

Se a sua conta não estiver na lista, clica em Adicionar conta, faz login com ela e autoriza. Depois clica em Gerar token.

Esse token posta no seu nomeQuem tiver ele publica na sua conta. Guarda no config.json, nunca manda em print, nunca sobe pro GitHub.
Não tente usar o Explorador da Graph APIAquele dropdown de permissões não mostra as do Instagram e você vai perder tempo. O caminho acima é o certo.
032 min

Preencher o config.json

{
  "token": "IGAA...",
  "ig_user_id": "17841406454763191",
  "wp_url": "https://seusite.com.br",
  "wp_usuario": "admin",
  "wp_senha_app": "xxxx xxxx xxxx xxxx"
}

O ig_user_id aparece embaixo do nome da conta, na mesma tela onde você gerou o token.

A senha de aplicativo do WordPress se cria em Usuários → seu perfil → Senhas de aplicativo. Não é a senha normal de login.

Testa se funcionou:

python3 scripts/publicar.py conta
Se responder com o seu @, acabou a parte chata.O resto é comando.

Parte 2 · Publicar

01

Hospedar o arquivo

python3 scripts/hospedar.py ~/Downloads/meu-reels.mp4

Ele sobe pro seu WordPress e devolve a URL pública. Copia ela.

02

Publicar o Reels

python3 scripts/publicar.py reels \
  --video "https://seusite.com.br/wp-content/uploads/2026/08/meu-reels.mp4" \
  --legenda "sua legenda aqui, com um CTA só"

O script cria o container, espera o Instagram processar e só então pergunta se pode publicar. Vídeo demora de 1 a 5 minutos, é normal.

Ele sempre pergunta antesPublicar é irreversível na prática. Se quiser pular a pergunta, use --agora, mas só quando tiver certeza.
03

Conferir o limite

python3 scripts/publicar.py limite

São 25 publicações por 24 horas, contando de forma corrida, não à meia-noite.

Parte 3 · Publicar com o som em alta

O que a API oficial não faz, e como se resolve

O catálogo licenciado só existe dentro do aplicativo. Aquelas músicas que empurram o Reels na distribuição não estão na API oficial. Quem alcança elas é a biblioteca instagrapi, que fala com a mesma API interna que o seu iPhone usa.

Isso é API privada, fora dos termos da Meta Existe risco de a conta ser sinalizada. As três defesas são: sessão salva e reaproveitada, aparelho fixo, e teto de 2 posts por dia. Não fique tentando login em sequência, é isso que queima conta.
015 min

Entrar uma vez e nunca mais

python3 scripts/postar-reels-com-musica.py --guardar-senha
python3 scripts/postar-reels-com-musica.py --guardar-chave
python3 scripts/postar-reels-com-musica.py --entrar

A senha vai pro Chaveiro do macOS, criptografada. A chave é o segredo do app autenticador, aquele código comprido que aparece em Central de Contas → Senha e segurança → Autenticação de dois fatores → App de autenticação → Configurar de outra forma.

Com os dois guardados, o terminal gera o código de 2 fatores sozinho e reentra sem você por perto. Sem eles, o dia que a sessão vencer a automação para.

2 fatores por WhatsApp não funciona aquiTroque para app autenticador. Foi o que destravou.
022 min

Escolher o som

python3 scripts/postar-reels-com-musica.py --em-alta
python3 scripts/postar-reels-com-musica.py --buscar "melodic techno"

Sai uma lista com o id de cada faixa. Sempre liste antes de postar, porque não existe jeito de buscar uma faixa pelo id. O script guarda o que foi listado e é dali que ele tira a faixa na hora de publicar.

03

Ouvir antes de publicar

python3 scripts/postar-reels-com-musica.py --postar --testar \
  --video pov.mp4 --legenda LEGENDA.txt --musica 1501637230597249

Ele baixa a faixa, corta o trecho em alta, grava no vídeo e para. Você ouve o arquivo .com-musica.mp4 e só então tira o --testar.

A pegadinha que fez o primeiro Reels sair mudo Anexar a música pela API só grava o metadado. O Instagram cria a atribuição, a página do som aparece embaixo do vídeo, e mesmo assim não sai som nenhum, porque a música não foi mixada no arquivo. Quem mixa, no app, é o seu celular. Por isso o script baixa a faixa e grava ela no vídeo antes de subir, e manda o metadado junto. Aí fica audível e atribuído.
O vídeo tem que chegar mudo Renderize o POV com -c:v copy -an. Trilha gravada antes briga com a música do catálogo. E depois de publicado não dá pra trocar o áudio de um Reels, só apagando e repondo.

Deixar o Claude fazer

É pra isso que a pasta existe

cd ~/Downloads/PUBLICAR-NO-INSTAGRAM
claude

Tem um CLAUDE.md e um agente publicador aqui dentro. Ele já sabe o fluxo, o limite e a regra da URL pública. Você fala:

"sobe o vídeo que está em Downloads e publica com essa legenda"

As especificações que o Instagram exige

ItemRegra
Reels1080x1920, até 90 segundos, no máximo 100 MB
FormatoMP4 com vídeo H.264 e áudio AAC
FotoJPEG, até 8 MB
Legendaaté 2200 caracteres, até 30 hashtags
Limite25 publicações por 24 horas
Containervale 24 horas depois de criado

Quando der errado

MensagemO que é
(#10) Application does not have permissiono app não tem permissão de publicar. Volta no passo 02
Session key invalidtoken vencido ou de outro tipo. Gera de novo
Container fica em IN_PROGRESS pra semprea URL não é pública de verdade, ou o mp4 está fora do padrão
Publicou e ficou quadradoisso é o compositor da web do Instagram, não a API. Pela API sai 9:16
WordPress recusou o uploadsenha de aplicativo errada, ou arquivo maior que o limite do servidor
Publicou com música, mas saiu mudoo arquivo subiu sem áudio. Metadado de música não é som, tem que mixar antes. Parte 3
403 ou 410 ao baixar a faixaa URL do som expira em horas. Liste de novo e o script pega a nova
Please check the security codemétodo de 2 fatores errado. Autenticador é "3", SMS é "1"
O código de 2 fatores nunca chegaquem dispara o envio é o passo de escolher o método. E por WhatsApp não chega, troque para autenticador