Vídeo em uma Frase
O usuário dá uma frase, você primeiro faz o design: define o estilo, o que ver em cada cena. Depois escreve um video.json. Coisas visíveis do tema você desenha com código de cena. O script cuida do tempo, música, legendas, codificação e verificação automática.
Nos comandos abaixo, troque SKILL pelo caminho absoluto do diretório onde este arquivo está (ex: /home/me/skills/one-prompt-video). Todos os comandos rodam no diretório de trabalho atual do usuário, os caminhos de arquivo são relativos a ele.
Cinco Passos
1. Preparar Ambiente (roda uma vez por diretório de trabalho)
node "SKILL/scripts/setup.mjs"
Ele verifica Node, bibliotecas de desenho, FFmpeg, fontes chinesas. Se faltar algo, instala ou diz como instalar. Só prossiga quando tudo estiver [OK]. Se houver [FALTANDO], informe o usuário exatamente as linhas problemáticas.
2. Design (não pergunte ao usuário, decida você mesmo, no final informe o que decidiu)
Crie uma nova pasta no diretório de trabalho atual (use o nome do vídeo, chamaremos de nome-do-video/). Primeiro escreva o design em nome-do-video/plano.md, com cerca de uma dúzia de linhas. Depois de escrever o plano, escreva o resto. Vídeos com apenas cartões de texto são chatos; este passo decide se o vídeo será bom.
Complete o que o usuário não disse
| O que o usuário não disse | Padrão |
|---|---|
| Duração | Cerca de 30 segundos, 5 a 8 cenas |
| Orientação | Paisagem 16:9; se mencionar celular, retrato, TikTok, Xiaohongshu, WeChat Video, use 9:16 |
| Idioma | Mesmo idioma da conversa do usuário |
| Voz | Não. Padrão é legenda + música. Esta skill não inclui serviço de narração: quando o usuário quiser voz, primeiro informe que ele precisa preparar a narração (um TTS que funcione na linha de comando ou sua própria gravação), depois siga references/voice.md |
Definir Estilo
- Se o usuário quer atmosfera, história, cena, personagem, ou disser "não quero explicação", "quero sensação de filme", "como um filme": este vídeo não usará layouts fixos, você desenha tudo. Leia
references/film.mde siga-o. - Para os demais, escolha um dos pacotes de estilo da tabela abaixo. Cada pacote vem com cenas, objetos, personagens, transições e efeitos sonoros, muito mais ricos que os temas integrados. Escolha pelo tema: primeiro veja a coluna "Adequado para"; se mais de um se encaixar, escolha o mais próximo visualmente do conteúdo (artesanato, comida, coisas do dia a dia ->
papercraftouclay; equipamentos e processos ->isometric; contas e resultados ->dashboard). Se o usuário nomear um estilo ("como um jogo", "como um chat", "como um telejornal"), use o pacote correspondente. - Temas integrados só são usados em dois casos: o usuário pedir algo simples, contido, corporativo; ou o conteúdo for sério e decoração atrapalhar a leitura. Em vídeos com temas integrados, cenas desenhadas por você devem ocupar metade do vídeo.
- Defina algo que percorra todo o vídeo: um objeto real do tema (asa de avião, grão de café, lua, fachada de loja). Ele aparece na primeira cena e reaparece em outras, para o vídeo ter coesão.
Definir Cada Cena
No plano, faça uma tabela, uma linha por cena, pensando nesta ordem:
| O que o espectador deve entender nesta cena | O que ver na tela | Como fazer (qual layout ou desenhar) | Narração |
|---|
"O que ver na tela" é sobre a imagem: um objeto, um processo, um gráfico, uma estrutura. Pense primeiro na imagem, depois no texto. Siga estas oito regras:
- Cubra o texto. Cubra todo o texto da cena. A imagem restante ainda mostra o que está sendo explicado? Só assim a cena funciona. Se falar de asa de avião, a cena deve ter a asa e o fluxo de ar; se falar de assinatura de café, deve ter caixa, pacote de grãos e cartão de preparo.
- Desenhe o que é visível. Objetos, processos, estruturas do tema, use
layout: "custom"e escreva o código da cena para desenhá-los. Vejareferences/custom-scenes.md. A cena mais importante do vídeo deve ser desenhada por você; pelo menos duas cenas por vídeo desenhadas por você, um terço ou mais é melhor. - Escolha o layout pela forma da informação, deixe o layout explicar a relação. Comparar tamanhos ->
bars; sequência ->steps; confrontar dois lados ->compare; um número real ->number(sequências, horas, IDs não são números reais, não usenumber).statementno máximo uma cena por vídeo;bulletsno máximo uma;quotesó para citações reais. - Não escreva rótulos e descrições secundárias.
kicker,subtitle,note,label,ctaetitlede cada cena não escreva por padrão. Só escreva se sem eles o espectador não entender a cena. Relações que o layout já expressa não precisam de texto adicional: gráfico de barras não precisa de título "Comparação dos quatro trimestres"; passos não precisam de "Primeiro passo"; cartão de comparação não precisa de "Comparação". - Imagem e narração dividem o trabalho. Narração (
say) diz frases completas, sobre o que está aparecendo na tela; a tela só tem imagens, palavras-chave e números. A mesma frase não deve aparecer grande na tela e também na legenda. - Duas cenas consecutivas diferentes. Não use o mesmo layout em duas cenas seguidas; se a anterior era texto centralizado grande, a próxima deve ser imagem ou gráfico.
- Use destaques com moderação. Números grandes e frases de efeito, uma vez cada por vídeo.
- Início e fim. Primeira cena:
title. Nas duas primeiras cenas, deixe claro o que o vídeo aborda. Última cena:end, com uma conclusão ou chamada para ação; o final é menor e mais curto que o início: uma frase, mais o objeto que percorre o vídeo.
Se você não consegue ver imagens nem escrever código de cena, a regra 2 falha: use pacotes de estilo e layouts normalmente, e informe honestamente ao usuário que o vídeo será baseado em layouts de texto.
3. Escrever video.json e Código das Cenas
Escreva nome-do-video/video.json conforme o plano:
{
"title": "Uma frase, um vídeo",
"theme": "papercraft",
"aspect": "16:9",
"seconds": 30,
"scenes": [
{ "layout": "title", "title": "Uma frase, um vídeo", "say": "Diga uma frase e receba um vídeo curto." },
{ "layout": "custom", "module": "scenes/pipeline.mjs", "seconds": 7, "cues": 3, "say": "Você diz uma frase, o modelo faz o design, preenche a tabela, o script transforma em vídeo." },
{ "layout": "bars", "unit": "s", "items": [{ "label": "1ª vez", "value": 68 }, { "label": "2ª vez", "value": 51 }, { "label": "3ª vez", "value": 57 }], "say": "Testei três vezes com modelo pequeno, cada uma em torno de um minuto." },
{ "layout": "custom", "module": "scenes/laptop.mjs", "seconds": 6, "say": "Um notebook comum já é suficiente para criar o vídeo." },
{ "layout": "end", "title": "Experimente agora", "say": "Experimente agora mesmo." }
]
}
secondsé a duração alvo do vídeo inteiro; o script distribui o tempo por cena. O vídeo final pode ter até 3 segundos de diferença (já que cada cena precisa ser um número inteiro de beats, e há 1 segundo de fade out no final). Se não for especificado, será estimado automaticamente pelo número de palavras.sayé a legenda da cena (e também o texto da narração, se houver). Uma frase por cena, no máximo 30 caracteres em chinês (12 palavras em inglês).- Para cenas desenhadas por você, o código da cena vai em
nome-do-video/scenes/. Após escrever cada cena, visualize um frame estático (--still). Só escreva a próxima se reconhecer o que foi desenhado. - O texto na tela é para ser lido de relance, seja breve. Se não couber, divida em duas cenas, não encha uma única cena.
- Não invente fatos. Números, citações, nomes de pessoas, empresas que o usuário não forneceu não devem ser apresentados como reais; para números de exemplo, indique na narração que são ilustrativos. Recursos e funcionalidades de produtos use apenas as descrições do usuário; qualquer explicação adicional sua, liste ao final para o usuário verificar.
Um exemplo completo usando apenas layouts está em SKILL/assets/example.video.json.
4. Validar e Gerar o Vídeo
node "SKILL/scripts/make.mjs" nome-do-video/video.json --check # Primeiro valida, leva segundos
node "SKILL/scripts/make.mjs" nome-do-video/video.json --sheet # Gera visão geral, só gere o vídeo depois de ver
node "SKILL/scripts/make.mjs" nome-do-video/video.json # Gera o vídeo
- Se
--checkreportar[ERRO], cada erro indica a cena, o campo e a correção. Corrija e rode novamente até passar. - Se você puder ver imagens, abra
nome-do-video/out/sheet.jpge veja quadro a quadro. Cada cena tem dois quadros: o primeiro mostra a entrada até a metade, o segundo mostra tudo completo. Avalie pelo segundo quadro. Para cada quadro, pergunte quatro coisas: se cobrir o texto ainda dá para entender; se o objeto principal ocupa pelo menos 60% da largura ou altura da tela; se há grandes áreas vazias; se há palavras amontoadas ou uma palavra quebrada em duas linhas. Se algo falhar, corrija e regenere a visão geral. - Após gerar o vídeo, leia o relatório impresso (também salvo em
nome-do-video/out/report.txt). Se houver[PROBLEMA]ou[ATENÇÃO], corrija e rode novamente; o mais comum é "texto demais", nesse caso encurte o texto.
5. Informar o Usuário
Diga quatro coisas: onde está o vídeo final (caminho da linha "Vídeo:" no relatório, nome do arquivo é title + .mp4); o que você decidiu por ele (duração, orientação, estilo, quais cenas foram desenhadas por você); quais conteúdos você adicionou; e que você não pode avaliar visual ou sonoramente, então peça ao usuário para assistir. Se o vídeo final não tiver narração, mencione: se quiser adicionar narração, ele precisará de um TTS próprio.
Pacotes de Estilo
Cada pacote de estilo é um conjunto completo de visuais: nove layouts são redesenhados com seu próprio cenário, objetos, transições, legendas e efeitos sonoros. Basta escrever o nome em theme.
| theme | Aparência | Adequado para |
|---|---|---|
papercraft | Cenário multicamadas de papelão, bonequinhos de papel, trepidação stop-motion | Ciência leve, apresentação de produto, pequenas histórias, estilo de vida |
clay | Modelagem em argila em tons quentes, personagens arredondados | Tutoriais para iniciantes, hábitos e saúde, conteúdo infantil |
collage | Papel kraft, rasgos, fita adesiva, letras recortadas | Ciência leve, listas, abertura de programa |
skit | Escritório em ilustração plana, dois bonequinhos que reagem ao conteúdo | Explicações para não especialistas, tópicos profissionais |
isometric | Máquina 2.5D, esteira rolante, posto de inspeção | Processos, princípios, funcionamento de sistemas |
cosmos | Espaço profundo, nebulosas, estrelas e órbitas luminosas | Visão geral, hierarquia, abertura de série |
dashboard | Painel de dados escuro: painéis acendendo em sequência, arcos de medidor, gráfico de barras | Resultados, avaliações, monitoramento, custos (conteúdo com números) |
news | Estúdio de telejornal, faixa de título, faixa de rolagem | Resumo de pontos principais, relatório semanal, reportagem de dados |
chat | Conversa em um celular, conteúdo exibido em balões | Explicação informal, casos, perguntas e respostas |
comic | Quadrinhos com bordas pretas, retículas, linhas de velocidade, onomatopeias | Histórias com reviravoltas, contraste entre antes e depois |
detective | Quadro de cortiça, Polaroid, post-it, linha vermelha | Investigação de problemas, reconstituição de eventos |
arcade | Jogo pixelado 8-bit: blocos, moedas, mapa de fases | Instruções, comparação, apresentação leve de produto |
variety | Letras decoradas multicoloridas com contorno, raios, mascote, faixa de comentários | Vídeos curtos animados, piadas, listas |
vhs | Fita de vídeo: linhas de varredura, troca de canal, TV antiga, contador de fita | Nostalgia, abertura e trailer de programas de série |
chrome | Letras tridimensionais cromadas, gradiente líquido em movimento, brilho estrelado | Frases curtas para jovens, tópicos da moda; não adequado para conteúdo sério |
Imagens de pré-visualização em SKILL/assets/styles.jpg. Se puder ver imagens, veja antes de escolher. Pacotes de estilo têm muitos enfeites, então o texto por cena deve ser mais curto; news organiza o conteúdo como um telejornal, então se o conteúdo não for realmente notícia, alerte o usuário.
Estes são apenas pontos de partida prontos: não há limite criativo. Para criar um novo conjunto de visuais (diário, vinil, mapa de metrô, o que for), siga references/style-packs.md.
Doze Temas Integrados
Temas trocam apenas cores, fundo e linhas; não têm cenários ou objetos. Condições de uso na regra 3 do passo "Definir Estilo".
| theme | Aparência | Adequado para |
|---|---|---|
grid | Papel quadriculado bege, roxo, cartão branco | Conceitos, princípios |
minimal | Grande espaço vazio, linhas finas, um ponto azul | Filmes de marca calmos e contidos, aberturas |
pop | Contraste de cores, raios, contorno preto grosso | Animado, ritmo acelerado, plataformas de vídeo curto |
keynote | Gradiente escuro, cartão vítreo, brilho | Novos produtos, conclusões importantes, tópicos de tecnologia |
blueprint | Papel de desenho azul, linhas brancas, anotações amarelas | Estruturas, arquitetura, montagem |
whiteboard | Quadro branco, caneta marcadora, moldura desenhada à mão | Professor explicando, fluxos e causa-efeito |
chalk | Quadro verde escuro, linhas de giz, moldura de madeira | Aula em quadro, resolução de problemas, fórmulas, passos |
neon | Noite roxa escura, linhas brilhantes, grade de perspectiva | Tecnologia, jogos, música eletrônica |
terminal | Fundo preto, letras verdes, cursor piscando | Código, linha de comando, ferramentas de desenvolvimento |
paper | Superfície de papel bege, título serifado grande, vermelho | Críticas, leitura, tópicos de humanidades |
ink | Papel de arroz, montanhas distantes, selo vermelho | Cultura tradicional, poesia, história |
bold | Preto e branco, negrito, cortes secos, um vermelho | Opiniões, slogans, listas |
Imagens de pré-visualização em SKILL/assets/themes.jpg. Se o usuário quiser outras cores, use colors.
Layouts
Cada cena escolhe um layout ou desenha o seu próprio. Uma cena, uma ideia.
| layout | Quando usar | Obrigatório | Não escrever por padrão | Limites |
|---|---|---|---|---|
custom | Coisas visíveis do tema: objetos, processos, estruturas | module, seconds | cues, data | Veja references/custom-scenes.md |
title | Início | title | subtitle, kicker | Título até 12 caracteres |
bars | Comparar tamanhos | items (2 a 6 itens, cada um com label e valor numérico value) | title, unit (junto de cada número), highlight (qual barra usar cor de destaque, a partir de 1; se não especificar, será a barra mais alta) | label até 8 caracteres |
steps | Passos sequenciais, processos | items (2 a 5 passos) | title | Cada passo até 12 caracteres |
compare | Confrontar duas coisas | left, right (cada um com title e 1 a 4 items) | title | Cada item até 12 caracteres |
number | Um número real, uma vez por vídeo | value | unit, label, note | value como "25", "80%", "1.280" |
statement | Uma frase para ser lembrada, no máximo uma cena por vídeo | text | highlight (palavra em text para colorir) | 24 caracteres |
bullets | Vários pontos paralelos, no máximo uma cena por vídeo | items (2 a 5 linhas de texto) | title | Cada item até 18 caracteres |
quote | Citação real | text | by | 40 caracteres |
end | Final | title | subtitle, cta (texto do botão) | Título até 14 caracteres |
unitfaz parte do número, escreva quando necessário. Olabeldenumbersó escreva se apenas o número e a unidade não deixarem claro o que está sendo medido.- Cada layout pode receber
say(legenda) eseconds(duração fixa da cena).
Se o usuário fornecer material de vídeo (filmagem real, gravação de tela, vídeo existente), há um layout clip: insere um trecho do material, misturado com os layouts acima. Um vídeo inteiro de clip é uma edição. Sintaxe: { "layout": "clip", "file": "material/entrevista.mp4", "from": 12.4, "to": 18 }. Como ver o material e decidir qual trecho usar, veja references/editing.md.
Para Mais
| Precisa de | Leia |
|---|---|
| Desenhar uma cena: objeto, processo, estrutura (todos os vídeos devem usar) | references/custom-scenes.md |
| Usuário quer atmosfera, história, cena, personagem, ou vídeo todo desenhado por você | references/film.md (você escreve como desenhar cada frame, o script cuida da câmera, música, render e verificação; precisa conseguir ver imagens) |
| Todos os campos, trocar cores, fontes, fixar duração de uma cena | references/video-json.md |
| Adicionar narração (usuário precisa providenciar TTS ou gravação), trocar música | references/voice.md, references/video-json.md |
| Usuário forneceu material de vídeo para incluir, ou editar vídeo existente | references/editing.md |
Usuário quer continuar editando no Final Cut Pro, CapCut (adicione --project ao comando de render) | references/editing.md |
| Temas e pacotes de estilo prontos não servem, quer um novo conjunto completo | references/style-packs.md (criar um pacote de estilo exige centenas de linhas de código de cena e ajustes visuais; confirme que você consegue fazer) |
| Falha na instalação, fonte em quadrados, erro no ffmpeg | references/troubleshooting.md |
| Usuário pede cena 3D, paisagem natural com shader em tela cheia (coisas que Canvas não renderiza) | references/pipelines.md (consulte pipelines de produção; precisa escrever código, confirme que você consegue fazer) |
| Usuário tem Blender, GarageBand ou chave da API de voz Doubao, quer renderização realista, música instrumental realista, narração natural | references/external-tools.md (com ferramentas externas, para modelos mais capazes; confirme que você consegue fazer) |
O que esta skill não faz: gerar imagens realistas ou gravações do zero (apenas usar material fornecido pelo usuário); color grading, remoção de fundo ou edição fina de material (exporte o projeto para o software de edição). Se a necessidade for essa, informe o usuário honestamente.