Communitygithub.com

niruvai/storytelling

Transforma um clipe de pessoa falando em um reel de storytelling. Exibe três cartões de imagem simples na parte superior, com um título em caixa preta e um pequeno subtítulo branco abaixo, tudo aparecendo junto em um único take contínuo com legendas no estilo TikTok (brancas, contorno preto, de 1 a 3 palavras). Use quando o usuário executar /storytelling ou pedir um reel de história, prova, "três imagens e um título", ou uma edição estilo lead-magnet em um clipe 9:16.

O que é storytelling?

Esta skill permite transformar um clipe de pessoa falando (talking-head) em um reel de storytelling profissional, ideal para redes sociais como Instagram e TikTok. Ela cria automaticamente três cartões de imagem na parte superior da tela (estatísticas, capa de carrossel, comentários ou texto), um título em caixa preta e um subtítulo branco, tudo sincronizado com um take contínuo de 4 a 8 segundos. As legendas no formato TikTok (brancas com contorno preto, 1 a 3 palavras) são geradas a partir da transcrição do áudio. A skill suporta transcrição em Bangla com configuração específica de idioma e correção manual de erros comuns do Whisper. É necessário ter o GROQ_API_KEY configurado, além de ffmpeg e Node instalados. O fluxo inclui: selecionar um clipe 9:16, transcrever com um script Python, escrever um arquivo de especificação JSON detalhando os cartões, título e zoom, executar o script de build e verificar o resultado visual antes de entregar o MP4 final.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/niruvai/claude-editing-skills-bangla/tree/main/skills/storytelling

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

/storytelling

┌──────────────────────┐
│ [4:12] [capa] [comentários] │  três cartões, todos de uma vez
│  Eu fiz este carrossel  │  título em caixa preta, 1-2 linhas
│   em alguns minutos    │
│ e está indo muito bem  │  pequeno subtítulo branco
│        (rosto)         │  um take contínuo, ligeiramente aproximado
│     carrossel inteiro  │  legendas estilo TikTok
└──────────────────────┘

Primeiro uso

A pasta desta skill é o "Diretório base" que o Claude Code mostra ao carregá-la.

SKILL_DIR="<diretório base desta skill>"   # o caminho que o Claude Code imprimiu como "Diretório base para esta skill"
KIT=$(python3 -c 'import os,sys;print(os.path.realpath(os.path.join(sys.argv[1],"..","..","kit")))' "$SKILL_DIR")
PY="$KIT/.venv/bin/python"; [ -x "$PY" ] || bash "$KIT/setup.sh"

Clipes em Bangla. Se o falante falar em Bangla, certifique-se de que REEL_LANGUAGE=bn esteja definido antes da primeira chamada words (exporte a variável ou prefixe o comando) para que o Whisper transcreva em Bangla em vez de traduzir. Escreva também todo o texto na tela (títulos, rótulos, itens) em Bangla e ancore os tempos exatamente nas palavras em Bangla como o words as imprime. O Bangla ocupa mais espaço que o Inglês no mesmo tamanho, então mantenha os títulos com 2 a 4 palavras e verifique a folha de contato para ver se não há estouro. O Whisper frequentemente escreve palavras em Bangla erradas (ex.: "ধাকার মেওর" em vez de "ঢাকার মেয়র"): antes de escrever a especificação, leia as palavras do trecho escolhido e corrija as grafias erradas diretamente em <clip>.transcript.json (altere apenas word, mantenha start/end), depois execute words novamente para que as legendas e âncoras usem as palavras corrigidas. Se um trecho longo de fala estiver faltando em words, exclua a transcrição e execute words novamente; o transcritor verifica novamente os trechos ignorados. Se o clipe não for 9:16 (um vídeo quadrado de 1080x1080, por exemplo), verifique o primeiro quadro: um corte direto pode fazer o rosto preencher a tela e cobrir os visuais, portanto avise o usuário e sugira uma gravação em 9:16.

GROQ_API_KEY deve estar definida para transcrever. Requer ffmpeg e Node.

Etapas

  1. Clipe. Qualquer cabeça falante 9:16.
  2. Palavras. Execute "$PY" "$KIT/reel.py" words <video>. Ele imprime uma frase por linha com [ends …] (quando a última palavra termina), então use isso como end. Escolha UM trecho contínuo de 4 a 8 segundos que conte uma pequena história ou mostre uma prova. Não costure pedaços, pois os cortes abruptos ficam estranhos aqui.
  3. Especificação. Escreva <clip>.storytelling.json (abaixo). Caminhos em uma especificação são relativos ao arquivo de especificação. Os três cartões são a história em imagens: o esforço, a coisa e o resultado.
  4. Construir. Execute "$PY" "$SKILL_DIR/build.py" <spec.json>.
  5. Verificar. Veja <out>.sheet.jpg:
    • Os cartões e o título não ultrapassam os 220 px superiores.
    • As legendas não cobrem a boca (mova caption_top, 1385 por padrão).
    • O título cabe em suas linhas.
  6. Entregue o caminho do mp4.

Especificação

{
  "video": "meu-clipe.mp4", "start": 42.3, "end": 47.8,
  "zoom": 1.3,
  "cards": [
    {"type": "stat", "label": "TEMPO GASTO", "value": "4:12", "unit": "minutos"},
    {"type": "cover", "image": "minha-foto.jpg", "text": "as melhores *ferramentas de ia*\npara usar quando\nvocê é *jovem e duro*"},
    {"type": "comments", "title": "Comentários", "rows": [["sarah.creates", "CARROSSEL"], ["mike.builds", "CARROSSEL!!"]]}
  ],
  "title": ["Eu fiz este carrossel", "em alguns minutos"],
  "subtitle": "e está indo extremamente bem"
}

cards aceita exatamente 3, cada um sendo:

  • image: {"src": "foto.jpg"}, uma foto quadrada.
  • cover: uma capa de carrossel, image mais text (*palavra* fica amarela, \n quebra a linha). Ela se move lentamente.
  • stat: label, value, unit e um anel.
    • O value conta para cima quando é um número ("250", "10.000") ou um tempo ("4:12").
    • ring (0 a 1) é o quanto o anel fica preenchido.
  • comments: até 4 linhas de [nome, texto].
  • text: {"big": "3×", "small": "mais salvos"}.

Os outros campos:

  • title: 1 ou 2 linhas, cada uma com no máximo cerca de 22 caracteres.
  • subtitle: uma linha curta.
  • zoom: o quanto o take é aproximado. 1.3 por padrão, 1 para nenhum.

Estilo

  • Tudo aparece ao mesmo tempo, no primeiro terço de segundo. Nunca um de cada vez.
  • O título é a história em uma respiração. O subtítulo é a recompensa.
  • Os cartões mostram coisas reais: a própria postagem do usuário, números, capturas de tela. As linhas de comentários e nomes de usuários devem ser reais, fornecidos pelo usuário. Se ele não tiver nenhum, use um cartão do tipo text ou stat em vez de inventar pessoas.

Habilidades Relacionadas