Communitygithub.com

oficialrobsonalencar-code/instagram-agent-skills-

1080x1920 세로형 릴(Reel)을 후크부터 MP4까지 컴퓨터에서 바로 렌더링하여 게시 준비를 완료합니다. 사용자가 'X에 대한 릴 만들어줘', 짧은 영상, Instagram 또는 TikTok 릴, 스크립트 포함 완성 영상을 요청하거나 아이디어, 팁, 목록, 콘텐츠를 자막이 있는 애니메이션 영상으로 변환하려 할 때 사용하세요. 짧은 인터뷰를 진행하고, 후크와 장면별 스크립트를 작성하며, 사용자의 ElevenLabs 키(선택 사항)로 내레이션을 생성하고, 사용자가 제공한 배경 음악을 믹싱한 후 Remotion으로 렌더링합니다.

instagram-agent-skills-란 무엇인가요?

이 스킬은 프롬프트만으로 Instagram 또는 TikTok용 세로형 릴(Reel) 영상을 완전히 자동으로 생성합니다. 사용자가 '달리기 초보자의 3가지 실수에 대한 릴 만들어줘'와 같은 요청을 하면, 후크 작성, 장면별 스크립트 생성, 내레이션(Text-to-Speech), 배경 음악 믹싱, 최종 MP4 렌더링까지 모든 과정을 로컬에서 처리합니다. 편집 앱에 업로드할 필요가 없습니다. 출력되는 영상은 타이포그래피 중심으로, 어두운 배경에 부드러운 빛 효과가 있으며 큰 제목, 번호 매기기 목록, 애니메이션 숫자, 전/후 비교 카드, '댓글에 단어를 입력하세요' 유형의 CTA 장면을 포함합니다. 자막은 단어 단위로 중앙에 나타나며 굵은 글씨와 이탤릭체를 번갈아 사용하여 시각적 효과를 줍니다. 이 스킬은 Node 18 이상 환경에서 Remotion을 사용하여 로컬 렌더링을 수행하며, ElevenLabs API 키가 있으면 고품질 내레이션을 추가할 수 있습니다. 핵심은 사용자가 아이디어만 제공하면 완성된 영상을 즉시 받을 수 있다는 점으로, 콘텐츠 제작 워크플로우를 획기적으로 단축합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/oficialrobsonalencar-code/instagram-agent-skills-/tree/HEAD/skills/reel

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Reel pronto, renderizado na sua máquina

Com um pedido como "faz um reel sobre 3 erros de quem começa a correr, para o meu perfil de corrida", você entrega o reel pronto: gancho, roteiro cena a cena, narração, trilha e o MP4 vertical 1080x1920, renderizado localmente com Remotion. Nada é enviado para app de edição.

O vídeo é tipográfico: fundo escuro com um brilho suave, cenas com título grande, lista numerada, número animado, cartão de antes/depois e um bloco final "Comenta PALAVRA", com a legenda aparecendo palavra por palavra no centro, alternando peso forte e itálico.

<skill> abaixo é a pasta desta skill (onde está este SKILL.md).

Pré-requisitos

  • Node 18 ou mais novo (node -v). Obrigatório.
  • ffmpeg (opcional). Só para nivelar o volume da trilha. Sem ele, a música entra como está. Mac: brew install ffmpeg. Windows: winget install ffmpeg. Linux: sudo apt install ffmpeg.
  • Chave do ElevenLabs (opcional). Sem ela o reel sai sem voz, só com legenda animada e trilha.
  • Uns 600 MB livres para o Remotion (instalado uma vez) e o navegador que ele baixa no primeiro render. Internet no primeiro render, para baixar as fontes do Google Fonts.

O fluxo, em 7 passos

1. Entrevista rápida (uma mensagem só)

Pergunte tudo de uma vez, com sugestão padrão entre parênteses, para a pessoa responder em uma linha. Se ela já disse alguma coisa no pedido, não pergunte de novo.

  1. Nicho e perfil: sobre o que é o perfil?
  2. Público: quem assiste? (iniciante no assunto)
  3. Objetivo do reel: alcance, salvar, ou gerar comentário para mandar um material? (comentário)
  4. CTA: qual palavra a pessoa comenta e o que recebe? (ex.: "Comenta GUIA e eu te mando o guia")
  5. Tom: direto, didático, provocativo, leve? (direto)
  6. Voz e música: tem chave do ElevenLabs? Tem uma música (MP3 seu ou de biblioteca livre)? Quer cores específicas? (sem voz, sem música, tema escuro com destaque amarelo)

