primocode 10.13.0 → 10.14.1
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 +66 -12
- package/bin/primocode.js +148 -8
- package/lib/act.js +56 -3
- package/lib/catalogo.js +12 -1
- package/lib/config.js +1 -0
- package/lib/estudio/cota.js +157 -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/editor.js +290 -0
- package/lib/estudio/effectcraft.js +152 -0
- package/lib/estudio/exportar.js +181 -0
- package/lib/estudio/index.js +97 -2
- 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/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 +72 -0
- package/lib/headless.js +71 -0
- package/lib/hooks.js +72 -0
- package/lib/limites.js +100 -0
- package/lib/local/cerebro.json +398 -12
- package/lib/local/entrada.js +46 -2
- package/lib/marca-kit.js +312 -0
- package/lib/mcp.js +286 -6
- package/lib/perigo.js +31 -3
- package/lib/planos.js +49 -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/package.json +4 -2
- package/skills/after-effects/SKILL.md +52 -0
- package/skills/maquina-de-motion/SKILL.md +84 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-clinica-take-unico",
|
|
3
|
+
"titulo": "A clínica num take só",
|
|
4
|
+
"categoria": "narrado",
|
|
5
|
+
"resumo": "o Reel \"As clientes que sumiram\" (id `clinica`) refeito como plano-sequência de 44,2 s, sem nenhum corte. A narração é a mesma da clínica de estética, acelerada para 1,20×, e um ponto de luz cor de argila conduz o vídeo do primeiro ao último quadro: vira o celular, desce pela linha do tempo, fecha a tampa da lixeira, salta no drop e aperta o botão final. A composição é um HTML só, com o quadro calculado pelo tempo (`window.__seek(t)`) sobre o motor de take único (`take.js`), renderizado no Chromium a 60 qps com desfoque de movimento de obturador real e conferido por um oráculo que mede a continuidade entre as cenas. A versão final é a v2, aprovada em 13/10/2026. Feito pelo Clube do Motion.",
|
|
6
|
+
"indicado": "negócio local ou agência que vende um serviço e quer mostrá-lo funcionando num Reel narrado curto, com a câmera viajando entre as cenas em vez de trocar de tela; clínicas, salões, consultórios e outros nichos de atendimento.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"take único",
|
|
9
|
+
"plano-sequência",
|
|
10
|
+
"ponto de luz que conduz",
|
|
11
|
+
"câmera de operador",
|
|
12
|
+
"Apple light",
|
|
13
|
+
"paleta do nicho",
|
|
14
|
+
"interface de celular",
|
|
15
|
+
"trilha tonal"
|
|
16
|
+
],
|
|
17
|
+
"ficha": {
|
|
18
|
+
"formato": "1080×1920, 60 qps, 9:16, H.264 com áudio AAC de 256 kbps, 47 MB",
|
|
19
|
+
"duracao": "44,2 s (2.652 quadros); 1,0 s de abertura antes da voz",
|
|
20
|
+
"motor": "html",
|
|
21
|
+
"voz": "a narração do Reel `clinica` (voz clonada na ElevenLabs), acelerada para 1,20× com `atempo`: 40,6 s",
|
|
22
|
+
"musica": "ver o guia de estilo",
|
|
23
|
+
"fontes": "ver o guia de estilo"
|
|
24
|
+
},
|
|
25
|
+
"ferramentas": [
|
|
26
|
+
"Claude Code",
|
|
27
|
+
"ElevenLabs"
|
|
28
|
+
],
|
|
29
|
+
"ficha_tecnica": {
|
|
30
|
+
"Duração": "44,2 s (2.652 quadros); 1,0 s de abertura antes da voz",
|
|
31
|
+
"Formato": "1080×1920, 60 qps, 9:16, H.264 com áudio AAC de 256 kbps, 47 MB",
|
|
32
|
+
"Voz": "a narração do Reel `clinica` (voz clonada na ElevenLabs), acelerada para 1,20× com `atempo`: 40,6 s",
|
|
33
|
+
"Ferramenta": "HTML + CSS + JavaScript num arquivo só, sobre o motor `take.js`; render com Playwright no Chromium, obturador de 180° e média em luz linear de 3 a 16 capturas por quadro",
|
|
34
|
+
"Trilha": "instrumental de \"Kiss Me More\" (Doja Cat feat. SZA), Lá♭ maior, 111 BPM, no andamento original; a primeira batida cheia do refrão cai no \"Vou te mostrar\", em 18,45 s",
|
|
35
|
+
"Som": "102 eventos exportados da própria composição; efeitos nivelados, tonais do Film Score Vol. 3 em Sol♯ e Fá e notas de orquestra em Lá♭; −14,1 LUFS e pico de −0,9 dBFS",
|
|
36
|
+
"Conferência": "oráculo: continuidade 0,89 em 22 fronteiras, 34% de quadros de respiro, nenhum salto",
|
|
37
|
+
"Chamada final": "\"Manda CLÍNICA no direct\"",
|
|
38
|
+
"Comparação": "o Reel `clinica`, feito no After Effects, tem 52,6 s com a voz em velocidade normal"
|
|
39
|
+
},
|
|
40
|
+
"etapas": [
|
|
41
|
+
{
|
|
42
|
+
"titulo": "O roteiro e a voz",
|
|
43
|
+
"texto": "**Resumo:** a fala é a mesma do Reel `clinica`, enviada à voz clonada em cinco frases e acelerada aqui para 1,20×. Abaixo estão a fala verbatim, como os tempos foram lidos e as cenas por tempo do vídeo final, já com o 1,0 s de abertura antes da voz. Gancho: \"Se você tem uma clínica de estética, provavelmente você já usa alguma plataforma de atendimento ao cliente, certo?\".\n\n## De onde veio a estrutura\n\nO roteiro e a narração vieram prontos do Reel original, em duas partes: o gancho (a pergunta que a dona de clínica responde \"sim\", a falta de recuperação de clientes e a frase de impacto) e a proposta (o processo funcionando, o \"serve para qualquer nicho\" e a chamada). O que mudou foi a forma de contar: as cenas que no original trocavam de tela viraram estações de um mundo só, ligadas pelo ponto de luz, e a fala mais rápida encurtou o Reel de 52,6 s para 44,2 s.\n\n## Como a fala foi feita\n\n- **Voz:** a narração aprovada do Reel `clinica` (ElevenLabs, voz clonada, uma frase por arquivo), juntada num arquivo só e acelerada com `ffmpeg -af atempo=1.2`: 40,6 s, entrando em 1,0 s.\n\n- **Tempos:** cada palavra lida pelo faster-whisper (`audio/palavras.py` → `palavras.json`). Dois inícios foram acertados pelo silêncio, porque o reconhecimento os adiantava: o \"Vou\" do drop e o \"E\" de \"E isso\".\n\n- **Pronúncia:** \"follow-up\" foi enviado à voz como \"fólou âp\"; na legenda, aparece a grafia normal.\n\n## A fala, verbatim (texto enviado à voz)\n\n**Parte 1 — gancho**\n\n- Se você tem uma clínica de estética, provavelmente você já usa alguma plataforma de atendimento ao cliente, certo?\n\n- Mas você tem algum processo automatizado para recuperação e fólou âp de cliente que já passou por aí?\n\n- Se você não faz recuperação de cliente e não mantém ele na sua base mandando mensagens periodicamente, você tá jogando dinheiro no lixo.\n\n**Parte 2 — proposta**\n\n- Vou te mostrar nesse vídeo, de forma bem resumida, um processo muito simples que a gente automatiza pra clínica não perder mais os clientes que ela já tem na base de dados. Sem colocar mais nenhum real em tráfego pago, tudo orgânico.\n\n- E isso não serve apenas para clínica de estética, tá? Essa solução serve para qualquer nicho, de qualquer negócio. Aqui eu tô mostrando ela funcionando numa clínica de demonstração que a gente montou. E você também pode ter isso, pra não ficar pra trás.\n\n## Cenas por tempo\n\nTempos do vídeo final. Cada batida está presa a uma palavra, e a tabela `T` do `comp/index.html` diz qual.\n\n## Gancho (0 a 18,4 s)\n\n | \n\n | Tempo (s)\n | Fala\n | Tela\n\n | 0–1,5\n | —\n | o ponto de luz nasce em macro (câmera a 2,3×) e abre uma onda; a câmera recua\n\n | 1,0–2,6\n | \"Se você tem uma clínica de estética,\"\n | no \"clínica\" (1,6 s) o celular cresce do ponto; no \"estética\" (2,04 s) a tela acende por íris a partir dele\n\n | 2,8–6,2\n | \"provavelmente você já usa alguma plataforma de atendimento ao cliente, certo?\"\n | no \"plataforma\" (4,2 s), WhatsApp, agenda e notificação saem da tela; o ponto toca a conversa (4,8 s) e a resposta chega no \"cliente\"; selos sálvia no \"certo?\"\n\n | 6,4–8,2\n | \"Mas você tem algum processo automatizado\"\n | os widgets voltam para a tela, que empurra para a lista de clientes; o card tracejado \"Recuperação automática · não configurada\" nasce (7,14 s) e balança quando o ponto tenta ligar (7,5 s)\n\n | 8,3–11,3\n | \"para recuperação e follow-up de cliente que já passou por aí?\"\n | seis clientes saem das linhas e estalam em volta do celular; no \"que\", cada uma ganha o seu \"há N meses\"\n\n | 11,5–14,5\n | \"Se você não faz recuperação de cliente e não mantém ele na sua base\"\n | **chicote** para baixo (11,5 s): as clientes viajam na tela e viram a lista ao lado da linha do tempo; o ponto vira o \"hoje\" e desce pelos meses, e cada ficha apaga quando ele passa; no \"mantém\" (13,6 s), uma cliente sai da base\n\n | 14,7–16,4\n | \"mandando mensagens periodicamente,\"\n | balões fantasmas tracejados nascem ao lado das fichas: as mensagens que ninguém mandou\n\n | 16,5–18,4\n | \"você tá jogando dinheiro no lixo.\"\n | as fichas viram cédulas; a lixeira sobe e a câmera se aproxima (1,25×); a tampa abre, as cédulas caem e o ponto fecha a tampa no \"lixo\" (17,56 s, câmera a 1,38×); a música corta\n\n## Proposta (18,45 a 44,2 s)\n\n | \n\n | Tempo (s)\n | Fala\n | Tela\n\n | 18,45–20,7\n | \"Vou te mostrar nesse vídeo, de forma bem resumida,\"\n | **drop:** o ponto salta em chicote para baixo e o celular 2 cresce dele (18,85 s), na tela \"Recuperação\" da clínica de demonstração\n\n | 20,8–22,9\n | \"um processo muito simples que a gente automatiza\"\n | o celular vai para a esquerda; no \"automatiza\" (22,34 s), o ponto liga a recuperação, com o anel do clique em sálvia\n\n | 23,0–26,3\n | \"pra clínica não perder mais os clientes que ela já tem na base de dados,\"\n | o laço: a ficha cinza sai da lista; o ponto desce até o WhatsApp (mensagem automática, resposta e horário marcado), desce até a agenda (o horário de sexta se preenche no \"base\") e volta pela direita acendendo a ficha (26,18 s); as outras acendem na lista\n\n | 26,4–29,7\n | \"sem colocar mais nenhum real em tráfego pago, tudo orgânico.\"\n | os cartões voltam para o celular; entra o anúncio \"Patrocinado\"; o ponto toca o orçamento no \"nenhum\" e ele rola até zero; \"pausado\"; no \"tudo\", o anúncio cai e cinco clientes voltam em volta do celular com selo\n\n | 29,8–35,6\n | \"E isso não serve apenas para clínica de estética, tá? Essa solução serve para qualquer nicho, de qualquer negócio.\"\n | o celular volta ao centro e \"Clínica de estética\" estala acima dele; no \"tá?\" ele encolhe e, em cada \"qualquer\", três nichos estalam em volta\n\n | 35,7–39,3\n | \"Aqui eu tô mostrando ela funcionando numa clínica de demonstração que a gente montou.\"\n | os nichos voltam; o celular vem ao centro por mola e a tela empurra para o site da clínica, que rola devagar (36,3–39,9 s); no \"demonstração\" (37,7 s), a faixa cresce para fora da tela e vira o selo \"Clínica de demonstração · criada pela TDA Digital\"\n\n | 39,4–44,2\n | \"E você também pode ter isso, pra não ficar pra trás.\"\n | o celular desce e inclina 6°; o selo sobe e vira o logo da agência no \"isso\" (40,28 s); o botão \"Manda CLÍNICA no direct\" entra no \"trás\" (41,18 s) e o ponto o aperta em 42,1 s, com o anel lima\n\n## Momentos para a trilha\n\n- 0,2 s: o ponto nasce com pop e neon-bell; cama tonal pale-light até 11,8 s.\n\n- 2,04 s: arpejo de harpa quando a tela acende.\n\n- 11,5 s: chicote com whoosh longo e riser airwave; dark-current em Fá por baixo da linha do tempo.\n\n- **17,56 s: o \"lixo\"**, com riser, golpe collision, sentinel-bell, impacto, tímpano e piano grave; a música corta seco.\n\n- **18,45 s: drop** no \"Vou te mostrar\", com whoosh grave e riser arrival; o refrão entra cheio.\n\n- 22,34 s: a recuperação liga (clique, glockenspiel e blip).\n\n- 26,18 s: a ficha acende com harpa; as outras com glockenspiel.\n\n- 40,28 s: o logo, com jolt, acorde de piano e sinos; cordas crescendo desde 39,4 s.\n\n- 42,1 s: clique final com glockenspiel, blip, neon-bell e impacto.\n\nA lista completa dos 102 eventos, com tempo, tipo, pan e intensidade, está em `audio/eventos.json`. Os nomes das clientes e da clínica são fictícios."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"titulo": "A identidade visual",
|
|
47
|
+
"texto": "**Resumo:** a identidade da clínica de demonstração Lumière (creme, argila, sálvia, luz de janela, Cormorant Garamond e Inter) aplicada a um mundo vertical contínuo, filmado por uma câmera de operador que persegue um ponto de luz. O movimento usa molas, carries e dois chicotes; o render tem desfoque de obturador de 180°. Na trilha entram um instrumental pop em Lá♭ maior, tonais do Film Score Vol. 3 em Sol♯ e Fá e notas de orquestra no tom, com a música bem abaixo da voz. Números tirados do `index.html`, do `take.js`, do `trilha_eventos.py` e da ficha do projeto.\n\n## O mundo\n\nTodas as cenas ficam num plano só, em coordenadas de mundo (1080×1920 = zoom 1), uma abaixo da outra, na direção em que a câmera já está indo.\n\n | \n\n | Lugar\n | Posição no mundo\n\n | Celular 1 (lista de clientes)\n | centro em (540, 900)\n\n | Linha do tempo, de maio a outubro\n | x = 200, de y = 2350 a 3180; a lista de clientes fica ao lado, em x = 660, com 150 px entre as linhas\n\n | Lixeira\n | (540, 3480)\n\n | Celular 2 (recuperação, laço, anúncio, nichos, site, fecho)\n | (540, 4700)\n\n## Fundo e luz\n\n | \n\n | Peça\n | Como é\n\n | Chão\n | creme `#F7F2EC` com dois radiais quentes, um claro no canto superior esquerdo (`#FFF1DE`) e um areia embaixo (`#EFE4D6`)\n\n | Persiana\n | imagem da sombra a 5,5% em `multiply`, que desliza 200 px na horizontal ao longo do vídeo e acompanha a câmera em paralaxe\n\n | Grade de pontos\n | pontos de 2 px a cada 46 px, argila escura a 16%, numa profundidade de 1,2 (`TK.lattice`): mostra que a câmera anda mesmo no fundo claro\n\n | Auras\n | três luzes de 820 px atrás de cada celular (argila a 30%, sálvia a 36% e luz a 85%), orbitando num raio de 120 × 95 px a 0,55 rad/s\n\n | Grão\n | ladrilho de ruído de 256 px com semente fixa e opacidade de até 2%, contra faixas no degradê claro\n\n## Cores\n\n | \n\n | Token\n | Hex\n | Uso\n\n | Creme\n | `#F7F2EC`\n | fundo, telas\n\n | Areia\n | `#EFE6DB` / `#E7DAC9`\n | superfícies, separadores\n\n | Cartão\n | `#FFFDFA`\n | cartões, balões, tab bar\n\n | Tinta\n | `#2A211D`\n | texto, legenda\n\n | Tinta 2\n | `#6D615A`\n | texto secundário, meses\n\n | **Argila**\n | **`#B77B62`**\n | ponto de luz, ondas, destaque\n\n | Argila escura\n | `#8F5A45`\n | palavra-chave da legenda, pílula \"hoje\", onda do \"lixo\"\n\n | Sálvia\n | `#A3AD96` / `#5F6B53`\n | recuperação ativa, selos, ficha acesa\n\n | Luz\n | `#FFE8C8`\n | halo do ponto, auras\n\n | Pedra\n | `#BDB5AD`\n | ficha apagada, ícones inativos\n\n | WhatsApp\n | `#25D366`, fundo `#EFEAE2`, balão `#D9FDD3`, tique `#53BDEB`\n | as cores reais do app\n\n | Selo de demonstração\n | azul-marinho `#0B1B2E`, texto `#E8EDF4`, ponto `#DAF0A2`\n | a faixa do site que vira selo\n\n | Fecho da agência\n | lima `#A3E635` no botão, `#8DC63F` no anel do clique\n | só no CTA\n\n## Fontes\n\n | \n\n | Uso\n | Fonte\n\n | Legenda\n | Cormorant Garamond 600, 72 px, entrelinha 1,1\n\n | Palavra-chave da legenda\n | Cormorant Garamond 500 itálico, em argila escura\n\n | Interface (lista, fichas, WhatsApp, agenda, anúncio, nichos, botão)\n | Inter 400, 500, 600 e 700\n\n | Ícones da interface\n | Material Icons\n\nTodas vêm em TTF em `comp/fonts/`, carregadas por `@font-face`; o `__ready` espera cada peso antes do primeiro quadro.\n\n## Componentes\n\n- **Celular** de 556×1140 px, cantos de 92 px, corpo `#0E0E10` com borda de 3 px; tela de 500×1084 com cantos de 64 px e ilha de 150×44. Ele nasce do ponto: um círculo de 30 px cresce até o corpo inteiro (`morphRect`, mola ζ 0,74 · ω 11).\n\n- **Telas recriadas:** início da clínica com a agenda do dia, lista de clientes, tela \"Recuperação\" com o interruptor, WhatsApp com mensagem automática e resposta, agenda da sexta-feira, anúncio \"Patrocinado\" com orçamento diário e o site da clínica.\n\n- **Ficha da cliente** com avatar de iniciais, nome, procedimento, preço e \"há N meses\", nos estados acesa e apagada. Seis clientes fictícias.\n\n- **Card tracejado** \"Recuperação automática · não configurada\", que balança quando o ponto tenta ligar.\n\n- **Balões fantasmas** (só o contorno), cédulas de R$ 100 e R$ 50, lixeira de inox em duas peças (corpo e tampa).\n\n- **Sete nichos** com ícone Material: barbearia, academia, pet shop, restaurante, imobiliária, odontologia e clínica de estética.\n\n- **Selo de demonstração** de 640×78 px, **logo da agência** e **botão** lima de 560×112 px, \"Manda CLÍNICA no direct\".\n\n## Elemento vivo: o ponto de luz\n\nNúcleo de 30 px em argila, anel de 44 px branco a 92% e halo radial de 112 px na cor luz. O raio do núcleo é uma função do tempo: nasce com mola, afunda no clique (`click`, 0,08 s para baixo e 0,18 s para cima), some em 0,18 s quando vai trocar de papel e cresce 25% enquanto é o \"hoje\". O caminho é um spline entre nós medidos nas telas, com regras próprias na linha do tempo (desce pelos meses), no salto até a lixeira (`hop` de 140 px) e no laço (ficha → WhatsApp → agenda → volta pela direita). Oito ondas abrem dele (raio de 200 a 420 px), e dois anéis do clique, desenhados como no Click VFX, marcam os toques que abrem cena: o interruptor da recuperação, em sálvia, e o botão final, em lima.\n\n## Câmera de operador\n\n- **Alvos, não keyframes:** 30 alvos `C(t, x, y, zoom, w)`. A câmera persegue cada um com uma mola por eixo; `w` é a pressa, de 1,1 nos empurrões lentos a 7 e 8 nos chicotes. O assunto fica em y ≈ 800 na tela, acima da legenda.\n\n- **Zoom:** de 2,3× na abertura (o ponto em macro) a 0,86× quando a lixeira entra; 1,25× e 1,38× na lixeira; 0,95× a 1,2× no celular 2.\n\n- **Chave antes do assunto:** cada alvo entra 0,1 a 0,2 s antes de o assunto chegar, para ele não escapar do quadro.\n\n- **Mão do operador:** deriva de 2,6 px que baixa 80% nos 6 respiros e nunca chega a zero.\n\n- **Tremor nos pousos:** 10 momentos, de 2 px nos cliques a 9 px no \"lixo\", com decaimento de 8 a 11.\n\n## Curvas e molas\n\n | \n\n | Peça\n | Curva ou mola\n\n | Entradas que estalam (widgets, balões, nichos, cartões)\n | escala por mola amortecida (ζ 0,55–0,6 · ω 13–14) e rotação que assenta com ζ 0,5–0,55 · ω 11\n\n | Viagem da tela até o lugar\n | quíntica de saída (`quintOut`) em 0,6 s\n\n | Volta para dentro do celular\n | cúbica de entrada em 0,42–0,45 s, encolhendo até zero\n\n | Movimento do celular 2\n | curva `saas` em 0,6–0,75 s; no \"Aqui\", uma mola sem sobra visível\n\n | Carry no chicote\n | `cubicInOut` interpolado na tela, com arco de 40 px nos balões e de 160 px no salto do ponto\n\n | Pancada da tampa\n | `impact` com decaimento 8, ω 20, amassado de 6–7%\n\n | Clique do botão\n | o botão afunda a 93% em 0,1 s e volta em 0,16 s\n\n | Cédulas\n | caem com aceleração (posição em u²) e giram até 3× a inclinação inicial\n\n## Legenda\n\n- Uma frase por linha, centralizada em y = 1446, com sombra leve (`0 2px 10px`, tinta a 18%) e um véu creme de 720 px atrás, a 92–96%.\n\n- Cada palavra sobe 30 px com `wordRise` 0,04 s antes de ser dita; a frase sai subindo 24 px em 0,18 s.\n\n- As palavras-chave (estética, plataforma, automatizado, recuperação, base, dinheiro, lixo, orgânico, demonstração…) vêm em itálico na argila escura.\n\n## Transições\n\nToda fronteira tem um \"o que passa para a próxima\": o ponto vira o celular; a tela acende por íris a partir do ponto (círculo de até 1.300 px em 0,5 s); os widgets nascem da tela e voltam para ela; a tela empurra para a lista; as clientes saem das linhas e, no chicote, viram a lista da linha do tempo; as fichas viram cédulas; o ponto fecha a tampa e salta para virar o celular 2; os cartões do laço voltam para o celular; o anúncio cai; a faixa do site cresce até virar selo e o selo sobe e vira o logo.\n\n## Render\n\n60 qps. Cada quadro é a média, em luz linear, de 3 a 16 capturas espalhadas num obturador de 180°; o número vem do quanto algo anda na tela (`__motion`). Quadro parado sai com uma captura só, e o corte seco continua seco.\n\n## Trilha\n\n | \n\n | Item\n | Valor\n\n | Música\n | \"Kiss Me More\" (Doja Cat feat. SZA), só bateria, baixo e harmonia (Demucs), no andamento original\n\n | Tom e tempo\n | Lá♭ maior, 111 BPM\n\n | Encaixe\n | a primeira batida cheia do refrão (24,96 s do arquivo) cai no \"Vou\", em 18,45 s; a faixa começa em 6,51 s\n\n | Até o \"lixo\"\n | abafada por um passa-baixas que abre de 260 Hz a 2,6 kHz e corta seco em 17,56 s\n\n | Do drop ao fim\n | cheia, com saída em rampa no último 1,6 s\n\n**Tonais do Film Score Vol. 3 (Sol♯ maior; Fá menor na tensão):** neon-bell quando o ponto nasce e no clique final; warm-signal nos dois celulares; airwave no chicote e no empurrão para o site; dark-current em Fá por baixo da linha do tempo; sonar-glow, collision e sentinel-bell (Fá) no \"lixo\"; arrival no salto; blip quando a recuperação liga; jolt no logo; pale-light como cama na abertura e no fecho.\n\n**Notas de orquestra em Lá♭:** harpa em arpejo quando a tela acende e quando a ficha volta; glockenspiel nos widgets, selos, mensagens e no botão; glockenspiel descendo enquanto as fichas apagam; marimba nos balões, nos nichos e no clique que falha; tímpano e piano grave no \"lixo\"; piano descendo com o orçamento indo a zero; acorde de piano e sinos no logo; cordas que crescem no fecho. Reverb de sala só nessas notas.\n\n## Sound design e mix\n\n | \n\n | Faixa\n | Nível\n\n | Voz\n | −16 LUFS, passa-altas em 70 Hz\n\n | Música\n | 15 dB abaixo da voz na fala, 9 dB nos respiros, 8 dB na abertura e 5 dB no fecho\n\n | Efeitos e tonais\n | barramento com corte de 3 dB em 3,2 kHz e compressão de até 4 dB pela voz; grave do golpe do \"lixo\" 3 dB mais baixo abaixo de 120 Hz\n\n | Final\n | −14 LUFS e limitador; medido: −14,1 LUFS e pico de −0,9 dBFS\n\nCada evento tem um som da biblioteca nivelada, com o pico no instante do evento: pop quando algo entra, clique no toque, whoosh curto na volta e no empurrão, whoosh longo no chicote, notificação nas mensagens, papel nas cédulas, caneta na linha do tempo, tique-taque de relógio no \"hoje\", contador no orçamento, rolagem no site.\n\n## O que é \"humano\" neste vídeo\n\n- A câmera atrasa, inclina e assenta sozinha; nos respiros ela quase para, mas nunca fica morta.\n\n- Tudo que chega estala e assenta; os cartões flutuam 2 a 4 px enquanto esperam.\n\n- O ponto age como um dedo: vai até o elemento, afunda, e a interface responde com uma onda.\n\n- A tampa fecha com peso e a câmera treme no \"lixo\"; as cédulas caem acelerando.\n\n- O som acompanha a perda: enquanto as fichas apagam, o glockenspiel desce."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"titulo": "A montagem em HTML",
|
|
51
|
+
"texto": "| \n\n | Arquivo\n | O que faz\n\n | `comp/index.html`\n | `PAL` guarda cada palavra da fala com o tempo; a tabela `T` guarda o instante de cada batida, com a palavra que a dispara em comentário; cada elemento é uma função do tempo (`cel1`, `balao`, `cedula`, `lixeira`, `ficha`, `nicho`, `seloDemo`, `ponto`…); `KEYS` são os 30 alvos da câmera; `carry()` leva um objeto de uma cena à outra pela tela, para ele não ficar para trás no chicote. A página entrega ao motor `__meta`, `__ready`, `__seek`, `__track`, `__motion` e `__events`\n\n | `motor/take.js`\n | biblioteca `window.TK`: curvas, mola, entradas de palavra (`wordRise`), carries (`morphRect`, `hop`), contato (`impact`, `click`, `anelClique`, `shake`) e câmera (`operador`, `alvos`, `flutuar`, `lattice`)\n\n | `motor/render_take.py`\n | renderiza a página: `--stills 2,11.6,18.6 --out folha.png` monta uma folha de quadros; `--previa` gera uma prévia rápida sem desfoque; `--fps 60 --de 0 --ate 22.1 --retomar` renderiza um trecho e aproveita os quadros prontos se o render cair\n\n | `motor/oraculo_take.py`\n | mede continuidade por fronteira, enquadramento, velocidade, respiros, saltos e loudness; `--video` confere o MP4 pronto e `--eventos audio/eventos.json` exporta os eventos para a trilha\n\n | `scripts/render-final.sh`\n | o render final da v2 em dois trechos (0 a 22,1 s e 22,1 s até o fim), com espera de memória livre, junção sem recomprimir e o mix por cima\n\n | `audio/palavras.py`\n | tempos de palavra da voz com o faster-whisper (large-v3-turbo) → `palavras.json`\n\n | `audio/trilha_eventos.py`\n | lê `eventos.json` e põe um som por tipo de evento; monta a música abafada até o \"lixo\" e cheia a partir do drop, nivela pela voz, passa efeitos e tonais por um barramento com corte em 3,2 kHz e compressão pela voz, e grava `mix.wav` e as faixas separadas em `escuta/`\n\n | `audio/lib/orquestra.py`\n | gerador das notas de orquestra: toca notas e acordes com a VSCO 2 Community Edition e o Salamander Grand Piano, pelo sfizz\n\n- **Junte as pastas:** copie `audio/` para dentro de `projeto/`. O `render-final.sh` procura `audio/mix.wav`.\n\n- **Aponte o motor:** em `comp/index.html`, troque `../../../biblioteca/take-unico/take.js` por `../motor/take.js`; no `scripts/render-final.sh`, troque `../../biblioteca/take-unico/render_take.py` por `motor/render_take.py`.\n\n- **Instale:** Python com numpy, Pillow e Playwright (`pip install playwright` e `playwright install chromium`) e o ffmpeg. Para o som, soundfile, librosa, pyloudnorm e scipy; para os tempos de palavra, faster-whisper.\n\n- **Ver no navegador:** abra `comp/index.html?play` no Chrome para tocar em tempo real, ou `comp/index.html?t=17.6&hud` para parar num instante com o tempo e o zoom da câmera no canto.\n\n- **Conferir antes do render:** `python motor/render_take.py comp/index.html --stills 2,11.6,17.6,18.6,26.2,38 --cols 6 --out revisao/stills.png` e `python motor/oraculo_take.py comp/index.html`.\n\n- **Som:** nas primeiras linhas de `audio/trilha_eventos.py`, aponte `N` para `audio/sfx/nivelados/`, `TON` para a sua pasta de tonais e `STEM` para o instrumental da sua música. Os tonais são achados pelo nome e pela nota num catálogo `tonais.json` (`som`, `nota`, `arquivo`, `lufs`, `sync_s`); sem ele, troque a função `fs()` pelos caminhos diretos. Qualquer resposta de impulso de sala serve no lugar de `_ir_hall_4s.wav`. Depois, `python audio/trilha_eventos.py`.\n\n- **Vídeo:** `bash scripts/render-final.sh` gera `render/clinica-take-unico-v2.mp4`. A função `espera` usa o PowerShell para ler a memória livre do Windows; em outro sistema, apague as chamadas a ela. Depois, `python motor/oraculo_take.py comp/index.html --video render/clinica-take-unico-v2.mp4`.\n\n**Pegadinhas:** o `--audio` do `render_take.py` cortava o vídeo no fim da voz, então renderize sem som e junte o mix depois, como o `render-final.sh` faz. A tela que entra num empurrão precisa vir depois no HTML, senão a antiga desliza por cima. Não abra os PNGs de um trecho enquanto o `render_take.py` renumera os quadros: ele falha com `PermissionError`. Os arquivos de `motor/` são a versão atual da biblioteca, atualizada depois deste render (ela ganhou o `carryTela`, tirado do `carry()` deste projeto); o render da v2 não foi refeito com esta cópia."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"titulo": "As decisões de direção",
|
|
55
|
+
"texto": "- **Um plano só, sem corte.** Em toda troca de assunto, algo da tela sobrevive e vira a cena seguinte: o ponto vira o celular, as clientes viram a lista da linha do tempo, as fichas viram cédulas, a faixa do site vira o selo e o selo vira o logo. A coluna \"o que passa para a próxima\" da folha de batidas não tem fronteira vazia.\n\n- **O ponto de luz conduz o olho.** Ele nasce, toca o WhatsApp, tenta ligar o card que não liga, vira o \"hoje\" que desce pelos meses, fecha a tampa no \"lixo\", salta no drop, liga a recuperação, desenha o laço e aperta o botão.\n\n- **Câmera de operador.** São 30 alvos perseguidos por molas, com atraso e assentamento; tremor em 10 pousos (o maior no \"lixo\"); e uma mão que nunca para, mais baixa nos 6 respiros.\n\n- **Dois chicotes.** Um desce para a linha do tempo no \"Se você não faz\" e o outro, no drop, leva o ponto da lixeira até o segundo celular. Os objetos carregados são interpolados na tela, para o quadro não esvaziar durante a viagem.\n\n- **Mais rápido sem regravar.** A mesma voz aprovada a 1,20× tirou 8,4 s do Reel, e cada batida foi presa à palavra que a dispara, lida no faster-whisper.\n\n- **O dinheiro cai de verdade:** cédulas reais de R$ 100 e R$ 50 caem numa lixeira de inox, a câmera se aproxima até 1,38× e a tampa fecha com quique no \"lixo\", onde a música corta seco.\n\n- **O site aparece sem zoom.** Na v2, o mergulho de 2× na tela saiu: o celular vem ao centro por mola, o site da clínica rola devagar dentro dele e a faixa de demonstração cresce para fora até virar um selo legível.\n\n- **O som sai dos eventos.** A composição exporta 102 eventos; cada tipo tem o seu som, e as notas de orquestra seguem o tom da música: harpa quando a tela acende, glockenspiel descendo enquanto as fichas apagam, marimba nos balões e nos nichos.\n\n- **Música bem abaixo da voz:** cerca de 15 dB na fala e 9 dB nos respiros; abafada até o \"lixo\" e cheia a partir do \"Vou te mostrar\".\n\n- **Conferência em três camadas:** folhas de quadros nas fronteiras, o oráculo no HTML e no MP4 e uma IA que assistiu com áudio antes da entrega.\n\nDetalhes de cores, curvas, câmera e som: estilo.md. Fala e cenas por tempo: roteiro.md. Para fazer um vídeo no mesmo método: PROMPT.md."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"titulo": "As versões até o final",
|
|
59
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | rascunhos v1 e v2 (30 qps)\n | carry dos balões e salto do ponto interpolados na tela; cédulas caindo antes da tampa fechar; respiros com a mão do operador mais baixa; site rolando e assentando\n\n | v1 (60 qps)\n | lixeira que afunda e some no salto; legenda em Cormorant 600 de 72 px, uma frase por linha; véu mais forte; empurrão lento em 30–32 s; zoom de 1,2× no laço do WhatsApp; fecho centrado; oráculo com continuidade 0,93\n\n | **v2**\n | aprovada: câmera mais perto da lixeira (1,25× e 1,38×), sombra leve na legenda e, no \"Aqui eu tô mostrando\", o celular no centro sem mergulho, com o site rolando dentro dele e a faixa virando selo e depois logo; oráculo com continuidade 0,89, respiros de 34% e −14,1 LUFS"
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"pacote": [
|
|
63
|
+
{
|
|
64
|
+
"pasta": "projeto/",
|
|
65
|
+
"conteudo": "`comp/index.html` (o Reel inteiro, com o conceito e a folha de batidas no cabeçalho), `comp/assets/` (14 imagens: lixeira em duas peças, cédulas de R$ 100 e R$ 50, persiana, arco, borda pontilhada, balão fantasma, ícones do WhatsApp e da agenda, foto do anúncio, captura do site da clínica com a faixa de demonstração e o logo da agência), `comp/fonts/` (Cormorant Garamond, Inter e Material Icons em TTF), `motor/` (`take.js`, `render_take.py`, `oraculo_take.py` e o README do motor) e `scripts/render-final.sh`"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"pasta": "audio/",
|
|
69
|
+
"conteudo": "`voz-120.wav`, `palavras.py` e `palavras.json` (o tempo de cada palavra), `eventos.json` (os 102 eventos), `trilha_eventos.py`, o mix final (`mix.wav`), `notas/` (61 notas de orquestra em Lá♭), `sfx/nivelados/` (os 33 efeitos usados) e `lib/orquestra.py`"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"pasta": "referencias/",
|
|
73
|
+
"conteudo": "`tutorial-take-unico.md` (o método), `estudo-onetake.md` (o repositório que deu origem ao motor), `mapa-de-sons-tonais.md`, `folhas/` (folhas de contato da v2 e do Reel original), `links.md` e `fora-do-pacote.md`"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"pasta": "render.mp4",
|
|
77
|
+
"conteudo": "o Reel final (v2)"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"pasta": "comp/index.html",
|
|
81
|
+
"conteudo": "`PAL` guarda cada palavra da fala com o tempo; a tabela `T` guarda o instante de cada batida, com a palavra que a dispara em comentário; cada elemento é uma função do tempo (`cel1`, `balao`, `cedula`, `lixeira`, `ficha`, `nicho`, `seloDemo`, `ponto`…); `KEYS` são os 30 alvos da câmera; `carry()` leva um objeto de uma cena à outra pela tela, para ele não ficar para trás no chicote. A página entrega ao motor `__meta`, `__ready`, `__seek`, `__track`, `__motion` e `__events`"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"pasta": "motor/take.js",
|
|
85
|
+
"conteudo": "biblioteca `window.TK`: curvas, mola, entradas de palavra (`wordRise`), carries (`morphRect`, `hop`), contato (`impact`, `click`, `anelClique`, `shake`) e câmera (`operador`, `alvos`, `flutuar`, `lattice`)"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"pasta": "motor/render_take.py",
|
|
89
|
+
"conteudo": "renderiza a página: `--stills 2,11.6,18.6 --out folha.png` monta uma folha de quadros; `--previa` gera uma prévia rápida sem desfoque; `--fps 60 --de 0 --ate 22.1 --retomar` renderiza um trecho e aproveita os quadros prontos se o render cair"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"pasta": "motor/oraculo_take.py",
|
|
93
|
+
"conteudo": "mede continuidade por fronteira, enquadramento, velocidade, respiros, saltos e loudness; `--video` confere o MP4 pronto e `--eventos audio/eventos.json` exporta os eventos para a trilha"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"pasta": "scripts/render-final.sh",
|
|
97
|
+
"conteudo": "o render final da v2 em dois trechos (0 a 22,1 s e 22,1 s até o fim), com espera de memória livre, junção sem recomprimir e o mix por cima"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"pasta": "audio/palavras.py",
|
|
101
|
+
"conteudo": "tempos de palavra da voz com o faster-whisper (large-v3-turbo) → `palavras.json`"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"pasta": "audio/trilha_eventos.py",
|
|
105
|
+
"conteudo": "lê `eventos.json` e põe um som por tipo de evento; monta a música abafada até o \"lixo\" e cheia a partir do drop, nivela pela voz, passa efeitos e tonais por um barramento com corte em 3,2 kHz e compressão pela voz, e grava `mix.wav` e as faixas separadas em `escuta/`"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"pasta": "audio/lib/orquestra.py",
|
|
109
|
+
"conteudo": "gerador das notas de orquestra: toca notas e acordes com a VSCO 2 Community Edition e o Salamander Grand Piano, pelo sfizz"
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
"prompt": "Quero um Reel narrado vertical no mesmo método do projeto \"A clínica num take só\", que está em 07-videos/projetos/clinica-take-unico/, com o meu assunto.\n\nAssunto: {{ASSUNTO}}\nPúblico (quem precisa se reconhecer no vídeo): {{PUBLICO}}\nA dor que o vídeo mostra: {{DOR}}\nElemento vivo que conduz o vídeo (ponto de luz, cursor, carimbo, gota...): {{ELEMENTO_VIVO}}\nNarração: {{NARRACAO}} (áudio pronto, texto para a minha voz na ElevenLabs ou \"escreva a estrutura que eu falo\")\nMúsica: {{MUSICA}}\nChamada final: {{CHAMADA}}\nDuração aproximada: {{DURACAO}} (a referência tem 44,2 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, roteiro.md e referencias/tutorial-take-unico.md. Depois abra projeto/comp/index.html e veja a folha de batidas do cabeçalho, PAL, a tabela T, as funções de cada elemento, o ponto de luz (pontoR e pontoXY), carry(), os alvos da câmera em KEYS, HITS e RESP, e o contrato __meta, __ready, __seek, __track, __motion e __events. Leia também projeto/motor/README.md e audio/trilha_eventos.py. Me explique em poucas linhas o que você vai reaproveitar.\n\n2. A fala é minha. Se eu não mandar o texto pronto, faça só a estrutura em roteiro.md, em duas partes: o gancho (pergunta que o público responde \"sim\", a dor e a frase de impacto) e a proposta (o processo funcionando, para quem mais serve e a chamada). Espere eu escrever. Guarde o meu texto sem mudar e faça ao lado a versão para a voz, só com a grafia de pronúncia. Não prometa resultado nem número que eu não comprovei: se for demonstração, a tela diz que é demonstração.\n\n3. Voz primeiro. Gere a narração (ou use a que eu mandar), acelere se eu pedir (a referência usa atempo=1.2), tire o tempo de cada palavra com o faster-whisper (audio/palavras.py) e confira a primeira palavra de cada frase contra o silêncio. Não anime nada antes de eu aprovar o áudio.\n\n4. Tire a identidade do mundo do meu público, como esta tirou do mundo da dona de clínica premium: cores em variáveis CSS, fontes do assunto em comp/fonts/, assets reais em comp/assets/ (interface real dos apps citados, ícones oficiais, cédula real, print do site). Me mostre os tokens antes de animar.\n\n5. Escreva a folha de batidas antes de codar, no molde do cabeçalho do index.html: tempo, batida, câmera e a coluna \"o que passa para a próxima\". Fronteira sem nada nessa coluna é slide: refaça. Cada batida presa à palavra que a dispara. Planeje o mundo em coordenadas, com a próxima cena na direção em que a câmera já está indo, um ou dois chicotes nos pontos fortes da fala e pelo menos 25% de quadros de respiro. Me mostre e espere meu ok.\n\n6. Construa copiando o projeto, sem editar o original: troque textos, cores, fontes, telas, assets, PAL, T e KEYS. Mantenha tudo como função do tempo (sem transição CSS, timer nem estado acumulado), o elemento vivo que toca e faz a interface responder, as entradas que estalam e voltam para dentro da tela, o carry interpolado na tela durante o chicote, a câmera que nunca para (deriva mínima nos respiros, tremor nos pousos), a legenda palavra por palavra com a palavra-chave em itálico e o selo de demonstração quando houver.\n\n7. Confira antes de renderizar: folhas de quadros nas fronteiras (render_take.py --stills) e o oráculo (oraculo_take.py) com continuidade de pelo menos 0,7 e o enquadramento ok. Corrija o que ele apontar e me mostre a folha.\n\n8. Som em paralelo, num subagente: exporte os eventos (oraculo_take.py --eventos audio/eventos.json), um som por tipo de evento com o pico no instante dele, tonais no tom da música, notas de orquestra no tom (harpa quando algo acende, glockenspiel descendo quando algo se perde, marimba nos balões), a música abafada até a frase de impacto e cheia no drop, cerca de 15 dB abaixo da voz na fala, e o final a −14 LUFS. Os efeitos de audio/sfx/nivelados/ vêm no pacote; os tonais e a música, use os seus.\n\n9. Render: prévia rápida (--previa) para ver tempo e som, uma IA que assista com áudio e diga onde o movimento para morto, embola ou salta, e o final a 60 qps sem --audio, juntando o mix depois. Confira o MP4 com oraculo_take.py --video e me entregue o vídeo, o HTML editável, a ficha atualizada e uma anotação do que mudou em relação à referência.",
|
|
113
|
+
"campos": [
|
|
114
|
+
"ASSUNTO",
|
|
115
|
+
"CHAMADA",
|
|
116
|
+
"DOR",
|
|
117
|
+
"DURACAO",
|
|
118
|
+
"ELEMENTO_VIVO",
|
|
119
|
+
"MUSICA",
|
|
120
|
+
"NARRACAO",
|
|
121
|
+
"PUBLICO"
|
|
122
|
+
],
|
|
123
|
+
"fonte": {
|
|
124
|
+
"nome": "Clube do Motion",
|
|
125
|
+
"url": "https://clubedomotion.com/projeto/?id=clinica-take-unico",
|
|
126
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-clinica",
|
|
3
|
+
"titulo": "As clientes que sumiram",
|
|
4
|
+
"categoria": "produto",
|
|
5
|
+
"resumo": "reel narrado de 52,6 s para dona de clínica de estética, sobre a cliente que passou pela clínica e ninguém chamou de volta (\"você tá jogando dinheiro no lixo\"). Mostra o sistema de recuperação funcionando numa clínica fictícia de demonstração, a Lumière, em interface de celular no estilo Apple e animação SaaS. Montado no After Effects a partir de scripts em Python. Versão final: v2, aprovada.",
|
|
6
|
+
"indicado": "negócio local que vende um serviço ou sistema e quer mostrá-lo funcionando; clínicas, salões e consultórios.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"Apple light",
|
|
9
|
+
"telas de celular",
|
|
10
|
+
"animação SaaS",
|
|
11
|
+
"paleta do nicho",
|
|
12
|
+
"trilha tonal"
|
|
13
|
+
],
|
|
14
|
+
"ficha": {
|
|
15
|
+
"formato": "1080×1920, 30 qps, 9:16, cor BT.709",
|
|
16
|
+
"duracao": "52,6 s (1 s de abertura antes da voz)",
|
|
17
|
+
"motor": "ae",
|
|
18
|
+
"voz": "voz clonada na ElevenLabs (Eleven v4), uma frase por arquivo",
|
|
19
|
+
"musica": "ver o guia de estilo",
|
|
20
|
+
"fontes": "ver o guia de estilo"
|
|
21
|
+
},
|
|
22
|
+
"ferramentas": [
|
|
23
|
+
"Claude Code",
|
|
24
|
+
"After Effects",
|
|
25
|
+
"ElevenLabs"
|
|
26
|
+
],
|
|
27
|
+
"ficha_tecnica": {
|
|
28
|
+
"Duração": "52,6 s (1 s de abertura antes da voz)",
|
|
29
|
+
"Formato": "1080×1920, 30 qps, 9:16, cor BT.709",
|
|
30
|
+
"Voz": "voz clonada na ElevenLabs (Eleven v4), uma frase por arquivo",
|
|
31
|
+
"Ferramenta": "After Effects, com o projeto gerado por scripts em Python",
|
|
32
|
+
"Público": "dona ou dono de clínica de estética",
|
|
33
|
+
"Chamada final": "\"Manda CLÍNICA no direct\""
|
|
34
|
+
},
|
|
35
|
+
"etapas": [
|
|
36
|
+
{
|
|
37
|
+
"titulo": "O roteiro e a voz",
|
|
38
|
+
"texto": "**Resumo:** a fala do reel exatamente como foi enviada à voz clonada (5 frases, em duas partes), o que mudou em relação ao texto original e as cenas por tempo. Gancho: \"Se você tem uma clínica de estética, provavelmente você já usa alguma plataforma de atendimento ao cliente, certo?\".\n\n## Como a fala foi feita\n\n- **Parte 1, o gancho:** texto do autor com acentos e um \"não\" que faltava (\"não faz recuperação e **não** mantém ele na base\"; sem ele, a frase dizia que manter na base era o erro).\n\n- **Parte 2, a proposta:** o texto original falava de um cliente real que tinha duplicado o lucro e de um \"case de sucesso\". Como ainda não havia esse resultado, a estrutura foi mantida e só essas afirmações foram trocadas: o vídeo mostra o sistema numa clínica de demonstração e não promete número.\n\n- **Voz:** ElevenLabs, Eleven v4, uma frase por arquivo (estabilidade 0,52, similaridade 0,73, velocidade 1,05); pontas sem silêncio, 0,35 s entre frases, 0,6 s entre as partes, −16 LUFS.\n\n- **Pronúncia:** \"follow-up\" foi testado em duas grafias; ficou \"fólou âp\".\n\n## A fala, verbatim (texto enviado à voz)\n\n**Parte 1 — gancho**\n\n- Se você tem uma clínica de estética, provavelmente você já usa alguma plataforma de atendimento ao cliente, certo?\n\n- Mas você tem algum processo automatizado para recuperação e fólou âp de cliente que já passou por aí?\n\n- Se você não faz recuperação de cliente e não mantém ele na sua base mandando mensagens periodicamente, você tá jogando dinheiro no lixo.\n\n**Parte 2 — proposta**\n\n- Vou te mostrar nesse vídeo, de forma bem resumida, um processo muito simples que a gente automatiza pra clínica não perder mais os clientes que ela já tem na base de dados. Sem colocar mais nenhum real em tráfego pago, tudo orgânico.\n\n- E isso não serve apenas para clínica de estética, tá? Essa solução serve para qualquer nicho, de qualquer negócio. Aqui eu tô mostrando ela funcionando numa clínica de demonstração que a gente montou. E você também pode ter isso, pra não ficar pra trás.\n\n## Cenas por tempo\n\nTempos da narração. No vídeo final, some 1 s: a abertura tem 1 s antes da voz, em que o ponto de luz nasce, abre uma onda com o golpe tonal e cai para dentro do celular que sobe.\n\n## Gancho (0 a 21 s)\n\n | \n\n | Tempo (s)\n | Fala\n | Tela\n\n | 0–2,3\n | \"Se você tem uma clínica de estética,\"\n | o celular sobe de baixo; a tela acende na palavra \"estética\", com brilho varrendo; a agenda do dia entra\n\n | 2,4–6,5\n | \"…plataforma de atendimento ao cliente, certo?\"\n | WhatsApp, agenda e notificações saltam da tela; o ponto toca a conversa, o cartão pula e a resposta chega; selos verdes no \"certo?\"\n\n | 6,5–9,0\n | \"Mas você tem algum processo automatizado…\"\n | os widgets voltam para a tela; empurrão para a base de clientes; o card pontilhado \"Recuperação automática · não configurada\" balança quando o ponto tenta ligar\n\n | 9,1–12,4\n | \"…recuperação e follow-up de cliente que já passou por aí?\"\n | seis clientes saem das linhas da lista e estalam em volta do celular, com \"há N meses\"\n\n | 12,6–17,6\n | \"Se você não faz recuperação… mandando mensagens periodicamente,\"\n | o celular sai; as clientes viram uma lista ao lado da linha do tempo; o \"hoje\" desce pelos meses e cada ficha apaga; uma sai da base; balões pontilhados vazios (as mensagens que ninguém mandou)\n\n | 17,6–21,0\n | \"você tá jogando dinheiro no lixo.\"\n | as fichas viram cédulas reais; a lixeira sobe, a tampa abre, as cédulas caem, a tampa fecha com quique; o ponto termina no fim de \"lixo.\"\n\n## Proposta (21 a 51,6 s)\n\n | \n\n | Tempo (s)\n | Fala\n | Tela\n\n | 20,98–23,8\n | \"Vou te mostrar… de forma bem resumida,\"\n | a lixeira desce, o ponto cai do fim de \"lixo.\" e abre uma onda; dela nasce o celular com a tela \"Recuperação\" da clínica de demonstração (aviso no cabeçalho)\n\n | 23,9–26,4\n | \"um processo muito simples que a gente automatiza\"\n | o celular vai para a esquerda; o ponto toca o botão e a recuperação automática liga (cinza → sálvia, \"ativa · 5 clientes na fila\")\n\n | 26,4–30,8\n | \"…pra clínica não perder mais os clientes que ela já tem na base de dados,\"\n | o laço: a ficha cinza da Camila sai da lista → o ponto desce até o WhatsApp (mensagem automática; ela responde \"Quero sim! Sexta à tarde dá?\"; \"Sexta, às 15h. Tá marcado!\") → desce até a agenda (o horário de sexta enche de sálvia) → volta pela direita e acende a ficha (\"voltou\"); as outras acendem na lista\n\n | 30,8–34,4\n | \"sem colocar mais nenhum real em tráfego pago, tudo orgânico.\"\n | os cards voltam para o celular; entra um anúncio \"Patrocinado\" da clínica; o orçamento rola de R$ 30 para R$ 0 por dia e o anúncio fica \"pausado\"; no \"orgânico\", as cinco clientes voltam em volta do celular com selo verde\n\n | 34,7–41,0\n | \"E isso não serve apenas para clínica de estética… qualquer nicho, qualquer negócio.\"\n | o celular volta ao centro e encolhe; seis nichos estalam em volta (barbearia, academia, pet shop, restaurante, imobiliária, odontologia)\n\n | 41,8–45,6\n | \"Aqui eu tô mostrando ela funcionando numa clínica de demonstração que a gente montou.\"\n | os nichos voltam para o celular; o app empurra para o site da clínica de demonstração, com a faixa \"Demonstração criada pela TDA Digital · clínica fictícia\" fixa no topo, rolando devagar\n\n | 46,2–51,6\n | \"E você também pode ter isso, pra não ficar pra trás.\"\n | o celular desce para a direita inclinado 9°; logo da agência e botão lime \"Manda CLÍNICA no direct\"; o ponto aperta o botão\n\nOs tempos de cada palavra estão em `audio/words.json`. Os nomes das clientes e da clínica são fictícios."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"titulo": "A identidade visual",
|
|
42
|
+
"texto": "**Resumo:** identidade tirada do mundo da dona de clínica premium (creme, argila, sálvia, luz de janela, serifa fina), com a interface do celular animada no estilo Apple e SaaS. Elemento vivo: um ponto de luz que toca, acende e abre ondas. Música pop instrumental com efeitos tonais no tom e a música ~15 dB abaixo da voz. Números tirados de `base.py`, dos geradores e da ficha da v2.\n\n## Fontes\n\n | \n\n | Uso\n | Fonte\n | Onde baixar\n\n | Legenda e títulos de cena\n | Cormorant Garamond 500\n | Google Fonts\n\n | Palavra-chave da legenda\n | Cormorant Garamond 500 itálico, em argila escura\n | Google Fonts\n\n | Logo da clínica\n | Cormorant Garamond 600\n | Google Fonts\n\n | Interface (lista, fichas, agenda, WhatsApp)\n | Inter 400, 500, 600 e 700\n | Google Fonts\n\n | Ícones da interface\n | Material Icons\n | Google Fonts\n\n## Cores\n\n | \n\n | Token\n | Hex\n | Uso\n\n | Creme\n | `#F7F2EC`\n | fundo\n\n | Areia\n | `#EFE6DB` / `#E7DAC9`\n | superfícies\n\n | Cartão\n | `#FFFDFA`\n | cartões, branco quente\n\n | Tinta\n | `#2A211D`\n | texto\n\n | Tinta 2\n | `#6D615A`\n | texto secundário\n\n | **Argila**\n | **`#B77B62`**\n | destaque e ponto de luz\n\n | Argila escura\n | `#8F5A45`\n | palavra-chave em itálico\n\n | Sálvia\n | `#A3AD96` / `#5F6B53`\n | agendou, voltou, ativo\n\n | Luz\n | `#FFE8C8`\n | brilho, halo, varredura\n\n | Pedra\n | `#BDB5AD`\n | ficha apagada\n\n | WhatsApp\n | `#25D366`, fundo `#EFEAE2`, balão enviado `#D9FDD3`, tique `#53BDEB`\n | as cores reais do app\n\n | Fecho da agência\n | preto `#0A0A0A` + lime `#A3E635`\n | só no logo e no botão final\n\n## Componentes\n\n- **Celular** com a interface recriada em camadas (lista de clientes, ficha, WhatsApp, agenda da semana, anúncio \"Patrocinado\", orçamento diário).\n\n- **Ficha da cliente** com avatar de iniciais em argila, nome, último procedimento, última visita e preço, nos estados **acesa** e **apagada** (pedra).\n\n- **Card pontilhado** \"Recuperação automática · não configurada\": o processo que não existe, com borda tracejada. Liga no clique (cinza → sálvia, \"ativa · 5 clientes na fila\").\n\n- **Balões fantasmas** do WhatsApp, só o contorno tracejado: as mensagens que ninguém mandou.\n\n- **Linha do tempo** com o \"hoje\" descendo pelos meses e as fichas apagando.\n\n- **Cédulas reais** de R$ 100 e R$ 50 e a **lixeira de pedal de inox** (corpo e tampa separados).\n\n- **Selos verdes** que estalam, **widgets de vidro** que nascem da tela.\n\n- **Aura atrás do celular:** três elipses de 640 px (argila a 34%, sálvia a 40%, luz a 85%) com desfoque 150, orbitando devagar (raio de 120 × 95 px, 0,55 rad/s).\n\n- **Luz de janela e sombra de persiana** na comp final: uma elipse de 1500 × 1300 px na cor luz a 75%, com desfoque 190, flutuando devagar no canto de cima; e a sombra da persiana a 4–8% de opacidade, deslizando 220 px na horizontal ao longo do vídeo.\n\n- **Seis nichos** que estalam em volta do celular: barbearia, academia, pet shop, restaurante, imobiliária, odontologia.\n\n## Elemento vivo: o ponto de luz\n\nNúcleo de 30 px em argila, anel de 44 px branco a 92% e halo de 112 px na cor luz a 85%, com desfoque 18. Ele nasce na abertura, abre uma onda com um golpe tonal e cai para dentro do celular que sobe. Depois toca botões, liga a recuperação, desce pelo laço (ficha → WhatsApp → agenda → ficha acesa) e aperta o botão final.\n\n## Transições\n\n- Troca de tela pelo **empurrão do iOS**.\n\n- Elementos **nascem da tela do celular e voltam para ela**.\n\n- Clientes e nichos **estalam em volta do celular**, como balões de destino.\n\n- O ponto cai e **abre uma onda**; dela nasce a cena seguinte (lixeira → celular).\n\n- O app empurra para o **site real** da clínica de demonstração, que rola devagar.\n\n## Curvas e molas\n\nCada keyframe diz a curva até o próximo (curvas por segmento, aplicadas por expressão).\n\n | \n\n | Nome\n | Bezier\n | Uso\n\n | fast\n | (.10, 0, 0, 1)\n | arranque rápido do celular (o \"fast start\" da Apple)\n\n | tres\n | (.72, 0, .17, 1)\n | movimentos de destaque\n\n | moj\n | (.86, 0, .07, 1)\n | câmera e trocas (animação SaaS)\n\n | suave\n | (.45, 0, .12, 1)\n | ponto de luz, entradas suaves\n\n | sai\n | (.16, 1, .3, 1)\n | saídas e desfoque da legenda\n\n | entra\n | (.33, 0, .67, 1)\n | entradas lineares suaves\n\n | pop\n | (.34, 1.56, .64, 1)\n | estalo com passada\n\n | io\n | (.65, 0, .35, 1)\n | ida e volta\n\n | cai\n | (.55, 0, .95, .5)\n | queda (cédulas, lixeira)\n\n**Molas** (oscilação amortecida `1 − e^(−d·x)·cos(2π·f·x)`, com o resto da distância fechado no fim do segmento):\n\n | \n\n | Nome\n | Frequência (f)\n | Amortecimento (d)\n\n | mola\n | 2,6\n | 10\n\n | molaleve\n | 1,9\n | 7,5\n\n | molaforte\n | 2,2\n | 6\n\nMotion blur ligado na comp das cenas.\n\n## Legenda\n\n- Cormorant Garamond 500 em tinta, palavra-chave em 500 itálico na argila escura; 88 a 96 px, perto do topo (y ≈ 300), entrelinha 1,06.\n\n- **Cada palavra** entra na sua palavra falada: sobe 46 px com a `molaleve`, opacidade 0 → 100 em 0,12 s e desfoque 10 → 0 em 0,28 s.\n\n- **Saída:** sobe 34 px em 0,4 s com a curva `sai` e some em 0,28 s.\n\n- Duas ou três palavras por linha, uma ideia por bloco.\n\n## Trilha\n\n | \n\n | Item\n | Valor\n\n | Música\n | \"Kiss Me More\" (Doja Cat feat. SZA), só o instrumental (demucs)\n\n | Tom e tempo\n | Lá♭ maior, afinação −1 cent, 111 BPM (medidos no instrumental)\n\n | Abertura e gancho\n | instrumental abafado: passa-baixas de 260 Hz abrindo até 2,6 kHz; corta no \"lixo\"\n\n | Virada\n | a batida cheia do refrão (24,96 s do arquivo) cai no \"Vou te mostrar\" (21,98 s do vídeo)\n\n**Tonais em Sol♯:** golpe Ping Boom na abertura, no \"lixo\" e no logo; riser Clarity (e uma oitava abaixo) com pico no \"lixo\"; drone Atlantic na abertura e no fecho; Cello Color sob a linha do tempo.\n\n**Orquestra em Lá♭ maior:** harpa quando a tela acende e quando a ficha acende; glockenspiel nos widgets, selos, mensagens e no botão; marimba nos balões e nos nichos; glockenspiel descendo enquanto as fichas apagam; tímpano, piano grave e sinos no \"lixo\"; piano descendo com o orçamento indo a zero; acorde de piano, sinos e cordas no fecho. Reverb de sala só nos tonais.\n\n## Sound design e mix\n\n | \n\n | Faixa\n | Nível\n\n | Voz\n | −16 LUFS, seca\n\n | Música\n | 15 dB abaixo da voz na fala; 8,2 dB abaixo nos respiros\n\n | Tonais\n | ~19 dB abaixo da voz\n\n | Efeitos\n | ~9 dB abaixo da voz, mais −3 dB sob a fala\n\n | Final\n | −14 LUFS; curto prazo com 1,5 dB entre p10 e p90\n\nUm efeito para cada elemento que entra, sai ou é tocado (clique, notificação, pop, whoosh na troca da lixeira para o celular), com o pico no quadro do evento.\n\n## O que é \"humano\" neste vídeo\n\n- Nada fica parado: a aura orbita atrás do celular e a sombra da persiana passa pela parede.\n\n- Tudo que chega quica e assenta; o botão afunda e o cartão pula, como num toque de verdade.\n\n- O ponto de luz age como um dedo: vai até o elemento, toca e a interface responde.\n\n- A tampa da lixeira fecha com quique e peso; as cédulas caem acelerando.\n\n- O som acompanha a perda: enquanto as fichas apagam, um glockenspiel desce."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"titulo": "A montagem no After Effects",
|
|
46
|
+
"texto": "| \n\n | Script\n | O que faz\n\n | `base.py`\n | tokens (cores, fontes, ícones), relógio da fala e as curvas por segmento, incluindo a mola\n\n | `kit_ae.py`\n | funções de comp, camada, forma, texto e efeito\n\n | `gerar_v1.py`\n | o gancho (0 a 21 s), a primeira versão\n\n | `gerar_v2.py` + `parte2_v2.py`\n | o vídeo completo: gancho e parte 2 (sistema funcionando, tráfego, nichos, site, fecho)\n\n | `preparar.py`, `preparar_formas.py`\n | imagens e formas com muitas peças, desenhadas em PNG\n\n | `folha.py`\n | folha de contato para conferir os quadros\n\n | `mix.py`, `render.ps1`, `montar.py`\n | mix, render em trechos e junção\n\n | `gerar_voz.py`, `montar.py`, `palavras.py`, `conferir.py`, `trilha_v2.py`\n | narração, tempos de palavra, conferência e trilha\n\nOs geradores escrevem `clinica-v2.json`, que uma ponte MCP do After Effects importa (`ae_project_import_json`, da `mcp-aftereffects`, de código aberto). O `.aep` já vem montado: os scripts servem para estudar e reaproveitar. Algumas linhas apontam para pastas da máquina onde o vídeo foi feito (fontes, bibliotecas de música e efeitos); ao reaproveitar, peça ao agente para trocar pelos caminhos da sua central.\n\n**Pegadinha da importação por JSON:** ela monta só uma peça de forma por grupo. Por isso os elementos com muitas peças (borda pontilhada, persiana, lixeira) foram desenhados em PNG.\n\n- **Instale as fontes** (Google Fonts, grátis): Cormorant Garamond (500, 500 itálico e 600), Inter (400, 500, 600 e 700) e Material Icons (os ícones da interface). Instale para todos os usuários e reinicie o After Effects. No Windows, se não aparecer no AE, copie para `C:\\Program Files\\Common Files\\Adobe\\Fonts`.\n\n- **Mantenha a pasta `projeto/` como veio**: o `.aep` e a pasta `assets/` ficam juntos em `projeto/ae/`. Abra no After Effects 2026 ou mais novo.\n\n- **Comps:** `CONTEUDO v2` tem as cenas no tempo da narração; `MAIN Clinica v2` soma o 1 s de abertura antes da voz. Renderize a `MAIN`.\n\n- **Arquivo faltando:** File › Dependencies › Find Missing Footage; clique com o direito › Replace Footage › File e aponte para `projeto/ae/assets`. O AE reencontra os outros da mesma pasta.\n\n- **Render:** em trechos com o `aerender`, de uma cópia em pasta sem acento, e cor etiquetada em BT.709 na junção."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"titulo": "As decisões de direção",
|
|
50
|
+
"texto": "- **Mescla de três direções.** Da primeira veio o mundo da clínica (creme, argila, sálvia, luz de janela, sombra de persiana, serifa fina). Da segunda, o ponto de luz que toca e abre ondas e as cédulas caindo como gotas. Da terceira, a linha do tempo da cliente com o \"hoje\" descendo pelos meses e as fichas apagando.\n\n- **Movimento de interface Apple e SaaS:** o celular sobe com arranque rápido; os widgets de vidro nascem da tela e voltam para ela; as clientes estalam em volta do celular; tudo quica depois de chegar; o botão afunda no clique e o cartão pula. O pedido foi \"alegre, com muito movimento, transições imperceptíveis, animações suaves e realistas\".\n\n- **A metáfora não pede explicação.** Cliente esquecida apaga; o sistema acende de novo. A dona entende sem ouvir \"CRM\" ou \"automação\".\n\n- **O dinheiro é real:** as fichas viram cédulas de R$ 100 e R$ 50, que caem numa lixeira de inox com tampa que fecha com quique, no \"lixo\".\n\n- **O sistema aparece em ação, num laço:** a ficha cinza sai da lista, o ponto desce até o WhatsApp (mensagem automática, a cliente responde, horário marcado), desce até a agenda, que enche de sálvia, e volta acendendo a ficha. Sem lista numerada de passos.\n\n- **A prova é uma demonstração, dita como demonstração:** o site da clínica fictícia rola com a faixa \"Demonstração criada pela TDA Digital · clínica fictícia\" fixa no topo.\n\n- **O gancho foi aprovado sozinho antes do resto** (laboratório de 21 s), e só depois a trilha e a parte 2.\n\n- **Trilha pop com efeitos tonais no tom:** o refrão cheio cai na virada (\"Vou te mostrar\"); antes, o instrumental entra abafado e corta no \"lixo\".\n\nDetalhes de cores, curvas e som: estilo.md. Fala e cenas por tempo: roteiro.md. Para fazer um vídeo no mesmo estilo: PROMPT.md."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"titulo": "As versões até o final",
|
|
54
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | v1\n | só o gancho (0–21 s), sem trilha, 44 efeitos; retorno: \"ficou bom, pode continuar\", com pedido de trilha cinematográfica sem atrapalhar a narração\n\n | **v2**\n | vídeo completo (52,6 s), 1 s de abertura com o ponto de luz, trilha e tonais; revisão de áudio por IA com nota 9,1/10; aprovado"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"pacote": [
|
|
58
|
+
{
|
|
59
|
+
"pasta": "projeto/",
|
|
60
|
+
"conteudo": "`clinica-v2.aep`, a pasta `assets/` (celular, lixeira em duas peças, cédulas de R$ 100 e R$ 50, persiana, arco, borda pontilhada, balão fantasma, ícones do WhatsApp e da agenda, captura do site da clínica de demonstração com a faixa, logo da agência) e os scripts geradores"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"pasta": "audio/",
|
|
64
|
+
"conteudo": "narração, trilha, faixa só de efeitos, faixa dos tonais, mix final, `audio/words.json` (tempo de cada palavra) e o mapa de efeitos"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"pasta": "referencias/",
|
|
68
|
+
"conteudo": "as referências usadas (12 telas do Mobbin, imagens e 7 vídeos de motion do Pinterest), com o que cada uma ensinou e o link"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"pasta": "render/",
|
|
72
|
+
"conteudo": "`final.mp4`"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"pasta": "base.py",
|
|
76
|
+
"conteudo": "tokens (cores, fontes, ícones), relógio da fala e as curvas por segmento, incluindo a mola"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"pasta": "kit_ae.py",
|
|
80
|
+
"conteudo": "funções de comp, camada, forma, texto e efeito"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"pasta": "gerar_v1.py",
|
|
84
|
+
"conteudo": "o gancho (0 a 21 s), a primeira versão"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"pasta": "folha.py",
|
|
88
|
+
"conteudo": "folha de contato para conferir os quadros"
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"prompt": "Quero fazer um reel narrado curto no mesmo estilo do projeto \"As clientes que sumiram\", que está em 07-videos/projetos/clinica/, com o meu assunto.\n\nAssunto: {{ASSUNTO}}\nPúblico (quem precisa se reconhecer no vídeo): {{PUBLICO}}\nA dor que o vídeo mostra: {{DOR}}\nChamada final: {{CHAMADA}}\nDuração aproximada: {{DURACAO}} (a referência tem 52,6 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/clinica/LEIA-ME.md, estilo.md e roteiro.md. Depois abra os scripts geradores em projeto/ (base.py, kit_ae.py, gerar_v2.py, parte2_v2.py) e o de trilha (trilha_v2.py) e me explique em poucas linhas como as curvas por segmento, a legenda e o ponto de luz foram feitos e o que você vai reaproveitar.\n\n2. Siga o passo a passo de 9 etapas 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 clinica: copie o que for reaproveitar.\n\n3. Use as skills instaladas: video-referencias (referências no Mobbin e no Pinterest, assets reais), motion-narrado (nada aparece antes de ser dito), motion-app-ae (interface no After Effects), animacao-saas (empurrão de tela, botão que afunda, câmera), conteudo-voz (o meu jeito de falar) e better-portuguese (todo texto da tela e da legenda).\n\n4. O roteiro: a fala é minha. Faça só a estrutura em roteiro.md, nas duas partes da referência: o gancho (pergunta que o público responde \"sim\" + a dor + a frase de impacto) e a proposta (o processo funcionando + que serve para outros negócios + a chamada). Para cada trecho, diga o que precisa ser dito e o que aparece na tela, e me dê 3 opções de gancho. Espere eu escrever a fala. Guarde o meu texto sem mudar e faça ao lado a versão para a voz, só com a grafia de pronúncia. Não prometa resultado nem número que eu não comprovei: se for demonstração, a tela diz que é demonstração.\n\n5. Narração: uma frase por arquivo, conferida no faster-whisper, e o words.json. Faça primeiro só o gancho (até a frase de impacto) como laboratório, me mostre e espere o meu ok. Depois a parte 2. Não anime nada antes de eu aprovar o áudio.\n\n6. Identidade: tire do mundo do meu público, como esta tirou do mundo da dona de clínica premium (cores, material, fonte, luz). Ache a metáfora visual da dor que não precise de explicação (aqui: a cliente esquecida apaga e o sistema acende de novo; o dinheiro cai no lixo de verdade). Registre os tokens num arquivo base, no lugar do base.py, e me mostre antes de animar.\n\n7. Reaproveite o motor, troque o conteúdo. Mantenha deste projeto: as curvas por segmento e as molas do base.py, o celular com a interface recriada em camadas, os elementos que nascem da tela e voltam para ela, o quique depois de cada chegada, o botão que afunda e o cartão que pula, um elemento vivo que toca e faz a interface responder, a legenda em serifa com a palavra-chave em itálico e a mesma entrada por palavra, o processo mostrado como um laço em ação (nunca lista numerada), a música ~15 dB abaixo da voz e o final a −14 LUFS. Troque: cores, fontes, componentes, a metáfora, as telas, os textos e a trilha (escolha uma música real, meça tom e BPM e faça os efeitos tonais no tom dela).\n\n8. Assets reais: tudo que a minha fala citar aparece com imagem real (interface real do app citado, ícone oficial, cédula real, print do site). Me peça o que você não conseguir achar.\n\n9. Construa de duas em duas cenas e me mostre folhas de contato a cada rodada. Em cada movimento, pergunte: está humano ou robotizado? Depois do render, revise quadro a quadro com o áudio, corrija e me entregue o vídeo, a legenda do post e a ficha atualizada. No fim, registre uma anotação em anotacoes/.",
|
|
92
|
+
"campos": [
|
|
93
|
+
"ASSUNTO",
|
|
94
|
+
"CHAMADA",
|
|
95
|
+
"DOR",
|
|
96
|
+
"DURACAO",
|
|
97
|
+
"PUBLICO"
|
|
98
|
+
],
|
|
99
|
+
"fonte": {
|
|
100
|
+
"nome": "Clube do Motion",
|
|
101
|
+
"url": "https://clubedomotion.com/projeto/?id=clinica",
|
|
102
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-clube-opener",
|
|
3
|
+
"titulo": "Bora começar",
|
|
4
|
+
"categoria": "elementos",
|
|
5
|
+
"resumo": "opener vertical de 34,35 s, sem narração, em que um ponto de luz vira linha, onda, bolha de vidro, estrela 3D, cartão, fila de pontos e pílulas até estourar no símbolo do Clube do Motion, com o selo \"em breve\" no fecho. É o template \"Thought in Motion Opener\", do YouMotion, adaptado no After Effects por sete scripts: textos em português, paleta verde do Clube sobre preto, a cena clara virada para o escuro e uma animação própria do símbolo no lugar do logo do template. O som é o do próprio template. Feito pelo Clube do Motion.",
|
|
6
|
+
"indicado": "marca, produto ou plataforma que quer um opener de lançamento ou de pré-lançamento com cara de motion design premium, aproveitando um template de After Effects sem refazer as centenas de camadas.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"elementos únicos",
|
|
9
|
+
"luz e brilho no preto",
|
|
10
|
+
"morfose contínua",
|
|
11
|
+
"falso 3D",
|
|
12
|
+
"tipografia fina",
|
|
13
|
+
"logo animado",
|
|
14
|
+
"verde de ação"
|
|
15
|
+
],
|
|
16
|
+
"ficha": {
|
|
17
|
+
"formato": "master em 2160×3840 e final em 1080×1920, 60 qps, 9:16",
|
|
18
|
+
"duracao": "34,35 s (2.061 quadros), sem narração, em 7 cenas",
|
|
19
|
+
"motor": "ae",
|
|
20
|
+
"voz": "ver o guia de estilo",
|
|
21
|
+
"musica": "ver o guia de estilo",
|
|
22
|
+
"fontes": "ver o guia de estilo"
|
|
23
|
+
},
|
|
24
|
+
"ferramentas": [
|
|
25
|
+
"Claude Code",
|
|
26
|
+
"After Effects"
|
|
27
|
+
],
|
|
28
|
+
"ficha_tecnica": {
|
|
29
|
+
"Duração": "34,35 s (2.061 quadros), sem narração, em 7 cenas",
|
|
30
|
+
"Formato": "master em 2160×3840 e final em 1080×1920, 60 qps, 9:16",
|
|
31
|
+
"Ferramenta": "After Effects; adaptação por 7 scripts ExtendScript (`.jsx`) sobre uma cópia do template",
|
|
32
|
+
"Template": "\"Thought in Motion Opener\" (YouMotion), projeto `Clean Gradient Opener.aep`: 66 comps, cerca de 600 camadas, nenhum plugin de terceiros",
|
|
33
|
+
"Tipografia": "Roboto Light e Thin do template; Plus Jakarta Sans 400 + 800 no nome do Clube; Cormorant Infant SemiBold itálica no selo",
|
|
34
|
+
"Som": "o do template: `Thought in motion.wav` (efeitos do autor, 34,35 s) e `Reversed Time.wav` (trilha), com limitador e normalização: −14,0 LUFS e pico de −0,8 dBFS",
|
|
35
|
+
"Render": "aerender em 9 trechos de 4 s, em modo leve (cerca de 26 min); reduzido para 1080×1920 no ffmpeg",
|
|
36
|
+
"Arquivo final": "MP4 H.264 com áudio AAC, 23,7 MB"
|
|
37
|
+
},
|
|
38
|
+
"etapas": [
|
|
39
|
+
{
|
|
40
|
+
"titulo": "O roteiro",
|
|
41
|
+
"texto": "**Resumo:** o opener não tem narração; o roteiro é a sequência das 7 cenas do template, com o texto que aparece na tela, o texto original e o que acontece em cada uma. Os tempos são os do vídeo final.\n\n## De onde veio a estrutura\n\nO template \"Thought in Motion Opener\" conta uma ideia em sete passos curtos e termina no logo: começar, ter um sistema, achar a forma, dar foco, organizar o movimento, construir e conectar. A versão do Clube manteve as cenas e o ritmo e trocou as frases por uma apresentação da plataforma: um método, projetos abertos de motion feitos com IA, que a pessoa copia, cola e usa para criar, com o projeto do After Effects, o prompt e a skill e o passo a passo.\n\n## Cenas por tempo\n\n | \n\n | #\n | Tempo (s)\n | Texto original\n | Texto na tela\n | O que acontece\n\n | 1\n | 0,00–1,65\n | Let's begin\n | Bora começar\n | um ponto desce puxando uma linha; quatro ondas de luz verde se abrem embaixo; um clarão sobe do pé da tela\n\n | 2\n | 1,65–4,95\n | With a system\n | Com um método\n | a bola desce e vira o centro de uma bolha de vidro que distorce o texto; quatro bolas abrem em cruz, o círculo vira uma estrela de 4 pontas e gira\n\n | 3\n | 4,95–7,37\n | Finding form\n | Projeto aberto\n | a estrela vira uma peça 3D que gira uma volta e meia; a frase sobe\n\n | 4\n | 7,37–9,25\n | Form / Defines focus\n | Motion / feito com IA\n | a estrela pousa e nasce um cartão em degradê verde, que quica ao chegar; a estrela some girando\n\n | 5\n | 9,25–14,47\n | Focus organizes motion\n | Copie, cole e crie\n | a bola pousa numa fila de 5 pontos; um arco salta de ponto em ponto; os pontos quicam em onda e viram barras; uma barra sobe e vira o ponto de luz\n\n | 6\n | 14,47–22,35\n | Build structure / Create rhythm / Shape meaning\n | Projeto do After / Prompt e skill / Passo a passo\n | um clarão abre a cena no escuro; três pílulas ligadas por linhas curvas; a câmera passa de uma a outra, e cada pílula quica quando a bola chega\n\n | 7\n | 22,35–25,00\n | Connected\n | Conectado\n | a bola corre e desenha o contorno de uma pílula, que gira em 3D e se afasta\n\n | 7\n | 25,00–29,55\n | Thought in motion\n | Clube do **Motion**\n | três bolhas coloridas orbitam o nome, que aparece recortado por elas, e se juntam\n\n | 7\n | 29,55–31,20\n | logo + youmotion.com\n | símbolo do Clube + \"Clube do **Motion**\"\n | o logo estoura; as três barras do M sobem pela inclinação, uma depois da outra; o nome entra embaixo; o primeiro brilho verde passa em 30,70 s\n\n | 7\n | 31,20–34,35\n | —\n | em breve\n | o selo verde abre com mola abaixo do nome; o segundo brilho passa em 32,95 s; o símbolo cresce devagar até o fim\n\nOs últimos 3 s da prévia do site do YouMotion (o cartão com o endereço) são a vinheta do site colada na prévia e não fazem parte do template; não foram recriados.\n\n## Momentos para o som\n\nO som é o do próprio template, sem trilha nova:\n\n- 0,53 s: o golpe mais forte do início, quando a bola chega e a primeira onda abre.\n\n- 6,64 s: o maior golpe antes do logo, quando a estrela pousa e nasce o cartão.\n\n- 9,82 s: a bola pousa na fila de pontos.\n\n- 14,47 s: o clarão da cena 6 cai na batida exata.\n\n- 16,74 e 20,78 s: a bola chega às pílulas.\n\n- 23,08 s: a bola começa a desenhar \"Conectado\".\n\n- 29,55 s: o logo estoura só com som tonal, sem golpe."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"titulo": "A identidade visual",
|
|
45
|
+
"texto": "**Resumo:** preto `#0D0D0D` com o verde de ação do Clube e quatro tons de apoio no lugar do neon do template, tipografia fina (Roboto Light e Thin), brilho somado em duas camadas e curvas com saídas secas e chegadas longas. O fecho troca o logo do template pelo símbolo do Clube, com barras que sobem pela inclinação, um brilho verde e o selo \"em breve\". Números tirados dos scripts, do passo a passo e do estudo do template.\n\n## Palco\n\n | \n\n | Peça\n | Como é\n\n | Comp de render\n | **Clean Gradient Opener**, 2160×3840, 60 qps, 34,35 s; enfileira as 7 comps de cena\n\n | Controle de cada cena\n | camada `Controls` em `Clean Gradient Opener 01…07`, só com efeitos de controle: cores (Text, BG, Elements 01–08, Logo 01–04), posição e escala de cada texto e do logo, liga e desliga do grão\n\n | Brilho (bloom)\n | a cena entra três vezes: normal, uma cópia em Add com Fast Box Blur 20 e outra em Add com Fast Box Blur 100\n\n | Grão\n | Grain Implant numa camada de ajuste, intensidade 0,5 e tamanho 1,1\n\n | Texto\n | cada frase numa comp `Scene XX Text` dentro de uma moldura de largura fixa (`Scene XX Text PrC`); posição e escala vêm do `Controls` por expressão\n\n## Cores\n\nO script 01 compara cada cor dos `Controls` com a tabela e troca pela mais próxima; branco e cores desligadas (alfa 0) ficam.\n\n | \n\n | Papel no template\n | Original\n | Clube do Motion\n\n | Ciano (principal)\n | `#00FFD2`\n | `#49E498`, verde de ação\n\n | Azul\n | `#0024FF`\n | `#00A36C`, esmeralda\n\n | Violeta\n | `#6000FF`\n | `#14D3C2`, água\n\n | Roxo\n | `#AC0CFF`\n | `#B8F25A`, lima\n\n | Magenta\n | `#DE00FF` / `#FF00FC`\n | `#D4FF5C`, lima clara\n\n | Ciano claro\n | `#3DF4FF`\n | `#A6FFD8`, menta\n\n | Fundo\n | `#000000`\n | `#0D0D0D`\n\n | Cena 6\n | fundo branco, pílulas pretas\n | fundo `#0D0D0D`, pílulas `#1E1E1E`, linhas e bolinhas `#6B6B6B` (controle novo \"Linhas\")\n\n## Fontes\n\n | \n\n | Fonte\n | Onde\n\n | Roboto Light\n | frases das cenas 1 a 5 e 7 (a do template, mantida)\n\n | Roboto Thin\n | \"feito com IA\" e as três pílulas da cena 6\n\n | Plus Jakarta Sans Regular + ExtraBold\n | \"Clube do\" + \"**Motion**\" no fecho, a fonte do logo do Clube\n\n | Cormorant Infant SemiBold itálica\n | o selo \"em breve\", corpo 104 na comp de 2160 px\n\n\"Com um método\" entra a 80% para caber na lente da cena 2; o logo final vai a 135% e o nome a 125%.\n\n## Curvas e movimento (do template)\n\n- **Saídas secas e chegadas longas:** as influências mais usadas são 33/0, 0/17, 59/54, 17/48, 100/34 e 38/100. Chaves intermediárias quase simétricas (59/54) deixam a morfose contínua.\n\n- **Estalo e deriva no texto:** sobe 79 px em 5 quadros (33/0 → 100/20) e mais 36 px em 0,85 s (49/17), com CC Vector Blur de −71 a 0; sai com Box Blur de 0 a 21 em 0,38 s.\n\n- **Mola de pouso:** quatro chaves de 0,12 a 0,23 s, escala 110,7 / 97,5 / 101,2 / 100 ou posição −160 / +64 / −12 / 0 px com rotação −5,4 / 3 / −0,4 / 0°.\n\n- **Onda em escada:** o mesmo movimento em 5 pontos, com 0,03 s de atraso entre eles e ciclo de 0,35 s.\n\n- **Câmera que respira:** chaves 17/66 → 63/27 → 40/68; acelera, quase para numa pílula e acelera de novo.\n\n- **Morfose:** bola → bolha de vidro (três cópias do texto com CC Lens) → círculo com 4 pontos → estrela de 4 pontas (Polystar com raio interno 827 → 308 → 674 → 217 → 0) → peça 3D que gira → pílula → cartão.\n\n## Falso 3D\n\nCada face da estrela é uma forma 2D cujos pontos seguem nulls 3D (Create Nulls From Paths › Points Follow Nulls). A câmera gira e as faces acompanham, com contorno de 2 px em Lighter Color e sombra interna própria. O traço continua 2D e leve.\n\n## Transições\n\nNão há corte seco. Cada cena termina se transformando na próxima: a bola desce e vira o centro da bolha; o círculo vira estrela; a estrela pousa e nasce o cartão; a bola pousa na fila de pontos; uma barra sobe e vira o clarão da cena 6; o clarão vira o fundo das pílulas; a bola desenha o contorno de \"Conectado\"; as bolhas se juntam no logo.\n\n## O símbolo do Clube (scripts 04 e 05)\n\n | \n\n | Tempo no vídeo\n | O quê\n\n | 25,0–29,55 s\n | três bolhas (verde, água e lima) orbitam \"Clube do Motion\" e se aproximam (template)\n\n | 29,55 s\n | o logo estoura: escala 50 → 80 → 100 e desfoque 32 → 0 (template)\n\n | 29,55–30,17 s\n | as três barras do M nascem na base e sobem pela própria inclinação, uma a cada 4 quadros (0,07 s), 0,42 s cada, com influência de saída 45% e de chegada 92%\n\n | 29,55–30,35 s\n | cada barra se inclina −16° → +4° → 0° (skew, âncora no meio da base)\n\n | 29,78 s\n | o nome entra embaixo (template)\n\n | 30,70 e 32,95 s\n | faixa verde de 110×1000 px a 24°, Fast Box Blur 26, recortada pelo alfa do logo com Set Matte, atravessa o símbolo em 0,62 s\n\n | 30,45–34,35 s\n | o símbolo cresce 2,5% devagar: `ease(time, 0.9, 5.2, 100, 102.5)`\n\n | 31,20 s\n | o selo \"em breve\" nasce como pílula curta e abre com mola até a largura do texto; o texto sobe 30 px a partir de 31,35 s; um brilho verde respira em volta até o fim\n\nO símbolo: três barras inclinadas, `simbolo.svg` com viewBox 157×100. O brilho fica fora do placeholder porque a cena 7 aplica um Fill branco no logo inteiro.\n\n## Selo \"em breve\"\n\nFundo `#49E498`, texto `#0D0D0D` em Cormorant Infant SemiBold itálica, cantos arredondados, o mesmo desenho do selo do site. Para tirar quando a plataforma abrir, apague as camadas `SELO EM BREVE`, `SELO FUNDO` e `SELO TEXTO` da comp S07.\n\n## Som\n\n | \n\n | Item\n | Valor\n\n | Efeitos\n | `Thought in motion.wav`, do autor do template, com a duração exata do vídeo: 17 golpes em 34 s, nos impactos físicos (a bola chega, a onda abre, o cartão nasce, a pílula quica); morfoses e o logo ficam só com som tonal\n\n | Trilha\n | `Reversed Time.wav`, discreta, já montada em cada cena\n\n | Final\n | limitador (o template chegava a +3 dB de pico) e normalização: −14,0 LUFS, pico de −0,8 dBFS\n\n## O que é \"humano\" neste vídeo\n\n- Nada para morto: a câmera da cena 7 deriva o tempo todo e o cartão da cena 4 continua andando depois de chegar.\n\n- A pílula que recebe a bola quica e solta uma onda de choque.\n\n- O símbolo passa do ponto antes de assentar e segue crescendo até o último quadro; o selo respira."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"titulo": "A montagem no After Effects",
|
|
49
|
+
"texto": "| \n\n | Arquivo\n | O que faz\n\n | `01_adaptar_textos_cores.jsx`\n | troca os textos das 13 comps de texto (tabela `TEXTOS` no topo), mantém Roboto Light e Thin, põe Plus Jakarta Sans 400 + 800 no nome final, alarga a comp de texto quando a frase nova passa e troca as cerca de 45 cores dos `Controls` pela cor mais próxima da tabela de-para\n\n | `02_cena6_dark.jsx`\n | tira a cena 6 do branco: fundo `#0D0D0D`, pílulas `#1E1E1E` e um controle novo, \"Linhas\" (`#6B6B6B`), para linhas e bolinhas\n\n | `03_alargar_prc.jsx`\n | onde a frase não cabe na moldura `PrC`, a moldura cresce dos dois lados e o ponto de âncora das camadas que a usam compensa\n\n | `04_logo_clube.jsx`\n | esvazia o `Scene 07 Logo Placeholder` e desenha o símbolo do Clube com a animação própria (tabela `BARRAS`)\n\n | `05_brilho_logo.jsx`\n | faixa verde inclinada a 24° que atravessa o símbolo duas vezes, recortada por ele com Set Matte\n\n | `06_ajustes_finos.jsx`\n | aproxima \"Motion\" de \"Clube do\" (−45 px) e aumenta o logo (135%) e o nome (125%) para ler no celular\n\n | `07_selo_em_breve.jsx`\n | selo \"em breve\" abaixo do nome, em 31,20 s: pílula que abre com mola, texto que sobe e brilho que respira até o fim\n\n | `resumir_aep.py`\n | transforma a estrutura exportada do `.aep` em JSON num resumo legível por comp (camadas, efeitos, chaves, expressões)\n\n- **Baixe o template** \"Thought in Motion Opener\" no YouMotion (o endereço está em `referencias/links.md`).\n\n- **Instale as fontes antes de abrir:** Roboto Light e Thin (Google Fonts) e as de `projeto/fontes/`, em `C:/Program Files/Common Files/Adobe/Fonts`, e reinicie o After Effects. Sem a Roboto Light e a Thin, o AE troca por Times sem avisar e toda frase muda de largura. Confira que a lista de fontes faltando está vazia.\n\n- **Abra uma cópia** do `Clean Gradient Opener.aep` e salve com outro nome. Crie um ponto de volta antes de cada passo.\n\n- **Rode os scripts na ordem**, de `01` a `07`, por File › Scripts › Run Script File. No `04_logo_clube.jsx`, o símbolo vem da tabela `BARRAS`; para outra marca, troque os vértices pelos do seu `simbolo.svg`.\n\n- **Confira em meia resolução.** O projeto é 2160×3840 com muito desfoque: quadros em resolução cheia estouram a memória. Ponha a comp principal em meia resolução e limpe o cache entre uma conferência e outra.\n\n- **Renderize** a comp **Clean Gradient Opener** com o aerender em trechos de 4 s, prioridade baixa e `-mem_usage 25 35`, numa pasta sem acento. Neste projeto, saiu cerca de 1 quadro por segundo em 4K.\n\n- **Final para o celular:** reduza para 1080×1920 no ffmpeg (lanczos), H.264 e AAC. O áudio do template chega a +3 dB de pico: passe por um limitador e normalize para −14 LUFS.\n\n**Pegadinhas:** na cena 2, a moldura do texto alimenta três cópias com CC Lens; alargar essa moldura desalinha a lente, então ali o texto encolhe pelo controle `Text Scale`. Na cena 7 o logo inteiro recebe um Fill branco, por isso qualquer brilho desenhado dentro do placeholder some e tem de ser feito por fora, recortado pelo logo. Ao montar formas por script, `addProperty` invalida as referências: adicione tudo e busque cada propriedade de novo pelo nome. A rotação de camada 2D se chama `ADBE Rotate Z`."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"titulo": "As decisões de direção",
|
|
53
|
+
"texto": "- **Adaptar o template em vez de refazer.** São cerca de 600 camadas, com estrela 3D presa a nulls, câmeras, lentes e mattes. O template já expõe cor, texto e logo por camadas `Controls`; só o que é novo (símbolo, brilho, cena 6 escura e selo) foi construído do zero.\n\n- **Tudo por tabela.** Textos, cores e o desenho do símbolo ficam no topo dos scripts, então a mesma adaptação serve para outra marca trocando só as tabelas.\n\n- **Rótulos curtos que cabem na moldura.** Cada frase mora numa moldura de largura fixa, por isso o texto em português foi escrito no tamanho do original (\"Let's begin\" virou \"Bora começar\"; \"Focus organizes motion\" virou \"Copie, cole e crie\").\n\n- **A paleta do Clube no lugar do neon do template.** Ciano, azul, violeta, roxo e magenta viraram verde de ação, esmeralda, água e dois limas, sobre o preto `#0D0D0D`.\n\n- **A cena clara virou escura**, para o vídeo inteiro ficar na mesma noite e o verde brilhar.\n\n- **O símbolo nasce como a marca se move.** As três barras do M sobem pela própria inclinação, uma a cada 4 quadros, passam do ponto e assentam; depois o símbolo cresce 2,5% devagar até o fim.\n\n- **O som do autor fica.** Os efeitos do template já caem nos impactos de cada elemento, com trilha discreta. Uma música real por cima foi testada e piorou o resultado.\n\n- **O selo \"em breve\" no fecho** transforma o opener em anúncio de pré-lançamento sem mexer no resto.\n\nDetalhes de cores, curvas, logo e som: estilo.md. Cenas por tempo e texto na tela: roteiro.md. Para fazer um opener no mesmo método com a sua marca: 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 | aprovada: template adaptado pelos passos 1 a 6, com o som original do template a −14,0 LUFS\n\n | v2\n | teste com música real (\"Titanium\") e um efeito por elemento, montado por script; descartada, porque a música não casou tão bem quanto os efeitos do autor com a trilha discreta. O `trilha.py` desse teste está em `audio/`\n\n | **v3**\n | a v1 com o selo \"em breve\" no fecho (passo 7); só os 2 trechos finais foram renderizados de novo. Agendada para o Instagram em 15/10/2026"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"pacote": [
|
|
61
|
+
{
|
|
62
|
+
"pasta": "projeto/",
|
|
63
|
+
"conteudo": "`scripts/` (os 7 passos `01_…` a `07_….jsx` e o `resumir_aep.py`), `PASSO-A-PASSO.md` e a pasta `passo-a-passo/` (anatomia do template, adaptação, logo, prompt e o teste de som), `marca/simbolo.svg` e `fontes/` (Plus Jakarta Sans Regular e ExtraBold, Cormorant Infant SemiBold itálica)"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"pasta": "audio/",
|
|
67
|
+
"conteudo": "`trilha.py` e `relatorio-som.json`, do teste com música real que foi descartado (veja Versões)"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"pasta": "referencias/",
|
|
71
|
+
"conteudo": "`estudo-do-template.md` (o template por dentro: curvas, elementos, som e receitas), `estudo-do-estilo-youmotion.md`, `links.md` e `fora-do-pacote.md`"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"pasta": "render.mp4",
|
|
75
|
+
"conteudo": "o opener final (v3)"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"pasta": "01_adaptar_textos_cores.jsx",
|
|
79
|
+
"conteudo": "troca os textos das 13 comps de texto (tabela `TEXTOS` no topo), mantém Roboto Light e Thin, põe Plus Jakarta Sans 400 + 800 no nome final, alarga a comp de texto quando a frase nova passa e troca as cerca de 45 cores dos `Controls` pela cor mais próxima da tabela de-para"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"pasta": "02_cena6_dark.jsx",
|
|
83
|
+
"conteudo": "tira a cena 6 do branco: fundo `#0D0D0D`, pílulas `#1E1E1E` e um controle novo, \"Linhas\" (`#6B6B6B`), para linhas e bolinhas"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"pasta": "03_alargar_prc.jsx",
|
|
87
|
+
"conteudo": "onde a frase não cabe na moldura `PrC`, a moldura cresce dos dois lados e o ponto de âncora das camadas que a usam compensa"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"pasta": "04_logo_clube.jsx",
|
|
91
|
+
"conteudo": "esvazia o `Scene 07 Logo Placeholder` e desenha o símbolo do Clube com a animação própria (tabela `BARRAS`)"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"pasta": "05_brilho_logo.jsx",
|
|
95
|
+
"conteudo": "faixa verde inclinada a 24° que atravessa o símbolo duas vezes, recortada por ele com Set Matte"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"pasta": "06_ajustes_finos.jsx",
|
|
99
|
+
"conteudo": "aproxima \"Motion\" de \"Clube do\" (−45 px) e aumenta o logo (135%) e o nome (125%) para ler no celular"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"pasta": "07_selo_em_breve.jsx",
|
|
103
|
+
"conteudo": "selo \"em breve\" abaixo do nome, em 31,20 s: pílula que abre com mola, texto que sobe e brilho que respira até o fim"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"pasta": "resumir_aep.py",
|
|
107
|
+
"conteudo": "transforma a estrutura exportada do `.aep` em JSON num resumo legível por comp (camadas, efeitos, chaves, expressões)"
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"prompt": "Quero adaptar um template de After Effects para a minha marca, no mesmo método do projeto \"opener do Clube do Motion\", que está em 07-videos/projetos/clube-opener/.\n\nMarca: {{MARCA}}\nSite oficial (para tirar cores, fonte e símbolo): {{SITE}}\nTemplate que vou usar (o mesmo Thought in Motion ou outro): {{TEMPLATE}}\nO que o vídeo diz, em frases curtas, uma por cena: {{FRASES}}\nSímbolo ou logo em SVG: {{SIMBOLO}}\nSelo ou chamada no fecho (ex.: \"em breve\", \"disponível agora\"), se tiver: {{SELO}}\nFormato final: {{FORMATO}} (a referência é 2160×3840, entregue em 1080×1920)\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, roteiro.md, projeto/PASSO-A-PASSO.md e as partes de projeto/passo-a-passo/, e depois os 7 scripts de projeto/scripts/, de 01 a 07. Me explique em poucas linhas como o template funciona: as cenas, a camada Controls de cada cena, a moldura de cada texto e como o logo do fecho é animado.\n\n2. Leia o meu template por dentro antes de mexer. Exporte a estrutura do .aep para JSON, resuma com o resumir_aep.py e me mostre onde ficam cores, textos, logo e som. Se o template não tiver camadas de controle, diga como as mudanças vão ser feitas.\n\n3. Instale as fontes antes de abrir o projeto e confira que a lista de fontes faltando no After Effects está vazia. Fonte faltando não dá erro: o AE troca por outra e todo texto muda de largura.\n\n4. Escreva os textos no tamanho dos originais, porque cada frase mora numa moldura de largura fixa. Me mostre uma tabela \"texto original → texto novo\" e espere meu ok.\n\n5. Tire a paleta do meu site, não da imaginação, e monte a tabela de-para no molde da do script 01 (cor do template → cor da marca). Se o template tiver uma cena clara e a marca pedir o escuro, faça como o script 02.\n\n6. Trabalhe numa cópia do template, com um ponto de volta antes de cada passo, e faça cada mudança por script, com as tabelas no topo: textos e cores, cena escura, molduras que precisam crescer, símbolo, brilho, ajustes de encaixe e selo. Onde a moldura alimenta uma lente ou cópias animadas, diminua o texto pelo controle de escala em vez de alargar a moldura.\n\n7. Anime o meu símbolo com um movimento que venha do próprio desenho dele, como as barras do Clube que nascem na base e sobem pela inclinação, passam do ponto e assentam. Mantenha o efeito do template em volta (as bolhas que estouram no logo), faça o brilho por fora do placeholder, recortado pelo logo, e deixe o símbolo crescendo devagar até o último quadro.\n\n8. Mantenha o som do autor. Os efeitos do template já caem em cada impacto; não ponha música por cima sem eu pedir. No final, só limite o pico e normalize para −14 LUFS.\n\n9. Confira olhando quadros em meia resolução, lado a lado com a prévia do template, no começo, no meio e no fim de cada cena, e limpe o cache entre as conferências. Em 4K o After Effects pode ficar sem memória.\n\n10. Renderize com o aerender em trechos de 4 s, prioridade baixa e memória limitada, numa pasta sem acento. Reduza para 1080×1920, confira duração, qps e loudness e me entregue o MP4, o .aep e os scripts com as tabelas preenchidas.",
|
|
111
|
+
"campos": [
|
|
112
|
+
"FORMATO",
|
|
113
|
+
"FRASES",
|
|
114
|
+
"MARCA",
|
|
115
|
+
"SELO",
|
|
116
|
+
"SIMBOLO",
|
|
117
|
+
"SITE",
|
|
118
|
+
"TEMPLATE"
|
|
119
|
+
],
|
|
120
|
+
"fonte": {
|
|
121
|
+
"nome": "Clube do Motion",
|
|
122
|
+
"url": "https://clubedomotion.com/projeto/?id=clube-opener",
|
|
123
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
124
|
+
}
|
|
125
|
+
}
|