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.
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:
Cerca de 20 minutos, uma vez só
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.
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.
config.json, nunca manda em print, nunca sobe pro GitHub.{
"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
python3 scripts/hospedar.py ~/Downloads/meu-reels.mp4
Ele sobe pro seu WordPress e devolve a URL pública. Copia ela.
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.
--agora, mas só quando tiver certeza.python3 scripts/publicar.py limite
São 25 publicações por 24 horas, contando de forma corrida, não à meia-noite.
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.
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.
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.
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.
-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.É 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"
| Item | Regra |
|---|---|
| Reels | 1080x1920, até 90 segundos, no máximo 100 MB |
| Formato | MP4 com vídeo H.264 e áudio AAC |
| Foto | JPEG, até 8 MB |
| Legenda | até 2200 caracteres, até 30 hashtags |
| Limite | 25 publicações por 24 horas |
| Container | vale 24 horas depois de criado |
| Mensagem | O que é |
|---|---|
(#10) Application does not have permission | o app não tem permissão de publicar. Volta no passo 02 |
Session key invalid | token vencido ou de outro tipo. Gera de novo |
Container fica em IN_PROGRESS pra sempre | a URL não é pública de verdade, ou o mp4 está fora do padrão |
| Publicou e ficou quadrado | isso é o compositor da web do Instagram, não a API. Pela API sai 9:16 |
| WordPress recusou o upload | senha de aplicativo errada, ou arquivo maior que o limite do servidor |
| Publicou com música, mas saiu mudo | o arquivo subiu sem áudio. Metadado de música não é som, tem que mixar antes. Parte 3 |
403 ou 410 ao baixar a faixa | a URL do som expira em horas. Liste de novo e o script pega a nova |
Please check the security code | método de 2 fatores errado. Autenticador é "3", SMS é "1" |
| O código de 2 fatores nunca chega | quem dispara o envio é o passo de escolher o método. E por WhatsApp não chega, troque para autenticador |