primocode 10.12.0 → 10.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -12
- package/bin/primocode.js +148 -8
- package/lib/act.js +48 -1
- package/lib/catalogo.js +12 -1
- package/lib/config.js +1 -0
- package/lib/estudio/assinaturas/gerativo.json +1 -1
- package/lib/estudio/camadas.js +4 -0
- package/lib/estudio/cota.js +150 -0
- package/lib/estudio/dados/projetos/clube-ad5.json +105 -0
- package/lib/estudio/dados/projetos/clube-ae-sem-memoria.json +107 -0
- package/lib/estudio/dados/projetos/clube-agent.json +120 -0
- package/lib/estudio/dados/projetos/clube-antes-e-agora.json +86 -0
- package/lib/estudio/dados/projetos/clube-apresentando-clube.json +110 -0
- package/lib/estudio/dados/projetos/clube-bluevisa.json +106 -0
- package/lib/estudio/dados/projetos/clube-caught-in-the-fire.json +127 -0
- package/lib/estudio/dados/projetos/clube-chat-cliente-satisfeito.json +98 -0
- package/lib/estudio/dados/projetos/clube-chatgpt-anuncios.json +120 -0
- package/lib/estudio/dados/projetos/clube-claude-dj.json +140 -0
- package/lib/estudio/dados/projetos/clube-claude-mcp.json +142 -0
- package/lib/estudio/dados/projetos/clube-cleanui.json +106 -0
- package/lib/estudio/dados/projetos/clube-clinica-take-unico.json +128 -0
- package/lib/estudio/dados/projetos/clube-clinica.json +104 -0
- package/lib/estudio/dados/projetos/clube-clube-opener.json +125 -0
- package/lib/estudio/dados/projetos/clube-clube.json +108 -0
- package/lib/estudio/dados/projetos/clube-codigo.json +101 -0
- package/lib/estudio/dados/projetos/clube-distilbook.json +104 -0
- package/lib/estudio/dados/projetos/clube-drive-upload.json +115 -0
- package/lib/estudio/dados/projetos/clube-dub.json +119 -0
- package/lib/estudio/dados/projetos/clube-enxovaly.json +105 -0
- package/lib/estudio/dados/projetos/clube-fecha7.json +118 -0
- package/lib/estudio/dados/projetos/clube-filatov.json +128 -0
- package/lib/estudio/dados/projetos/clube-frame.json +108 -0
- package/lib/estudio/dados/projetos/clube-glass.json +118 -0
- package/lib/estudio/dados/projetos/clube-letra-em-apps.json +84 -0
- package/lib/estudio/dados/projetos/clube-letra-globo-3d.json +111 -0
- package/lib/estudio/dados/projetos/clube-letra-nos-apps.json +146 -0
- package/lib/estudio/dados/projetos/clube-letra-seis-mundos.json +100 -0
- package/lib/estudio/dados/projetos/clube-lula-3.json +146 -0
- package/lib/estudio/dados/projetos/clube-morph.json +119 -0
- package/lib/estudio/dados/projetos/clube-motion-designer.json +115 -0
- package/lib/estudio/dados/projetos/clube-motion-pacote.json +112 -0
- package/lib/estudio/dados/projetos/clube-movimento.json +103 -0
- package/lib/estudio/dados/projetos/clube-not-like-us.json +117 -0
- package/lib/estudio/dados/projetos/clube-pinterest-inspiracao.json +86 -0
- package/lib/estudio/dados/projetos/clube-pixel-e-tinta.json +108 -0
- package/lib/estudio/dados/projetos/clube-ponte.json +118 -0
- package/lib/estudio/dados/projetos/clube-processo-edit-tonal.json +126 -0
- package/lib/estudio/dados/projetos/clube-processo-motion-100-ia.json +109 -0
- package/lib/estudio/dados/projetos/clube-promo.json +114 -0
- package/lib/estudio/dados/projetos/clube-proposito.json +115 -0
- package/lib/estudio/dados/projetos/clube-rankhog.json +128 -0
- package/lib/estudio/dados/projetos/clube-recursao.json +116 -0
- package/lib/estudio/dados/projetos/clube-revelar.json +118 -0
- package/lib/estudio/dados/projetos/clube-robo.json +125 -0
- package/lib/estudio/dados/projetos/clube-shelby-ep2.json +144 -0
- package/lib/estudio/dados/projetos/clube-shelby.json +97 -0
- package/lib/estudio/dados/projetos/clube-solar-eclipse.json +96 -0
- package/lib/estudio/dados/projetos/clube-soldier.json +128 -0
- package/lib/estudio/dados/projetos/clube-som-de-cena.json +108 -0
- package/lib/estudio/dados/projetos/clube-spotify-candidatura.json +112 -0
- package/lib/estudio/dados/projetos/clube-tda-app.json +118 -0
- package/lib/estudio/dados/projetos/clube-tda-ia.json +75 -0
- package/lib/estudio/dados/projetos/clube-telegram-chat.json +118 -0
- package/lib/estudio/dados/projetos/clube-telegram-ilha.json +106 -0
- package/lib/estudio/dados/projetos/clube-tennessee-nike.json +132 -0
- package/lib/estudio/dados/projetos/clube-tudo-se-move.json +112 -0
- package/lib/estudio/dados/projetos/clube-uiad.json +107 -0
- package/lib/estudio/dados/projetos/clube-viralgrow.json +108 -0
- package/lib/estudio/dados/projetos/clube-whose-side.json +140 -0
- package/lib/estudio/dados/projetos/clube-youtube-inscrever.json +108 -0
- package/lib/estudio/dados/projetos/elementos-do-site-em-movimento.json +49 -0
- package/lib/estudio/dados/projetos/explainer-narrado.json +51 -0
- package/lib/estudio/dados/projetos/lancamento-de-produto.json +51 -0
- package/lib/estudio/dados/projetos/motion-so-com-sons.json +50 -0
- package/lib/estudio/dados/projetos/titulo-em-after-effects.json +51 -0
- package/lib/estudio/dados/projetos/tour-de-saas.json +50 -0
- package/lib/estudio/dados/projetos-ae/antes-e-agora/ae/cenas.jsx +733 -0
- package/lib/estudio/dados/projetos-ae/antes-e-agora/assets/fazer_assets.py +88 -0
- package/lib/estudio/dados/projetos-ae/letra-em-apps/ae/cenas.jsx +402 -0
- package/lib/estudio/dados/projetos-ae/letra-em-apps/assets/preparar_assets.py +17 -0
- package/lib/estudio/dados/projetos-ae/letra-em-apps/assets/svg_para_ae.py +25 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/BRIEF-AGENTES.md +31 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/README.md +53 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ROTEIRO-CENAS.md +69 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/A-agenda.jsx +148 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/B-docs.jsx +174 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/C-alttab.jsx +113 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/D-spotify.jsx +118 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/E-notas.jsx +146 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/F-jornal1.jsx +144 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/G-google.jsx +153 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/H-mapa.jsx +176 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/I-imagens.jsx +132 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/J-jornal2.jsx +191 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/K-maps.jsx +184 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/camera-movimentos.jsx +48 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/camera.jsx +57 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/card-spotify.jsx +98 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/digitar.jsx +38 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/jornal-comum.jsx +196 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/letra.jsx +23 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/letra_automatica.py +83 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/montagem.jsx +74 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/w-agenda/render_html.py +13 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/w-agenda/util.jsx +162 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/w-midia-comum.jsx +114 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/ae/wg-util.jsx +360 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/assets/F-jornal1/render_html.py +13 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/assets/render_w-midia.py +26 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/assets/w-midia-ferramentas/inclin.py +30 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/assets/w-midia-ferramentas/medir_d.py +36 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/assets/w-midia-ferramentas/medir_e.py +27 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/ajustar_movimentos.py +61 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/ancorar.py +74 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/assar.py +47 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/camera3d_jornal.py +172 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/comparar.py +32 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/dados_ae_jornal.py +46 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/folha_contato.py +28 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/homografia_jornal.py +74 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/integrar.py +44 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/medir_quadro_a_quadro.py +32 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/mesa_2d.py +64 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/plot_cenas.py +11 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/retificar_quadros.py +38 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/w-agenda/assar_ab.py +52 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/w-agenda/medir_ab.py +59 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/wg_ajustar_h.py +111 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/wg_corrige_cam.py +17 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/wg_ecc_cadeia.py +80 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/wg_finalizar_cam.py +65 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/camera/wg_mosaico.py +61 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces/01-gramatica-e-roteiro.md +55 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces/02-camera.md +66 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces/03-montagem-no-ae.md +50 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces/04-render-e-conferencia.md +43 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces/05-abertura-celular-mergulho.md +43 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/guia-do-metodo/tutorial-lyric-edit-interfaces.md +42 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/atraso_imagem.py +31 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/fundo.py +56 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/juntar.py +45 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/montar.py +177 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/rastreio.py +74 -0
- package/lib/estudio/dados/projetos-ae/letra-nos-apps/transicao/sincronia.py +18 -0
- package/lib/estudio/dados/projetos-ae/pinterest-inspiracao/ae/cenas.jsx +530 -0
- package/lib/estudio/dados/projetos-ae/pinterest-inspiracao/assets/fazer_assets.py +107 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/assets/pessoas/figurinha.py +46 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/BRIEF-A.md +83 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/audio.py +179 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/confere.py +20 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/dados/tempo-parte1.js +1 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/dados/tempo-parte2.js +1 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/gerar_emojis.py +11 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/img/filmes/_indice.js +122 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/base.js +380 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/main.js +86 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/p1a.js +169 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/p1b.js +455 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/p1c.js +389 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/js/p2.js +379 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/comp-a/video.py +62 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/take-unico/README.md +65 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/take-unico/oraculo_take.py +137 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/take-unico/render_take.py +388 -0
- package/lib/estudio/dados/projetos-ae/processo-motion-100-ia/take-unico/take.js +235 -0
- package/lib/estudio/diretor.js +2 -1
- package/lib/estudio/editor.js +285 -0
- package/lib/estudio/efeitos-fabrica/terminal-digitando.jsx +2 -1
- package/lib/estudio/effectcraft.js +152 -0
- package/lib/estudio/exportar.js +181 -0
- package/lib/estudio/gerativo.js +44 -15
- package/lib/estudio/index.js +126 -5
- package/lib/estudio/kit/gerativo.jsx +15 -0
- package/lib/estudio/kit-ae/base.jsx +1146 -0
- package/lib/estudio/kit-ae/cenas.jsx +395 -0
- package/lib/estudio/kit-ae/primitivas.jsx +911 -0
- package/lib/estudio/kokoro.js +3 -1
- package/lib/estudio/maquina-diretor.js +393 -0
- package/lib/estudio/maquina-elementos.js +134 -0
- package/lib/estudio/maquina-layout.js +198 -0
- package/lib/estudio/maquina-som.js +478 -0
- package/lib/estudio/maquina-trilha.js +160 -0
- package/lib/estudio/maquina-voz.js +429 -0
- package/lib/estudio/maquina.js +516 -0
- package/lib/estudio/projetos.js +60 -0
- package/lib/estudio/remotion.js +6 -4
- package/lib/estudio/revisor.js +61 -0
- package/lib/estudio/voicestudio.js +81 -0
- package/lib/headless.js +71 -0
- package/lib/hooks.js +72 -0
- package/lib/local/cerebro.json +398 -12
- package/lib/local/entrada.js +46 -2
- package/lib/marca-kit.js +309 -0
- package/lib/mcp.js +286 -6
- package/lib/perigo.js +31 -3
- package/lib/planos.js +47 -19
- package/lib/preparar.js +111 -0
- package/lib/retomar.js +55 -0
- package/lib/sandbox.js +197 -0
- package/lib/skills.js +3 -1
- package/lib/tools.js +13 -4
- package/lib/ui.js +1 -1
- package/lib/video/auto.js +18 -3
- package/package.json +4 -2
- package/skills/after-effects/SKILL.md +52 -0
- package/skills/maquina-de-motion/SKILL.md +84 -0
- package/skills/motion-de-primeira/SKILL.md +33 -51
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-uiad",
|
|
3
|
+
"titulo": "Apple Watch × Emirates",
|
|
4
|
+
"categoria": "produto",
|
|
5
|
+
"resumo": "recriação, no After Effects, do anúncio \"estilo Apple\" com Apple Watch e Emirates ensinado no tutorial \"How To Create Apple Style UI Ad in After Effects\", do canal Zakaria HQ (uma peça fictícia de portfólio, não um anúncio das marcas). São 20 s em 1920×1080, sem narração, com modelos 3D reais (GLB) do relógio, do avião e da Terra: a interface vive na tela do relógio, os widgets nascem dela e voltam para ela, e o fecho junta a maçã e o logo da companhia aérea. Os plugins pagos do tutorial foram trocados por recursos nativos do AE. Versão final: v3, aprovada pelo autor como referência de vídeo com produto 3D (\"quase perfeito\").",
|
|
6
|
+
"indicado": "marca que quer apresentar um aparelho, uma embalagem ou um objeto com modelo 3D, mostrando a interface ou os recursos saindo do próprio produto.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"produto 3D",
|
|
9
|
+
"estilo Apple",
|
|
10
|
+
"fundo cinza-claro",
|
|
11
|
+
"widgets de vidro",
|
|
12
|
+
"elementos que nascem da tela",
|
|
13
|
+
"texto com quique",
|
|
14
|
+
"brilhos sutis."
|
|
15
|
+
],
|
|
16
|
+
"ficha": {
|
|
17
|
+
"formato": "1920×1080, 30 qps, 16:9, cor BT.709",
|
|
18
|
+
"duracao": "20 s",
|
|
19
|
+
"motor": "ae",
|
|
20
|
+
"voz": "sem narração",
|
|
21
|
+
"musica": "ver o guia de estilo",
|
|
22
|
+
"fontes": "ver o guia de estilo"
|
|
23
|
+
},
|
|
24
|
+
"ferramentas": [
|
|
25
|
+
"Claude Code",
|
|
26
|
+
"After Effects",
|
|
27
|
+
"Blender"
|
|
28
|
+
],
|
|
29
|
+
"ficha_tecnica": {
|
|
30
|
+
"Duração": "20 s",
|
|
31
|
+
"Formato": "1920×1080, 30 qps, 16:9, cor BT.709",
|
|
32
|
+
"Voz": "sem narração",
|
|
33
|
+
"Áudio": "o vídeo final usa o áudio do anúncio original só como referência de tempo; o projeto não tem trilha própria",
|
|
34
|
+
"Ferramenta": "After Effects 2026, renderizador Advanced 3D nas comps com GLB, montado por comandos de uma ponte MCP (sem gerador em Python)",
|
|
35
|
+
"Modelos 3D": "`apple_watch_series_9.glb`, `emirates_airbus_a345.glb` e `earth.glb`, da pasta de assets do autor do tutorial",
|
|
36
|
+
"Vídeos de terceiros": "um vídeo do canal oficial da Emirates na tela do relógio e cinco clipes do Pexels no círculo (origem em `assets/footage/FONTES.md`)"
|
|
37
|
+
},
|
|
38
|
+
"etapas": [
|
|
39
|
+
{
|
|
40
|
+
"titulo": "O roteiro",
|
|
41
|
+
"texto": "**Resumo:** o anúncio não tem narração; a história é contada pelo relógio, por três frases curtas em inglês e pelo fecho de marca. Como é uma recriação, o roteiro é o do anúncio original do tutorial do Zakaria HQ, medido quadro a quadro. Aqui estão a história em sete cenas, os textos exatos e a linha do tempo.\n\n## A história em uma frase\n\nAs três frases fazem o arco: \"Getting Stressed out ?\" na tela de batimento, \"Time for a journey\" quando o voo aparece e \"All from your AppleWatch\" quando o relógio volta, antes do fecho com a Emirates.\n\n## Os textos da tela (verbatim, em inglês, como no original)\n\n | \n\n | Momento\n | Texto\n\n | Tela de batimento\n | \"10:09\" · \"Current\" · contador até 70 \"BPM\" · \"71 BPM, 1m ago\"\n\n | Frase 1\n | \"Getting / Stressed / out / ?\"\n\n | Frase 2\n | \"Time for\" (à esquerda) · \"a journey\" (à direita)\n\n | Widget de voo\n | \"your flight\" · \"ARRIVAL\" · \"12:00 PM\" · \"SFO\" · \"T1\"\n\n | Widget do QR\n | \"Scan & win Now\" · \"• Live\"\n\n | Balões\n | Dubai · Egypt · Paris · London\n\n | Frase 3\n | \"All / from / your / AppleWatch\"\n\n | Fecho\n | a maçã vermelha e o logo \"Emirates\"\n\n## Linha do tempo (20 s, 30 qps)\n\n## 1. O relógio e o estresse (0 a 4,3 s)\n\n | \n\n | Tempo (s)\n | O que acontece\n\n | 0,00–3,80\n | o relógio sobe de baixo, muito perto da câmera e inclinado, e assenta no centro\n\n | 0,00–0,80\n | a tela de batimento acende: coração e auras crescem com quique, \"10:09\" desce e os sete pontinhos caem um a um\n\n | 0,20–2,70\n | o contador vai de 0 a 70 BPM\n\n | 0,67–1,40\n | \"Getting / Stressed / out / ?\" sobe palavra por palavra\n\n | 2,30–3,75\n | o relógio recua e sobe; a frase some (2,55–2,90)\n\n | 3,15–3,55\n | a interface do coração sobe e sai; o ícone da Emirates sobe junto, de baixo\n\n## 2. Hora de viajar (4,3 a 8,1 s)\n\n | \n\n | Tempo (s)\n | O que acontece\n\n | 4,35–4,75\n | entra o vídeo do avião no céu dourado; o ícone encolhe para o canto da tela\n\n | 4,45–4,90\n | \"Time for\" e \"a journey\" sobem, um de cada lado do relógio\n\n | 4,70–5,45\n | três widgets de vidro saltam de dentro da tela: voo, clima e QR\n\n | 5,95–8,35\n | anéis concêntricos se abrem atrás do relógio\n\n | 6,80–7,36\n | as frases se fecham em direção ao relógio\n\n | 6,85–7,55\n | os widgets voltam para a tela; o card de voo perde o fundo e vira a nova tela\n\n## 3. O avião e os destinos (8,1 a 10,7 s)\n\n | \n\n | Tempo (s)\n | O que acontece\n\n | 8,15–8,60\n | o avião 3D sai da tela do relógio e cresce; o relógio some\n\n | 8,45–10,50\n | anéis de novo, atrás do avião\n\n | 8,70–9,29\n | quatro balões estalam em volta do avião, com o monumento saindo pela borda: Dubai, Egypt, Paris, London\n\n | 10,20–10,70\n | o avião desce ao centro e encolhe; um círculo se abre sobre ele; os balões correm para o centro e somem\n\n## 4. O mundo (10,7 a 12,5 s)\n\n | \n\n | Tempo (s)\n | O que acontece\n\n | 10,20–12,50\n | a Terra 3D gira embaixo, dentro do círculo\n\n | 10,72–11,95\n | cinco clipes de viagem trocam a cada 10 quadros\n\n | 11,95–12,50\n | o avião sai pela direita e o círculo fecha num ponto\n\n## 5. Tudo do relógio (12,4 a 15,3 s)\n\n | \n\n | Tempo (s)\n | O que acontece\n\n | 12,35–13,40\n | o relógio volta pequeno, girando em 3D, com o avião na tela, e assenta\n\n | 12,90–14,10\n | \"All / from / your / AppleWatch\" entra palavra por palavra, vindo de cima\n\n | 14,55–15,27\n | o relógio desce e sai; a frase esmaece\n\n## 6. Fecho de marca (15,0 a 20,0 s)\n\n | \n\n | Tempo (s)\n | O que acontece\n\n | 15,00–16,10\n | uma maçã cinza grande encolhe até o centro\n\n | 16,17–16,42\n | a maçã enche de vermelho de baixo para cima, com a superfície ondulando\n\n | 16,25–16,50\n | a maçã vai para a esquerda com quique\n\n | 16,37–17,10\n | as letras \"Emirates\" voam da direita, uma a cada 2 quadros, vermelhas e com brilho no voo, e pousam pretas\n\n | 16,60–17,40\n | um brilho varre a maçã\n\n | 17,10–20,00\n | fecho parado: maçã vermelha e \"Emirates\" em preto\n\nOs valores exatos de cada chave (posição, escala, rotação, efeito e expressão) estão no `MAPA-DO-PROJETO.md` do pacote."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"titulo": "A identidade visual",
|
|
45
|
+
"texto": "**Resumo:** produto 3D real sobre fundo cinza-claro, texto preto em Inter, o vermelho da Emirates só nos acentos e widgets de vidro fosco. Movimento com as curvas \"fast start\" e \"3\" e um quique por expressão em toda chegada; brilhos nativos discretos em cada elemento. Números tirados do `MAPA-DO-PROJETO.md` e do tutorial da recriação.\n\n## Fontes\n\n | \n\n | Uso\n | Fonte\n | Onde baixar\n\n | Frases de cima (\"Getting Stressed out ?\", \"Time for a journey\"), balões\n | Inter Medium\n | Google Fonts\n\n | \"All from your AppleWatch\"\n | Inter Regular\n | Google Fonts\n\n | Contador de batimentos\n | Inter Medium 52, branco\n | Google Fonts\n\nO anúncio original usa SF Pro Display. Texto preto `#111111`, de 57 a 62 px, tracking de −10 a −20, uma camada por palavra.\n\n## Cores\n\n | \n\n | Token\n | Hex\n | Uso\n\n | Fundo\n | `#EFEFEF`\n | sólido em toda a peça\n\n | Texto\n | `#111111`\n | frases\n\n | **Vermelho Emirates**\n | **`#D71A21` / `#DB2129`**\n | coração, ícone, etiqueta, letras durante o voo\n\n | Maçã cheia\n | `#C5312D`\n | o líquido que sobe\n\n | Maçã vazia\n | `#DBDBDB`\n | a maçã antes de encher\n\n | Vidro dos widgets\n | preto a 52%\n | sobre o fundo claro vira um cinza de vidro fosco\n\n | Balões\n | azul `#0088FF` e cinza `#E8E8ED`\n | os quatro destinos\n\n | Anéis\n | cinza claro (0,82)\n | repetidos atrás do relógio e do avião\n\n | Aura\n | amarelo, verde, magenta e azul girando\n | halo pastel atrás do relógio\n\n | Chuva\n | ciano (0,32, 0,8, 1)\n | gotas do widget de clima\n\n | \"• Live\"\n | verde com brilho\n | widget do QR\n\n## Componentes\n\n | \n\n | Peça\n | Como é\n\n | Relógio 3D\n | `apple_watch_series_9.glb` a escala 1900, X Rotation 22; movido por dois nulls encadeados; sombra de 55%\n\n | Tela do relógio\n | retângulo preto 321×387, arredondamento 63; conteúdo 440×488 a 79%, recortado por um matte 315×381 com arredondamento 60\n\n | Interface de batimento\n | camadas do `Heart.psd`: coração, duas auras, \"10:09\", \"Current\", \"BPM\", \"71 BPM, 1m ago\", sete pontinhos e o contador de 0 a 70 por slider\n\n | Widgets de vidro\n | clima 270×150, voo 296×162 e QR 200×224, arredondamento 18, 3D na comp principal\n\n | Clima vivo\n | nuvem com degradê branco → azul-claro, Bevel Alpha e brilho, flutuando 1,6 px; oito gotas inclinadas 20° caindo em loop de 0,8 s\n\n | Voo\n | avião GLB a 27% com sombra, etiqueta da Emirates com brilho vermelho e névoa vermelha atrás; textos \"your flight\", \"ARRIVAL\", \"12:00 PM\", \"SFO\", \"T1\"\n\n | QR\n | QR sobre branco, \"Scan & win Now\" e \"• Live\" verde com brilho\n\n | Anéis\n | elipse de 1.043 px com Repeater (3 cópias, 142% por cópia) e Offset de −5 a 0, para nascerem de dentro para fora\n\n | Aura\n | cópia do relógio por trás com 4-Color Gradient girando por expressão, CC RepeTile e Fast Box Blur 150\n\n | Avião 3D\n | `emirates_airbus_a345.glb` com Orientation (270, 0, 90) e um balanço leve em Y\n\n | Balões\n | forma vetorial do `.ai` com o nome em Inter Medium 72; o monumento usa o balão como matte e uma segunda cópia, só com o topo, passa por cima da borda\n\n | Círculo da viagem\n | círculo de 746 px que abre de 72 a 100% e fecha até 0; dentro, a Terra GLB girando e cinco clipes de 10 quadros com Tint de 35%\n\n | Maçã e letras\n | maçã cinza com um retângulo vermelho com Wave Warp subindo dentro dela; cada letra da Emirates é uma cópia do logo com Linear Color Key, Fill e máscara só daquela letra\n\n## Câmera e luz\n\n- Uma câmera por comp 3D, em (960, 540, −2666,67), preset de 50 mm: em z = 0 a escala é 1:1. A câmera fica parada; quem se move é o relógio.\n\n- Spot em (1040, 460, −666,7) somada a uma Environment Light em (0, 0, −1333,3), nas comps do relógio.\n\n- Motion blur ligado, obturador de 180°.\n\n## Curvas e quique\n\n | \n\n | Nome\n | Influência das chaves\n | Uso\n\n | fast start\n | saída 10%, chegada 100%\n | aproximação e recuo do relógio, cards voltando\n\n | \"3\"\n | saída 72%, chegada 83%\n | entrada dos cards, avião saindo, brilho da maçã\n\n | ease-in forte\n | saída 80%, chegada 15%\n | clima e QR encolhendo no fim\n\n | suave\n | 40% / 40%\n | círculo da viagem fechando\n\n**Quique (no lugar do BOUNCr 50/2/4):** chaves lineares e a expressão abaixo; a versão mais leve (amplitude 0,04, frequência 1,8, decaimento 3) vale na maçã e em \"All from your AppleWatch\".\n\nvar amp=0.05,freq=2,decay=4;var n=0;if(numKeys>0){n=nearestKey(time).index;if(key(n).time>time)n--;}\nif(n>0){var t=time-key(n).time;var v=velocityAtTime(key(n).time-thisComp.frameDuration/10);value+v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);}else{value}\n\nAs chaves com quique são lineares de propósito: a expressão usa a velocidade de chegada para calcular o rebote.\n\n**Defasagem:** 1 a 2 quadros entre irmãos (pontinhos, letras) e 0,1 a 0,3 s entre palavras.\n\n## Brilhos (todos nativos)\n\n | \n\n | Onde\n | Como\n\n | Coração\n | Glow com cores A e B vermelhas, limiar 25, raio 28, intensidade 0,45\n\n | \"Sol\" na tela\n | rampa radial laranja em modo Add a 22% da opacidade do vídeo; o vídeo ganha Brightness & Contrast (7/20) e CC Vignette 90\n\n | Nuvem\n | Glow branco, limiar 70, raio 14, intensidade 0,45\n\n | Chuva\n | Glow, limiar 30, raio 7, intensidade 1,2\n\n | Etiqueta Emirates\n | Glow vermelho, raio 260 (a camada está a 4,2%)\n\n | Atrás do avião do card\n | elipse vermelha 200×58, desfocada, de 50 a 68% quando vira tela\n\n | \"• Live\"\n | Glow verde, limiar 20, raio 9, intensidade 1,8\n\n | Letras\n | Glow vermelho, raio 120, intensidade 1,5 → 0 e Effect Opacity 100 → 0 no pouso (com intensidade 0 ainda sobra um halo escuro em letra preta)\n\n | Maçã\n | CC Light Sweep, direção 25°, largura 70, intensidade 55\n\n## Transições\n\n | \n\n | Momento\n | Como\n\n | Coração → ícone\n | empurrão vertical dentro da tela, como troca de tela do iOS\n\n | Ícone → vídeo\n | o vídeo entra em fade e o ícone encolhe para o canto\n\n | Tela → widgets\n | os widgets nascem com escala 0 a partir do centro da tela\n\n | Widgets → tela de voo\n | voltam para a tela e o card de voo perde o fundo e vira a tela\n\n | Relógio → avião\n | o avião 3D começa no tamanho e no lugar do avião do card\n\n | Balões → círculo\n | tudo converge para o centro e o círculo abre\n\n | Círculo → relógio\n | o círculo fecha num ponto e o relógio volta girando\n\n | Relógio → maçã\n | o relógio desce e a maçã grande encolhe ao centro, sem fade de tela inteira\n\n | Maçã → logo\n | o líquido enche, a maçã abre espaço e a cor passa para as letras\n\n## Som\n\nO vídeo final usa o áudio do anúncio original, só para conferir os tempos. Para uma peça nova, faça som próprio: música real e um efeito por ação, com o pico no quadro do evento.\n\n## O que é \"humano\" neste vídeo\n\n- O relógio chega com cauda longa e nunca para de uma vez.\n\n- A nuvem flutua e a chuva cai sem parar enquanto o widget está na tela.\n\n- Os widgets voltam para o relógio com o clima e o QR passando por cima, grandes, e só encolhem no fim.\n\n- O avião balança de leve; a Terra gira por baixo dos clipes.\n\n- As letras voam com rotação e brilho, e o brilho some antes do pouso."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"titulo": "A montagem no After Effects",
|
|
49
|
+
"texto": "- **Instale a fonte Inter** (Medium e Regular, Google Fonts). O anúncio original usa SF Pro, que não estava instalada na recriação. Instale para todos os usuários e reinicie o After Effects; no Windows, se não aparecer, copie para `C:\\Program Files\\Common Files\\Adobe\\Fonts`.\n\n- **Mantenha a pasta `projeto/` como veio** e abra o `.aep` no After Effects 2026 ou mais novo (o renderizador Advanced 3D é o que abre GLB).\n\n- **Comp:** `APPLE_UI_AD (principal)`, 1920×1080, 30 qps, 20 s. A árvore de comps está no topo do mapa.\n\n- **Arquivo faltando:** File › Dependencies › Find Missing Footage; clique com o direito › Replace Footage › File e aponte para `projeto/assets/originais` ou `projeto/assets/footage`.\n\n- **Render:** `render_leve.ps1` e depois `montar_final.py`. Não mande comandos à ponte enquanto o `aerender` roda.\n\n**Pegadinhas de GLB no AE:** mude a comp para Advanced 3D antes de pôr o modelo (senão abre um aviso que trava a ponte); com qualquer luz na comp, a iluminação padrão some e o GLB fica escuro, então some uma Environment Light à spot; o vidro abaulado do relógio esconde o que fica \"dentro\" dele, por isso a tela é uma comp clássica separada; track matte não renderiza em Advanced 3D, por isso o círculo da viagem é pré-composto em clássico."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"titulo": "As decisões de direção",
|
|
53
|
+
"texto": "- **O produto é o palco.** Um objeto 3D real num fundo cinza-claro; a interface vive na tela dele, e os elementos nascem da tela e voltam para ela.\n\n- **A tela é enquadrada por matte.** Ela fica numa comp clássica que copia por expressão os nulls do relógio, com uma cópia da tela 6 px menor como matte: o conteúdo nunca vaza e a borda preta fica fina e uniforme (correção da v3).\n\n- **Câmera parada, relógio em dois nulls.** Um faz a aproximação e o outro, o recuo, sobrepostos; é isso que dá a cauda longa do movimento.\n\n- **Texto palavra por palavra com quique**, e a palavra mais perto do destino sai primeiro, para uma não passar por cima da outra.\n\n- **A cor da marca só nos acentos:** coração, ícone, etiqueta, maçã e as letras durante o voo.\n\n- **Detalhes mínimos dão vida** (lição da v2): nuvem com degradê e chuva caindo em loop, brilhos nativos, um \"sol\" na tela do relógio, aura colorida atrás dele.\n\n- **Toda transição sai de um elemento:** o card de voo vira a tela, o avião do card sai da tela em 3D, os balões correm para o centro, o círculo fecha num ponto que vira o relógio e a cor da maçã passa para as letras.\n\n- **Plugins pagos trocados por nativos:** curvas por influência das chaves no lugar do Flow, uma expressão de quique no lugar do BOUNCr, uma camada por palavra no lugar do TextExploder, Glow nativo no lugar do Deep Glow e CC Light Sweep no brilho da maçã.\n\n- **Medir antes de ajustar.** O anúncio original foi medido em folhas a 4 qps e a tela do relógio rastreada a 10 qps; a recriação ficou a 1 ou 2 quadros do original.\n\nDetalhes de cores, curvas e brilhos: estilo.md. Cenas por tempo: roteiro.md. Para fazer um vídeo no mesmo estilo: PROMPT.md."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"titulo": "As versões até o final",
|
|
57
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | v1\n | as 7 cenas com tempos e estrutura do original; quatro trechos que adiantavam de 0,15 a 0,4 s foram corrigidos\n\n | v2\n | retorno: \"praticamente perfeito\", mas faltavam micro-detalhes. Ganhou nuvem viva e chuva, brilho na etiqueta da Emirates, no \"Live\" e no coração, tela com sol e vinheta, aura maior, anéis no tempo e a volta dos cards ao relógio refeita\n\n | **v3**\n | tela enquadrada por matte: o vídeo do segundo relógio deixou de vazar pelos lados; aprovada como referência (\"quase perfeito\")\n\n**Ainda diferente do original:** os clipes do círculo são parecidos, não os mesmos; a fonte é Inter; o ícone da Emirates entra junto da tela; os anéis atrás dos balões ficaram maiores; o relógio que volta aos 12,5 s entra menor e sem a aura amarela; o brilho das letras é mais discreto que o do Deep Glow."
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"pacote": [
|
|
61
|
+
{
|
|
62
|
+
"pasta": "projeto/",
|
|
63
|
+
"conteudo": "`apple-ui-ad-recriacao.aep`; `assets/originais/` (os três GLB, o `Heart.psd` da tela de batimento, os PNGs dos monumentos, os balões em `.ai`, os logos da Apple e da Emirates e o QR); `assets/footage/` (o vídeo da Emirates, os cinco clipes e o `FONTES.md`); `assets/prep/` (montagens); `prep.json` (contorno dos balões e caixa de cada letra do logo); o `MAPA-DO-PROJETO.md`, com cada comp, camada, chave, efeito e expressão no valor exato, o JSON exportado do `.aep` que gera esse mapa e os scripts"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"pasta": "audio/",
|
|
67
|
+
"conteudo": "só o `montar_final.py`, que põe o áudio do anúncio original por baixo; o áudio dele não vem no pacote"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"pasta": "referencias/",
|
|
71
|
+
"conteudo": "as folhas quadro a quadro (original × recriação, a cada 0,25 s), o lado a lado da v3, as folhas de contato do anúncio original, as medidas da tela do relógio e os links"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"pasta": "render/",
|
|
75
|
+
"conteudo": "`final.mp4`"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"pasta": "preparar_assets.py",
|
|
79
|
+
"conteudo": "tira do `.ai` o contorno dos balões, mede a caixa de cada letra do logo da Emirates (`prep.json`) e faz as montagens de apoio"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"pasta": "gerar_mapa.py",
|
|
83
|
+
"conteudo": "escreve o `MAPA-DO-PROJETO.md` a partir do JSON exportado do `.aep`"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"pasta": "render_leve.ps1",
|
|
87
|
+
"conteudo": "`aerender` em trechos, prioridade baixa e memória limitada"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"pasta": "montar_final.py",
|
|
91
|
+
"conteudo": "junta os trechos, etiqueta a cor em BT.709 e monta o lado a lado com o original"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"prompt": "Quero fazer um anúncio de produto em 3D no mesmo estilo do projeto \"Apple Watch × Emirates\", que está em 07-videos/projetos/uiad/, com o meu produto.\n\nProduto: {{PRODUTO}} (o objeto que vai em 3D e o que aparece na tela ou na superfície dele)\nModelo 3D: {{MODELO_3D}} (um GLB meu; se não tiver, procure um baixável ou gere um, e me mostre antes)\nMarca ou parceiro do fecho: {{MARCA}} (logo e cor)\nA história em uma frase: {{HISTORIA}} (ex.: \"o cliente está com pressa, o app resolve, tudo pelo celular\")\nFormato e duração: {{FORMATO}} (a referência é 1920×1080, 20 s)\n(Se algum desses estiver vazio ou com as chaves, me pergunte antes de começar.)\n\n1. Estude o projeto antes de propor qualquer coisa. Leia, nesta ordem: 07-videos/projetos/uiad/LEIA-ME.md, estilo.md e roteiro.md. Depois abra o projeto/MAPA-DO-PROJETO.md (árvore de comps, nulls do relógio, comp da tela com matte, widgets, círculo e letras) e me explique em poucas linhas como o produto, a tela e os elementos que saem dela se encaixam. Diga o que vai reaproveitar.\n\n2. Siga o passo a passo de 07-videos/_LEIA.md e os números de 07-videos/regras-vigentes.md. Crie o meu projeto em 07-videos/projetos/AAAA-MM-DD-tema/ a partir de 07-videos/projetos/_modelo/README.md e marque cada etapa no checklist. Não edite os arquivos do projeto uiad: copie o que for reaproveitar.\n\n3. Use as skills instaladas: motion-app-ae (interface e produto 3D no After Effects), video-referencias (assets reais), animacao-saas (elementos que nascem de um e viram o próximo) e better-portuguese (todo texto da tela).\n\n4. Roteiro em cenas, como no roteiro.md da referência: o produto entra → interface na tela → frase curta → elementos saem da tela → voltam → o produto vira outra coisa → fecho de marca. Para cada cena, diga o tempo, o que se move e de onde nasce a transição. Frases de no máximo quatro palavras. Espere o meu ok.\n\n5. O modelo 3D: comp em Advanced 3D antes de pôr o GLB; confira escala e orientação por render de quadro; luz spot somada a uma Environment Light. A tela do produto vai numa comp clássica separada que copia os nulls por expressão, com um matte 6 px menor que a tela.\n\n6. Identidade: fundo claro e neutro, uma fonte, a cor da marca só nos acentos. Se a minha marca tiver identidade forte, use a fonte e as cores dela.\n\n7. Reaproveite o método, troque o conteúdo. Mantenha deste projeto: câmera parada com o produto movido por dois nulls (aproximação e recuo sobrepostos), as curvas fast start e \"3\", o quique por expressão em toda chegada, o texto uma camada por palavra com a palavra mais perto do destino saindo primeiro, widgets de vidro que nascem da tela e voltam, os detalhes vivos (um brilho, um ícone com movimento secundário, a tela com luz), a transição que sempre sai de um elemento e o fecho em que a cor passa de uma marca para a outra. Troque: o produto, a interface, os widgets, os textos, os vídeos dentro da tela e as marcas.\n\n8. Som próprio: escolha uma música real, meça o BPM, encaixe as trocas de cena nos tempos fortes e ponha um efeito por ação, com o pico no quadro do evento.\n\n9. Construa cena a cena e me mostre folhas de contato a cada rodada, com recortes ampliados de cada elemento. Antes de entregar, confira: nada vaza da tela do produto, nenhuma palavra passa por cima da outra, nenhum brilho deixa halo escuro em letra preta. Em cada movimento, pergunte: está humano ou robotizado? Renderize em trechos, etiquete a cor em BT.709 e me entregue o vídeo, a ficha atualizada e uma anotação em anotacoes/.",
|
|
95
|
+
"campos": [
|
|
96
|
+
"FORMATO",
|
|
97
|
+
"HISTORIA",
|
|
98
|
+
"MARCA",
|
|
99
|
+
"MODELO_3D",
|
|
100
|
+
"PRODUTO"
|
|
101
|
+
],
|
|
102
|
+
"fonte": {
|
|
103
|
+
"nome": "Clube do Motion",
|
|
104
|
+
"url": "https://clubedomotion.com/projeto/?id=uiad",
|
|
105
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-viralgrow",
|
|
3
|
+
"titulo": "Influencers de IA",
|
|
4
|
+
"categoria": "saas",
|
|
5
|
+
"resumo": "showreel de 15 s, horizontal e sem narração, de um SaaS fictício de influencers de IA, o ViralGrow. É uma recriação fiel, em português, de um vídeo da galeria do prompt-motion.com: mesmas cenas, cores, tipografia e tempos, com criadores, telas e trilha próprios. Feito em HyperFrames (HTML com uma timeline GSAP) a 60 qps, sem passar pelo After Effects. Versão final: v5.",
|
|
6
|
+
"indicado": "startup ou SaaS que quer um vídeo curto de lançamento ou de apresentação do produto para site, anúncio ou redes.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"landing page em movimento",
|
|
9
|
+
"fundo claro quente",
|
|
10
|
+
"tipografia seminegrita",
|
|
11
|
+
"desfoque nas entradas",
|
|
12
|
+
"celulares com interface",
|
|
13
|
+
"painel de métricas",
|
|
14
|
+
"ritmo na batida."
|
|
15
|
+
],
|
|
16
|
+
"ficha": {
|
|
17
|
+
"formato": "1920×1080, 60 qps, 16:9",
|
|
18
|
+
"duracao": "15,0 s",
|
|
19
|
+
"motor": "ae",
|
|
20
|
+
"voz": "sem narração: texto na tela, música e efeitos",
|
|
21
|
+
"musica": "ver o guia de estilo",
|
|
22
|
+
"fontes": "ver o guia de estilo"
|
|
23
|
+
},
|
|
24
|
+
"ferramentas": [
|
|
25
|
+
"Claude Code",
|
|
26
|
+
"After Effects",
|
|
27
|
+
"ElevenLabs"
|
|
28
|
+
],
|
|
29
|
+
"ficha_tecnica": {
|
|
30
|
+
"Duração": "15,0 s",
|
|
31
|
+
"Formato": "1920×1080, 60 qps, 16:9",
|
|
32
|
+
"Voz": "sem narração: texto na tela, música e efeitos",
|
|
33
|
+
"Ferramenta": "HyperFrames (HTML estático + uma timeline GSAP pausada), render a 60 qps",
|
|
34
|
+
"Trilha": "\"Summer\" (Calvin Harris), 127,9 BPM, com o drop em 2,00 s",
|
|
35
|
+
"Áudio final": "−14,7 LUFS",
|
|
36
|
+
"Imagens geradas": "20 retratos de criadores (GPT Image 2.5) e 1 vídeo de reação (Grok Imagine 1.5 Lite), na Higgsfield",
|
|
37
|
+
"Fecho": "ícone, \"ViralGrow\", \"Seu marketing no piloto automático.\" e o botão \"Começar agora →\", clicado pelo cursor"
|
|
38
|
+
},
|
|
39
|
+
"etapas": [
|
|
40
|
+
{
|
|
41
|
+
"titulo": "O roteiro",
|
|
42
|
+
"texto": "**Resumo:** o showreel não tem narração; os títulos contam o produto em sete cenas, uma por compasso. Aqui estão os textos exatos em português, como eles foram adaptados do original em inglês e as cenas por tempo (de `main.js`).\n\n## Como o texto foi feito\n\n- O original em inglês veio de um prompt que pedia um showreel no estilo de uma landing page para um produto fictício.\n\n- A tradução seguiu a função de cada frase: as palavras que giram são todas masculinas, para o \"seu\" da frase não mudar; o \"slideshow\" do TikTok virou \"carrossel\"; os textos dos celulares ganharam R$, @suamarca e \"CRIADOR IA\".\n\n- A copy passou pela revisão de português do projeto.\n\n## Os textos da tela (verbatim)\n\n | \n\n | Cena\n | Texto\n\n | 1\n | \"Coloque [pílula com avatares] influencers de IA\" / \"para divulgar seu\" app → SaaS → negócio → produto\n\n | 2\n | \"Conheça seu\" / \"criador de IA.\"\n\n | 3\n | \"Carrosséis e vídeos de reação.\"\n\n | 4\n | \"Publica no\" / \"TikTok, Reels\" / \"e Shorts.\"\n\n | 5\n | \"Aprende o que\" / \"funciona.\" · painel \"Visualizações · últimos 30 dias\" · 48,2 mil · \"↑ 38%\" · \"Vencedor\"\n\n | 6\n | \"Você nunca grava\" / \"nem edita.\"\n\n | 7\n | \"ViralGrow\" · \"Seu marketing no piloto automático.\" · \"Começar agora →\" · viralgrow.ai\n\n## Cenas por tempo\n\n | \n\n | Tempo (s)\n | Cena\n | Tela\n\n | 0–0,5\n | ponto\n | um ponto laranja com anel pulsando abre numa pílula branca\n\n | 0,6–1,4\n | gancho\n | quatro avatares estalam na pílula; a linha 1 chega grande e desfocada, centrada na pílula, e assenta\n\n | 1,42–2,0\n | \n | entra \"para divulgar seu app\"\n\n | 2,00\n | **drop**\n | as palavras giram na batida: SaaS (2,0), negócio (2,235), produto (2,47); \"produto\" fica preto\n\n | 2,72–3,0\n | \n | os avatares trocam de rosto girando\n\n | 3,17–3,41\n | saída\n | a cena avança para a frente com desfoque\n\n | 3,41–5,75\n | conheça seu criador\n | o título entra pela esquerda; à direita, a coluna de retratos rola rápido com borrão e para no retrato da ruiva, que ganha borda laranja e selo (4,55–4,8)\n\n | 5,12–5,75\n | morph\n | o retrato vira o celular com o vídeo de reação e vai para o centro\n\n | 5,75–7,63\n | carrosséis e reação\n | o celular no centro e quatro cartões em leque 3D, com corações subindo\n\n | 7,63–9,51\n | publica nas redes\n | o celular vai para a direita, entram mais dois celulares e os ícones de TikTok, Instagram e YouTube Shorts, um por batida (8,0 · 8,235 · 8,47)\n\n | 9,51–11,38\n | aprende o que funciona\n | o painel entra pela direita; o número conta até 48,2 mil, a linha se desenha, \"↑ 38%\" estala; as duas primeiras miniaturas ganham X vermelho e a terceira cresce com \"Vencedor\" (10,8)\n\n | 11,38–13,26\n | nunca grava\n | a parede de cartões inclinada entra pela direita e rola na diagonal\n\n | 13,26–14,1\n | marca\n | o ícone estala e vai para a esquerda; \"ViralGrow\" sai de trás dele, letra por letra; entram o slogan e o botão\n\n | 14,06–15,0\n | clique\n | o cursor chega em curva, clica em \"Começar agora →\" (14,5) com ripple e escorrega um pouco; fade final"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"titulo": "A identidade visual",
|
|
46
|
+
"texto": "**Resumo:** \"landing page em movimento\": fundo creme quase branco com grade de pontos e manchas laranja desfocadas, Inter seminegrita preta com espaçamento apertado, laranja da marca só nos destaques, celulares pretos com a interface fiel das redes. Movimento em GSAP: tudo entra e sai com desfoque, pops com quique, câmera que deriva. Eletrônica a 127,9 BPM com drop em 2 s e cerca de 65 efeitos. Números tirados de `style.css`, `main.js` e `mixar.py`.\n\n## Fontes\n\n | \n\n | Uso\n | Fonte\n | Onde baixar\n\n | Títulos (600, espaçamento −0,045 em, entrelinha 1,0)\n | Inter\n | Google Fonts (pesos estáticos 400 a 700, no pacote)\n\n | Interface dos celulares, painel, rótulos\n | Inter 400 a 700\n | Google Fonts\n\n | Endereço do fecho\n | GeistMono 500\n | no pacote\n\n | Emojis das legendas\n | Segoe UI Emoji\n | fonte do Windows (veja a ficha)\n\n## Cores\n\n | \n\n | Token\n | Hex\n | Uso\n\n | Fundo\n | `#FBF9F7`\n | fundo creme, com grade de pontos a 11% e grão a 5%\n\n | Texto\n | `#0F0F10`\n | títulos\n\n | Palavra que gira\n | `#A19D99`\n | as palavras cinza; a última fica preta\n\n | Laranja inicial\n | `#E8572A`\n | o ponto do primeiro quadro\n\n | **Laranja da marca**\n | **`#EC6A3C`**\n | borda do retrato escolhido, selo de check\n\n | Ícone do app\n | degradê `#F59569` → `#EC6A3C` → `#DD4A1B`\n | ícone com play\n\n | Botão\n | degradê `#E8683A` → `#D2461C`\n | \"Começar agora →\"\n\n | Manchas de luz\n | laranja a 50% e 30%, desfocadas\n | uma embaixo e uma em cima; no fim, um degradê quente no canto inferior direito\n\n | Verde\n | `#21B26B`, fundo `#E3F5EA`, texto `#157A45`\n | \"Vencedor\", \"↑ 38%\"\n\n | Vermelho\n | `#E5484D`\n | os X das miniaturas que não funcionaram\n\n | Celular\n | `#0D0D0F`\n | moldura e ilha\n\n | Cinzas de apoio\n | `#77716C`, `#8F8882`, `#6F6862`\n | rótulo do painel, segunda parte do slogan, endereço\n\n | Redes\n | TikTok `#25F4EE` e `#FE2C55`; Instagram `#FEDA75` → `#FA7E1E` → `#D62976` → `#4F5BD5`\n | ícones oficiais desenhados em SVG\n\n## Componentes\n\n- **Pílula com avatares:** começa como um ponto laranja com anel pulsando, abre numa pílula branca com sombra e recebe quatro avatares que estalam; depois os rostos trocam girando no eixo Y.\n\n- **Palavra que gira:** troca vertical com desfoque, e a largura do espaço acompanha a palavra.\n\n- **Coluna de retratos** (460×780, raio 34) que rola rápido com borrão vertical e para no retrato escolhido, que ganha borda laranja e selo de check.\n\n- **Celular** (370×790, raio 58) com ilha dinâmica e a interface do TikTok: status 9:41, abas \"Seguindo\" e \"Para você\", \"Compartilhar\", @suamarca e o selo \"CRIADOR IA\".\n\n- **Leque 3D** de quatro cartões inclinados em volta do celular, com corações subindo.\n\n- **Três celulares** com os ícones de TikTok, Instagram e YouTube Shorts entrando um por batida.\n\n- **Painel** \"Visualizações · últimos 30 dias\" com o número contando de 0 a 48,2 mil, \"↑ 38%\", a linha se desenhando, a área preenchida e três miniaturas: duas com X vermelho e a terceira com \"Vencedor\" em verde.\n\n- **Parede** de cartões inclinada em −12°, com quatro colunas rolando em velocidades diferentes.\n\n- **Fecho:** ícone laranja com play, o nome letra por letra, o slogan, o botão com ripple, o endereço e o cursor que clica.\n\n## Movimento\n\n | \n\n | Função\n | Como é\n\n | Entrada com desfoque\n | opacidade 0 → 1, desfoque 14 px → 0, sobe 24 px, 0,55 s, `power3.out`\n\n | Saída com desfoque\n | desfoque 0 → 14 px, 0,28 s, `power2.in`\n\n | Pop\n | escala 0,3 → 1, 0,42 s, `back.out(2.2)`\n\n | Celulares e painel entrando\n | `expo.out`, 0,5 a 0,6 s, vindo de lado com desfoque\n\n | Morph do retrato no celular\n | `power3.inOut`, 0,55 s\n\n | Flutuação\n | `sine.inOut`, ida e volta, 7 a 10 px\n\n | Câmera\n | deriva de 6 × 4 px em ciclos de 3,75 s; manchas de luz andando em ciclos de 3,75 e 5 s\n\n | Zoom lento\n | cenas crescem 2 a 3,5% enquanto ficam na tela\n\nA cascata entre irmãos fica entre 0,035 e 0,08 s.\n\n## Tempo\n\nCompasso de 1,877 s a 127,9 BPM; drop em 2,00 s. Trocas de cena nos tempos fortes: 3,41 · 5,75 · 7,63 · 9,51 · 11,38 · 13,26 s. As palavras que giram trocam em 2,0 · 2,235 · 2,47 s e os ícones das redes entram em 8,0 · 8,235 · 8,47 s, na batida.\n\n## Trilha\n\n | \n\n | Item\n | Valor\n\n | Música\n | \"Summer\" (Calvin Harris), trecho a partir de 121,86 s da faixa\n\n | Tempo\n | 127,9 BPM; drop da faixa em 123,86 s, medido no beat_this, que cai em 2,00 s do vídeo\n\n | Abertura\n | passa-baixas de 950 Hz com o volume subindo até o drop\n\n | Emenda\n | crossfade de 30 ms centrado em 2,00 s\n\n | Fim\n | fade da música e do master nos últimos 0,6 s\n\n## Sound design e mix\n\n | \n\n | Item\n | Valor\n\n | Efeitos\n | cerca de 65, da biblioteca nivelada, cada um posicionado em evento − pico do arquivo\n\n | Música\n | volume 0,34, com sidechain leve pelos efeitos (limiar 0,03, razão 4)\n\n | Final\n | loudnorm em duas passagens a −14 LUFS e pico de −1,5 dBTP; medido −14,7 LUFS\n\nO que soa: pops nos avatares e na troca de rostos, riser até o drop e até o fecho, impacto no drop, cliques nas palavras que giram e na coluna desacelerando, sucesso no selo, whooshes nas trocas, contador rolando no painel, cliques nos X e sucesso no \"Vencedor\", whoosh grave e impacto no ícone, clique de mouse, notificação e cauda de sino no botão.\n\n## O que é \"humano\" neste vídeo\n\n- A câmera e as manchas de luz nunca param.\n\n- A coluna de retratos desacelera até parar no escolhido, como um dedo soltando a rolagem.\n\n- O cursor chega em curva, aperta, o botão afunda e o cursor ainda escorrega um pouco depois do clique.\n\n- O número do painel conta com freio no fim.\n\n- O vídeo de reação é uma pessoa reagindo, e não uma tela parada."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"titulo": "A montagem no HyperFrames",
|
|
50
|
+
"texto": "- **Instale o Node.js** (versão atual). O HyperFrames roda por `npx` e baixa sozinho na primeira vez (`hyperframes@0.8.144`, como no `package.json`).\n\n- **Fonte de emoji:** o vídeo usa a fonte de emoji do Windows (Segoe UI Emoji, `seguiemj.ttf`), que não vem no pacote. No Windows, copie de `C:\\Windows\\Fonts` para `hf/assets/fonts/`. Em outro sistema, troque o `@font-face` \"EmojiV\" do `style.css` por uma fonte de emoji instalada.\n\n- **Prévia:** dentro de `hf/`, `npm run dev` abre o estúdio do HyperFrames com a timeline.\n\n- **Conferir:** `npm run check` valida a composição.\n\n- **Render:** `npx hyperframes render -f 60 -q delivery -w 3 -o saida.mp4` (cerca de 1 minuto)."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"titulo": "As decisões de direção",
|
|
54
|
+
"texto": "- **Recriar antes de inventar.** A referência foi assistida quadro a quadro (folhas a 4 qps, quadros em resolução cheia, BPM e energia do áudio) e comparada lado a lado com cada versão.\n\n- **HTML no lugar do After Effects.** A referência é um filme feito em HTML; a timeline determinística a 60 qps dá o mesmo desfoque por elemento e a interface nítida.\n\n- **Uma ideia por cena, trocando no tempo forte**, a cada compasso de 1,877 s: 3,41 · 5,75 · 7,63 · 9,51 · 11,38 · 13,26 s.\n\n- **Todo texto entra e sai por desfoque e opacidade**, nunca deslizando seco.\n\n- **Nada fica parado:** a câmera deriva, as manchas de luz andam, o leque flutua, o painel cresce devagar.\n\n- **Copy adaptada, não traduzida.** As palavras que giram são todas masculinas (app, SaaS, negócio, produto), para o \"seu\" não mudar; o \"slideshow\" do TikTok virou carrossel; as legendas dos reels ganharam R$, @suamarca e \"CRIADOR IA\".\n\n- **Pesos estáticos da Inter.** A Inter do sistema tinha só o peso 400 e o título saía fino; o pacote traz 400, 500, 600 e 700.\n\n- **O nome sai de trás do ícone**, letra por letra, de trás para a frente, como no original (correção da v5).\n\n- **Som com fim e começo:** passa-baixas abrindo até o drop, crossfade de 30 ms na emenda, efeitos com o pico no quadro do evento, a música cedendo um pouco a cada efeito e uma cauda de sino no clique final.\n\nDetalhes de cores, curvas e som: estilo.md. Textos e cenas por tempo: roteiro.md. Para fazer um vídeo no mesmo estilo: PROMPT.md."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"titulo": "As versões até o final",
|
|
58
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | v1\n | estrutura e tempos fiéis; a fonte saiu fina e os textos encostavam\n\n | v2\n | pesos da Inter, tamanhos, zoom inicial segurado, coluna desacelerando até 4,3 s e a transição de 9,4 s sem clarão\n\n | v3 e v4\n | mix corrigido depois da escuta de uma IA (emenda, efeitos encobertos, final); nota 9,5 para o movimento e 9,5 para o som\n\n | **v5**\n | o nome \"ViralGrow\" sai de trás do ícone, de trás para a frente, como no original"
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"pacote": [
|
|
62
|
+
{
|
|
63
|
+
"pasta": "projeto/",
|
|
64
|
+
"conteudo": "a pasta `hf/`: `build.py`, `main.js`, `style.css`, o `index.html` gerado, as configurações do HyperFrames (`hyperframes.json`, `meta.json`, `package.json`) e `assets/` (os 20 retratos, o vídeo de reação, o mix e as fontes Inter 400 a 700 e GeistMono)"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"pasta": "audio/",
|
|
68
|
+
"conteudo": "`mixar.py`, o mix final (`mix.wav`) e os efeitos usados (`sfx/`)"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"pasta": "referencias/",
|
|
72
|
+
"conteudo": "o vídeo de referência e o áudio dele, as folhas de contato a 4 qps, os quadros em resolução cheia, a forma de onda e os links"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"pasta": "render/",
|
|
76
|
+
"conteudo": "`final.mp4`"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"pasta": "build.py",
|
|
80
|
+
"conteudo": "gera o `index.html`: a marcação estática das 7 cenas, os celulares com a interface das redes, o painel, a parede de cartões e os ícones em SVG"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"pasta": "main.js",
|
|
84
|
+
"conteudo": "uma timeline GSAP pausada com todo o movimento, em segundos do vídeo, com funções de entrada e saída com desfoque e de pop"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"pasta": "style.css",
|
|
88
|
+
"conteudo": "fontes, fundo, tipografia, celulares e componentes"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"pasta": "audio/mixar.py",
|
|
92
|
+
"conteudo": "música com subida até o drop, cerca de 65 efeitos posicionados por evento menos o pico, sidechain leve e loudnorm a −14 LUFS"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"prompt": "Quero fazer um showreel curto no mesmo estilo do projeto \"Influencers de IA (ViralGrow)\", que está em 07-videos/projetos/viralgrow/, com o meu produto.\n\nProduto: {{PRODUTO}} (nome, o que faz e para quem)\nSite ou landing page: {{SITE}} (cores, fonte, logo e prints das telas)\nAs 5 ideias que o vídeo precisa mostrar: {{IDEIAS}} (uma por cena)\nChamada final: {{CHAMADA}} (texto do botão e endereço)\nFormato: {{FORMATO}} (a referência é 1920×1080, 15 s, 60 qps)\n(Se algum desses estiver vazio ou com as chaves, me pergunte antes de começar.)\n\n1. Estude o projeto antes de propor qualquer coisa. Leia, nesta ordem: 07-videos/projetos/viralgrow/LEIA-ME.md, estilo.md e roteiro.md. Depois abra projeto/hf/build.py, main.js e style.css e o audio/mixar.py, e me explique em poucas linhas como a marcação estática, a timeline GSAP e as funções de entrada e saída com desfoque se encaixam. Diga o que vai reaproveitar.\n\n2. Siga o passo a passo de 07-videos/_LEIA.md e os números de 07-videos/regras-vigentes.md. Crie o meu projeto em 07-videos/projetos/AAAA-MM-DD-tema/ a partir de 07-videos/projetos/_modelo/README.md e marque cada etapa no checklist. Não edite os arquivos do projeto viralgrow: copie a pasta hf/ e o mixar.py.\n\n3. Use as skills instaladas: hyperframes (composição, check e render), video-referencias (assets reais e referências) e better-portuguese (todo texto da tela).\n\n4. A copy: uma frase curta por cena, no máximo duas linhas, no tom da minha landing page. Monte a tabela das 7 cenas como no roteiro.md da referência (abertura com palavra que gira, apresentação, três provas do produto, uma promessa e o fecho com o botão) e diga, para cada uma, o elemento visual que prova a frase (celular com a interface, painel com número, parede de cartões). Adapte a copy sem traduzir ao pé da letra: confira gênero e concordância das palavras que giram. Espere o meu ok.\n\n5. Identidade: use o fundo, a fonte e a cor de destaque da minha marca. Se eu não tiver, mantenha o fundo creme, a Inter seminegrita com espaçamento apertado e um único laranja de destaque, como na referência. As telas e os ícones são os reais do meu produto e das redes citadas; imagens de pessoas, se precisar, me pergunte antes de gerar.\n\n6. Música primeiro: escolha uma faixa real com o drop perto dos 2 s do trecho, meça o BPM com o beat_this e me mostre a grade de compassos. As cenas trocam nos tempos fortes, como na referência (uma a cada compasso).\n\n7. Reaproveite o motor, troque o conteúdo. Mantenha deste projeto: a timeline GSAP única e pausada, toda entrada e saída por desfoque e opacidade, os pops com quique nos elementos pequenos, a câmera e as manchas de luz que nunca param, o retrato ou card que vira o próximo elemento (morph), o número que conta com freio, o fecho com o ícone, o nome letra por letra, o botão e o cursor que clica, cerca de um efeito por ação em evento − pico e o mix a −14 LUFS. Troque: textos, cores, imagens, telas, a música e o nome.\n\n8. Rode `npm run check`, renderize a 60 qps e compare em folhas de contato. Em cada movimento, pergunte: está humano ou robotizado? Peça a uma IA que ouça o mix, corrija e me entregue o vídeo, a ficha atualizada e uma anotação em anotacoes/.",
|
|
96
|
+
"campos": [
|
|
97
|
+
"CHAMADA",
|
|
98
|
+
"FORMATO",
|
|
99
|
+
"IDEIAS",
|
|
100
|
+
"PRODUTO",
|
|
101
|
+
"SITE"
|
|
102
|
+
],
|
|
103
|
+
"fonte": {
|
|
104
|
+
"nome": "Clube do Motion",
|
|
105
|
+
"url": "https://clubedomotion.com/projeto/?id=viralgrow",
|
|
106
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-whose-side",
|
|
3
|
+
"titulo": "Digna de trailer",
|
|
4
|
+
"categoria": "sound",
|
|
5
|
+
"resumo": "Reel vertical de 75 s em que uma música vira trilha de trailer na frente de quem assiste. Um gancho narrado de 11 s, em fundo branco no estilo Apple, apresenta a ideia; depois a música toca como ela é, rebobina e volta no remix cinematográfico, com uma timeline de editor em que cada efeito tonal vem para a frente quando soa, solta o seu próprio elemento pela tela e pinta o ambiente com a sua cor. A música é \"Whose Side Are You On\" (Tommee Profitt, com Ruelle). Tudo é um take único em HTML com o quadro calculado pelo tempo, renderizado a 60 qps com desfoque de movimento. É a referência máxima de Reel musical do Clube do Motion, publicada no Instagram.",
|
|
6
|
+
"indicado": "criador, produtora, estúdio de som ou marca que quer mostrar o que uma trilha muda num vídeo, para quem não é técnico; lançamento de skill, ferramenta ou serviço de áudio; série de Reels de música.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"timeline viva",
|
|
9
|
+
"antes e depois",
|
|
10
|
+
"sound design tonal",
|
|
11
|
+
"um elemento por efeito",
|
|
12
|
+
"mundo que ganha cor",
|
|
13
|
+
"gancho Apple light narrado",
|
|
14
|
+
"card do Spotify",
|
|
15
|
+
"take único",
|
|
16
|
+
"humor leve no fecho"
|
|
17
|
+
],
|
|
18
|
+
"ficha": {
|
|
19
|
+
"formato": "1080×1920, 60 qps, 9:16, H.264 (CRF 16) com AAC de 256 kbps, cor BT.709, 119,7 MB",
|
|
20
|
+
"duracao": "74,88 s (4.493 quadros); narração só no gancho (11,35 s de fala)",
|
|
21
|
+
"motor": "html",
|
|
22
|
+
"voz": "ElevenLabs, Eleven v4, voz clonada (estabilidade 0,5, similaridade 0,75, velocidade 1,12), 1,2× na pós; a melhor de 3 tomadas",
|
|
23
|
+
"musica": "\"Whose Side Are You On\" (Tommee Profitt, com Ruelle): o original no gancho e no normal, o remix cinematográfico v5 no edit (Lá menor, 127,75 BPM, drop em 39,0 s do remix)",
|
|
24
|
+
"fontes": "ver o guia de estilo"
|
|
25
|
+
},
|
|
26
|
+
"ferramentas": [
|
|
27
|
+
"Claude Code",
|
|
28
|
+
"ElevenLabs"
|
|
29
|
+
],
|
|
30
|
+
"ficha_tecnica": {
|
|
31
|
+
"Duração": "74,88 s (4.493 quadros); narração só no gancho (11,35 s de fala)",
|
|
32
|
+
"Formato": "1080×1920, 60 qps, 9:16, H.264 (CRF 16) com AAC de 256 kbps, cor BT.709, 119,7 MB",
|
|
33
|
+
"Ferramenta": "HTML + canvas num take único, motor `take-unico` (render no Chromium sem janela, obturador de 180°, trechos de 4 s em cache); trilha e dados em Python",
|
|
34
|
+
"Voz": "ElevenLabs, Eleven v4, voz clonada (estabilidade 0,5, similaridade 0,75, velocidade 1,12), 1,2× na pós; a melhor de 3 tomadas",
|
|
35
|
+
"Música": "\"Whose Side Are You On\" (Tommee Profitt, com Ruelle): o original no gancho e no normal, o remix cinematográfico v5 no edit (Lá menor, 127,75 BPM, drop em 39,0 s do remix)",
|
|
36
|
+
"Som": "−14,0 LUFS, pico verdadeiro de −1,4 dBFS; voz 15 dB acima da música no gancho; 68 eventos exportados da composição",
|
|
37
|
+
"Sincronia": "imagem e som dos golpes de ping, piano e violoncelo a menos de 0,8 quadro (medido no master a 60 qps)",
|
|
38
|
+
"Referências": "os shorts do Multiply Sound (normal × tonal na mesma timeline), uma pesquisa no Pinterest sobre som na tela e os Reels anteriores da série (Caught In The Fire e Soldier)"
|
|
39
|
+
},
|
|
40
|
+
"etapas": [
|
|
41
|
+
{
|
|
42
|
+
"titulo": "O roteiro e a voz",
|
|
43
|
+
"texto": "**Resumo:** a fala do gancho, como foi escrita e como foi enviada à voz clonada, e as cenas por tempo no vídeo final (v3). Depois do gancho ninguém fala: a música, a timeline e uma etiqueta simples por elemento contam o resto. Os tempos são os do arquivo publicado; no edit, o segundo do remix é o segundo do vídeo menos 20,86.\n\n## A fala do gancho\n\n\"Transformei o meu Claude em um DJ profissional com essa skill, e agora ele edita qualquer música do mundo e faz com que ela vire uma música cinematográfica digna de trailer de filme, se liga nessa edição que ele fez >\"\n\n- Para a voz, \"Claude\" e \"DJ\" vão escritos como se fala (\"Clód\" e \"didjêi\"). Uma das três tomadas foi descartada porque o Whisper ouviu \"Claudio\".\n\n- Fala de 11,35 s a 1,2×, que entra em 0,08 s e termina antes do normal (11,5 s).\n\n## Textos na tela\n\n | \n\n | Onde\n | Texto\n\n | Gancho\n | a própria fala, em legenda de duas linhas por frase\n\n | Cartão da skill\n | \"Skill: DJ\" · \"para o Claude Code\" · OBTER\n\n | Cartão da música\n | capa do álbum · \"Whose Side Are You On\" · \"Tommee Profitt, Ruelle\"\n\n | Normal\n | \"Música normal\"\n\n | Antes do edit\n | \"Agora, o edit do Claude\", que vira a pílula da timeline\n\n | Etiquetas (uma por vez)\n | \"Piano: abre o clima de filme\" · \"Fundo: dá peso de cinema\" · \"Só a voz da Ruelle\" · \"Piano: acompanha a música\" · \"Violoncelo: responde a voz\" · \"Subida: prepara a explosão\" · \"A música inteira explode aqui\"\n\n | Notas\n | ♪ Lá, Dó, Ré, Sol nas notas soltas; F, G, Am nos acordes\n\n | Crédito\n | card \"tocando agora\" no formato do Spotify\n\n | CTA\n | \"Comenta DJ que eu te mando o passo a passo\" e o comentário \"DJ\" digitado no Instagram\n\n## Cenas por tempo\n\n | \n\n | #\n | Tempo (s)\n | O que acontece\n\n | 1\n | 0,08–1,7\n | \"Transformei\": partículas giram em espiral e se juntam; \"Claude\": nasce o app; \"DJ\": o fone cai e encaixa; \"profissional\": brilho no fone\n\n | 2\n | 2,8–4,1\n | \"skill\": o cartão \"Skill: DJ\" é instalado (OBTER → anel azul → check verde); \"edita\": vira o selo verde do app\n\n | 3\n | 4,4–5,3\n | \"qualquer música do mundo\": o cartão da música nasce em esqueleto, ganha a capa e dois cartões abrem em leque atrás\n\n | 4\n | 7,1–9,1\n | \"cinematográfica\": a onda cinza ganha as cores dos tonais; \"trailer\": barras de cinema, vinheta, soco de câmera e tremor; \"filme\": luz de cinema no cartão\n\n | 5\n | 10,0–11,5\n | \"Se liga\": nasce o cursor vermelho na onda; \"edição\": o cartão some e a onda vira o clipe azul; \"fez\": as barras abrem e o branco dá lugar ao cinza\n\n | 6\n | 11,5–18,1\n | **Música normal**: mundo cinza, um clipe azul, o cursor toca \"It cuts deeper than a razor blade\"\n\n | 7\n | 18,1–20,9\n | respiro: a fita para em cima de \"blade\", o cinza escurece, \"Agora, o edit do Claude\" fica parado no meio da tela, a íris de filme abre do cursor (19,6 s) e o título vira a pílula (19,9 s)\n\n | 8\n | 20,9\n | o remix começa: o primeiro ping solta o anel de ouro e a luz de cima fica dourada; \"Piano: abre o clima de filme\" (22,5 s)\n\n | 9\n | 23,4–25,1\n | os fundos chegam e respiram em névoa azul; \"Fundo: dá peso de cinema\" (24,4 s); o violoncelo entra com os arcos e o fundo pinta vermelho\n\n | 10\n | 30,7–33,5\n | a voz: \"Só a voz da Ruelle\", e a foto sai da miniatura do clipe da voz e volta\n\n | 11\n | 34,1\n | piano com um pulso por nota, círculos turquesa e os acordes F, G, Am rolando; \"Piano: acompanha a música\"\n\n | 12\n | 37,9\n | o violoncelo responde a voz: \"Violoncelo: responde a voz\"\n\n | 13\n | 54,7–59,9\n | subida: os clipes carregam com linhas de luz e a câmera abre; \"Subida: prepara a explosão\"\n\n | 14\n | **59,9**\n | **drop**: a câmera inspira e dá um soco, varredura diagonal de luz, o clipe da música acende, as partículas explodem, a Ruelle ganha cor e o espectro vira um horizonte de barras brancas; \"A música inteira explode aqui\"\n\n | 15\n | 62,8\n | a pílula vira o card do Spotify, com a barra de 2:16 a 2:23 andando\n\n | 16\n | 68,4–70,7\n | CTA: a timeline some, as notas voam e montam o Claude Code em pixel, o \"DJ\" do texto arranha como vinil, um fone de DJ cai na cabeça dele e ele balança no tempo; o campo de comentário sobe\n\n | 17\n | 72,1–74,9\n | \"DJ\" é digitado e publicado no ping final; o boneco pula e o vídeo termina\n\n## Momentos para a trilha\n\n- 0,08–11,5 s: voz seca na frente e a música abafada por baixo, 15,3 dB abaixo; um som macio por elemento do gancho.\n\n- 10,0–11,5 s: o filtro abre e a música chega cheia no normal, sem corte.\n\n- 18,1 s: tape stop em cima de \"blade\"; sino em Lá bem baixo no cartão.\n\n- 20,9 s: o remix começa intocado; os efeitos do Reel ficam esparsos.\n\n- **59,9 s: drop do remix**.\n\n- 69,1 s: scratch do \"DJ\", feito da própria voz da cantora.\n\n- 72,1 s: o ping final do remix cai no envio do comentário.\n\nA lista completa dos 68 eventos, com tempo, tipo e pan, está em `audio/eventos.json`; as notas e envelopes de cada camada do remix, em `audio/notas.json`."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"titulo": "A identidade visual",
|
|
47
|
+
"texto": "**Resumo:** três mundos em sequência: o branco do estilo Apple no gancho narrado, o cinza sem cor da música normal e a noite azul-aço da capa do álbum no edit, que cada efeito tonal pinta com a sua cor. A timeline segue o editor dos shorts do Multiply Sound, e cada camada tem uma cor, um ícone e um elemento próprio. Números tirados do `index.html`, do `trilha.py`, da identidade do projeto e das conferências do master.\n\n## Mundos\n\n | \n\n | Mundo\n | Quando\n | Como é\n\n | Branco Apple\n | gancho narrado (0–11,5 s)\n | fundo branco, SF Pro, cartões brancos com sombra larga, cores de estado do iOS (azul `#007AFF`, verde `#34C759`), tinta `#1D1D1F` e cinza `#86868B`; sem grão\n\n | Cinza\n | música normal (11,5–18,1 s)\n | radial `#46464A` → `#333336`, onda `#B9B9BE`, grão leve\n\n | Noite do trailer\n | edit e drop\n | noite `#040911` → azul-aço `#0A1D2B`, tirada da capa do álbum; grão de filme; no drop, azul-aço e âmbar que respiram nos bumbos\n\n## Cores das camadas\n\nCada cor só quer dizer a sua camada; o coral do Claude (`#D97757`) aparece só no gancho, na pílula e no \"DJ\".\n\n | \n\n | Camada\n | Cor\n | Ícone\n | Elemento na tela\n\n | Piano Ping\n | ouro `#FFD08A`\n | teclas\n | anel fino de ouro e reflexo de lente; a luz de cima fica dourada\n\n | Fundos (Atlantic, Soft Circuit)\n | azul `#5676FF`\n | onda\n | névoa azul que respira, uma baforada por compasso\n\n | Violoncelo\n | vermelho `#FF4D5A`\n | violoncelo\n | arcos que varrem como o arco nas cordas; o fundo pinta vermelho pela direita\n\n | Piano (acordes)\n | turquesa `#62E3E0`\n | teclas\n | círculos que saem do ponto do golpe, um ou dois por nota, com as notas rolando (♪ Lá, Dó, F, G, Am)\n\n | Subida (Activation, Breathe)\n | rosado `#FFB3A8`\n | seta\n | linhas verticais de luz que carregam até o drop\n\n | Voz e música\n | azul `#9DB0EA`\n | microfone e explosão\n | a foto da Ruelle sai da miniatura do clipe da voz; no drop, o clipe da música acende da esquerda para a direita\n\n## Tipografia\n\n- **Gancho:** legenda em SF Pro de 84 px, Semibold, com as palavras-chave em Bold, duas linhas por frase. Coral nas palavras do Claude (\"Claude\", \"DJ profissional\", \"Se liga\"), azul do iOS em \"skill\", preto forte em \"qualquer música\" e \"trailer\", e as cores dos tonais em \"cinematográfica\".\n\n- **Edit:** Inter nos clipes (nome em 34 px e tom em 42 px, nunca menos de 34 px na tela em foco) e nas etiquetas (600, 44 px).\n\n- **Nome da faixa no crédito:** Michroma, que lembra o título técnico da capa.\n\n- **Material Icons** na interface.\n\n## Destaque do tonal que toca\n\n | \n\n | Peça\n | Números\n\n | Foco\n | o clipe cresce até 1,24× em volta do cursor, sobe 16 px, brilha na cor dele, a onda clareia e a borda acende\n\n | Golpe\n | cada golpe acende uma faixa no ponto do som, com faíscas (\"playhead que acende\")\n\n | O resto\n | a voz e a música apagam até 55% na tela; o som não muda\n\n | Ping\n | pulso de 1,15 s\n\n | Fundos\n | forte na chegada e depois respirando a cada 2 compassos\n\n | Violoncelo\n | segue o envelope do som\n\n | Piano\n | um pulso em cada uma das 22 notas ou acordes do MIDI\n\n | Subida\n | carrega com o envelope até o drop\n\n | Pintura do mundo\n | cada cor fica 3 a 4 s depois do som, com um piso; 25% mais calma que na v1\n\n | Chegada\n | cada clipe pousa 0,6 a 1,1 s antes do primeiro som, no tempo da música\n\nOs golpes de piano e violoncelo ficam no ataque medido no stem da camada: o acorde suave chega até ~20 ms depois do martelo, e o arco do violoncelo ~30 ms depois do primeiro som. Os 14 golpes sem ataque mensurável usam o tempo do MIDI.\n\n## Gancho Apple light, palavra por palavra\n\n | \n\n | Palavra\n | Elemento\n\n | \"Transformei\"\n | partículas nas cores dos tonais e no coral giram em espiral e se juntam no centro (a tela não começa vazia)\n\n | \"Claude\" · \"DJ\" · \"profissional\"\n | nasce o app do Claude; o fone de DJ cai e encaixa; um brilho passa no fone\n\n | \"skill\" · \"edita\"\n | cartão \"Skill: DJ · para o Claude Code\" com OBTER → anel azul → check verde; em \"edita\", ele vira o selo verde do app\n\n | \"qualquer\" · \"música\" · \"mundo\"\n | o cartão da música nasce em esqueleto, ganha a capa real, o título e os artistas; dois cartões em leque atrás\n\n | \"cinematográfica\"\n | a onda cinza ganha as cores dos tonais da esquerda para a direita, com halo colorido e notinhas subindo\n\n | \"trailer\" · \"filme\"\n | barras de cinema fecham em 12 quadros, vinheta escura, soco de câmera e tremor; luz de cinema passa no cartão\n\n | \"Se liga\" · \"edição\" · \"fez\"\n | nasce o cursor vermelho na onda; o cartão some e a onda vira o clipe azul do normal no lugar exato; as barras abrem e o branco dá lugar ao cinza\n\nNada aparece antes de ser dito: cada elemento nasce no ataque da sua palavra, medido no Whisper e corrigido pela energia da voz em três pontos.\n\n## Transições\n\n- **Gancho → normal:** a onda do cartão vira o clipe azul, sem corte.\n\n- **Normal → edit:** a fita para em cima de \"blade\" com a cauda da sala, o mundo cinza escurece, o cartão \"Agora, o edit do Claude\" fica parado no meio da tela por ~1,6 s, uma íris de filme abre a partir do cursor, o cursor anda até o zero e o título encolhe até virar a pílula da timeline.\n\n- **Drop → crédito:** a pílula vira o card do Spotify (\"tocando agora\", capa do álbum, \"Whose Side Are You On\", \"Tommee Profitt, Ruelle\", coração verde e a barra de 2:16 a 2:23 de 3:11 andando junto com o som).\n\n- **Crédito → CTA:** a timeline some e as notas coloridas voam e montam o Claude Code em pixel, com mola.\n\n## Câmera\n\n- No gancho, começa perto e assenta, com um soco a cada frase e tremor e giro leves nas palavras-chave.\n\n- No edit, chega ao enquadramento antes do primeiro ping, segue o cursor e dá zoom de 0,78 a 0,80 na subida (para as trilhas de baixo não encostarem na interface do Instagram) e de 0,88 depois do drop.\n\n- No drop, inspira e dá um soco para dentro, com tremor.\n\n## Render\n\n60 qps reais, obturador de 180° (média de várias capturas por quadro em luz linear), em trechos de 4 s guardados em cache, para refazer só o que mudou. Grão de filme leve no normal e mais forte no edit; nenhum no gancho branco. H.264 CRF 16, BT.709.\n\n## Trilha\n\n | \n\n | Trecho\n | Som\n\n | Gancho\n | a voz seca a partir de 0,08 s, com passa-altas de 70 Hz, −14,7 LUFS na fala; por baixo, a própria música abafada em 350 Hz a −30,0 LUFS (15,3 dB abaixo da voz)\n\n | Gancho → normal\n | do \"Se liga\" ao normal, o filtro abre até 20 kHz e o nível sobe num fluxo só; a troca para o som seco dura 60 ms, com o filtro já aberto\n\n | Normal\n | \"It cuts deeper than a razor blade\", o original\n\n | Respiro\n | tape stop em cima de \"blade\", cauda da sala, sino em Lá bem baixo no cartão e um ar subindo até o primeiro ping\n\n | Edit\n | o remix v5 intocado, do zero; o drop em 39,0 s do remix\n\n | Fecho\n | o \"DJ\" arranha como vinil, um scratch feito da voz da Ruelle com a velocidade indo e voltando; o ping final do remix cai no envio do comentário\n\n## Sound design\n\n- Gancho: um som macio de interface por elemento (14 no gancho), todos abaixo da voz; o fone, o toque e o check ficaram 3 dB acima dos outros.\n\n- Edit: os efeitos ficam esparsos e baixos, porque o remix é o conteúdo. Cada etiqueta entra com um pop e uma nota de glock em Lá, Mi ou Dó e sai com um whoosh curto; cada clipe que pousa desliza com um som de papel bem baixo.\n\n- Fecho: as notas que voam para montar o pixel levam um whoosh; o fone pousa com pop, clique e glock; a digitação cai nos tempos e o envio leva clique e notificação.\n\n- **Final:** −14,0 LUFS, pico verdadeiro de −1,4 dBFS.\n\n## O que é \"humano\" neste vídeo\n\n- A câmera nunca para: deriva no gancho, segue o cursor no edit e respira com os bumbos no drop.\n\n- Os clipes chegam antes do som, como um músico que se prepara para tocar.\n\n- O Claude Code em pixel balança a cabeça no tempo, com notinhas saindo do fone, e pula quando o comentário é publicado.\n\n- O comentário \"DJ\" é digitado nos tempos da música e publicado no ping final."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"titulo": "A montagem em HTML",
|
|
51
|
+
"texto": "| \n\n | Arquivo\n | O que faz\n\n | `comp/index.html`\n | `seek(t)` monta o quadro; no topo ficam os tempos (`H0` = deslocamento do gancho, `N0` normal, `RB` rebobina, `A0` início do edit, `R(r)` converte segundo do remix em segundo do vídeo, `DROP`, `CTA`); `CAMS` guarda a cor e o ícone de cada camada; o gancho Apple light fica no bloco \"v3\", com cada elemento preso a uma palavra de `gancho-palavras.json`; `window.__events()` devolve os eventos\n\n | `take-unico/render_take.py`\n | renderiza a composição com obturador de 180°; `--stills`, `--previa`, `--trechos 4` e `--turbo`\n\n | `take-unico/oraculo_take.py`\n | confere continuidade, enquadramento e respiros; `--eventos` exporta os eventos para a trilha\n\n | `audio/dados_foco.py`\n | acha o ataque de cada golpe no stem da camada e o espectro da mix e grava `comp/dados/foco.js`\n\n | `audio/dados_comp.py`\n | lê `notas.json` (o contrato com o remix) e grava `comp/dados/notas.js`\n\n | `audio/batidas.py`\n | tempos, compassos e bumbos (beat_this) para `comp/dados/batidas.js`\n\n | `audio/gerar_voz_gancho.py`\n | gera as tomadas da fala do gancho na ElevenLabs\n\n | `audio/trilha.py`\n | voz seca do gancho, música original abafada por baixo e abrindo, tape stop, respiro, remix intocado, um som macio por elemento do gancho e um efeito por evento; mix em −14 LUFS\n\n | `revisao/carga_texto.py`\n | conta, quadro a quadro, quantos textos estão na tela (no máximo uma etiqueta)\n\n | `revisao/sync_check.py`\n | mede a diferença entre a imagem e o som de cada golpe no master\n\n | `audio/remix/`\n | o plano do remix (`cinematografico-v5.json`), o piano escrito em MIDI, a separação da voz, as camadas e a mixagem com a voz na frente (`render.sh v5` roda tudo)\n\n- **Junte as pastas:** descompacte `projeto/` dentro de `07-videos/projetos/whose-side/` e ponha `audio/` ao lado de `comp/`. Copie `projeto/take-unico/` para `07-videos/biblioteca/take-unico/`: o `index.html` carrega `../../../biblioteca/take-unico/take.js`.\n\n- **Fontes e imagens:** instale a SF Pro Display (Regular, Medium, Semibold e Bold) em `comp/fonts/` com os nomes de arquivo do `index.html`. Baixe a capa e as fotos pelos links de `referencias/fontes.md`, com os nomes que o `index.html` espera, ou troque pelas do seu artista.\n\n- **Instale:** Python 3.11 com numpy, scipy, soundfile, librosa, pyloudnorm, pedalboard, pretty_midi e playwright (`playwright install chromium`), o beat_this e o ffmpeg.\n\n- **Aponte os caminhos:** no topo de `audio/trilha.py`, `dados_foco.py` e `batidas.py`, troque o `sys.path` por `audio/motor/`, `N` por `audio/sfx/`, `TON` pela sua pasta de efeitos tonais e `WS`/`FONTE` pela pasta da sua música e do seu remix.\n\n- **Ver no navegador:** `comp/index.html?t=59.9&hud` para parar no drop ou `?play` para tocar.\n\n- **Dados e conferência:** em `audio/`, `python batidas.py` e `python dados_foco.py`; depois `python ../../biblioteca/take-unico/oraculo_take.py comp/index.html` (precisa dar PASSA).\n\n- **Som:** `oraculo_take.py comp/index.html --eventos audio/eventos.json` e, em `audio/`, `python trilha.py`.\n\n- **Vídeo:** `bash render/rascunho.sh v4` para conferir e `bash render/final.sh v4` para o final (trechos de 4 s, 60 qps, grão de filme só no edit, som junto). Depois, `python revisao/sync_check.py comp/index.html render/whose-side-v4.mp4`.\n\n**Pegadinhas:** o `comum.sh` usa uma trava entre agentes em `C:/Dev/_tools/.lock-render`; troque pelo caminho que quiser. Não troque `--fps` nem a escala entre versões, porque o cache dos trechos é por configuração. O drop do remix não é mexido no `trilha.py`: se o seu remix tiver outro nível, ajuste no próprio remix."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"titulo": "As decisões de direção",
|
|
55
|
+
"texto": "- **O tonal que toca vem para a frente.** O clipe cresce até 1,24× em volta do cursor, sobe 16 px, brilha na cor dele e a borda acende; a voz e a música apagam até 55% na tela (o som não muda).\n\n- **Um elemento por efeito**, para não repetir o mesmo círculo em tudo: anel fino de ouro e reflexo de lente no ping, névoa azul que respira nos fundos, arcos que varrem como o arco nas cordas no violoncelo, círculos turquesa a cada nota do piano e linhas verticais de luz na subida.\n\n- **O mundo começa cinza e cada tonal pinta a sua cor.** A cor fica alguns segundos depois do som e cada cor só quer dizer a sua camada; o coral do Claude aparece só no que é do Claude.\n\n- **Drop limpo.** Sem círculos: a câmera inspira e dá um soco para dentro, uma varredura diagonal de luz atravessa a tela, o clipe da música acende da esquerda para a direita, as partículas explodem e o espectro real da mix vira um horizonte de barras brancas.\n\n- **O clipe chega antes do som.** Cada tonal pousa na timeline 0,6 a 1,1 s antes do primeiro golpe, e o destaque cai no ataque medido.\n\n- **Uma pausa antes do edit.** A fita para em cima de \"blade\", a sala ecoa, o mundo cinza escurece, o cartão \"Agora, o edit do Claude\" fica parado no meio da tela e o cursor anda até o zero: quase 3 s para quem assiste entender que vem a outra versão.\n\n- **Gancho narrado em que cada palavra tem um elemento** (\"Claude\" nasce o app, \"DJ\" encaixa o fone, \"skill\" instala o cartão, \"música\" mostra a capa, \"cinematográfica\" colore a onda, \"trailer\" fecha as barras de cinema) e a onda vira o clipe azul da música normal no lugar exato, sem corte.\n\n- **Música contínua do gancho ao normal:** a própria faixa toca abafada por baixo da voz e o filtro abre até o trecho normal num fluxo só.\n\n- **Uma etiqueta simples por vez**, presa ao clipe (\"Piano: abre o clima de filme\"), e nenhum texto técnico. Conferido quadro a quadro: zero quadros com dois textos.\n\n- **Card no formato do Spotify** com a capa, o título, os artistas e a barra do tempo da faixa andando junto com o som.\n\n- **Fecho com humor e mais tempo de drop:** o Claude Code em pixel montado pelas notas, o fone que cai e balança no tempo, o \"DJ\" que arranha como vinil (feito da própria voz da cantora) e o comentário digitado e publicado no ping final.\n\nDetalhes de cores, curvas e som: estilo.md. Cenas por tempo, a fala e os textos: roteiro.md. Para fazer o mesmo com a sua música: PROMPT.md."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"titulo": "As versões até o final",
|
|
59
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | testes\n | um piano 3D com mãos tocando as teclas (visto do pianista e depois de cima) foi abandonado; três direções curtas foram testadas (o som ganha cor, escultura de ondas, orbe vivo); a timeline voltou, com a cor do primeiro teste\n\n | v1\n | timeline com os tonais em destaque, anéis na cor de cada camada, mundo pintado por cada tonal e espectro com a foto em cor no drop; 62,6 s\n\n | v2\n | abertura de 1,5 s com o drop que rebobina, música contínua do gancho ao normal, respiro antes do edit, clipes antes do som, um elemento por efeito, drop sem círculos, card do Spotify e fecho mais longo e bem-humorado; 70,9 s\n\n | **v3**\n | aprovada e publicada: o gancho virou narrado, em fundo branco no estilo Apple, com um elemento por palavra; o resto da v2 ficou igual, 4 s mais tarde; 74,88 s"
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"pacote": [
|
|
63
|
+
{
|
|
64
|
+
"pasta": "projeto/",
|
|
65
|
+
"conteudo": "`comp/index.html` (o Reel inteiro), `comp/dados/` (`timeline.js`, `foco.js`, `notas.js`, `batidas.js`), `comp/fonts/` (Inter, Michroma, Material Icons), `comp/assets/` (símbolo do Claude e ícone do Claude Code), `render/` (`comum.sh`, `rascunho.sh`, `final.sh`), `revisao/` (`carga_texto.py`, `sync_check.py`, `folhas.py`) e `take-unico/` (o motor)"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"pasta": "audio/",
|
|
69
|
+
"conteudo": "`trilha.py` (o som inteiro), `dados_foco.py`, `dados_comp.py`, `batidas.py`, `gerar_voz_gancho.py`, `eventos.json`, `notas.json`, `gancho-palavras.json`, `gancho-aprovado.wav` (a fala), `mix.wav`, `notas-sfx/` (glock, harpa e piano gerados), `sfx/` (os efeitos de interface usados), `motor/` (`orquestra.py`, `trilha_momentos.py`) e `remix/` (o plano v5, o piano em MIDI e os scripts do remix)"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"pasta": "referencias/",
|
|
73
|
+
"conteudo": "identidade visual, fontes dos assets com os links, a pesquisa de som na tela, os três testes de direção, o brief dos Reels musicais, o estudo do remix, o tutorial do take único, `links.md` e `fora-do-pacote.md`"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"pasta": "render.mp4",
|
|
77
|
+
"conteudo": "o Reel final (v3)"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"pasta": "comp/index.html",
|
|
81
|
+
"conteudo": "`seek(t)` monta o quadro; no topo ficam os tempos (`H0` = deslocamento do gancho, `N0` normal, `RB` rebobina, `A0` início do edit, `R(r)` converte segundo do remix em segundo do vídeo, `DROP`, `CTA`); `CAMS` guarda a cor e o ícone de cada camada; o gancho Apple light fica no bloco \"v3\", com cada elemento preso a uma palavra de `gancho-palavras.json`; `window.__events()` devolve os eventos"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"pasta": "take-unico/render_take.py",
|
|
85
|
+
"conteudo": "renderiza a composição com obturador de 180°; `--stills`, `--previa`, `--trechos 4` e `--turbo`"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"pasta": "take-unico/oraculo_take.py",
|
|
89
|
+
"conteudo": "confere continuidade, enquadramento e respiros; `--eventos` exporta os eventos para a trilha"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"pasta": "audio/dados_foco.py",
|
|
93
|
+
"conteudo": "acha o ataque de cada golpe no stem da camada e o espectro da mix e grava `comp/dados/foco.js`"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"pasta": "audio/dados_comp.py",
|
|
97
|
+
"conteudo": "lê `notas.json` (o contrato com o remix) e grava `comp/dados/notas.js`"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"pasta": "audio/batidas.py",
|
|
101
|
+
"conteudo": "tempos, compassos e bumbos (beat_this) para `comp/dados/batidas.js`"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"pasta": "audio/gerar_voz_gancho.py",
|
|
105
|
+
"conteudo": "gera as tomadas da fala do gancho na ElevenLabs"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"pasta": "audio/trilha.py",
|
|
109
|
+
"conteudo": "voz seca do gancho, música original abafada por baixo e abrindo, *tape stop*, respiro, remix intocado, um som macio por elemento do gancho e um efeito por evento; mix em −14 LUFS"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"pasta": "revisao/carga_texto.py",
|
|
113
|
+
"conteudo": "conta, quadro a quadro, quantos textos estão na tela (no máximo uma etiqueta)"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"pasta": "revisao/sync_check.py",
|
|
117
|
+
"conteudo": "mede a diferença entre a imagem e o som de cada golpe no master"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"pasta": "audio/remix/",
|
|
121
|
+
"conteudo": "o plano do remix (`cinematografico-v5.json`), o piano escrito em MIDI, a separação da voz, as camadas e a mixagem com a voz na frente (`render.sh v5` roda tudo)"
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"prompt": "Quero um Reel musical vertical no mesmo método do projeto \"Whose Side Are You On\", que está em 07-videos/projetos/whose-side/, com a minha música.\n\nMúsica (arquivo original, com o nome do artista e da faixa): {{MUSICA}}\nTrecho normal (a frase que toca antes do edit): {{FRASE_NORMAL}}\nVersão editada, se já existir (senão, monte com os scripts de audio/remix/): {{VERSAO_EDITADA}}\nFala do gancho (o texto é meu; não reescreva): {{FALA_GANCHO}}\nVoz (ElevenLabs, ID da voz clonada ou da voz escolhida): {{VOZ}}\nFotos e capa do artista (links oficiais ou arquivos): {{IMAGENS}}\nChamada final (palavra para comentar e o que a pessoa recebe): {{CTA}}\nFormato: 1080×1920, 60 qps · Duração: {{DURACAO}} (a referência tem 75 s)\n(Se algum desses estiver vazio ou com as chaves, me pergunte antes de começar.)\n\n1. Estude o projeto antes de propor qualquer coisa. Leia, nesta ordem: LEIA-ME.md, estilo.md e roteiro.md. Depois abra comp/index.html e veja os tempos do topo (H0, N0, RB, A0, R(), DROP, CTA), o objeto CAMS (cor e ícone por camada), o destaque do tonal em foco, a pintura do mundo, o drop, o card do Spotify, o CTA e o bloco do gancho \"v3\". Leia também audio/notas.json (o contrato com o remix), audio/dados_foco.py, audio/trilha.py e take-unico/README.md. Me explique em poucas linhas o que você vai reaproveitar.\n\n2. Meça a música e o remix antes de montar: tom, BPM, tempos e compassos (beat_this), a frase do normal, o ponto de rebobinar, o drop e o ataque de cada golpe no stem de cada camada. Escreva o notas.json com as notas e os envelopes de cada camada (o piano e o ping saem do MIDI; o violoncelo, de transcrição; fundos e subida, do envelope).\n\n3. Gere a fala do gancho na ElevenLabs (de 2 a 3 tomadas), confira no Whisper e me mande para aprovar. Só siga com a aprovada. Tire os tempos de cada palavra e corrija pela energia da voz onde o Whisper esticar as pausas.\n\n4. Monte o gancho palavra por palavra: cada palavra-chave ganha um elemento que nasce no ataque dela (app, acessório, cartão de skill, cartão da música com a capa real, a onda que ganha cor, barras de cinema), em fundo claro com cartões e cores de interface reais. Nada aparece antes de ser dito. No fim do gancho, a onda vira o clipe azul da música normal no lugar exato, sem corte.\n\n5. Dê a cada camada uma cor que só ela usa e um elemento próprio: anel fino no ping, névoa nos fundos, arcos no violoncelo, círculos a cada nota no piano, linhas de luz na subida. O tonal que toca vem para a frente (cresce, sobe, brilha), a voz e a música apagam um pouco na tela e o mundo, cinza no começo, ganha a cor de cada tonal quando ele soa. Cada clipe pousa 0,6 a 1,1 s antes do primeiro som.\n\n6. Deixe uma pausa de 2 a 3 s entre o normal e o edit: fita parando, mundo escurecendo, um cartão \"Agora, o edit do Claude\" parado no meio da tela, íris a partir do cursor. No drop, nada de círculos: câmera que inspira e dá um soco, varredura de luz e partículas. Depois do drop, um card de plataforma real (como o do Spotify) com a capa e o tempo da faixa andando.\n\n7. Uma etiqueta simples por vez, presa ao clipe, sem nenhum termo técnico (\"Piano: abre o clima de filme\"), e as notas rolando dos clipes. Rode revisao/carga_texto.py: zero quadros com dois textos.\n\n8. Som pelos eventos, num subagente: oraculo_take.py --eventos audio/eventos.json e trilha.py. A música abafada por baixo do gancho, cerca de 15 dB abaixo da voz, abrindo até o normal num fluxo só; tape stop; o remix intocado; um som macio por elemento do gancho e efeitos esparsos no edit. Final a −14 LUFS, pico verdadeiro abaixo de −1 dBFS.\n\n9. Revise antes do final: stills de cada etiqueta e de cada palavra do gancho, oráculo com PASSA, prévia rápida com som, sync_check.py (imagem e som de cada golpe a menos de 1 quadro) e uma IA que assista com áudio, perguntando onde o gancho perde força, onde a tela fica carregada e onde o movimento para morto. Confira cada apontamento antes de mexer.\n\n10. Final a 60 qps em trechos de 4 s (render/final.sh), confira duração, qps e −14 LUFS e entregue o MP4, uma cópia leve para o celular e uma anotação do que mudou em relação à referência.",
|
|
125
|
+
"campos": [
|
|
126
|
+
"CTA",
|
|
127
|
+
"DURACAO",
|
|
128
|
+
"FALA_GANCHO",
|
|
129
|
+
"FRASE_NORMAL",
|
|
130
|
+
"IMAGENS",
|
|
131
|
+
"MUSICA",
|
|
132
|
+
"VERSAO_EDITADA",
|
|
133
|
+
"VOZ"
|
|
134
|
+
],
|
|
135
|
+
"fonte": {
|
|
136
|
+
"nome": "Clube do Motion",
|
|
137
|
+
"url": "https://clubedomotion.com/projeto/?id=whose-side",
|
|
138
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-youtube-inscrever",
|
|
3
|
+
"titulo": "O logo vira o botão",
|
|
4
|
+
"categoria": "produto",
|
|
5
|
+
"resumo": "loop quadrado de 8 s a 60 qps, sem narração, em que um risco vermelho cruza a tela, o logo do YouTube acende com um brilho radial, se achata e vira o botão \"Inscrever-se\" do canal. O cursor clica, o botão vira \"Inscrito\", o contador passa de 999 para 1.000 e a grade de vídeos sai numa rolagem em S de 1.520 px que esconde a volta do loop. Um script do After Effects (`cenas.jsx`) monta o projeto do zero. Feito pelo Clube do Motion como recriação do estilo de @illdari.",
|
|
6
|
+
"indicado": "criador ou marca pedindo inscrição ou seguidor; lançamento de canal; qualquer chamada em que o logo da plataforma pode virar o próprio botão (Instagram › Seguir, WhatsApp › Enviar).",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"interface da Apple",
|
|
9
|
+
"modo claro",
|
|
10
|
+
"logo que vira botão",
|
|
11
|
+
"60 qps",
|
|
12
|
+
"rastro longo",
|
|
13
|
+
"risco de luz",
|
|
14
|
+
"rolagem em S",
|
|
15
|
+
"loop"
|
|
16
|
+
],
|
|
17
|
+
"ficha": {
|
|
18
|
+
"formato": "1080×1080, 60 qps; desfoque de movimento de 720° (fase −360°) na comp final e na pré-comp do canal, 360° na `LOOP` para a grade ficar legível",
|
|
19
|
+
"duracao": "8,0 s, sem narração; o trecho de 3,70 s (222 quadros) se repete a partir de 3,70 s e de 7,40 s",
|
|
20
|
+
"motor": "ae",
|
|
21
|
+
"voz": "ver o guia de estilo",
|
|
22
|
+
"musica": "ver o guia de estilo",
|
|
23
|
+
"fontes": "SF Pro Display (Semibold e Regular) e SF Pro Text (Semibold e Regular)"
|
|
24
|
+
},
|
|
25
|
+
"ferramentas": [
|
|
26
|
+
"Claude Code",
|
|
27
|
+
"After Effects"
|
|
28
|
+
],
|
|
29
|
+
"ficha_tecnica": {
|
|
30
|
+
"Duração": "8,0 s, sem narração; o trecho de 3,70 s (222 quadros) se repete a partir de 3,70 s e de 7,40 s",
|
|
31
|
+
"Formato": "1080×1080, 60 qps; desfoque de movimento de 720° (fase −360°) na comp final e na pré-comp do canal, 360° na `LOOP` para a grade ficar legível",
|
|
32
|
+
"Ferramenta": "After Effects: um script ExtendScript (`cenas.jsx`) cria as comps `CAPA 1` a `CAPA 6`, `CANAL` (1080×2400), `LOOP` e `RECRIACAO`; o `.aep` já vem montado",
|
|
33
|
+
"Assets": "logo oficial do YouTube, monograma neutro no lugar do avatar do autor original, cursores de seta e de mão e 6 capas feitas para o projeto",
|
|
34
|
+
"Fontes": "SF Pro Display (Semibold e Regular) e SF Pro Text (Semibold e Regular)",
|
|
35
|
+
"Som": "trecho de \"SICKO MODE\" (Travis Scott), a 103,4 BPM, recortado para as trocas caírem na batida, e 28 efeitos sonoros pela Mesa; −14,0 LUFS. A música fica fora do pacote",
|
|
36
|
+
"Referência": "edit \"Apple style concept for youtube\" de @illdari (01/08/2026)",
|
|
37
|
+
"Arquivo final": "MP4 H.264 com áudio AAC"
|
|
38
|
+
},
|
|
39
|
+
"etapas": [
|
|
40
|
+
{
|
|
41
|
+
"titulo": "O roteiro",
|
|
42
|
+
"texto": "**Resumo:** o vídeo não tem narração; o roteiro é a sequência do trecho de 3,70 s, com o texto que aparece e os tempos do `cenas.jsx`. A segunda passada repete tudo com +3,70 s.\n\n## De onde veio a estrutura\n\nO edit de @illdari propõe um conceito de YouTube em estilo Apple: o logo da plataforma vira o botão de inscrição e a tela termina rolando a grade do canal. O trecho toca duas vezes e a pausa da voz da música cai na virada do loop. Esta recriação mantém os tempos, a curva da rolagem e a câmera, com nome de canal neutro, monograma próprio e capas feitas para o projeto.\n\n## Cenas por tempo\n\n | \n\n | Tempo (s)\n | Texto na tela\n | O que acontece\n\n | 0,00–0,20\n | —\n | dois riscos vermelhos cruzam a diagonal com rastro rosa\n\n | 0,20–0,47\n | —\n | o logo do YouTube acende com um brilho radial que cresce enquanto apaga\n\n | 0,33–0,74\n | \"YouTube\"\n | o nome sai do desfoque sob o logo e depois as letras saem em arco\n\n | 0,67–1,00\n | \"Inscrever-se\"\n | o logo anda, achata e chicoteia; o botão vermelho nasce dentro do rastro\n\n | 0,73–1,15\n | \"seu canal\" · \"999 inscritos\"\n | o avatar entra pela esquerda com rastro longo; nome, contador e fio saem do desfoque\n\n | 1,17–1,57\n | —\n | a seta do cursor entra por baixo, freia sobre o botão e vira a mãozinha\n\n | 1,57–2,30\n | —\n | espera viva: a mão balança e a tela cresce de leve\n\n | 2,30–2,62\n | \"Inscrito\" · \"1.000 inscritos\"\n | clique: o botão afunda e vira \"Inscrito\", um anel fino abre e o contador rola\n\n | 2,45–3,20\n | \"Mix da madrugada\" · \"Noite em casa\" · \"Retrato\" · \"Luz de vela\" · \"Carrinhos\" · \"Cromo azul\"\n | a grade nasce como esqueleto cinza e ganha as capas em cascata\n\n | 2,30–3,50\n | —\n | tudo rola para cima numa curva em S, com lente no pico, e some desfocando\n\n | 3,50–3,70\n | —\n | branco vazio; o risco do quadro 0 recomeça o loop\n\n | 3,70–8,00\n | o mesmo\n | segunda passada e o começo da terceira\n\n## Momentos para o som\n\n- A música começa no primeiro quadro; o brilho do logo, o morph, a troca da seta pela mão, o pico da rolagem e a volta do loop ficam perto das batidas.\n\n- Chicote nos riscos, no avatar e no morph; som de logo no acender.\n\n- Seta, clique e um som de sucesso no \"Inscrito\"; o contador e os esqueletos da grade têm efeito próprio.\n\n- Um efeito de rolagem acompanha a curva em S e outro marca a saída para o branco.\n\n- Na segunda passada a música não repete; os eventos tocam de novo com +3,70 s."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"titulo": "A identidade visual",
|
|
46
|
+
"texto": "**Resumo:** fundo branco-gelo (`#EEEEEE`), vermelho do YouTube (`#E70003`) no risco, no brilho e no botão, verde só na bolinha de \"Inscrito\", sombras curtas e suaves e SF Pro. A 60 qps, com rastro longo, curva de saída rápida e uma rolagem em S medida no original. Números tirados do `cenas.jsx`.\n\n## Palco\n\n | \n\n | Peça\n | Como é\n\n | Tela\n | 1080×1080, 60 qps\n\n | Desfoque de movimento\n | 720° (fase −360°, 16 amostras) na `CANAL` e na `RECRIACAO`; 360° (fase −180°) na `LOOP`\n\n | Montagem\n | comp `LOOP` de 3,70 s; a `RECRIACAO` empilha três cópias em 0, 3,70 e 7,40 s, cada uma com zoom de 100 a 101,2% e `wiggle(0.5, 4)` na posição\n\n | Pré-comps\n | `CANAL` (1080×2400) com tudo o que rola; `CAPA 1` a `CAPA 6` (300×300, cantos de 20 px)\n\n## Cores\n\n | \n\n | Peça\n | Valor\n\n | Fundo\n | `#EEEEEE`\n\n | Vermelho\n | `#E70003` (risco, brilho, botão, anel e texto de \"Inscrito\")\n\n | Bolinha de inscrito\n | `#2ECC71`\n\n | Esqueleto da grade\n | `#D9D9D9`\n\n | Contador e nome do canal nas capas\n | `#9A9A9A`\n\n | Fio sob o nome\n | `#C8C8C8`\n\n | Sombra\n | 20% de opacidade, distância 4, suavidade 12 (no logo e no avatar, compensada pela escala)\n\n## Fontes\n\n | \n\n | Fonte\n | Onde\n\n | SF Pro Display Semibold\n | \"YouTube\" sob o logo (46 px)\n\n | SF Pro Display Regular\n | \"seu canal\" (56 px), contador (28 px), \"Inscrever-se\" (38 px) e \"Inscrito\" (42 px)\n\n | SF Pro Text Semibold\n | título de cada vídeo da grade (19 px)\n\n | SF Pro Text Regular\n | canal de cada vídeo (15 px)\n\n## Curvas\n\n | \n\n | Nome\n | Chaves\n | Uso\n\n | Saída rápida\n | saída 5–35% · chegada 85–90%\n | logo, botão, avatar, seta, textos\n\n | Linear\n | —\n | riscos de luz\n\n | Rolagem medida\n | 36 chaves lineares, uma a cada 2 quadros\n | grade: aceleração até uns 70% do trecho e freada no resto\n\n## Cena a cena\n\n | \n\n | Cena\n | Números\n\n | Riscos\n | traço de 18 px com ponta redonda; risco 1 de (−60, 1140) a (1140, −60) em 0,03–0,17 s, risco 2 até o centro em 0,07–0,20 s; Trim Start atrasado 0,03 s; Directional Blur 45°, 60; cópia rosa de 120 px a 30% com desfoque 120\n\n | Brilho\n | sólido de 1400 px com máscara redonda de raio 230 e pena 420; escala 30 › 150% em 0,20–0,47 s; opacidade 0 › 60 › 0\n\n | Logo\n | 312 px; escala 40 › 100% (0,20–0,40 s), respira até 93% em 0,65 s; desfoque 115 › 0; Directional Blur pela velocidade (×3,8)\n\n | \"YouTube\"\n | sai do desfoque (15 › 0) em 0,33–0,47 s; em 0,58–0,74 s as letras saem em arco: posição (40, −80), rotação 60°, faixa de 40%, primeira letra antes\n\n | Morph\n | logo de (540, 544) a (718, 639) e para 95 × 47% em 0,67–1,00 s; some em 0,80–0,85 s; o botão de 316×98 (raio 20) nasce em 0,80 s indo de (650, 600) a (718, 639), com rotação −4° › 1,5° › 0°\n\n | Avatar\n | 306 px; x −200 › 343 em 0,73–1,10 s; 4 ecos a cada 2 quadros (50, 33, 20 e 10%)\n\n | Nome e contador\n | entram com desfoque 12 › 0 em 0,95–1,10 s; fio de 318 px cresce da esquerda em 0,98–1,15 s\n\n | Cursor\n | seta de (1020, 910) até o botão em 1,17–1,50 s; vira a mão em 1,567 s; `wiggle(1, 3)` de 1,55 a 2,30 s\n\n | Clique\n | botão e mão afundam para 94% e 90% em 2,30–2,42 s; \"Inscrito\" (350×96) entra em 2,37–2,40 s com desfoque 10 › 0; anel de 250 px e traço de 3 px vai a 165% e apaga em 2,40–2,58 s\n\n | Contador\n | \"999 inscritos\" sobe 30 px e some; \"1.000 inscritos\" vem de baixo em 2,47–2,62 s\n\n | Grade\n | 6 capas em 2 colunas (x 286 e 805); esqueleto com desfoque 20 › 0 a cada 0,15 s desde 2,45 s; capa entra 0,10 s depois do esqueleto\n\n | Rolagem\n | y 540 › −980 (1.520 px) entre 2,30 e 3,45 s; escala 100 › 104 › 97%; lente Optics Compensation 0 › 30 › 0 em 2,85–3,45 s; some com desfoque 0 › 40 em 3,30–3,50 s; branco até 3,70 s\n\n## Som\n\n | \n\n | Item\n | Valor\n\n | Música\n | trecho a partir de 265,576 s de \"SICKO MODE\", 103,4 BPM; ganho −10 dB antes da soma\n\n | Eventos\n | 28 (14 por passada): chicote, logo, texto-sai, morph, texto, seta, clique, sucesso, skeleton, contador, rolagem e sai\n\n | Efeitos\n | um por evento, pelo mapa padrão da Mesa, sem tonais; barramentos ×4\n\n | Medido\n | final −14,0 LUFS, pico −1,3 dBFS; música −15,3 e efeitos −18,3 LUFS\n\n## O que é \"humano\" neste vídeo\n\n- O logo respira 7% antes de virar botão, em vez de esperar parado.\n\n- A mão balança alguns pixels enquanto espera o clique.\n\n- Cada passada cresce 1,2% e oscila de leve, até na espera."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"titulo": "A montagem no After Effects",
|
|
50
|
+
"texto": "| \n\n | Arquivo\n | O que faz\n\n | `ae/cenas.jsx`\n | apaga o que houver no projeto aberto e monta tudo. No topo ficam o bloco `CFG` (textos, cores, fontes, duração do loop) e o mapa das cenas em segundos. Ajudantes: `K` (chaves com influência, linear, hold ou a curva contínua \"A\"), `retang`, `circulo`, `texto`, `animador`, `blur`, `sombra`, `risco` (linha com Trim Paths andando), `rastro` e `eco2d` (cópias atrasadas, só atrás do movimento). A curva da rolagem está na lista `rolY`, com a posição a cada 2 quadros\n\n | `ae/youtube.aep`\n | o resultado do script, pronto para abrir e renderizar\n\n | `audio/trilha.py`\n | lê `eventos.json`, põe a música 10 dB abaixo antes da soma, coloca um efeito por evento pelo mapa padrão, reforça os efeitos ×4 e mixa para −14 LUFS\n\n | `audio/eventos.json`\n | tempos e tipos de cada evento (chicote, logo, morph, texto, seta, clique, sucesso, skeleton, contador, rolagem…)\n\n- **Fontes:** instale SF Pro Display e SF Pro Text em `C:\\Program Files\\Common Files\\Adobe\\Fonts` e reinicie o After Effects.\n\n- **Abrir:** `projeto/ae/youtube.aep`. Se o AE pedir arquivos, aponte para `projeto/assets/`.\n\n- **Adaptar:** troque o nome do canal, o contador, os textos do botão e os títulos dos vídeos em `CFG.textos`; ponha o seu avatar em `assets/monograma.png` e as suas capas em `assets/capa-1.png` a `capa-6.png`. Abra um projeto vazio e rode File › Scripts › Run Script File › `cenas.jsx`.\n\n- **Render:** fila do AE com a comp `RECRIACAO` em H.264, a 60 qps.\n\n- **Som:** no `audio/trilha.py`, troque o `sys.path` para a pasta `audio/mesa`, ponha a sua faixa em `audio/musica.wav` e rode `python audio/trilha.py`. Cole o `audio/mix.wav` no vídeo com o ffmpeg (`-c:v copy -c:a aac -shortest`).\n\n**Pegadinhas:** desfoque e sombra rodam antes da escala; o logo é uma imagem de 1200 px a 26%, então os valores dele vão ×3,8. Gaussian Blur numa forma escalada a 250% corta em quadrado: o brilho do logo é um sólido grande com máscara redonda de pena larga. Directional Blur na grade borra o texto; ali o rastro é só o desfoque de movimento. A 60 qps o render leva o dobro do tempo de 30 qps."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"titulo": "As decisões de direção",
|
|
54
|
+
"texto": "- **O logo vira o botão.** O logo anda 178 px para a direita e 95 px para baixo, achata para 47% de altura e chicoteia (−6° › 2° › 0°); o botão vermelho nasce aos 0,80 s, já em movimento, e a troca some no rastro.\n\n- **60 qps com rastro longo.** O morph de 0,33 s tem 20 quadros; o avatar leva quatro cópias atrasadas 2 quadros cada, de 50% a 10%.\n\n- **Um gancho de 0,2 s.** Dois riscos vermelhos cruzam a diagonal com um rastro rosa antes de qualquer outra coisa.\n\n- **O brilho nunca encolhe.** O halo do logo cresce de 30 a 150% enquanto acende e apaga.\n\n- **O clique tem recompensa.** O botão afunda, vira \"Inscrito\" com a bolinha verde, um anel fino abre e o contador rola de 999 para 1.000.\n\n- **A grade nasce como esqueleto.** Placeholders cinza em cascata de 0,15 s ganham as capas num crossfade de 6 quadros.\n\n- **A rolagem esconde a emenda.** 1.520 px numa curva em S medida no original, com escala 100 › 104 › 97% e lente no pico; o branco depois dela vira o primeiro quadro.\n\n- **Nada para.** Na revisão, cada passada ganhou um zoom de 1,2% e uma oscilação de uns 4 px, porque a espera do clique ficava 0,75 s totalmente parada.\n\nDetalhes de cores, tempos e números: estilo.md. Cenas por tempo: roteiro.md. Para fazer o seu com outra plataforma: PROMPT.md."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"titulo": "As versões até o final",
|
|
58
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | **v1**\n | recriação ajustada lado a lado com o original; nome do canal neutro, monograma e capas próprias; na revisão, zoom de 1,2% e oscilação de ~4 px em cada passada para acabar com 0,75 s de tela parada"
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"pacote": [
|
|
62
|
+
{
|
|
63
|
+
"pasta": "projeto/",
|
|
64
|
+
"conteudo": "`ae/cenas.jsx` (o gerador comentado), `ae/youtube.aep` (o projeto montado) e `assets/` (os 10 PNGs que o script importa)"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"pasta": "audio/",
|
|
68
|
+
"conteudo": "`trilha.py` (o som inteiro), `eventos.json` (os 28 eventos), `mix.wav`, `relatorio-som.json` e `mesa/`, com o motor de mix `mesa.py` e o `mapa_padrao.py`"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"pasta": "referencias/",
|
|
72
|
+
"conteudo": "`estudo-da-referencia.md` (o edit original quadro a quadro, com cores, tempos e receita), `links.md` e `fora-do-pacote.md`"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"pasta": "render.mp4",
|
|
76
|
+
"conteudo": "o vídeo final"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"pasta": "ae/cenas.jsx",
|
|
80
|
+
"conteudo": "apaga o que houver no projeto aberto e monta tudo. No topo ficam o bloco `CFG` (textos, cores, fontes, duração do loop) e o mapa das cenas em segundos. Ajudantes: `K` (chaves com influência, linear, hold ou a curva contínua \"A\"), `retang`, `circulo`, `texto`, `animador`, `blur`, `sombra`, `risco` (linha com Trim Paths andando), `rastro` e `eco2d` (cópias atrasadas, só atrás do movimento). A curva da rolagem está na lista `rolY`, com a posição a cada 2 quadros"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"pasta": "ae/youtube.aep",
|
|
84
|
+
"conteudo": "o resultado do script, pronto para abrir e renderizar"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"pasta": "audio/trilha.py",
|
|
88
|
+
"conteudo": "lê `eventos.json`, põe a música 10 dB abaixo antes da soma, coloca um efeito por evento pelo mapa padrão, reforça os efeitos ×4 e mixa para −14 LUFS"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"pasta": "audio/eventos.json",
|
|
92
|
+
"conteudo": "tempos e tipos de cada evento (chicote, logo, morph, texto, seta, clique, sucesso, skeleton, contador, rolagem…)"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"prompt": "Quero um loop quadrado no mesmo método do projeto \"youtube-inscrever\", que está em 07-videos/projetos/youtube-inscrever/: o logo da plataforma vira o botão de ação, o clique tem recompensa e a tela sai numa rolagem em S, a 60 qps.\n\nPlataforma (YouTube, Instagram, TikTok, WhatsApp…): {{PLATAFORMA}}\nBotão e estado depois do clique (ex.: Seguir › Seguindo): {{BOTAO}}\nMeu perfil ou canal (nome, avatar e número antes e depois): {{PERFIL}}\nO que rola no fim (grade de vídeos, posts, produtos): {{GRADE}}\nMúsica (arquivo e segundo de início): {{MUSICA}}\n(Se algum desses estiver vazio ou com as chaves, me pergunte antes de começar.)\n\n1. Estude o projeto antes de propor qualquer coisa. Leia LEIA-ME.md, estilo.md e roteiro.md e abra projeto/ae/cenas.jsx: o bloco CFG, os ajudantes risco, sombra, rastro e eco2d, a pré-comp CANAL e a lista rolY da rolagem. Me diga em poucas linhas o que vai reaproveitar.\n\n2. Pegue o logo oficial da plataforma (SVG ou PNG do site oficial ou da Wikimedia) e a cor exata do botão no app. Avatar e capas são meus; se faltarem, gere imagens sem marca.\n\n3. Planeje o morph antes de animar: para onde o logo anda, quanto achata, em que quadro o botão nasce já em movimento. Monte a tabela tempo › peça › texto e espere meu ok.\n\n4. Construa copiando o projeto, sem editar o original. Mantenha os 60 qps, o rastro longo (720° e eco atrás de quem anda rápido), o risco de luz na cor da marca como gancho, o brilho que só cresce, o clique com anel e contador e a grade que nasce como esqueleto. Desfoque e sombra rodam antes da escala: compense os valores nas imagens grandes.\n\n5. Use a curva da rolagem como está (1.520 px, escala 100 › 104 › 97% e lente no pico) e termine num quadro igual ao primeiro. Nenhum trecho com a tela 100% parada: se a espera do clique parar, ponha um zoom leve e uma oscilação de poucos pixels na comp final.\n\n6. Meça as batidas da música (librosa), encaixe logo, morph, clique e rolagem perto delas, escreva os eventos num eventos.json e faça o som pelo audio/trilha.py: um efeito por peça, música 10 dB abaixo antes da soma, final em −14 LUFS.\n\n7. Antes do render, me mostre uma folha de contato com 12 quadros, incluindo o meio do morph e da rolagem. Renderize a comp RECRIACAO em H.264 a 60 qps, cole o som com o ffmpeg e entregue o MP4 com uma anotação do que mudou.",
|
|
96
|
+
"campos": [
|
|
97
|
+
"BOTAO",
|
|
98
|
+
"GRADE",
|
|
99
|
+
"MUSICA",
|
|
100
|
+
"PERFIL",
|
|
101
|
+
"PLATAFORMA"
|
|
102
|
+
],
|
|
103
|
+
"fonte": {
|
|
104
|
+
"nome": "Clube do Motion",
|
|
105
|
+
"url": "https://clubedomotion.com/projeto/?id=youtube-inscrever",
|
|
106
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
107
|
+
}
|
|
108
|
+
}
|