Communitygithub.com

akachandan1/studio-de-video

Adicione legendas estilizadas e sincronizadas por palavra (e um gancho opcional que prende a atenção) a um vídeo com pessoa falando. O usuário fornece um vídeo; você transcreve, mostra cada estilo de legenda renderizado no próprio vídeo, o usuário escolhe um estilo e um gancho, e você renderiza o MP4 legendado. Use quando o usuário enviar/fornecer um vídeo e disser "legendar isso", "adicionar legendas", "criar legendas", "estilos de legenda", "adicionar um gancho" ou invocar /caption-video.

O que é studio-de-video?

Esta skill automatiza a criação de legendas estilizadas e sincronizadas palavra por palavra para vídeos com pessoas falando, tudo executado localmente com HyperFrames, sem necessidade de After Effects. O fluxo começa com a transcrição do vídeo usando WhisperX, seguido pela exibição de um catálogo visual de estilos de legenda (como Lime Hook, Clean Box, Neon) renderizados no próprio vídeo do usuário. O usuário escolhe um estilo e, opcionalmente, um gancho textual extraído automaticamente da fala. A skill também oferece refinamentos como ajuste de cor, tamanho, posição das legendas e um pós-processamento opcional (polish) que aplica correção de cor, redução de ruído, compressão de voz e música de fundo. Projetada para desenvolvedores e criadores de conteúdo, suporta revisões iterativas e pode ser usada com Claude Code, Cursor, Codex ou outros agentes que executem scripts Python e comandos npm.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/akachandan1/video-studio/tree/HEAD/.claude/skills/caption-video

Perguntar na sua IA favorita

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

Documentação

Legendar um vídeo

O usuário fornece um vídeo com uma pessoa falando. Ele escolhe a partir do catálogo de estilos de legenda, que é pré-visualizado no próprio vídeo, e você entrega o MP4 legendado. Tudo é executado localmente com HyperFrames. After Effects nunca é necessário.

Kit: .claude/skills/caption-video/kit/ dentro do repositório do estúdio. Os projetos são criados em videos/captions/<nome>/ e os vídeos finalizados vão para out/captions/<nome>.mp4 (ambos relativos à raiz do estúdio).

A partir da raiz do estúdio, defina K="$PWD/.claude/skills/caption-video/kit" e execute python3 "$K/caption.py" … (use aspas nos caminhos; as pastas podem conter espaços). Use o python do venv do estúdio (.venv/bin/python) se numpy/scipy estiverem faltando no python do sistema — setup/setup.sh o cria.

Fluxo

1. Obter o vídeo

Se nenhum caminho de vídeo foi fornecido, peça um. Verifique se ele existe e tem uma pessoa falando. Execute:

python3 "$K/caption.py" new "<caminho do vídeo>" <nome-curto>

Isso copia o vídeo, o recodifica para H.264 e o transcreve palavra por palavra com WhisperX. A primeira execução em um tempo pode levar um minuto. Vídeos longos levam aproximadamente o tempo real ÷ 4.

2. Mostrar a transcrição

Imprima a transcrição da saída do comando em um bloco legível. Aponte quaisquer erros prováveis, especialmente nomes de marcas e jargões (nomes de produtos, "HyperFrames", siglas), e peça ao usuário para confirmar ou corrigi-los. As correções vão em --fix "errado=correto,…" no momento da construção. Se a transcrição parecer sem sentido, ou o áudio não tiver fala, pare e avise. Não legende palavras inventadas.

3. Mostrar todos os estilos no vídeo do usuário

Execute python3 "$K/caption.py" styles para a lista e python3 "$K/caption.py" preview <nome> para a folha visual. A folha está em videos/captions/<nome>/previews/styles.png. Observe-a você mesmo, depois envie-a com SendUserFile (exibição render). Ao lado, forneça a lista numerada com a linha "melhor para" de cada estilo:

  1. Lime Hook: o visual padrão (Anton em maiúsculas, palavra falada em verde-limão)
  2. Karaoke Pop: grandes explosões de 2 palavras, palavra falada em amarelo
  3. One Word: uma palavra gigante de cada vez
  4. Clean Box: texto escuro em um cartão branco, marcador na palavra falada
  5. Editorial: frase calma em minúsculas, palavras-chave em itálico com serifa
  6. Subtitle: legendas pequenas de frase completa
  7. Neon: brilho ciano na palavra falada