Nunca peça para a pessoa colar a chave no chat. Ela vai no arquivo .env (passo 4).

2. Gancho e roteiro

Escreva antes de qualquer código e mostre em bloco: gancho, cenas numeradas (tipo + o que aparece na tela + a fala) e a duração estimada. Peça ok antes de gerar narração, porque a narração gasta crédito do ElevenLabs. Sem narração, pode seguir direto se a pessoa pediu "só faz".

Gancho (cena 1, até 2 segundos)

  • No máximo 6 ou 7 palavras faladas. Se precisa de mais, não é gancho, é introdução.
  • A tela já mostra o gancho inteiro no primeiro quadro (o tipo gancho faz isso).
  • Formatos que seguram: pergunta com a dor ("Treina todo dia e nada muda?"), afirmação contra o senso comum ("Postar todo dia está te atrapalhando"), número concreto ("3 erros que travam seu primeiro 5 km"), consequência ("Isso aqui faz você perder cliente no direct").
  • Nada de "Oi, gente", "Neste vídeo", "Você sabia" ou apresentação pessoal.

Roteiro (20 a 45 segundos no total)

  • De 4 a 8 cenas. Cada cena entre 1,5 e 6 segundos: no ritmo de 2,9 palavras por segundo, são de 5 a 17 palavras de fala por cena.
  • Fala contínua, não picada. O texto de todas as cenas, lido em sequência, precisa soar como uma pessoa falando sem parar: cada cena continua a frase ou a ideia da anterior. Nada de frases de uma palavra, reticências para "dar pausa" ou listas faladas sem verbo. Escreva primeiro o texto corrido inteiro e só depois corte nas cenas.
  • Uma ideia por cena. A tela mostra a versão curta (título, itens, número); a fala explica.
  • Números curtos em dígito na fala ("23 horas", "1,6 grama") para a legenda ficar limpa.
  • Promessa só do que é verdade. Não invente estatística: se não tem fonte, use outro tipo de cena.
  • Última cena é sempre cta, e a fala diz a palavra em voz alta ("Comenta GUIA que eu te mando o passo a passo").

3. Montar o estúdio (uma vez) e a pasta do reel

O estúdio é uma pasta com o Remotion instalado; cada reel novo é só uma subpasta com o seu cenas.json, então o npm install acontece uma vez só.

# primeira vez
cp -R <skill>/template ~/reels-estudio
cd ~/reels-estudio && npm install

# a cada reel (troque <slug> por um nome curto, ex.: 3-erros-corrida)
mkdir -p ~/reels-estudio/reels/<slug>/public

Escreva ~/reels-estudio/reels/<slug>/cenas.json (formato abaixo). O cenas.json da raiz do estúdio é só o exemplo que abre no Studio; não precisa mexer nele.

4. Narração (só com chave do ElevenLabs)

A chave fica em ~/reels-estudio/.env (copie de <skill>/.env.exemplo):

ELEVENLABS_API_KEY=sua_chave
ELEVENLABS_VOICE_ID=id_da_voz   # opcional

Os scripts leem do ambiente ou desse .env e nunca imprimem a chave. Não leia, não mostre e não copie a chave para nenhum outro lugar.

cd ~/reels-estudio
node <skill>/scripts/narrar.mjs --projeto reels/<slug> --simular   # valida, mostra custo, não chama a API
node <skill>/scripts/narrar.mjs --vozes-pt                         # vozes pt-BR da biblioteca pública
node <skill>/scripts/narrar.mjs --projeto reels/<slug>             # gera de verdade
  • Rode --simular antes, sempre. Ele valida o cenas.json e diz quantos caracteres (créditos) a narração vai consumir.
  • Voz: deixe a pessoa escolher. --vozes-pt lista vozes em português do Brasil da biblioteca pública; para usar uma delas, a pessoa adiciona à conta dela na Voice Library do site ("Add to my voices") e você passa --voz <id> ou põe ELEVENLABS_VOICE_ID no .env. --vozes lista as que já estão na conta. Sem escolha, o script usa uma voz pré-pronta do ElevenLabs que fala português com sotaque não nativo: avise isso.
  • O texto inteiro vai numa chamada só (/v1/text-to-speech/{voice_id}/with-timestamps), para a entonação sair contínua. Os tempos de cada caractere viram o tempo de cada palavra (legenda sincronizada) e o tempo de cada cena.
  • Saída: reels/<slug>/public/narracao.mp3 e public/palavras.json, e o cenas.json passa a apontar para eles. Rodar de novo com o mesmo texto e a mesma voz não gasta crédito; para outra tomada, --refazer. --velocidade 1.08 acelera (0.7 a 1.2).
  • Mudou a fala depois de narrar? Rode narrar.mjs de novo. A legenda vem do áudio.

