Motion reel
Construa um novo filme no próprio motor deste repositório. Não mude para Remotion ou HyperFrames a menos que o usuário os nomeie; o contrato de renderização do repositório está em CLAUDE.md e prevalece sobre este arquivo.
Um filme é executado em duas sessões, cortadas no OK do owner na lista de takes e no board juntos:
- Pré-produção (este arquivo): briefing, história, ativos, voz, grade de batidas, lista de takes, board.
- Construção (
/motion-reel build <film>): leia build.md e siga-o; pule este arquivo.
O corte mantém a construção em um contexto novo. A pré-produção preenche a janela com referências, takes e imagens do board, e cada turno posterior paga por tudo isso.
1. Fixar o briefing
Execute node tools/brief.mjs --in=<draft.md> no rascunho do owner (--film=<film> assim que o projeto existir: ele escreve brief/original.md sem o base64 incorporado). Ele imprime o cabeçalho, as palavras do VO contra o orçamento e o que o rascunho deixa em aberto. Sem um rascunho, preencha os campos de cabeçalho de docs/brief-template.md a partir da solicitação e proponha um padrão para cada lacuna: o owner responde com um "oke" ou uma correção.
Pergunte o que ainda está em aberto em uma mensagem, antes de tocar no código e antes de citar créditos; respostas já em brief/decisions.md permanecem. Adicione o que a ferramenta não pode ver:
- Sobreposição: um filme passado sobre o mesmo assunto ou pilar (
projects.json). Diga qual e o que este adiciona. Um remake mantém a pasta antiga intocada e pergunta quais respostas de seudecisions.mdainda permanecem. - Produto + URL (ou tópico). Para filmes OpenView, o pilar e a fórmula de
docs/content-map.md. - Marca: filmes OpenView usam
lib/brand.js. Outras marcas: cores, fontes, um acento, logotipo real. - Uma referência: quadro, vídeo ou pasta de imagens. Ou "nenhuma" (então diga isso; sem aparência padrão).
- Música: uma faixa fornecida (meça-a) ou "sintetizar" (padrão).
- Narração: precisa de
ELEVENLABS_API_KEYem.env. Se vazio, pare e nomeie a variável.
O briefing é fixado quando o idioma, voz, duração, proporção, assunto (tickers incluídos), fonte de dados (app, kit ou ilustração) e energia estão definidos. Cada um destes movido após o primeiro take em um filme passado, e mi-demo-40 pagou por seu VO três vezes. Registre as respostas em <project>/brief/decisions.md.
Um pacote de outra ferramenta (storyboard, zip, handoff): copie-o intacto para <project>/references/<tool>-<date>/, que fica fora do commit, e execute tools/brief.mjs apenas em seu briefing. Abra outro de seus arquivos apenas quando uma decisão precisar desse arquivo. Sua lista de takes e script são material, como a ordem de um rascunho.
Limites: palavras, figuras ou fatos que o briefing ou regras legais proíbem na tela vão para <src>/forbid.json (tools/forbid-lib.mjs): tools/vo.mjs os recusa antes de gastar créditos, tools/check.mjs falha neles na tela. Um limite que nenhum padrão pode ver (um nome que nunca carrega uma porcentagem) vai para brief/decisions.md, lido contra cada board e folha de revisão.
Escolha um slug de filme ([a-z0-9-]+). Tudo abaixo é nomeado por ele: <film>.
Layout do projeto. Um novo filme recebe sua pasta de projeto CONTENT (CLAUDE.md "Pastas de novo projeto de vídeo") e uma linha "<film>": "CONTENT/<n>. <Título> (<data>)" em projects.json; as ferramentas então o encontram lá (tools/paths.mjs): lista de takes e briefing em <project>/brief/ (shotlist.md), código em <project>/src/ (film.js, timeline.js, vo-lines.json, beats.json, sfx-<film>.mjs), takes e mídia em <project>/assets/, boards, folhas e renders em <project>/output/. Filmes mais antigos mantêm docs/<film>-shotlist.md, film/<film>/, assets/<film>/ e out/. Abaixo, <shotlist>, <src>, <assets> e <output> significam o que se aplicar.
2. Pré-produção
-
Ativos. Em
<assets>/, listados antes de qualquer animação.- Logotipo e símbolo da OpenView: desenhados apenas através de
lib/brand.js; nunca copie os SVGs para o filme. - Mascote da OpenView: o rig de código em
lib/mascot/(API no cabeçalho e exports delib/mascot/index.js). - Market Intel da OpenView: figuras e nomes do
origin/mainmais recente, a imagem desenhada em código com o kit de interface do Market Intel. Capture o aplicativo em execução apenas quando o briefing pedir o aplicativo real; então siga "Fonte do Market Intel" emCLAUDE.md; escolha bandas decapture_mi.mjs --reviewe desenhe comlib/proof.js. - Outro produto com URL: capture capturas de tela reais, logotipo, cores, fontes com Playwright.
- Logotipo e símbolo da OpenView: desenhados apenas através de
-
Mundo visual. Leia
REFERENCES/motion/visual-grammar-2026-10.md, então escreva## Mundono topo de<shotlist>antes de qualquer take: um lugar, seus objetos, quem está nele, o que a luz faz, e como cada figura e relação no briefing se torna uma coisa que você pode apontar. Desenhe-o comlib/world.js. O sistema de design permanece nas próprias telas do produto. Guia de estilo. Se uma referência existir, meça-a primeiro:uv run --python 3.11 --with librosa --with numpy tools/ref_probe.py refs/<film>/ref.mp4 refs/<film>/analysis.jsonentão escrevadocs/<film>-style_guide.md: paleta (hex), tipo, comprimentos de takes, transições, movimentos de câmera, textura, como o texto entra e sai. Pegue a gramática, nunca o conteúdo. O visual da casa éCLAUDE.md"Look" maisdocs/motion-vocab.md; guias de estilo de outros filmes registram esses filmes, não a casa. -
História. Leia story.md, coloque o assunto em sua escada de tópicos e escreva sua tabela de espinha no topo de
<shotlist>, antes de qualquer script. A espinha está pronta quando cada linha está preenchida e os testes de script no final desse arquivo passam na primeira linha e no esboço; a ordem do rascunho é material aqui, não um script, e um rascunhoALUR CERITAeKANDIDAT HOOK(docs/brief-prompt.md) são sua primeira versão. Mostre a espinha com a cotação do VO: é o momento mais barato para mudar o filme. De um rascunho, a mesma mensagem nomeia o que o rascunho cobre e o script descarta, com ambas as contagens de palavras:pandu-supra-80voltou como "ga selengkap draft" após seu primeiro filme, e a extensão levou mais três sessões. -
Narração (se o briefing tiver VO): siga "Narração" em
CLAUDE.md. Escreva o script a partir da espinha na voz de investigador (story.md "O espectador"), até o orçamento de palavras, contando as figuras à medida que são faladas: seu indonésio 1,7 é o que seis filmes executaram a 1,12 (1,65–1,75 palavras por segundo de filme), então um orçamento completo chega perto dos segundos do briefing.characterpadrão écalm, fair narrator, talking to one person. Então<src>/vo-lines.jsone a última seção de story.md, até quetools/script.mjspasse; sua linhacreditsé a cotação. Gere comtools/vo.mjs, passe--check. Definições e termos legais precisam de uma fonte emreferences/sources.mdcomo qualquer figura; R-120 mantém nomes de registros fora da tela, não fora do arquivo de fontes. Os takes definem os comprimentos das cenas:<src>/timeline.jsé a lista de cenas emlib/vo-clock.js(sceneTimeline; modelo: iata-55), enode tools/prepare.mjs --film=<film>verifica os takes e escreve o relógio parabeats.json. -
Grade de batidas. Faixa fornecida: meça BPM/batidas/downbeats/hits (librosa) em
<src>/beats.json. Sintetizado: escolha BPM, escreva<src>/sfx-<film>.mjs, uma lista de cues emlib/synth.mjs(modelo:src/sfx-iata-55.mjsdo iata-55), para que ele emitabeats.jsone<output>/<film>-audio.wava -14 LUFS. -
Lista de takes. Escreva
<shotlist>na grade de batidas: cada take com quadros, câmera, texto na tela, SFX, sua batida da espinha, o efeito dedocs/motion-vocab.mdque usa e a razão para seu corte no próximo take (próximo passo, mesma posição, causa e efeito, salto no tempo, callback, mudança de tamanho). Um take sem razão para cortar junta-se ao próximo como um movimento de câmera. Planeie o caminho para o produto como um movimento, um objeto do mundo se tornando a tela, nomeado nos takes de ambos os lados do corte: isso atraiu a única revisão criativa do owner na construção emdelisting-18-80(45–50 s). Planeje a densidade aqui, cena por cena: os movimentos que cada um suportará, porque a primeira construção de todo filme recente pontuou 4–5 em densidade e gastou suas rodadas adicionando-as. Liste as decisões que precisam do OK do owner. Nenhuma parada aqui: a lista de takes vai para o owner com o board. -
Board. Desenhe primeiro os takes mais abertos e mais fechados do filme em
<src>/film.js(exportboard: [{ t, shot, note }]) e olhe para esse par sozinho (node tools/board.mjs --film=<film> --only=<wide>,<close>, seu-view.jpg): eles mostram quanto o mundo precisa conter e se suas figuras sobrevivem ao close-up, enquanto um redesenho custa dois takes. Então desenhe um still por take. Executenode tools/board.mjs --film=<film>. Seu texto é a revisão mecânica: corrija cada linhawarn … mid-move(movatpara o quadro estabelecido) e cada achado delayout(texto fora da área segura, na faixa de legenda, sobreposto, muito pequeno), então execute-o mais uma vez para confirmar que o texto está limpo. Leia apenas a visão geral-view.jpgdo board, ou acima de 18 takes aspagesque ele imprime, cada uma uma vez, para aparência: corrija o que parece errado em uma passagem, sem loop de olhar-corrigir-renderizar, sem folhas por cena (--scenesexiste para o owner, não para esta revisão). O teste de aparência, nessa visão geral: silencie e siga a história apenas com imagens; um estranho vê um lugar, pessoas e coisas, não slides. Além da legenda, um take contém no máximo 6 palavras, em objetos; placas de prova e linhas que o briefing exige por extenso são as únicas exceções. Falhar isso significa redesenhar o take, não cortar o texto. -
Revisão do owner (o único portão). Mostre a lista de takes e o board (
<output>/<film>-board.png) juntos, com as decisões que precisam de OK, e aguarde esse único OK. Nenhum movimento ou som antes dele. -
Hand-off. Quando o owner aprovar a revisão, escreva uma seção
## Briefing de construçãono topo de<shotlist>: o que está aprovado, o que ainda está em aberto e os arquivos que a construção precisa (módulo do filme, takes, batidas, script sfx). Então inicie a construção em um contexto novo:- Aplicativo desktop: inicie uma nova sessão com contexto novo (não uma bifurcação), prompt
/motion-reel build <film>. - Terminal: diga ao owner para executar
/clear, então/motion-reel build <film>.
A pré-produção termina aqui: o OK do owner na lista de takes e no board é o critério de conclusão, e a construção pertence à nova sessão.
- Aplicativo desktop: inicie uma nova sessão com contexto novo (não uma bifurcação), prompt
3. Regras rígidas
- Função pura do tempo:
seek(t)apenas. SemMath.random, sem temporizadores, sem transições CSS, semrequestAnimationFrameno modo de renderização, sem estado entre quadros. - Abra as pré-visualizações
-view.jpg; imagens em resolução total apenas como um--cropde um detalhe. Imagens são para aparência; verificações mecânicas são os números das ferramentas (node tools/check.mjs --film=<film>: varredura seek, determinismo, px da fonte, lint de layout). - Contexto é o custo, e turnos o multiplicam: um turno a 300k custa o que três custam a 100k, e dois terços das mensagens recentes carregaram uma ferramenta. Envie cada leitura, pesquisa e edição independente de uma etapa em uma mensagem. Ferramentas são executadas, não lidas (
--helpfornece o uso); edite com Edit, nunca reescreva um arquivo inteiro; comandos longos são executados em segundo plano e você aguarda o aviso, sem loops desleepou polling. - O código-fonte de outro filme não é um modelo: filmes compartilham 3–16 % de seu código. Procure a única função que você precisa (Grep, ou Read com offset/limit) e deixe seu
film.jsfechado. - O estado vive em arquivos:
brief/decisions.md,references/sources.md,<shotlist>,docs/review_log.md. O projeto se compacta automaticamente a 250k, então um fato mantido apenas na conversa pode desaparecer no meio do filme. - Segredos apenas de
.env. Nunca imprima, registre ou cole uma chave. - Uma sessão por marca: o motor, sintetizador e pipeline de exportação são reutilizados, não reconstruídos.