Vídeo de descoberta
O produto é a descoberta, não o site. O vídeo mostra o material real que a comprova, grande e nítido, mantém uma coisa constante para que o espectador veja o que mudou e termina com uma pergunta que as pessoas respondem nos comentários. O site aparece apenas no final, como fonte.
Isso surgiu do clipe de satélite de Cluj (mesmo local, 1968 → 2025, imagem em tela cheia, uma etiqueta de ano, duas linhas, sem site), que funcionou muito melhor do que percorrer o site.
O que você entrega
- Dois cortes, 1080×1920, 30 fps, H.264 + AAC, 15–25 s: A abre na pergunta ou na primeira imagem e faz loop; B abre frio na conclusão. Capas para ambos.
post.txt: arquivos e especificações, notas de postagem, a tabela de reivindicações (cada número e linha na tela → seu arquivo ou URL de origem), créditos de imagem, fontes de som. Sem texto de postagem, a menos que o usuário peça (agentes não redigem postagens).- Os vídeos em uma pasta fora do repositório (
~/Videos/<projeto>-descoberta-<data>/); o storyboard, roteiros e recortes de material emreports/descoberta-<data>/do projeto, com um README: o que tem lá, onde a mídia reside, o que os scripts precisam. - A postagem é trabalho do usuário: nunca publique por eles.
Fluxo de trabalho: três aprovações baratas antes da renderização longa
- A descoberta. Liste 2–4 descobertas candidatas dos dados do próprio projeto, cada uma com a tensão que carrega e seu denominador. Escolha a que tem apelo (dinheiro, a cidade, um incômodo compartilhado). Verifique cada número nos dados, não na página que os resume.
- O material. Para a descoberta, encontre a coisa real mais vívida que a mostra: uma
captura de cardápio salva, um quadro de satélite, um documento, uma foto, os próprios dados como gráfico.
Anote os direitos de cada peça (veja
references/craft.md, Material). Recortes permanecem exatamente como capturados: sem retoques, sem preços adicionados. - Verificação da história (aprovação 1). Uma tabela de batidas: tempo, o que preenche o quadro, a legenda, o som e a reivindicação que cada batida faz com sua fonte. Nomeie a constante (o que permanece igual enquanto o resto muda) e o dispositivo (a única ideia que você poderia dizer em uma frase). Aguarde o sim ou as alterações do usuário.
- Verificação visual (aprovação 2). Use o design atual da página: leia suas cores, tipo e estilo de gráfico da fonte do site a cada vez, pois as páginas são reformuladas (2026-11-06). Renderize 2–3 quadros em tamanho real (
frames.py --stills, ouseek_capture.mjs ... stills) e mostre-os. Aguarde um polegar para cima por quadro. - Storyboard (aprovação 3). Desenhe-o com
scripts/storyboard.py: um quadro-chave por batida em proporções de tamanho real, com o tempo, o som e a transição para a próxima batida. Mostre-o e aguarde um sim. O usuário pediu esta verificação: nenhuma renderização de vídeo antes dela (2026-11-06). - Construção. Renderize, depois execute as verificações abaixo e examine cada quadro você mesmo.
- Entrega.
post.txt, storyboard e informe ao usuário o que você não pôde verificar (som de ouvido pelo menos) e que a pausa de 2 segundos, o tempo de exibição e os comentários são o veredito real.
Pule uma aprovação apenas quando o usuário disser para este vídeo.
Renderizadores
Escolha por material; todos escrevem quadros PNG 1080×1920 e codificam com yuv420p BT.709 faixa de TV.
| Material | Renderizador | Como |
|---|---|---|
| Fotos, digitalizações, quadros de satélite, recortes de documentos | scripts/frames.py (do clipe de satélite) | uma frame_fn(t) em Python que compõe imagens em tela cheia, shade_top atrás das legendas, overlay/text para legendas; synth para eventos sonoros; render() codifica |
| Um gráfico ou um número que se move | uma página HTML com window.seek(t) (o método de gráfico abaixo) + scripts/seek_capture.mjs | node seek_capture.mjs <page.html> <out> stills para quadros de verificação, depois quadros para o vídeo; codifique com ffmpeg como em frames.encode |
| Uma cena ilustrada (atmosfera, uma metáfora) | opcional: cth9191/animate (MIT), um skill de terceiros | pergunte antes de instalá-lo |
O método de gráfico (de charlie947/motion-graphics-skills animated-chart, MIT): quatro
estados — início, uma mudança (nada desaparece e é substituído), pausa com o valor principal
rotulado, retorno para que o loop não tenha salto. Cada quadro é calculado a partir de t sozinho. O
título, rótulos e eixo nunca se movem. Nunca arredonde, reformate ou adicione um número. Após a
construção, capture quadros em 0, 1, 2, 4 e 7 s e procure por texto sobreposto ou cortado antes do
vídeo.
Precisa de numpy e Pillow para frames.py, Playwright para seek_capture.mjs (defina PLAYWRIGHT= para
seu node_modules/playwright se não for resolvível), e ffmpeg.
Verificações
python3 ../demo-video/scripts/check.py <diretório de saída> --name <nome>(a partir da pasta deste skill) (nomeie os cortes<nome>-A.mp4/<nome>-B.mp4): tamanho, taxa de quadros, cor, volume, SSIM de loop, zona segura e folhas de contato. Ele reporta e não falha: leia cada linha e verifique cada número em relação ao seu destino você mesmo.- Olhe para a folha de zona segura: nenhuma legenda, número ou linha de fonte abaixo do vermelho.
- Leia cada legenda no tamanho de telefone (360 px de largura) na folha de contato.
- Nomeie o herói de cada batida principal e verifique se ele ocupa pelo menos 40% da altura do quadro, e
nomeie a virada (
references/craft.md). Diga quais batidas falham. - Tabela de reivindicações: todo número na tela rastreado até um arquivo; toda comparação diz sua base (quais pizzas, qual data, quantos).
- Meça o som batida por batida, tanto em faixa completa quanto acima de 250 Hz (o que um alto-falante de telefone reproduz). A conclusão deve ser a mais alta em ambos, e o quase-silêncio deve ser
silencioso. Depois ouça uma vez se puder; caso contrário, diga que não ouviu. Use
frames.mixpara dar à conclusão seu próprio nível, depoisframes.level; no piloto de pizza, o compressor antigo deixou o zumbido mais alto que o golpe.
Pegadinhas
-
Uma legenda ao lado de um número herda sua unidade. "a maior diferença" sob "4 lei" é lido como lei; diga "în procente" ou remova. (Treponti foi o maior em porcentagem, La Crosta em lei.)
-
Não reutilize fotos de produtos ou IU dos aplicativos (termos do Wolt e Glovo reservam direitos de imagem). Transcreva uma listagem em seu próprio cartão neutro, datado, ou recorte apenas o texto que você precisa como evidência e diga de onde vem.
-
Imagens geradas por IA ficam fora de vídeos sobre lugares ou preços reais; parecem encenação. A atmosfera vem das próprias imagens do usuário, arquivos de domínio público (verifique os direitos de cada item) ou um estilo claramente ilustrado.
-
ElevenLabs "Chris" erra números em romeno, mesmo como dígitos (49 e 67 no vídeo da pizza, 88 no vídeo das licenças, 2026-11-06). A transcrição não detecta isso. Audicione cada número falado e peça ao usuário para ouvir antes de mixar.
-
Antes de postar, a página deve estar no ar e os números verificados novamente se os dados mudaram.
-
Vozes sintéticas leem números incorretamente, e a transcrição não vai detectar isso. "optzeci" por extenso saiu como "opt zece", a transcrição ainda disse "Optzeci", e uma gravação com dígitos estava correta. A próxima gravação do mesmo número saiu errada novamente, então a geração varia: assim que o usuário aprovar uma gravação, corte esse áudio e não regenere. Apenas um ouvido humano pode verificar a pronúncia (2026-11-06).
De onde vêm as regras
references/craft.md contém o ofício: a folha de batidas da descoberta, as regras da história, legendas,
material e direitos, som. Fontes: um clipe de imagens de satélite de Cluj-Napoca (2026-11-03), notas de ofício do demo-video,
gramática de história do cth9191/animate (MIT), animated-chart e
regras de vox-explainer do charlie947 (MIT), regras de quadro e virada do StewdioAI/blank-page (MIT) e uma consulta
Codex (2026-11-04).