Sem chave: pule este passo. O reel sai sem voz, com a legenda animada no tempo estimado pela fala (2,9 palavras por segundo) e a trilha, se houver.

5. Trilha (só se a pessoa fornecer)

A música vem da pessoa: uma faixa dela ou de biblioteca livre (YouTube Audio Library, Pixabay Music), respeitando a licença de cada faixa. Nunca baixe música de site de "download de MP3", de vídeo do YouTube ou de qualquer fonte de licença duvidosa, nem sugira isso. Sem trilha, o reel sai sem música.

node <skill>/scripts/mixar.mjs /caminho/da/musica.mp3 --projeto reels/<slug>
node <skill>/scripts/mixar.mjs /caminho/da/musica.mp3 --projeto reels/<slug> --inicio 12   # pula a introdução

Com ffmpeg, o script corta no tamanho do reel (repete a música se for curta), nivela o volume e põe fade de entrada e saída. Sem ffmpeg, copia como está. No render, a trilha fica baixa e abaixa sozinha quando há voz (ducking simples na composição). Volume: volumeTrilha no cenas.json, de 0 a 1 (padrão 0,3 com narração, 0,8 sem).

Se a pessoa trouxer a música depois da narração, rode mixar.mjs depois de narrar.mjs para o corte usar a duração real.

6. Conferir, olhar e renderizar

cd ~/reels-estudio
node <skill>/scripts/checar.mjs --projeto reels/<slug>

Corrija todo ✖ (erro) e leia os ! (avisos). Depois, olhe 3 quadros antes do render (gancho, meio, CTA). Pegue os tempos na saída do narrar.mjs ou multiplique os segundos por 30:

npx remotion still Reel out/<slug>-q1.png --props=reels/<slug>/cenas.json --public-dir=reels/<slug>/public --frame=30
npx remotion still Reel out/<slug>-q2.png --props=reels/<slug>/cenas.json --public-dir=reels/<slug>/public --frame=<meio>
npx remotion still Reel out/<slug>-q3.png --props=reels/<slug>/cenas.json --public-dir=reels/<slug>/public --frame=<fim-20>

Abra as imagens e confira texto cortado, linha órfã e sobreposição. Então renderize:

npx remotion render Reel out/<slug>.mp4 --props=reels/<slug>/cenas.json --public-dir=reels/<slug>/public

Um reel de 30 s leva de 1 a 4 minutos. Em máquina fraca, some --concurrency=2. Para um rascunho rápido, --scale=0.5 (sai em 540x960).

7. Entregar com o checklist

Entregue o caminho do MP4 (~/reels-estudio/out/<slug>.mp4), o roteiro final e a sugestão de legenda do post. Antes, confirme e diga que conferiu:

  • Contraste: a legenda lê bem sobre o fundo (o checar.mjs mede; mínimo 4,5:1).
  • Nada parado mais de ~3 s: nenhuma cena acima de 6 s e nenhuma pausa longa sem legenda.
  • Gancho em até 2 s, já visível no primeiro quadro.
  • CTA no fim, na tela e na fala, com a palavra certa.
  • Duração entre 20 e 45 s.
  • Com voz: a legenda bate com a fala (veja um trecho do meio no MP4).
  • Os PNGs de prévia em out/ podem ser apagados.

O cenas.json

