HyperFrames Studio
Você produz um entre três tipos de saída do HyperFrames: um hook horizontal (intro), um shorts vertical ou um slidedeck 16:9. Os três compartilham o mesmo motor, fontes, fórmula de derivação de marca e predefinição de render — apenas a proporção, a presença de legendas e o enquadramento mudam. Primeiro defina o modo, depois copie e edite o starter pronto no pacote. Nada de escrever composição do zero.
O motor completo está em references/engine.md; as diferenças de modo estão em references/{hook,shorts,slidedeck}.md; transcrição e re-encode em references/transcription.md. Os templates starter estão em assets/templates/<mode>/ — já vêm funcionais com uma paleta placeholder índigo neutra (--brand:#6366f1); são recoloridos com a cor do usuário.
Passo 0 — Defina o modo (Q0, primeiro match vence)
- Modo explícito nos argumentos —
mod:hook|shorts|slidedeckou expressão clara (intro/hook → hook; shorts/vertical/reels → shorts; slidedeck/apresentação/slide → slidedeck). Trave. - Nome da pasta — se a pasta de trabalho/destino termina com
-hook/-shorts/-slidedeck, use esse modo. - Intenção de proporção — "entrada horizontal" → hook; "vertical" → shorts; "apresentação/deck" → slidedeck.
- Se nada se aplicar, pergunte com AskUserQuestion: "O que vamos produzir? Hook (horizontal 16:9 intro) / Shorts (vertical 9:16) / Slidedeck (apresentação 16:9)".
Com o modo definido, leia o arquivo references/<mode>.md correspondente e siga suas instruções.
Regras fixas — baked-in em toda execução, não pergunte, não pule
- Fontes auto-hospedadas — Manrope + JetBrains Mono, 4
fonts/*.woff2locais, unicode-range turco. Nunca use CDN/fontes embutidas (glyphs turcos quebram). Cada starter já as inclui +OFL.txt; copiefonts/junto com a composição. - Apenas
assets/local — nunca use../assetsou caminhos de diretório pai (preview/render não acessam diretórios superiores, mídia fica vazia). - Tema escuro + cor de marca única — fundo near-black, texto near-white; cada acento deriva de
--brand(engine.md §4). - Transcrição vem do usuário — em hook/shorts, a transcrição é entrada do usuário. Se não foi colada junto com a solicitação e não existe um
transcript.txtna própria pasta do projeto, pare e peça ao usuário — antes de montar a composição, antes de ir para AskUserQuestion. Não assuma que uma transcrição encontrada em outra pasta/projeto pertence a este clipe (mesmo que tenha o mesmo nome) e não executetranscribepor conta própria. Se o usuário disser explicitamente "você extrai", siga transcription.md. Detalhes: transcription.md §Pegar a transcrição. - Re-encodeie clipes RAW primeiro —
node scripts/reencode.mjs <clip>.mp4(keyframes densos); referencie o arquivo-src.mp4re-encodado, não o arquivo bruto (transcription.md). - Timeline determinística —
gsap.timeline({paused:true}),window.__timelines["main"]=tl, posições em segundos literais; semMath.random/Date.now/repeat:-1/setTimeout(engine.md §8, §11). - Sem exibição de patrocinador — sem logotipo fixo no canto; a marca é uma animação temporal (ou opcionalmente um topmark central).
- Render apenas para hook + shorts — a entrega desses dois modos é um MP4; predefinição (padrão, pode ser sobrescrita): 1080p · 60fps · 16 Mbps · quality high, fixo em
[email protected]. Slidedeck NÃO é renderizado e não se pergunta sobre render — a entrega do deck épresentation/presentation.html(exceção se o usuário pedir vídeo explicitamente; regra: slidedeck.md). - Cubra a duração total —
data-duration= duração real do clipe/conteúdo; em hook/shorts, verifique após render comffprobe, no deck, confirme a duração comN × slide.
Passo 1 — Pergunte as escolhas reais uma vez (AskUserQuestion, em português)
Elimine todas as perguntas que foram resolvidas pelos argumentos ou pela detecção do Passo 0. Depois, em uma única chamada AskUserQuestion, combine as perguntas comuns com 2–3 perguntas específicas do modo (para reduzir round-trip). Option 1 é sempre o valor recomendado/detectado. Se não restar nenhuma pergunta, pule a chamada e indique os valores resolvidos em um preâmbulo de uma linha em português.
Perguntas comuns (todos os modos):
- Cor (header "Cor") — Option 1 = hex detectado "(recomendado)" se houver; senão, padrão neutro. 2–3 paletas de exemplo neutras + Other = hex personalizado. O tema permanece Dark.
- Fonte do template (header "Template") — "Usar o starter {mode} pronto no pacote (recomendado)" · se detectado no workspace: "Clonar meu projeto -{mode} anterior".
Perguntas específicas do modo são adicionadas do respectivo references/<mode>.md (hook: Demo/Logos/Encerramento · shorts: Marca/Encerramento/Thumbnail · slidedeck: Slides/Tempo).
Nunca pergunte: no modo slidedeck, "devo renderizar / produzir MP4 / quais saídas devo gerar". Deck é uma apresentação HTML; presentation/presentation.html é sempre gerado e render não é considerado.
Pergunte sempre: se a transcrição não estiver disponível em hook/shorts (regra fixa 4). Este é um pedido direto que vem antes do AskUserQuestion — "Compartilha a transcrição deste clipe no formato [MM.SS - MM.SS]?" — porque sem transcrição, os tempos {in,out} das legendas, HOOK_END/CLOSE e os limites das cenas seriam inventados.
Passo 2 — Monte (handoff)
- Copie a pasta
assets/templates/<mode>/para o projeto de destino (index.html, fonts/, hyperframes.json, meta.json, package.json, assets/; no deck, tambémpresentation/— sempre, sem perguntar). Atualize o nome emmeta.json/package.json. - Siga os passos de build de
references/<mode>.mdpara processarindex.html: conecte a mídia, ajustedata-durationpara a duração real, aplique a paleta, preencha as cenas/legendas/slides com conteúdo. - Valide:
npx --yes [email protected] lint→inspect(no deck, tambémvalidate) →preview. Extraia frames nos beats principais e faça QA visual (atenção às armadilhas do engine.md §11: posição literal, sem tag de mídia em comentário, WCAG false-positive, composição raiz única). - Entregue — de acordo com o modo:
- hook / shorts →
render --quality high --fps 60 --video-bitrate 16M --output "renders/<nome>.mp4", depois confirme a duração comffprobe -v error -show_entries format=duration -of default=nw=1:nk=1 renders/<nome>.mp4; verifique um frame intermediário + stream de áudio. Informe o caminho e a duração claramente. - slidedeck → SEM render. Entregue
presentation/presentation.html, apresente a tabela de saída de duas linhas do slidedeck.md e explique por queindex.htmlnão é aberto com duplo clique. Não faça nem sugira render.
- hook / shorts →
Notas de primeiro uso
- Node.js + npx e ffmpeg no PATH são necessários. A ferramenta HyperFrames é baixada on-demand via
npx. hyperframes transcribebaixa o modelo whisper no primeiro uso (grande, leva minutos); para turco, usemedium/large-v3, não.en(transcription.md).- As fontes são SIL OFL 1.1 (
fonts/OFL.txt); o código do skill é MIT. - Para detalhes internos do motor CLI/GSAP, delegue ao skill base
hyperframes— não repita aqui.