Recomende um em uma única linha com base no conteúdo: hype ou social → 1 ou 2, explicativo ou anúncio → 4, história de fundador ou premium → 5, entrevista ou podcast → 6, tecnologia ou IA → 7. Em seguida, peça para eles escolherem um número. Se o catálogo em caption.py tiver mudado, liste o que styles imprime em vez desta cópia.

4. Gancho (opcional)

Sugira 3 ganchos retirados do que o falante realmente diz. Comece com o número, resultado ou contradição mais surpreendente, use de 4 a 8 palavras e mantenha o payoff em uma única palavra grande. Formate cada um com a sintaxe de gancho, depois pergunte com AskUserQuestion: três opções de gancho mais "Sem gancho" (o usuário também pode digitar o seu próprio).

A sintaxe do gancho usa uma linha por |, cada uma começando com seu estilo:

  • s: introdução em itálico com serifa ("Como", "Por que")
  • c: configuração em maiúsculas condensadas brancas
  • b: a grande palavra de payoff circulada (1–2 palavras)
  • l: reviravolta em maiúsculas verde-limão
  • r: pequena etiqueta em itálico

Exemplo: s:Como|c:Eu alcancei|b:300k+|l:sem anúncios|r:visualizações. O gancho deve corresponder ao que o vídeo entrega nos primeiros 10 segundos.

4b. Polimento (ofereça; execute quando pedirem correção de cor, áudio mais limpo, corte ou música)

python3 "$K/polish.py" <nome> [--grade clean|cinematic|none] [--music calm|none] [--music-level 1.0] [--denoise 100]
  • Corte: remove silêncio antes da primeira palavra e depois da última (mantém 0,3 s e 0,9 s), e ajusta a transcrição para corresponder.
  • Correção de cor: clean (padrão) dá pele quente e saudável, contraste suave e uma vinheta sutil. cinematic é mais profundo e frio. Antes de escolher, compare um quadro de cada um com o original e observe.
  • Voz: remoção de ruído DeepFilterNet3 (~/.venvs/dfn, criado por setup.sh; nunca instale globalmente, precisa de numpy<2), em seguida, um passa-altas, realce de presença, de-esser e compressão suave.
  • Música: uma base sintetizada de piano calmo e pad. No nível 1, fica cerca de 20 dB abaixo da voz nas pausas e cerca de 25 dB abaixo enquanto falam. Use --music-level 0.6 para mais silencioso ou 1.5 para mais presente.
  • Os originais são mantidos como source_orig.mp4 / transcript_orig.json, então o polimento pode ser executado novamente com quaisquer configurações. Após o polimento, execute build e render novamente.
  • Mencione quaisquer tropeços ou falsos começos na abertura ("no presente, no momento…"). Cortá-los causa um pequeno corte brusco, então pergunte antes de fazê-lo.

5. Construir, verificar, renderizar

python3 "$K/caption.py" build <nome> --style <chave> [--hook "…"] [--hot "palavra,palavra"] [--fix "a=b"]
cd "videos/captions/<nome>" && npx --yes [email protected] check
python3 "$K/caption.py" render <nome>
  • --hot lista palavras que permanecem na cor de destaque. Escolha 2 a 5 palavras de payoff; números são automaticamente marcados como quentes.
  • check avisos de contraste no momento de desaparecimento do gancho são esperados. Corrija quaisquer erros reais antes de renderizar.
  • Antes de renderizar um gancho, tire um snapshot (npx --yes [email protected] snapshot . --at 1.6 --no-end --describe false) e verifique se ele não cobre o rosto. Quando o rosto estiver no alto do quadro (sentado ou plano médio), mova o gancho para o peito com --hook-y 0.43; o sombreamento o segue automaticamente.
  • Antes de enviar, extraia 3 a 4 quadros de out/captions/<nome>.mp4 e observe-os. As legendas não devem cobrir a boca ou os olhos. Se cobrirem, reconstrua com --cap-y (número maior = mais baixo na tela).
  • Filmagem gravada de lado (câmera virada de lado, sem metadados de rotação) mostra a pessoa deitada de lado na folha de contato. Gire-a primeiro (ffmpeg -vf transpose=2 = 90° anti-horário, ou transpose=1 = horário; verifique um quadro) para videos/_caption-inputs/, então execute new nesse arquivo.
  • Envie o MP4 com SendUserFile e forneça seu caminho como um link.