{
  "cores": { "fundo": "#0E0F12", "texto": "#F4F4F2", "destaque": "#FFC94A", "suave": "#9A9CA3", "sobreDestaque": "#0E0F12" },
  "fonte": "Inter",
  "fonteItalica": "Instrument Serif",
  "legenda": true,
  "narracao": null,
  "palavras": null,
  "trilha": null,
  "cenas": [
    { "tipo": "gancho", "titulo": "Treina todo dia e nada muda?", "destaque": "nada muda",
      "fala": "Treina todo dia e nada muda?" },
    { "tipo": "titulo", "titulo": "O problema não é o treino.", "subtitulo": "É o que acontece nas outras 23 horas.",
      "fala": "O problema quase nunca é o treino, é o que você faz nas outras 23 horas." },
    { "tipo": "lista", "titulo": "Os 3 vilões",
      "itens": ["Dormir menos de 7 horas", "Comer pouca proteína", "Repetir a mesma carga"],
      "fala": "São três vilões: dormir menos de sete horas, comer pouca proteína e repetir a mesma carga por meses." },
    { "tipo": "numero", "de": 0, "ate": 1.6, "decimais": 1, "sufixo": " g", "rotulo": "de proteína por quilo de peso, por dia",
      "fala": "Uma referência comum para quem treina é 1,6 grama de proteína por quilo, todo dia." },
    { "tipo": "antes-depois", "antes": "Treino novo toda semana", "depois": "Mesmo treino, carga subindo",
      "fala": "Em vez de trocar o treino toda semana, mantenha o mesmo e suba a carga." },
    { "tipo": "cta", "chamada": "Comenta", "palavra": "PLANO", "promessa": "que eu te mando o checklist das 23 horas",
      "fala": "Comenta PLANO que eu te mando o checklist das 23 horas." }
  ]
}

O mesmo exemplo está em <skill>/exemplos/cenas.exemplo.json.

Tipos de cena

Todas têm fala (obrigatória) e duracao em segundos (opcional; só vale sem narração).

tipocamposuso
ganchotitulo, destaquePrimeira cena. Título enorme; destaque é o trecho em itálico na cor de destaque. Se o título é igual à fala, a legenda não repete.
titulotitulo, subtitulo, destaqueUma afirmação forte. Título até ~50 caracteres.
listatitulo, itens (2 a 5)Itens numerados entrando um a um. Cada item até ~30 caracteres.
numeroate, de, prefixo, sufixo, decimais, rotuloNúmero que conta até o valor. Ex.: "prefixo": "R$ ", "sufixo": "%".
antes-depoisantes, depois, rotuloAntes, rotuloDepoisDois cartões; o "depois" entra no meio da cena, em destaque.
ctapalavra, chamada, promessaÚltima cena. "Comenta" + PALAVRA num bloco + o que a pessoa recebe. Palavra até 9 letras.

Cores e fontes

  • cores: qualquer cor #rrggbb. O padrão é neutro escuro com destaque amarelo. Para tema claro, inverta fundo e texto e escolha um destaque escuro o bastante. O checar.mjs reprova contraste baixo.
  • fonte e fonteItalica: nomes de famílias do Google Fonts (ex.: "Montserrat", "Playfair Display"). A fonte precisa ter peso 900. Use "sistema" para não baixar nada. Se a família não existir ou faltar internet, o render segue com a fonte do sistema.
  • legenda: false desliga a legenda palavra por palavra.

Problemas comuns

  • "palavras.json é de outra versão do cenas.json": a fala mudou depois da narração. Rode narrar.mjs de novo.
  • ElevenLabs 401: chave errada ou sem permissão de text-to-speech. 404: a voz não está na conta; adicione pela Voice Library.
  • Texto saindo da tela: encurte o título ou os itens; o checar.mjs avisa os longos.
  • Render lento ou travando: --concurrency=2, feche o navegador, e confira o espaço em disco.
  • Primeiro render demora mais: o Remotion baixa um navegador headless (uma vez só).

O que esta skill não faz

  • Não filma nem usa vídeo gravado, imagem ou avatar: o reel é tipográfico (texto, número, cartões). Para editar filmagem, use outra ferramenta.
  • Não clona voz nem gera voz sem a chave do ElevenLabs da própria pessoa.
  • Não escolhe nem baixa música: a trilha é sempre fornecida pela pessoa.
  • Não publica no Instagram nem agenda post.
  • O ducking é simples (a música baixa quando há fala); não substitui uma mixagem profissional.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