6. Revisões

As configurações persistem em videos/captions/<nome>/caption.json, então uma revisão é apenas build <nome> --<opção> … seguido por render <nome>. Pedidos comuns:

  • Estilo diferente: --style.
  • Maior ou menor: --size 1.2.
  • Mais alto ou mais baixo: --cap-y 0.7.
  • Menos palavras por legenda: --words 2.
  • Cor diferente: --accent "#FF4D3D".
  • Alterar o gancho: --hook; --hook "" o remove.
  • Duração do gancho: --hook-dur 3.5.

Eles também podem abrir no HyperFrames Studio por conta própria com cd videos/captions/<nome> && npm run dev.

Fatos de configuração (se algo quebrar)

  • A transcrição chama ~/.claude/skills/embedded-captions/scripts/transcribe.cjs com HYPERFRAMES_ROOT=~/.hyperframes-root, uma instalação do HyperFrames CLI 0.8.147 com um link simbólico packages/cli/dist/cli.js. Se algum estiver faltando, reinstale: npx hyperframes skills update embedded-captions, então reconstrua ~/.hyperframes-root (npm install [email protected] e crie o link simbólico node_modules/hyperframes/dist/cli.js para packages/cli/dist/cli.js).
  • As fontes estão em kit/fonts/ (todas SIL OFL) e são copiadas para cada projeto.
  • setup/doctor.sh verifica cada peça abaixo; setup/setup.sh as repara.
  • Legendas que vão atrás da pessoa são possíveis com o fluxo /embedded-captions, mas é muito mais lento (cerca de 4 minutos a cada 10 segundos) e precisa de HYPERFRAMES_ROOT definido. Ofereça apenas se for solicitado.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

akachandan1/video-studio

Painterly and illustrated animation — Kurzgesagt-style flat science explainers ("what's inside", scale, mechanisms), art-history styles (Van Gogh, Monet, Lichtenstein, Kusama, Matisse, cubism, ink wash, 8-bit, Roman mosaic, cave painting, Persian miniature…). Uses the huashu-art-motion canvas engine with CUSTOM scenes, renders MP4s, and assembles/scores them in HyperFrames. Also the claude-animation plugin for hand-drawn 2D.

akachandan1/video-studio

Fast CapCut-style chop-cut reel with a story — showreels, hype edits, launch teasers, "make it punchy". One canvas engine on a beat grid (punch-ins on cuts, flash frames, impact shakes, whip pans, speed ramps, freeze frames) rendered in HyperFrames, in 16:9 and 9:16 from one edit, with an original synthesized score locked to the cuts.

akachandan1/video-studio

Guided studio for narrated, fact-checked explainer videos in a Vox-style editorial look (bold collage, flat colour fields, marker annotations, big numbers) or a paper-diorama documentary look. One idea in → sourced script in 10-second blocks → style key + per-scene prompts (or free code-built collage scenes) → offline voiceover fitted to each block → HyperFrames cut with captions, animated number callouts and an original score, in 16:9 and/or 9:16. Use for "Vox-style video", "explainer", "animated explainer", "data-driven video", "make a video about X", "why does X happen".

akachandan1/video-studio

Apple / OpenAI-style product launch film or premium spec ad (30–60 s) — minimal supers, big product moments, signature transition, piano/pulse score, end-card lockup. Shots come from code (HyperFrames scenes), Higgsfield AI image→video, or real product footage, all assembled and rendered in HyperFrames. Includes the fold-cut builder (shots hinge shut/open on the centre line).

Habilidades Relacionadas