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,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-antes-e-agora",
|
|
3
|
+
"titulo": "Como começou, como está indo",
|
|
4
|
+
"categoria": "elementos",
|
|
5
|
+
"resumo": "edit quadrado de 28 s, sem narração, no formato \"antes e agora\": cinco segundos de motion simples de propósito, linear, de canto reto e quase sem desfoque, meio segundo de tela vazia e, no drop da música, um corte seco para o trabalho atual. Daí em diante as cenas emendam por objetos: ícone do After Effects que pousa, painel de arquivos, aviso de memória, trecho de música, cartão que gira e cresce até a cena seguinte, iPhone e MacBook em 3D, uma fita azul com texto que vira check e uma íris que abre o navegador. A comp inteira sai de um script do After Effects (`cenas.jsx`) e o som, de um script Python na Mesa. Recriação do estilo de @illdari, feita pelo Clube do Motion.",
|
|
6
|
+
"indicado": "post de evolução de criador ou estúdio, portfólio de motion e UI, \"antes e depois\" de marca, abertura de apresentação de trabalho.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"antes e agora",
|
|
9
|
+
"respiro antes do drop",
|
|
10
|
+
"zoom através de objeto",
|
|
11
|
+
"mockups 3D de iPhone e MacBook",
|
|
12
|
+
"fita 3D com texto",
|
|
13
|
+
"íris de três quadros",
|
|
14
|
+
"câmera que nunca para"
|
|
15
|
+
],
|
|
16
|
+
"ficha": {
|
|
17
|
+
"formato": "1080×1080, 30 qps, desfoque de movimento com obturador de 270° e 16 amostras",
|
|
18
|
+
"duracao": "28,17 s (845 quadros), sem narração",
|
|
19
|
+
"motor": "ae",
|
|
20
|
+
"voz": "sem narração",
|
|
21
|
+
"musica": "ver o guia de estilo",
|
|
22
|
+
"fontes": "SF Pro Display, SF Pro Text, SF Pro Rounded e Roboto Condensed Italic (nas frases do \"antes\")"
|
|
23
|
+
},
|
|
24
|
+
"etapas": [
|
|
25
|
+
{
|
|
26
|
+
"titulo": "Leia-me",
|
|
27
|
+
"texto": "# Como começou e como está indo\n\n> Data: 2026-10-17 · Tipo: projeto · Status: aprovado · Id: antes-e-agora\n\n**Resumo:** edit quadrado de 28 s, sem narração, no formato \"antes e agora\": cinco segundos de motion simples de propósito, linear, de canto reto e quase sem desfoque, meio segundo de tela vazia e, no drop da música, um corte seco para o trabalho atual. Daí em diante as cenas emendam por objetos: ícone do After Effects que pousa, painel de arquivos, aviso de memória, trecho de música, cartão que gira e cresce até a cena seguinte, iPhone e MacBook em 3D, uma fita azul com texto que vira check e uma íris que abre o navegador. A comp inteira sai de um script do After Effects (`cenas.jsx`) e o som, de um script Python na Mesa. Recriação do estilo de @illdari, feita pelo Clube do Motion.\n\n## Descrição\n\nUm vídeo de evolução em que o contraste faz o trabalho. Sob o título \"como começou vs :\", um ícone de mensagem antigo solta o avião numa volta em velocidade constante, ganha um selo vermelho e estica uma barra branca com frases em itálico, tudo no tempo errado de propósito. A barra achata, sobra meio segundo de preto e, no tempo forte que abre o refrão, entra \"como está indo\": o ícone do After Effects pousa gigante e desfocado no meio da grade de apps da Adobe. As cenas seguintes nunca cortam no seco; cada uma nasce de uma peça da anterior, com desfoque de movimento, câmera viva e um efeito sonoro por ação. O fecho é um navegador de barra lateral rosa, onde o cursor abre pastas e arrasta uma aba até o lugar dela.\n\n- **Indicado para:** post de evolução de criador ou estúdio, portfólio de motion e UI, \"antes e depois\" de marca, abertura de apresentação de trabalho.\n- **Estilo:** antes e agora, respiro antes do drop, zoom através de objeto, mockups 3D de iPhone e MacBook, fita 3D com texto, íris de três quadros, câmera que nunca para\n- **Formato:** 1:1 · 28 s · sem narração\n\n**Tutorial em vídeo:** em breve.\n\n## O vídeo\n\n| Item | Valor |\n|---|---|\n| Duração | 28,17 s (845 quadros), sem narração |\n| Formato | 1080×1080, 30 qps, desfoque de movimento com obturador de 270° e 16 amostras |\n| Ferramenta | After Effects: um script ExtendScript (`cenas.jsx`) cria o projeto, monta a comp `RECRIACAO` com dez precomps em fila (`ANTES`, `ADOBE`, `PAINEL`, `OBTER INFO`, `MUSICA`, `CARTAO`, `TRES D`, `FITA`, `DESKTOP` com a `JANELA`) e salva o `.aep` |\n| Mockups 3D | iPhone e MacBook montados com camadas 3D do próprio AE: tela em precomp, moldura e oito cópias para a espessura; sem plugin |\n| Assets | ícones de app com os glifos oficiais do Simple Icons (CC0), logo do Spotify, fotos geradas para a galeria e a capa, papel de parede em flor azul desenhado por código, avatar gerado e as mãos de luva; `fazer_assets.py` refaz o que é gerado |\n| Fontes | SF Pro Display, SF Pro Text, SF Pro Rounded e Roboto Condensed Italic (nas frases do \"antes\") |\n| Trilha | \"Look At Me Now\", de Chris Brown com Lil Wayne e Busta Rhymes, desacelerada 1,5% sem mudar o tom para os 143,6 BPM da referência |\n| Som | 59 eventos tirados da comp; no \"antes\", efeitos a 60% do volume; do drop em diante, um efeito por ação e um golpe no corte; −14,0 LUFS e pico verdadeiro de −1,7 dBFS |\n| Referência | edit \"how it started vs how its going\", de @illdari (26/08/2026), estudado quadro a quadro |\n| Arquivo final | MP4 H.264 com áudio AAC, 29 MB |\n\n## O que tem no pacote\n\n| Pasta | Conteúdo |\n|---|---|\n| `projeto/` | `ae/cenas.jsx` (o gerador comentado), `ae/trust-process.aep` (o projeto montado), `assets/` (galeria, capa, papel de parede, avatar, mãos, logo do Spotify), `assets/icones/` e `assets/fazer_assets.py` |\n| `audio/` | `trilha.py` (o som inteiro), `eventos.json` (os 59 eventos da comp), `mix.wav`, `relatorio-som.json` e `mesa/`, com o motor de mix `mesa.py` e o `mapa_padrao.py` |\n| `referencias/` | `links.md` e `fora-do-pacote.md` |\n| `render.mp4` | o vídeo final |\n\nFica fora do pacote o trecho da música (`audio/musica.wav`). O `trilha.py` traz o comando do ffmpeg que corta e desacelera a faixa a partir de 7,563 s; com outra música, faça o tempo forte que abre o refrão cair em 5,48 s, no corte \"como está indo\".\n\n### Como os scripts funcionam\n\n| Arquivo | O que faz |\n|---|---|\n| `ae/cenas.jsx` | cria um projeto novo e monta tudo. No topo fica o bloco `TEXTOS`, com todos os textos da tela (títulos, frases, arquivos, avisos, a página de música, as telas dos mockups, a fita e as pastas do navegador). Cada cena é uma precomp numerada de 1 a 10, com os tempos dela no comentário; a função `poe` coloca cada uma na comp final. A ajudante `K` grava chaves com influência (−1 = linear, `'a'` = curva contínua) e `digita` escreve letra a letra. No fim, grava `audio/eventos.json` e salva `ae/trust-process.aep` |\n| `ae/trust-process.aep` | o resultado do script, pronto para abrir e renderizar |\n| `assets/fazer_assets.py` | desenha o papel de parede em flor, recorta as fotos da galeria e da capa e copia ícones e mãos |\n| `audio/trilha.py` | põe a música 11 dB abaixo, baixa para 60% os efeitos antes de 5,45 s, troca o impacto do drop por um golpe tonal, marca o drop em 5,48 s e mixa para −14 LUFS |\n| `audio/mesa/` | o motor de mix e o mapa de sons por tipo de evento |\n\n## Como abrir e renderizar\n\n1. **Fontes:** instale SF Pro Display, SF Pro Text, SF Pro Rounded e Roboto Condensed (Google Fonts) em `C:\\Program Files\\Common Files\\Adobe\\Fonts` e reinicie o After Effects.\n2. **Juntar as pastas:** copie `audio/` para dentro de `projeto/`. O script grava os eventos em `projeto/audio/eventos.json`.\n3. **Abrir:** `projeto/ae/trust-process.aep`. Se o AE pedir arquivos, aponte para `projeto/assets/`.\n4. **Adaptar:** troque o `TEXTOS` e as imagens e rode File › Scripts › Run Script File › `cenas.jsx`. Ele cria um projeto novo e sobrescreve o `.aep` em cerca de 6 s.\n5. **Som:** no topo do `trilha.py`, aponte o `sys.path.insert` para a pasta `audio/mesa`, gere o `musica.wav` com o comando do ffmpeg do próprio arquivo e rode `python audio/trilha.py`. Precisa de numpy, scipy, soundfile, librosa e pyloudnorm; no topo do `mesa.py`, aponte as pastas de efeitos para a sua biblioteca.\n6. **Render:** fila do AE em H.264 e o `mix.wav` colado com o ffmpeg: `ffmpeg -i video.mp4 -i audio/mix.wav -map 0:v -map 1:a -c:v copy -c:a aac -b:a 320k -shortest final.mp4`.\n\n**Pegadinhas:** os mockups são camadas 3D filhas de um null 3D; um filho 2D ignora as rotações X e Y do pai, então tela, moldura e espessura também precisam ser 3D. O avião do \"antes\" orbita por expressão e se orienta pela própria velocidade. Para trocar os mockups por um modelo mais fiel, renderize um `.glb` e substitua a precomp `TRES D`. O `aerender` não aceita caminho com acento.\n\n## Decisões de direção que fizeram o vídeo funcionar\n\n1. **Feio de propósito no começo.** Movimento linear, canto reto, itálico genérico e nada na batida: o contraste vende o acabamento do resto.\n2. **Meio segundo de vazio antes do drop.** O preto entre 5,0 e 5,47 s prepara o corte, e a imagem nova entra já gigante e desfocada, pousando em 15 quadros.\n3. **Zoom através de um objeto.** As barras azuis viram um cartão que gira 34° e cresce de 100 para 640% em 0,44 s, até o miolo virar a galeria escura.\n4. **Mockups vivos.** O iPhone sobe de perfil e gira até ficar quase de frente, a câmera corre para o MacBook, e as telas se escrevem enquanto eles flutuam.\n5. **A fita fecha uma ação.** A onda azul vira faixa com o texto correndo, a faixa vira pílula, a pílula vira círculo, e spinner, seta e check aparecem em sequência; a íris de três quadros sai do check e abre o navegador.\n6. **Câmera que nunca para.** No navegador ela sobe 900 px em 8,8 s com tremida leve; o cursor clica, abre a pasta e arrasta a aba com a mão de luva.\n7. **O som respeita o contraste.** Efeitos discretos no \"antes\", golpe no drop e um efeito para cada ação do \"agora\".\n\nDetalhes de cores, tempos e números: [estilo.md](estilo.md). Cenas por tempo e texto na tela: [roteiro.md](roteiro.md). Para fazer o seu com o seu trabalho: [PROMPT.md](PROMPT.md).\n\n## Versões\n\n| Versão | O que mudou |\n|---|---|\n| **v1** | recriação cena a cena, ajustada lado a lado com o original, com textos em português e a página de música com conteúdo nosso |\n"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"titulo": "Roteiro",
|
|
31
|
+
"texto": "# Roteiro: como começou e como está indo\n\n> Data: 2026-10-17 · Tipo: roteiro · Status: aprovado · Projeto: antes-e-agora\n\n**Resumo:** o vídeo não tem narração; o roteiro é a sequência de cenas do \"antes\" e do \"agora\", com o texto da tela e os tempos do `cenas.jsx`. Todo o texto fica no bloco `TEXTOS`. Com o seu trabalho, mantenha a regra: cinco segundos simples, meio segundo de vazio e o drop abrindo a parte boa.\n\n## De onde veio a estrutura\n\nO edit estudado mostra 5,5 s de um motion antigo, linear e sem desfoque, e corta no drop da música para uma sequência do trabalho atual. Este projeto mantém as cenas, os tempos e as emendas, com textos em português e a página de música preenchida com conteúdo nosso.\n\n## Cenas e texto na tela\n\n| Tempo (s) | Tela | Texto na tela |\n|---|---|---|\n| 0,00–2,10 | fundo escuro; o avião sai do ícone, dá a volta e volta; selo vermelho | \"como começou vs :\" |\n| 2,10–4,80 | o ícone balança, vai para a esquerda e estica a barra branca; atravessa e troca a frase | \"Me chama quando quiser\", \"Pode deixar :)\" |\n| 4,80–5,50 | a barra achata; meio segundo de preto | — |\n| 5,50–6,25 | drop: o ícone do After Effects pousa gigante no meio da grade Adobe | \"como está indo\", \"After Effects\" |\n| 6,25–7,85 | painel de arquivos; aviso de travamento empurra a lista | \"Arquivos do projeto\", \"projeto-final\", \"abertura\", \"marca\", \"saas\", \"After Effects travou\", \"Precisa de mais memória.\" |\n| 7,85–9,67 | botão, clique com ripple, notificação | \"Obter info\", \"Mais memória\", \"16 GB\", \"agora o After Effects respira\" |\n| 9,67–13,55 | página de música em verde e preto: logo, título, artistas, texto, botão, faixa | \"Puro Movimento\", \"Som Global\", \"Você\", \"Marina\", \"Léo\", \"Imersão Global\", \"Ir além\", \"Luzes Piscando\" |\n| 13,55–14,30 | barras azuis viram um cartão que gira e cresce até virar a cena seguinte | — |\n| 14,30–15,80 | galeria escura; o iPhone sobe girando e a tela se escreve | \"Clube\", \"Puxe sua inspiração\", \"Abrir o Clube\", \"Fechar\" |\n| 15,80–17,30 | a câmera corre; o MacBook entra em perspectiva | \"Dentro do seu fluxo\" |\n| 16,80–19,30 | a fita azul atravessa, vira faixa com o texto, pílula, círculo e check | \"Salvando sua ideia\", \"Feito\" |\n| 19,33–21,30 | íris sai do check e abre o desktop com o navegador rosa; favoritos entram | \"Favoritos\", \"Clube\" |\n| 21,30–24,90 | o cursor abre a pasta \"Trabalho\" e passa pelos itens; a prévia abre à direita | \"Trabalho\", \"Pinterest\", \"Figma\", \"Gmail\", \"Entretenimento\", \"Redes sociais\", \"Nova aba\", \"Instagram\" |\n| 24,90–27,50 | o cursor arrasta a aba do Instagram até \"Redes sociais\" | — |\n| 27,50–28,17 | escurece até o preto | — |\n\n## Momentos para o som\n\n- O trecho mais vazio da introdução da música fica no \"antes\"; o tempo forte que abre o refrão cai em 5,48 s, no corte \"como está indo\".\n- No \"antes\", os efeitos ficam a 60% do volume: avião, pouso, notificação, barra, texto e achatamento.\n- No drop entra um golpe; daí em diante, um efeito por ação: pouso, letras, painel, alerta, clique, notificação, logo, pops dos artistas, viagem do cartão, subida e pouso dos mockups, digitação, chicote, fita, check, íris, pops dos favoritos, cliques, arraste e pouso da aba.\n- A música fica 11 dB abaixo do nível do arquivo, com fade de 0,8 s no fim.\n"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"titulo": "Estilo",
|
|
35
|
+
"texto": "# Estilo do vídeo: como começou e como está indo\n\n> Data: 2026-10-17 · Tipo: guia · Status: vigente · Projeto: antes-e-agora\n\n**Resumo:** o \"antes\" em `#161616` com um ícone azul-claro, barra branca de canto reto e itálico genérico; o \"agora\" em lilás `#D4D4E0`, cinza `#EDEDED`, preto com verde de música, azul-noite nos mockups 3D, fita em degradê azul e uma barra lateral rosa no navegador. SF Pro em quase tudo. Números tirados do `cenas.jsx` (q = quadro a 30 qps).\n\n## Palco\n\n| Peça | Como é |\n|---|---|\n| Tela | 1080×1080, 30 qps |\n| Desfoque de movimento | obturador de 270°, fase −135°, 16 amostras |\n| Montagem | comp `RECRIACAO` com dez precomps em fila, títulos fixos no topo e um preto final de 27,50 a 28,15 s |\n| Títulos | \"como começou vs :\" em branco até 5,5 s; \"como está indo\" em `#3A3A3C` de 5,5 a 9,0 s, apagando de 8,30 a 8,90 s; SF Pro Display Medium, 84 px |\n\n## Cores\n\n| Peça | Valor |\n|---|---|\n| Antes | fundo `#161616`; ícone com quadrado branco, círculo `#A3CDE1` e avião branco; selo `#E0303E`; barra `#FFFFFF`; frases `#111111` |\n| Adobe | fundo `#D4D4E0`; ícones cinza `#8E8E93` com letras `#B9B9BE`; Ae `#00005B` com letras `#9999FF` |\n| Painel e aviso | painel branco que esfria para `#EDEDED`; faixas `#F4F4F6`; aviso com ícone `#D01D2D` e texto `#E0505E` |\n| Obter info | fundo `#EDEDED`; pílula `#E3E3E8` que acende `#A7E6EE` no clique; ripple `#B9B9C6` |\n| Música | preto com brilho `#0B2E15`; verde `#1ED760` nos anéis e no botão |\n| Cartão | barras `#2C40D0` sobre um fundo que vai de `#0A0A0A` a branco em 0,31 s |\n| 3D | fundo `#050614`; galeria a 38% com desfoque 20; iPhone com moldura `#C9A46A` e espessura `#8C6A3A`; MacBook com tampa `#1C1C1E`, base `#AEB1B7` e teclado `#2A2A2E`; telas `#0B0B10` com destaque `#4F8DFF` |\n| Fita | fundo `#00010F`; traço `#1E9BDB`; faixa em degradê `#1784CC` → `#26BAE1` |\n| Navegador | janela `#D46F8E`, área `#DB7F9A`, favoritos `#EE6F86` com borda `#E8364E`; papel de parede tingido entre `#06207A` e `#A9D2FF` |\n\n## Fontes\n\n| Fonte | Onde |\n|---|---|\n| SF Pro Display Medium | títulos do topo |\n| SF Pro Display Semibold e Bold | letras dos ícones Adobe, rótulo \"After Effects\", página de música, telas dos mockups, fita (118 px) |\n| SF Pro Text | listas, avisos, botões, pastas do navegador |\n| SF Pro Rounded Semibold | letras dos avatares |\n| Roboto Condensed Italic | as duas frases do \"antes\" (60 px, tracking 60) |\n\n## Cena a cena\n\n| Cena | Números |\n|---|---|\n| Antes (0–5,5 s) | avião em órbita elíptica de 250×230 px, velocidade constante, de 0,20 a 1,92 s; selo de 0 a 100% em 0,1 s sem easing; balanço de 6°, −5° e 3° até 3,20 s; o ícone vai 419 px para a esquerda e a barra estica de 230 a 1.026 px entre 3,35 e 4,00 s, tudo linear; o ícone atravessa até x 391 e troca a frase; tudo achata em Y em 0,15 s a partir de 4,80 s |\n| Respiro (4,95–5,5 s) | só o título sobre o preto |\n| Adobe (5,5–7,2 s) | o Ae entra a 200%, a 30% de opacidade e com desfoque 30, e pousa em 100% (360 px) até 6,00 s; a grade cinza aparece de 80 a 100% em 8 q; \"After Effects\" sobe em onda; a grade anda para a esquerda a partir de 6,25 s |\n| Painel e aviso (6,25–8,0 s) | painel de 472×520 com raio 28; lista de quatro arquivos; o aviso de travamento entra e empurra a lista |\n| Obter info (7,85–9,67 s) | pílula de 270×68; clique com ripple de 1.200 px; a notificação de memória nasce do botão |\n| Música (9,67–13,6 s) | logo, título, três artistas com anéis verdes entrando a 10,98, 11,08 e 11,40 s, texto e botão a partir de 11,92 s, item da faixa em 12,92 s |\n| Cartão (13,55–14,32 s) | as barras se aproximam e afinam de 112 para 90 px até 13,85 s; o cartão cresce de 100 para 165, 290 e 640% e gira de 0 a 34° entre 13,86 e 14,30 s |\n| 3D (14,28–17,45 s) | a cena entra com desfoque 18 em 0,17 s; o iPhone a 82% sobe de y 1.500 a 560 entre 14,40 e 14,95 s, gira em Y de 85° a −16° e sai para a direita em 15,80 s; o MacBook a 62%, inclinado 26° em Y e 22° em X, entra em 15,95 s e sai em 17,30 s; as telas se digitam em 14,95–15,55 s e 16,00–16,45 s |\n| Fita (16,78–19,45 s) | onda de 120 a 270 px de espessura desenhada entre 16,80 e 17,20 s; a faixa reta gira de −3,5° a −16° com o texto correndo 260 px; vira pílula entre 18,55 e 19,08 s (2.400 para 250 px, raio 125); spinner, seta e check em 0,07, 0,06 e 0,08 s; \"Feito\" em 19,22 s |\n| Íris (19,33–19,43 s) | máscara circular com suavidade de 120 px, centrada no check, expandindo de −60 a 900 px em 3 q |\n| Navegador (19,33–28,17 s) | favoritos crescem de 0 a 100% em 6 q, 5 q entre eles, e recebem os ícones a partir de 19,95 s; pastas a 75 px de distância; clique em 21,65 s abre os filhos e empurra as pastas de baixo 225 px; prévia entra da direita em 22,93 s; arraste do Instagram de 25,00 a 26,60 s; a janela sobe 900 px com curva contínua e `wiggle(4, 2)`, e a escala vai de 100 a 102% |\n\n## O que é \"humano\" neste vídeo\n\n- No \"agora\", nenhuma cena entra parada: o Ae chega em curva contínua, a galeria deriva, os mockups flutuam e a janela do navegador sobe o tempo todo.\n- O cursor clica com um aperto de 130 para 105% e de volta, e a aba arrastada vai atrás dele com a mão de luva.\n- O \"antes\" é mecânico de propósito, e é por isso que o resto parece vivo.\n"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"titulo": "O roteiro",
|
|
39
|
+
"texto": "**Resumo:** o vídeo não tem narração; o roteiro é a sequência de cenas do \"antes\" e do \"agora\", com o texto da tela e os tempos do `cenas.jsx`. Todo o texto fica no bloco `TEXTOS`. Com o seu trabalho, mantenha a regra: cinco segundos simples, meio segundo de vazio e o drop abrindo a parte boa.\n\n## De onde veio a estrutura\n\nO edit estudado mostra 5,5 s de um motion antigo, linear e sem desfoque, e corta no drop da música para uma sequência do trabalho atual. Este projeto mantém as cenas, os tempos e as emendas, com textos em português e a página de música preenchida com conteúdo nosso.\n\n## Cenas e texto na tela\n\n | \n\n | Tempo (s)\n | Tela\n | Texto na tela\n\n | 0,00–2,10\n | fundo escuro; o avião sai do ícone, dá a volta e volta; selo vermelho\n | \"como começou vs :\"\n\n | 2,10–4,80\n | o ícone balança, vai para a esquerda e estica a barra branca; atravessa e troca a frase\n | \"Me chama quando quiser\", \"Pode deixar :)\"\n\n | 4,80–5,50\n | a barra achata; meio segundo de preto\n | —\n\n | 5,50–6,25\n | drop: o ícone do After Effects pousa gigante no meio da grade Adobe\n | \"como está indo\", \"After Effects\"\n\n | 6,25–7,85\n | painel de arquivos; aviso de travamento empurra a lista\n | \"Arquivos do projeto\", \"projeto-final\", \"abertura\", \"marca\", \"saas\", \"After Effects travou\", \"Precisa de mais memória.\"\n\n | 7,85–9,67\n | botão, clique com ripple, notificação\n | \"Obter info\", \"Mais memória\", \"16 GB\", \"agora o After Effects respira\"\n\n | 9,67–13,55\n | página de música em verde e preto: logo, título, artistas, texto, botão, faixa\n | \"Puro Movimento\", \"Som Global\", \"Você\", \"Marina\", \"Léo\", \"Imersão Global\", \"Ir além\", \"Luzes Piscando\"\n\n | 13,55–14,30\n | barras azuis viram um cartão que gira e cresce até virar a cena seguinte\n | —\n\n | 14,30–15,80\n | galeria escura; o iPhone sobe girando e a tela se escreve\n | \"Clube\", \"Puxe sua inspiração\", \"Abrir o Clube\", \"Fechar\"\n\n | 15,80–17,30\n | a câmera corre; o MacBook entra em perspectiva\n | \"Dentro do seu fluxo\"\n\n | 16,80–19,30\n | a fita azul atravessa, vira faixa com o texto, pílula, círculo e check\n | \"Salvando sua ideia\", \"Feito\"\n\n | 19,33–21,30\n | íris sai do check e abre o desktop com o navegador rosa; favoritos entram\n | \"Favoritos\", \"Clube\"\n\n | 21,30–24,90\n | o cursor abre a pasta \"Trabalho\" e passa pelos itens; a prévia abre à direita\n | \"Trabalho\", \"Pinterest\", \"Figma\", \"Gmail\", \"Entretenimento\", \"Redes sociais\", \"Nova aba\", \"Instagram\"\n\n | 24,90–27,50\n | o cursor arrasta a aba do Instagram até \"Redes sociais\"\n | —\n\n | 27,50–28,17\n | escurece até o preto\n | —\n\n## Momentos para o som\n\n- O trecho mais vazio da introdução da música fica no \"antes\"; o tempo forte que abre o refrão cai em 5,48 s, no corte \"como está indo\".\n\n- No \"antes\", os efeitos ficam a 60% do volume: avião, pouso, notificação, barra, texto e achatamento.\n\n- No drop entra um golpe; daí em diante, um efeito por ação: pouso, letras, painel, alerta, clique, notificação, logo, pops dos artistas, viagem do cartão, subida e pouso dos mockups, digitação, chicote, fita, check, íris, pops dos favoritos, cliques, arraste e pouso da aba.\n\n- A música fica 11 dB abaixo do nível do arquivo, com fade de 0,8 s no fim."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"titulo": "A identidade visual",
|
|
43
|
+
"texto": "**Resumo:** o \"antes\" em `#161616` com um ícone azul-claro, barra branca de canto reto e itálico genérico; o \"agora\" em lilás `#D4D4E0`, cinza `#EDEDED`, preto com verde de música, azul-noite nos mockups 3D, fita em degradê azul e uma barra lateral rosa no navegador. SF Pro em quase tudo. Números tirados do `cenas.jsx` (q = quadro a 30 qps).\n\n## Palco\n\n | \n\n | Peça\n | Como é\n\n | Tela\n | 1080×1080, 30 qps\n\n | Desfoque de movimento\n | obturador de 270°, fase −135°, 16 amostras\n\n | Montagem\n | comp `RECRIACAO` com dez precomps em fila, títulos fixos no topo e um preto final de 27,50 a 28,15 s\n\n | Títulos\n | \"como começou vs :\" em branco até 5,5 s; \"como está indo\" em `#3A3A3C` de 5,5 a 9,0 s, apagando de 8,30 a 8,90 s; SF Pro Display Medium, 84 px\n\n## Cores\n\n | \n\n | Peça\n | Valor\n\n | Antes\n | fundo `#161616`; ícone com quadrado branco, círculo `#A3CDE1` e avião branco; selo `#E0303E`; barra `#FFFFFF`; frases `#111111`\n\n | Adobe\n | fundo `#D4D4E0`; ícones cinza `#8E8E93` com letras `#B9B9BE`; Ae `#00005B` com letras `#9999FF`\n\n | Painel e aviso\n | painel branco que esfria para `#EDEDED`; faixas `#F4F4F6`; aviso com ícone `#D01D2D` e texto `#E0505E`\n\n | Obter info\n | fundo `#EDEDED`; pílula `#E3E3E8` que acende `#A7E6EE` no clique; ripple `#B9B9C6`\n\n | Música\n | preto com brilho `#0B2E15`; verde `#1ED760` nos anéis e no botão\n\n | Cartão\n | barras `#2C40D0` sobre um fundo que vai de `#0A0A0A` a branco em 0,31 s\n\n | 3D\n | fundo `#050614`; galeria a 38% com desfoque 20; iPhone com moldura `#C9A46A` e espessura `#8C6A3A`; MacBook com tampa `#1C1C1E`, base `#AEB1B7` e teclado `#2A2A2E`; telas `#0B0B10` com destaque `#4F8DFF`\n\n | Fita\n | fundo `#00010F`; traço `#1E9BDB`; faixa em degradê `#1784CC` → `#26BAE1`\n\n | Navegador\n | janela `#D46F8E`, área `#DB7F9A`, favoritos `#EE6F86` com borda `#E8364E`; papel de parede tingido entre `#06207A` e `#A9D2FF`\n\n## Fontes\n\n | \n\n | Fonte\n | Onde\n\n | SF Pro Display Medium\n | títulos do topo\n\n | SF Pro Display Semibold e Bold\n | letras dos ícones Adobe, rótulo \"After Effects\", página de música, telas dos mockups, fita (118 px)\n\n | SF Pro Text\n | listas, avisos, botões, pastas do navegador\n\n | SF Pro Rounded Semibold\n | letras dos avatares\n\n | Roboto Condensed Italic\n | as duas frases do \"antes\" (60 px, tracking 60)\n\n## Cena a cena\n\n | \n\n | Cena\n | Números\n\n | Antes (0–5,5 s)\n | avião em órbita elíptica de 250×230 px, velocidade constante, de 0,20 a 1,92 s; selo de 0 a 100% em 0,1 s sem easing; balanço de 6°, −5° e 3° até 3,20 s; o ícone vai 419 px para a esquerda e a barra estica de 230 a 1.026 px entre 3,35 e 4,00 s, tudo linear; o ícone atravessa até x 391 e troca a frase; tudo achata em Y em 0,15 s a partir de 4,80 s\n\n | Respiro (4,95–5,5 s)\n | só o título sobre o preto\n\n | Adobe (5,5–7,2 s)\n | o Ae entra a 200%, a 30% de opacidade e com desfoque 30, e pousa em 100% (360 px) até 6,00 s; a grade cinza aparece de 80 a 100% em 8 q; \"After Effects\" sobe em onda; a grade anda para a esquerda a partir de 6,25 s\n\n | Painel e aviso (6,25–8,0 s)\n | painel de 472×520 com raio 28; lista de quatro arquivos; o aviso de travamento entra e empurra a lista\n\n | Obter info (7,85–9,67 s)\n | pílula de 270×68; clique com ripple de 1.200 px; a notificação de memória nasce do botão\n\n | Música (9,67–13,6 s)\n | logo, título, três artistas com anéis verdes entrando a 10,98, 11,08 e 11,40 s, texto e botão a partir de 11,92 s, item da faixa em 12,92 s\n\n | Cartão (13,55–14,32 s)\n | as barras se aproximam e afinam de 112 para 90 px até 13,85 s; o cartão cresce de 100 para 165, 290 e 640% e gira de 0 a 34° entre 13,86 e 14,30 s\n\n | 3D (14,28–17,45 s)\n | a cena entra com desfoque 18 em 0,17 s; o iPhone a 82% sobe de y 1.500 a 560 entre 14,40 e 14,95 s, gira em Y de 85° a −16° e sai para a direita em 15,80 s; o MacBook a 62%, inclinado 26° em Y e 22° em X, entra em 15,95 s e sai em 17,30 s; as telas se digitam em 14,95–15,55 s e 16,00–16,45 s\n\n | Fita (16,78–19,45 s)\n | onda de 120 a 270 px de espessura desenhada entre 16,80 e 17,20 s; a faixa reta gira de −3,5° a −16° com o texto correndo 260 px; vira pílula entre 18,55 e 19,08 s (2.400 para 250 px, raio 125); spinner, seta e check em 0,07, 0,06 e 0,08 s; \"Feito\" em 19,22 s\n\n | Íris (19,33–19,43 s)\n | máscara circular com suavidade de 120 px, centrada no check, expandindo de −60 a 900 px em 3 q\n\n | Navegador (19,33–28,17 s)\n | favoritos crescem de 0 a 100% em 6 q, 5 q entre eles, e recebem os ícones a partir de 19,95 s; pastas a 75 px de distância; clique em 21,65 s abre os filhos e empurra as pastas de baixo 225 px; prévia entra da direita em 22,93 s; arraste do Instagram de 25,00 a 26,60 s; a janela sobe 900 px com curva contínua e `wiggle(4, 2)`, e a escala vai de 100 a 102%\n\n## O que é \"humano\" neste vídeo\n\n- No \"agora\", nenhuma cena entra parada: o Ae chega em curva contínua, a galeria deriva, os mockups flutuam e a janela do navegador sobe o tempo todo.\n\n- O cursor clica com um aperto de 130 para 105% e de volta, e a aba arrastada vai atrás dele com a mão de luva.\n\n- O \"antes\" é mecânico de propósito, e é por isso que o resto parece vivo."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"titulo": "A montagem no After Effects",
|
|
47
|
+
"texto": "| \n\n | Arquivo\n | O que faz\n\n | `ae/cenas.jsx`\n | cria um projeto novo e monta tudo. No topo fica o bloco `TEXTOS`, com todos os textos da tela (títulos, frases, arquivos, avisos, a página de música, as telas dos mockups, a fita e as pastas do navegador). Cada cena é uma precomp numerada de 1 a 10, com os tempos dela no comentário; a função `poe` coloca cada uma na comp final. A ajudante `K` grava chaves com influência (−1 = linear, `'a'` = curva contínua) e `digita` escreve letra a letra. No fim, grava `audio/eventos.json` e salva `ae/trust-process.aep`\n\n | `ae/trust-process.aep`\n | o resultado do script, pronto para abrir e renderizar\n\n | `assets/fazer_assets.py`\n | desenha o papel de parede em flor, recorta as fotos da galeria e da capa e copia ícones e mãos\n\n | `audio/trilha.py`\n | põe a música 11 dB abaixo, baixa para 60% os efeitos antes de 5,45 s, troca o impacto do drop por um golpe tonal, marca o drop em 5,48 s e mixa para −14 LUFS\n\n | `audio/mesa/`\n | o motor de mix e o mapa de sons por tipo de evento\n\n- **Fontes:** instale SF Pro Display, SF Pro Text, SF Pro Rounded e Roboto Condensed (Google Fonts) em `C:\\Program Files\\Common Files\\Adobe\\Fonts` e reinicie o After Effects.\n\n- **Juntar as pastas:** copie `audio/` para dentro de `projeto/`. O script grava os eventos em `projeto/audio/eventos.json`.\n\n- **Abrir:** `projeto/ae/trust-process.aep`. Se o AE pedir arquivos, aponte para `projeto/assets/`.\n\n- **Adaptar:** troque o `TEXTOS` e as imagens e rode File › Scripts › Run Script File › `cenas.jsx`. Ele cria um projeto novo e sobrescreve o `.aep` em cerca de 6 s.\n\n- **Som:** no topo do `trilha.py`, aponte o `sys.path.insert` para a pasta `audio/mesa`, gere o `musica.wav` com o comando do ffmpeg do próprio arquivo e rode `python audio/trilha.py`. Precisa de numpy, scipy, soundfile, librosa e pyloudnorm; no topo do `mesa.py`, aponte as pastas de efeitos para a sua biblioteca.\n\n- **Render:** fila do AE em H.264 e o `mix.wav` colado com o ffmpeg: `ffmpeg -i video.mp4 -i audio/mix.wav -map 0:v -map 1:a -c:v copy -c:a aac -b:a 320k -shortest final.mp4`.\n\n**Pegadinhas:** os mockups são camadas 3D filhas de um null 3D; um filho 2D ignora as rotações X e Y do pai, então tela, moldura e espessura também precisam ser 3D. O avião do \"antes\" orbita por expressão e se orienta pela própria velocidade. Para trocar os mockups por um modelo mais fiel, renderize um `.glb` e substitua a precomp `TRES D`. O `aerender` não aceita caminho com acento."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"titulo": "As decisões de direção",
|
|
51
|
+
"texto": "- **Feio de propósito no começo.** Movimento linear, canto reto, itálico genérico e nada na batida: o contraste vende o acabamento do resto.\n\n- **Meio segundo de vazio antes do drop.** O preto entre 5,0 e 5,47 s prepara o corte, e a imagem nova entra já gigante e desfocada, pousando em 15 quadros.\n\n- **Zoom através de um objeto.** As barras azuis viram um cartão que gira 34° e cresce de 100 para 640% em 0,44 s, até o miolo virar a galeria escura.\n\n- **Mockups vivos.** O iPhone sobe de perfil e gira até ficar quase de frente, a câmera corre para o MacBook, e as telas se escrevem enquanto eles flutuam.\n\n- **A fita fecha uma ação.** A onda azul vira faixa com o texto correndo, a faixa vira pílula, a pílula vira círculo, e spinner, seta e check aparecem em sequência; a íris de três quadros sai do check e abre o navegador.\n\n- **Câmera que nunca para.** No navegador ela sobe 900 px em 8,8 s com tremida leve; o cursor clica, abre a pasta e arrasta a aba com a mão de luva.\n\n- **O som respeita o contraste.** Efeitos discretos no \"antes\", golpe no drop e um efeito para cada ação do \"agora\".\n\nDetalhes de cores, tempos e números: estilo.md. Cenas por tempo e texto na tela: roteiro.md. Para fazer o seu com o seu trabalho: PROMPT.md."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"titulo": "As versões até o final",
|
|
55
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | **v1**\n | recriação cena a cena, ajustada lado a lado com o original, com textos em português e a página de música com conteúdo nosso"
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"prompt": "# Prompt: \"como começou e como está indo\" com o seu trabalho\n\n> Data: 2026-10-17 · Tipo: guia · Status: vigente · Projeto: antes-e-agora\n\n**Resumo:** o prompt para colar no seu agente (Claude Code ou Codex), aberto na pasta da sua central, para ele estudar este projeto e montar o seu vídeo de evolução no mesmo método: um trecho simples de propósito, meio segundo de vazio e, no drop da música, as suas melhores cenas emendadas por objetos. Troque os marcadores `{{…}}` ou apague a linha, e o agente pergunta.\n\n## Como usar\n\n1. Descompacte o pacote em `07-videos/projetos/antes-e-agora/` dentro da sua central e copie `audio/` para dentro de `projeto/`.\n2. Instale SF Pro e Roboto Condensed e separe a música (veja `referencias/fora-do-pacote.md`).\n3. Junte o que vai aparecer no \"agora\": telas, ícones das ferramentas que você usa e, se tiver, trechos de vídeos seus já aprovados.\n4. Abra o agente na pasta da central, copie o bloco abaixo, troque os marcadores que já souber e cole.\n\n## O prompt\n\n```text\nQuero um vídeo de evolução no mesmo método do projeto \"Como começou e como está indo\", que está em 07-videos/projetos/antes-e-agora/: cinco segundos simples de propósito, meio segundo de vazio e, no drop, o meu trabalho atual com as cenas emendadas por objetos.\n\nQuem está evoluindo (eu, meu estúdio, minha marca): {{QUEM}}\nTítulos do topo (antes e depois): {{TITULOS}}\nComo era o \"antes\" (o motion antigo, um layout velho, um print do começo): {{ANTES}}\nCenas do \"agora\", em ordem (telas, ferramentas, mockups, trechos de vídeos meus): {{AGORA}}\nFecho (a última cena e a ação que fecha o vídeo): {{FECHO}}\nMúsica (com um vão antes do refrão e um drop forte): {{MUSICA}}\nDuração: {{DURACAO}} (a referência tem 28 s) · Formato: {{FORMATO}} (a referência é 1080×1080)\n(Se algum desses estiver vazio ou com as chaves, me pergunte antes de começar.)\n\n1. Estude o projeto antes de propor qualquer coisa. Leia LEIA-ME.md, estilo.md e roteiro.md. Abra projeto/ae/cenas.jsx e veja o bloco TEXTOS, as dez precomps numeradas, a função poe que monta a fila, o avião em órbita do \"antes\", o zoom através do CARTAO, os mockups 3D da precomp TRES D, a FITA que vira check, a íris e a câmera do navegador. Me diga em poucas linhas o que vai reaproveitar.\n\n2. Meça a música: BPM, o vão antes do refrão e o tempo forte do drop. O corte para o \"agora\" cai nesse tempo forte, com meio segundo de tela vazia antes; cada cena do \"agora\" entra numa batida.\n\n3. Tire a identidade do que é real: ícones oficiais das ferramentas, telas dos seus projetos, cores das suas marcas. Nada de tela inventada no lugar de um trabalho que existe.\n\n4. Escreva o roteiro cena a cena, com o tempo, o texto exato e a emenda de cada troca (pousa, nasce do botão, gira e cresce até a próxima, íris saindo do check), no molde do roteiro.md. O \"antes\" tem que parecer antigo: linear, de canto reto, fora da batida. Me mostre e espere meu ok.\n\n5. Construa copiando o projeto, sem editar o original: troque TEXTOS e imagens, reaproveite as precomps que servem e escreva as novas com as mesmas ajudantes. No \"agora\", nenhuma cena entra parada e nenhum corte é seco, a não ser o do drop. Rode o cenas.jsx e me mostre uma folha de contato com 16 quadros, incluindo o drop, o meio do zoom através e o meio da íris.\n\n6. Revise antes do render: drop fora do tempo forte, \"antes\" bonito demais, cena do \"agora\" parada, filho 2D num pai 3D (some na rotação), texto cortado nos mockups.\n\n7. Som: rode audio/trilha.py na Mesa com os eventos da comp, efeitos discretos no \"antes\", golpe no drop e um efeito por ação depois, master em −14 LUFS. Renderize em H.264, cole o mix com o ffmpeg e entregue o MP4 com uma anotação do que mudou em relação ao projeto.\n```\n\n## Checklist antes de entregar (da referência)\n\n- [ ] O \"antes\" é linear, de canto reto e fora da batida, e dura uns 5 s.\n- [ ] Há meio segundo de vazio antes do drop, e o corte cai no tempo forte.\n- [ ] No \"agora\", cada cena nasce de uma peça da anterior.\n- [ ] Mockups e telas flutuam; a câmera do fecho nunca para.\n- [ ] Ícones, telas e trechos são reais e seus.\n- [ ] Efeitos discretos no \"antes\", um efeito por ação no \"agora\", −14 LUFS.\n",
|
|
59
|
+
"campos": [
|
|
60
|
+
"AGORA",
|
|
61
|
+
"ANTES",
|
|
62
|
+
"DURACAO",
|
|
63
|
+
"FECHO",
|
|
64
|
+
"FORMATO",
|
|
65
|
+
"MUSICA",
|
|
66
|
+
"QUEM",
|
|
67
|
+
"TITULOS"
|
|
68
|
+
],
|
|
69
|
+
"fonte": {
|
|
70
|
+
"nome": "Clube do Motion",
|
|
71
|
+
"url": "https://clubedomotion.com/projeto/?id=antes-e-agora",
|
|
72
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
73
|
+
},
|
|
74
|
+
"ferramentas": [
|
|
75
|
+
"Claude Code",
|
|
76
|
+
"After Effects"
|
|
77
|
+
],
|
|
78
|
+
"scripts_ae": {
|
|
79
|
+
"pasta": "lib/estudio/dados/projetos-ae/antes-e-agora",
|
|
80
|
+
"arquivos": [
|
|
81
|
+
"ae/cenas.jsx",
|
|
82
|
+
"assets/fazer_assets.py"
|
|
83
|
+
],
|
|
84
|
+
"como_usar": "modelo: leia os .jsx (montam as comps no After Effects) e os .py (preparam assets/áudio) e adapte para o estudio_ae; não copie o conteúdo do vídeo, troque pelo assunto da pessoa."
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-apresentando-clube",
|
|
3
|
+
"titulo": "Do celular à sacola",
|
|
4
|
+
"categoria": "produto",
|
|
5
|
+
"resumo": "vídeo vertical de 20 s, sem narração, que apresenta uma loja de tênis como um lançamento de produto. Uma mão segura o celular com o site, o nome da loja é digitado e as letras saltam da tela como teclas de vidro; a câmera mergulha num túnel 3D de cards reais do catálogo, a busca digita um tênis e, no drop da música, o botão infla e vira um estúdio onde a caixa abre, os pares aparecem, a frase da marca se monta e tudo cai numa sacola antes do logo. Feito em código, no Remotion, com a identidade do site da loja, toques do estilo Apple e as expressões da biblioteca de scripts do After Effects reescritas em JavaScript. Feito pelo Clube do Motion.",
|
|
6
|
+
"indicado": "loja, marca ou produto físico que quer um \"apresentando…\" curto para lançamento, anúncio ou perfil, mostrando produtos reais do catálogo sem narração.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"estilo Apple",
|
|
9
|
+
"apresentação de produto",
|
|
10
|
+
"interface recriada",
|
|
11
|
+
"túnel 3D",
|
|
12
|
+
"estúdio de produto",
|
|
13
|
+
"cards de vidro",
|
|
14
|
+
"forma que vira a próxima",
|
|
15
|
+
"sincronizado na batida"
|
|
16
|
+
],
|
|
17
|
+
"ficha": {
|
|
18
|
+
"formato": "1080×1920, 30 qps, 9:16, H.264 com cor BT.709",
|
|
19
|
+
"duracao": "20,0 s (600 quadros), sem narração, em 6 atos",
|
|
20
|
+
"motor": "html",
|
|
21
|
+
"voz": "ver o guia de estilo",
|
|
22
|
+
"musica": "ver o guia de estilo",
|
|
23
|
+
"fontes": "ver o guia de estilo"
|
|
24
|
+
},
|
|
25
|
+
"ferramentas": [
|
|
26
|
+
"Claude Code"
|
|
27
|
+
],
|
|
28
|
+
"ficha_tecnica": {
|
|
29
|
+
"Duração": "20,0 s (600 quadros), sem narração, em 6 atos",
|
|
30
|
+
"Formato": "1080×1920, 30 qps, 9:16, H.264 com cor BT.709",
|
|
31
|
+
"Ferramenta": "Remotion (React), um arquivo só: `ApresentandoClubeV3.tsx`, composição `ApresentandoClubeV3`",
|
|
32
|
+
"Trilha": "\"I'm Good (Blue)\", 127,8 BPM, Sol menor: remix cinematográfico (voz isolada e tonais) até o drop em 5,634 s e a faixa original emendada depois, numa cabeça de compasso",
|
|
33
|
+
"Som": "24 efeitos diferentes, um por ação, com o pico no instante do evento; −14,0 LUFS",
|
|
34
|
+
"Imagens geradas": "4 no GPT Image 2.5: a mão com o celular de tela verde, a caixa, a sacola e as peças de tricô",
|
|
35
|
+
"Produtos": "14 tênis do catálogo da loja recortados com rembg, com nome e preço reais",
|
|
36
|
+
"Referência": "o \"Apple Christmas Ad\" (Kram.Visuals), que deu a estrutura em 6 atos, e o guia \"Apple Style\" de NaughtyyJuan, que deu a paleta de apoio"
|
|
37
|
+
},
|
|
38
|
+
"etapas": [
|
|
39
|
+
{
|
|
40
|
+
"titulo": "O roteiro",
|
|
41
|
+
"texto": "**Resumo:** o vídeo não tem narração; o roteiro é a linha do tempo dos 6 atos, com o texto que aparece na tela e o gancho com a música. A frase do vídeo é \"Apresentando Clube dos Sneakers\", seguida de \"O maior marketplace de tênis e sneakers premium do Brasil.\"; o resto do texto vem do próprio site e do catálogo. Os tempos são os do vídeo final, em 30 qps.\n\n## De onde veio a estrutura\n\nO \"Apple Christmas Ad\" (Kram.Visuals) apresenta um produto em seis atos: o dispositivo, o mundo da interface, os produtos, a frase, tudo junto e o logo. Aqui cada ato virou um passo do caminho do cliente: o celular com o site, a busca, o tênis saindo da caixa, a frase da marca, a sacola e o logo da loja.\n\n## Cenas por tempo\n\n | \n\n | Ato\n | Tempo (s)\n | Texto na tela\n | O que acontece\n\n | 1. Dispositivo\n | 0,00–2,40\n | \"Apresentando\" · \"Clube dos Sneakers\"\n | uma mão segura o celular com a home da loja; as duas linhas são digitadas acima dele, letra a letra, e cada letra solta uma tecla de vidro da tela (letras, emojis 3D, selo HOT, NOVO e preço)\n\n | 1. Dispositivo\n | 2,40–2,85\n | —\n | a câmera mergulha no header do site até a pílula ficar reta e no centro; o texto e as teclas somem antes\n\n | 2. Interface\n | 2,85–4,70\n | \"Jordan 1 High OG Royal\" · \"Mais vendidos\" · \"CLUBE5 · 5% off\"\n | túnel 3D com 46 cards reais, chips, esferas, caixa e emojis; a pílula de busca digita o tênis, o botão → chega com mola e as duas pílulas aparecem\n\n | 2. Interface\n | 4,72–5,63\n | —\n | a câmera empurra para o botão e a mão entra; **clique em 5,274 s**, no silêncio antes do drop\n\n | 3. Produtos\n | 5,63–6,57\n | —\n | **drop em 5,634 s**: o botão infla, vira um quadrado e abre até a tela inteira, que vira o estúdio cinza; a caixa preta CDS entra com mola\n\n | 3. Produtos\n | 6,57–7,51\n | \"Air Jordan\" · \"NOVO\" · \"R$ 1.399,99\" · \"COMPRAR\"\n | na batida, a tampa salta como rolha e o Air Jordan 1 High OG Royal sobe de dentro da caixa; chega o card de vidro\n\n | 3. Produtos\n | 7,51–9,39\n | \"Os pares mais procurados da semana\" · \"R$ 1.299,99\" · \"Ver coleção\"\n | whip pan para o trio de New Balance 9060 em leque, um por vez, e o card\n\n | 3. Produtos\n | 9,39–11,27\n | \"HOT\" · \"R$ 599,99\" · \"COMPRAR\"\n | whip pan para o Nike Dunk Low Black Panda; a sola embaixo abre como a tampa de um notebook\n\n | 4. Frase\n | 11,27–14,09\n | \"O maior\" · \"marketplace\" · [+ \"de tênis e sneakers premium\"] · \"do Brasil.\"\n | o estúdio recua e some; o card do Dunk vira o chip da frase; as palavras sobem uma a uma; **em 12,676 s o + gira e vira check verde**\n\n | 5. Tudo junto\n | 14,09–16,90\n | —\n | a sacola CDS cai com quique e amassa ao pousar; em volta, um par a cada meia batida: Jordan 1, New Balance 9060, Dunk, Cloudmonster e Yeezy; zoom no monograma da sacola a partir de 16,42 s\n\n | 6. Logo\n | 16,90–20,00\n | \"Clube dos Sneakers\" · \"clubedossneakers.com.br\"\n | **reveal circular em 16,902 s** a partir da sacola: o monograma CDS em gradiente; teclas de vidro saltam dele, o nome é digitado letra a letra e o endereço sobe; o logo flutua até o fim\n\nPreços e nomes são os do catálogo da loja; \"Os pares mais procurados da semana\" é o texto do banner da home.\n\n## Momentos para a trilha\n\n- 0–5,634 s: introdução com voz isolada e tonais; o mergulho termina no respiro da voz (2,8 s) e o clique cai no silêncio de 4,75 a 5,6 s.\n\n- **5,634 s: drop** no botão que infla.\n\n- 6,573 s: a tampa salta na batida.\n\n- 7,512 s: emenda com a faixa original e primeiro whip, numa cabeça de compasso; 9,390 s: segundo whip.\n\n- 12,676 s: o check na batida.\n\n- 13,8 s: o tonal em Sol começa a subir.\n\n- **16,902 s: logo** numa cabeça de compasso, com a explosão do tonal; a música é abafada, entra o cello em Sol e tudo some de 18,6 a 20 s."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"titulo": "A identidade visual",
|
|
45
|
+
"texto": "**Resumo:** fundo claro `#F5F5F7` e estúdio cinza em gradiente radial, tinta `#111`, o laranja do selo HOT da loja como cor de ação e a paleta Apple só no texto secundário, no check e no logo. Roboto do site em todos os textos, cards de vidro com `backdrop-filter`, cinco curvas com funções diferentes e molas portadas dos scripts do After Effects. Números tirados do `ApresentandoClubeV3.tsx`, do `montar_trilha.py` e do tutorial do projeto.\n\n## Tokens da loja\n\n | \n\n | Token\n | Valor\n | De onde veio\n\n | Fonte\n | Roboto 400, 500, 700 e 900 (`@remotion/google-fonts/Roboto`)\n | o site da loja\n\n | Tinta e fundo\n | `#111` · `#F5F5F7`; estúdio em `radial-gradient(#f8f8fa → #ececf0 → #dedee4)`\n | site\n\n | Selo HOT\n | `linear-gradient(90deg, #ff2d17, #ff6a00)`, ícone de chama, raio de 9 a 15 px\n | CSS `.clube-hot`\n\n | Azul do cupom\n | `#4A61DF`, na pílula \"CLUBE5 · 5% off\"\n | `--secondary-color`\n\n | NOVO\n | pílula `#111`, Roboto 700, espaçamento de 0,08 em\n | `.clube-selo-novo`\n\n | Botão COMPRAR\n | preto, raio de 10 a 14 px, Roboto 500\n | página de produto\n\n | Header\n | pílula preta (raio 18) com menu, monograma CDS branco e a busca branca \"Buscar tênis ou marca\"\n | header do site no celular\n\n | Sombra de card\n | `0 4px 12px rgba(0,0,0,.08), 0 16px 40px rgba(0,0,0,.12)`\n | `--clube-sombra-flutuante`\n\n | Paleta Apple, só no apoio\n | título `#1C1C1E`, texto secundário `#3A3A3C`, endereço `#8E8E93`, check `#34C759`; azul `#007AFF` e laranja `#FF9500` no logo\n | guia \"Apple Style\"\n\n## Curvas\n\n | \n\n | Nome no código\n | Curva\n | Uso\n\n | `SAAS`\n | `bezier(.86, 0, .07, 1)`\n | câmera, mergulho, whips, morph e reveal circular\n\n | `SUAVE`\n | `bezier(.33, 0, .67, 1)`\n | respiração lenta e flutuação\n\n | `MACIO`\n | `bezier(.45, 0, .15, 1)`\n | rolagem da tela e assentamentos longos\n\n | `LOJA`\n | `bezier(.22, 1, .36, 1)`\n | linhas dos cards de vidro (a curva do site)\n\n | `APPLE`\n | `bezier(.16, 1, .3, 1)`\n | palavras e endereço subindo pela máscara\n\n## Molas e movimento portados do After Effects\n\n | \n\n | Função\n | Origem\n | Uso\n\n | `mola(t, at, dur=.25, amp=.05, freq=2, decay=4)`\n | Overshoot (BOUNCr / Ebberts)\n | toda entrada de card, botão, selo, pílula e logo: passa a cerca de 112% e assenta\n\n | `quique(t, at, dur=.34, …)`\n | Bounce Back\n | a sacola caindo: elasticidade 0,38, 3 quiques e amassado de 3,5% ao pousar\n\n | `molaFisica(…)`\n | easing4 (massa 1, rigidez 110 a 120, amortecimento 10,5 a 11)\n | teclas de vidro e o tênis saindo da caixa\n\n | `suaveAleatorio(t, seed, periodo, amp)`\n | smoothRandom\n | deriva de tudo que flutua\n\n | `tremor(t, seed, amp)`\n | biasedWiggle, puxado ao centro\n | câmera de mão na abertura: 5 px e 0,35°\n\n | `FiltroWhip`\n | aberração cromática + desfoque direcional\n | whips: desfoque `min(40, v·0,006)` px e aberração `min(14, v·0,0022)` px, proporcionais à velocidade da câmera\n\n | `rnd(seed)`\n | RanAni, semente fixa\n | posições das teclas, do túnel e dos brilhos; o render sai sempre igual\n\n## Componentes\n\n- **Celular na mão:** foto gerada com a tela verde removida por chroma (despill e desfoque de 0,8 px no alfa). A home do site, recriada em 390×912, entra por homografia (`matrix3d`) nos 4 cantos medidos da tela e rola 18 px. Câmera de 1,30 para 1,40 com tremor.\n\n- **Digitação da abertura:** Roboto 900, 76 px, uma letra a cada 0,046 s; cada letra sobe 22 px, com escala 1,25 → 1, desfoque 8 → 0 e cor HOT → tinta. A segunda linha leva o gradiente HOT → laranja → azul.\n\n- **Teclas de vidro:** 24, uma por letra digitada (letras, emojis 3D Fluent, selo HOT, NOVO e preço). Nascem na tela e vão para um anel em volta do celular pelo ângulo áureo; a profundidade (0,72 a 1,47) define escala e desfoque.\n\n- **Mergulho:** de 2,40 a 2,85 s, a câmera entra no header até a pílula ter 980 px, reta e no centro, com desfoque em seno (pico de 6 px).\n\n- **Túnel 3D:** `perspective: 1000px`, 46 itens em anel pelo ângulo áureo (cards reais de 380 a 470 px, imagens e chips), 150 brilhos piscando e profundidade de campo: quem passa rente desfoca até 14 px. A câmera arranca 1.900 px, segue a 760 px/s e rola até −9°.\n\n- **Pílula de busca:** é o header do site × 2,68, no mesmo lugar e ângulo do fim do mergulho; digita \"Jordan 1 High OG Royal\" a 0,048 s por letra, com cursor HOT piscando a 2,6 Hz.\n\n- **Drop:** o botão vira um quadrado de 320 px com raio 90 em 0,28 s (`back(1.5)`), pausa 0,08 s e abre até a tela inteira em 0,56 s (`SAAS`); o preto vira o cinza do estúdio por uma cortina.\n\n- **Estúdio:** três estações a 1.300 px uma da outra, esferas de tricô e cubo de feltro com paralaxe (profundidade de 0,7 a 1,55) e 16 bolhas de sabão iridescentes em CSS.\n\n- **Card de vidro (640 px):** gradiente branco de 86 para 66%, `backdrop-filter: blur(22px) saturate(1.4)`, borda branca de 1,5 px, logo da marca, nome, selo, título Roboto 700 38 px, preço em Roboto 900 e botão preto; linhas em cascata de 0,05 s com a curva `LOJA`.\n\n- **Card que vira chip:** 640×290 → 900×132 e raio 32 → 66 em 0,5 s, com borda tracejada em gradiente laranja → HOT → azul correndo; o \"+\" gira e vira o check verde com um anel.\n\n- **Palavras da frase:** Roboto 700, cada palavra sobe 108% → 0 dentro de uma máscara em 0,62 s (`APPLE`) e nasce HOT antes de virar `#1C1C1E`; as posições já são as finais desde a primeira palavra.\n\n- **Sombra de contato:** penumbra larga (0,24) mais um núcleo escuro curto (0,5, desfoque de 2 px) colado no objeto.\n\n- **Logo:** reveal circular de 0 a 1.500 px a partir do monograma da sacola em 0,55 s; monograma CDS de 440 px como máscara sobre o gradiente `#007AFF → #5b7cff → #b46cf0 → #FF9500 → #ff6a00 → #ff2d17`, relevo com três cópias mais escuras (3, 5 e 7 px), brilho de vidro e giro 3D de ±7°.\n\n- **Grão:** `feTurbulence` com semente por quadro, a 18% em overlay sobre tudo, para juntar a foto real com os objetos gerados.\n\n## Transições\n\nHeader do celular → pílula do túnel; botão → estúdio; whip pan entre as estações; card do Dunk → chip da frase; estúdio que recua (0,82) por baixo da frase; zoom de 7× no monograma da sacola → reveal circular do logo.\n\n## Trilha\n\n | \n\n | Item\n | Valor\n\n | Música\n | \"I'm Good (Blue)\", 127,8 BPM, Sol menor; batida de 0,4695 s e compasso de 1,878 s\n\n | Até 7,512 s\n | o remix da introdução: voz isolada e tonais até o drop em 5,634 s\n\n | Depois\n | a faixa original a partir de 45,1 s, alinhada por correlação (0,97) e ganho por mínimos quadrados (0,53), com cruzamento de 30 ms numa cabeça de compasso\n\n | Logo (16,902 s)\n | passa-baixa de 900 Hz misturado por cosseno em 0,9 s, com +1,5 dB; cello em Sol entrando 0,25 s antes; fade de 18,6 a 20 s\n\n## Efeitos\n\n | \n\n | Ação\n | Efeito\n\n | letras digitadas e teclas de vidro\n | `tecla-teclado-1` em cada letra, `bubble-pop` a cada 2 teclas\n\n | mergulho\n | `whoosh-longo-1` + `riser-curto-1`\n\n | digitação na busca e no chip\n | `digitacao-ui-1`\n\n | clique (5,274 s)\n | `click-2`\n\n | drop (5,634 s)\n | `transitions-bigcasualpop`\n\n | tampa salta (6,573 s)\n | `wine-bottle-cork-pop` + `woosh-magic-10`\n\n | whips (7,512 e 9,390 s)\n | `woosh-14` e `woosh-16`\n\n | cards, tênis e palavras\n | `pop-6`, `pop-16`, `pop-1`, `pop-2`, `pop-3`\n\n | + vira check\n | `clique-3` + `sucesso-1`\n\n | sacola cai e pousa\n | `whoosh-curto-1` + `papel-cair-1`\n\n | logo (16,902 s)\n | `ping-boom-G5` (tonal em Sol, sobe 3 s e explode) + `whoosh-longo-1`\n\n- Cada efeito entra em `instante da ação − pico do arquivo`.\n\n- A música toca cheia, sem voz; depois do drop, os pops ficam em volume de cerca de 0,2 para não sumir sob o baixo.\n\n- **Final:** −14,0 LUFS, AAC a 256 kbps.\n\n## O que é \"humano\" neste vídeo\n\n- A câmera de mão treme de leve na abertura.\n\n- Tudo que flutua deriva com ruído suave; o logo gira e flutua até o fim.\n\n- Mão e botão afundam juntos no clique; a sacola amassa ao pousar."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"titulo": "A montagem no Remotion",
|
|
49
|
+
"texto": "| \n\n | Arquivo\n | O que faz\n\n | `ApresentandoClubeV3.tsx`\n | todos os tempos saem de três constantes da grade da música (`B` = 0,4695 s, `BAR` e `DROP`); cada ato é um componente (`CenaCelular`, `CenaTunel`, `CenaEstudio`, `CenaFrase`, `CenaSacola`, `CenaLogo`); as tabelas `T` (produtos), `TUNEL`, `DECO` e `BUSCA` concentram o que muda de uma loja para outra\n\n | funções portadas do AE\n | `mola()` (Overshoot), `quique()` (Bounce Back), `molaFisica()` (easing4), `suaveAleatorio()` (smoothRandom), `tremor()` (biasedWiggle), `FiltroWhip` (aberração cromática), cursor de FastBlink e `rnd()` de semente fixa, para o render sair sempre igual\n\n | `recortar.py`\n | recorta as fotos do catálogo com rembg e grava nome, marca, preço, selo HOT e proporção de cada tênis em `img/tenis/info.json`\n\n | `gerados/*.json`\n | o prompt e os parâmetros de cada imagem gerada\n\n | `montar_trilha.py`\n | alinha a faixa original com a introdução por correlação, emenda em 7,512 s com cruzamento de 30 ms, abafa a música com passa-baixa de 900 Hz no logo, põe o cello em Sol e faz o fade de 18,6 a 20 s\n\n- **Monte a pasta:** ponha `src/` e `public/` do pacote num projeto Remotion (ou use o `package.json` do pacote e rode `npm i`).\n\n- **Registre a composição** no seu `Root.tsx`: `<Composition id=\"ApresentandoClubeV3\" component={ApresentandoClubeV3} fps={30} width={1080} height={1920} durationInFrames={Math.round(APRESENTANDO_CLUBE_V3_SEC * 30)} />`, importando os dois de `./clube-apresentando/ApresentandoClubeV3`.\n\n- **Som:** escolha a sua música, monte a introdução e rode o `montar_trilha.py` com os caminhos dela no topo; ele grava `trilha-v3.wav`, que vai para `public/clube-v3/audio/trilha.wav`. Ponha em `public/clube-v3/sfx/` os efeitos que ficaram fora, com os mesmos nomes. Se a música tiver outro BPM, troque `B` no `.tsx`: tudo se move junto.\n\n- **Ver:** `npx remotion studio`.\n\n- **Rascunho rápido:** `npx remotion render ApresentandoClubeV3 out/rascunho.mp4 --scale=0.5`, depois folhas de contato e quadros cheios nos momentos críticos (`npx remotion still … --frame=N`).\n\n- **Final:** `npx remotion render ApresentandoClubeV3 out/bruto.mp4 --crf=16` e a finalização do `tutorial/04-finalizacao-proximo-e-erros.md`: conversão para faixa de TV em `yuv420p`, ganho para −14,0 LUFS, AAC e a etiqueta BT.709 com `h264_metadata`.\n\n**Pegadinhas:** o Remotion sai em `yuvj420p` sem etiqueta, e as cores lavam no Instagram sem a conversão. Converta todo o áudio para 48 kHz antes de correlacionar (com taxas diferentes, a correlação deu 0,15 e um ponto errado). Medir a linha de texto mais longa: a 96 px, com a câmera a 1,4×, \"Clube dos Sneakers\" cortava nas bordas (foi para 76 px)."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"titulo": "As decisões de direção",
|
|
53
|
+
"texto": "- **Mostrar o produto do jeito que o cliente chega a ele:** celular → busca → caixa → vitrine → frase → sacola → logo.\n\n- **Tudo é real:** a home do site recriada dentro do celular, os cards do túnel com fotos, nomes e preços do catálogo, o texto do banner da loja e os tokens tirados do CSS (fonte, selo HOT, azul do cupom, sombra, curva).\n\n- **Forma que vira a próxima.** O header do celular vira a pílula de busca do túnel sem salto; o botão infla e vira o estúdio; o card vira o chip da frase; o monograma da sacola abre o logo num reveal circular.\n\n- **A música manda no tempo.** Mergulho no respiro da voz (2,8 s), clique no silêncio antes do drop (5,274 s), drop no botão que infla (5,634 s), whips nas cabeças de compasso (7,512 e 9,390 s), check na batida (12,676 s) e logo numa cabeça de compasso (16,902 s).\n\n- **Profundidade de verdade:** túnel com `perspective`, quem passa rente à câmera desfoca, as decorações do estúdio têm paralaxe e os whips ganham desfoque direcional e aberração cromática proporcionais à velocidade.\n\n- **As expressões do After Effects viraram funções**, então a mola, o quique, a deriva e o tremor de câmera de mão saem iguais aos da biblioteca.\n\n- **O fecho repete a abertura:** teclas de vidro saltam do logo e o nome é digitado letra a letra de novo.\n\n- **Um som por ação**, com o pico no instante do evento; depois do drop, os pops subiram para não sumir sob o baixo.\n\nDetalhes de tokens, curvas e efeitos: estilo.md. Cenas por tempo: roteiro.md. Para fazer um vídeo no mesmo método com a sua loja ou produto: 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 e v2\n | 10 s: logo, nome, frase, busca, card do produto e grade; o clique em 5,274 s e a introdução da trilha aprovados aqui seguiram para a v3\n\n | **v3**\n | aprovada: 20 s em 6 atos, com celular na mão, túnel 3D, estúdio, whips, chip da frase, sacola e logo em gradiente. Antes da entrega, uma IA ouviu o vídeo e apontou três falhas, todas corrigidas: pops inaudíveis, queda brusca de volume no logo e sombras soltas"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"pacote": [
|
|
61
|
+
{
|
|
62
|
+
"pasta": "projeto/",
|
|
63
|
+
"conteudo": "`src/clube-apresentando/ApresentandoClubeV3.tsx` (o vídeo inteiro), `public/clube-v3/` com `img/` (mão, celular, caixa, tampa, sacola, esferas, cubo, banner, 14 recortes de tênis e emojis 3D), `logos/` (monograma CDS), `marcas/` (Nike, Jordan, adidas, New Balance e On), `gerados/` (os prompts das imagens em JSON), `recortar.py` e `sfx/` (os 20 efeitos da biblioteca nivelada que o vídeo usa); e `package.json`, `remotion.config.ts` e `tsconfig.json`"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"pasta": "audio/",
|
|
67
|
+
"conteudo": "`montar_trilha.py`, que emenda o remix da introdução com a faixa original, abafa a música no logo e põe o cello em Sol"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"pasta": "referencias/",
|
|
71
|
+
"conteudo": "`linha-do-tempo-quadro-a-quadro.md`, `tutorial/` (o método em 5 partes: atos, componentes com valores, som, finalização e erros), `estudo-da-referencia.md`, `guia-apple-style.md`, `sound-design-de-referencia.md`, `links.md` e `fora-do-pacote.md`"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"pasta": "render.mp4",
|
|
75
|
+
"conteudo": "o vídeo final (v3)"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"pasta": "ApresentandoClubeV3.tsx",
|
|
79
|
+
"conteudo": "todos os tempos saem de três constantes da grade da música (`B` = 0,4695 s, `BAR` e `DROP`); cada ato é um componente (`CenaCelular`, `CenaTunel`, `CenaEstudio`, `CenaFrase`, `CenaSacola`, `CenaLogo`); as tabelas `T` (produtos), `TUNEL`, `DECO` e `BUSCA` concentram o que muda de uma loja para outra"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"pasta": "recortar.py",
|
|
83
|
+
"conteudo": "recorta as fotos do catálogo com rembg e grava nome, marca, preço, selo HOT e proporção de cada tênis em `img/tenis/info.json`"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"pasta": "gerados/*.json",
|
|
87
|
+
"conteudo": "o prompt e os parâmetros de cada imagem gerada"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"pasta": "montar_trilha.py",
|
|
91
|
+
"conteudo": "alinha a faixa original com a introdução por correlação, emenda em 7,512 s com cruzamento de 30 ms, abafa a música com passa-baixa de 900 Hz no logo, põe o cello em Sol e faz o fade de 18,6 a 20 s"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"prompt": "Quero um vídeo de apresentação no mesmo método do projeto \"Apresentando o Clube dos Sneakers\", que está em 07-videos/projetos/apresentando-clube/, com a minha loja ou produto.\n\nLoja, marca ou produto: {{MARCA}}\nSite oficial (para tirar fonte, cores, selos, botões, header e textos reais): {{SITE}}\nCatálogo ou fotos dos produtos, com nome e preço verdadeiros: {{PRODUTOS}}\nA frase que o vídeo apresenta: {{FRASE}}\nEmbalagem e sacola da marca (fotos, ou eu autorizo gerar com o logo): {{EMBALAGEM}}\nMúsica (de preferência com um drop marcado): {{MUSICA}}\nDuração: {{DURACAO}} (a referência tem 20 s) · Formato: {{FORMATO}} (a referência é 1080×1920, 30 qps)\n(Se algum desses estiver vazio ou com as chaves, me pergunte antes de começar.)\n\n1. Estude o projeto antes de propor qualquer coisa. Leia LEIA-ME.md, estilo.md e roteiro.md e depois referencias/tutorial/, na ordem das partes. Abra projeto/src/clube-apresentando/ApresentandoClubeV3.tsx e veja como B, BAR e DROP comandam todos os tempos, as tabelas T, TUNEL, DECO e BUSCA, as funções mola, quique, molaFisica, suaveAleatorio, tremor e FiltroWhip, a homografia da tela do celular e o tunelPonto(). Leia também audio/montar_trilha.py. Me explique em poucas linhas o que você vai reaproveitar.\n\n2. Mapeie os 6 atos no meu assunto antes de animar: o que é o celular, o que é a busca, que objeto se abre como a caixa, quais produtos entram nas estações, como a frase vira chip e o que faz o papel da sacola. Me mostre a tabela e espere meu ok.\n\n3. Tire a identidade do site, não da imaginação: abra a loja no navegador e leia fonte, cores, selos, botões, header, sombra e curva com getComputedStyle e no CSS. A paleta Apple entra só no texto secundário, no check e no logo.\n\n4. Use produtos reais: recorte as fotos do meu catálogo com o recortar.py e mantenha nome e preço verdadeiros. Gere só o que é da marca (embalagem, sacola, objeto de cena na cor da marca), com o logo como referência; a mão com o celular, as esferas e o cubo do pacote servem para qualquer marca.\n\n5. Monte a trilha primeiro e meça a grade: BPM, drop, respiros e silêncios da introdução. O mergulho cai num respiro, o clique no silêncio antes do drop, o drop no botão que infla, os whips nas cabeças de compasso e o logo numa cabeça de compasso com um tonal no tom da música. Adapte o montar_trilha.py para emendar a introdução com a faixa original.\n\n6. Construa copiando o .tsx, sem editar o original: troque T, TUNEL, DECO, BUSCA, os textos, os tokens e B e DROP. Mantenha cada passagem como forma que vira a próxima (header → pílula, botão → estúdio, card → chip, sacola → logo), o rnd() de semente fixa e as sombras de contato.\n\n7. Um efeito por ação, com o pico no instante do evento: tecla por letra, whoosh no mergulho, clique, golpe no drop, rolha na tampa, whoosh nos whips, pop em cada card e tênis, clique e sucesso no check, papel na sacola e tonal no logo. Depois do drop, confira se os pops não somem sob o baixo.\n\n8. Revise antes do render final: rascunho em meia escala, folhas de contato e quadros cheios nos momentos críticos. Confira que nenhum texto sai do quadro, que o mergulho não deixa fantasma, que cada card fica legível ao menos 0,3 s antes do whip seguinte e que o logo lê certo no tamanho do celular. Peça a uma IA que ouça o vídeo e aponte onde o som não bate com a imagem, e confira os tempos que ela der nos quadros antes de mexer.\n\n9. Render final com --crf=16, conversão de cor para yuv420p em faixa de TV com a etiqueta BT.709 e áudio a −14 LUFS. Entregue o MP4, o .tsx e uma anotação do que mudou em relação à referência.",
|
|
95
|
+
"campos": [
|
|
96
|
+
"DURACAO",
|
|
97
|
+
"EMBALAGEM",
|
|
98
|
+
"FORMATO",
|
|
99
|
+
"FRASE",
|
|
100
|
+
"MARCA",
|
|
101
|
+
"MUSICA",
|
|
102
|
+
"PRODUTOS",
|
|
103
|
+
"SITE"
|
|
104
|
+
],
|
|
105
|
+
"fonte": {
|
|
106
|
+
"nome": "Clube do Motion",
|
|
107
|
+
"url": "https://clubedomotion.com/projeto/?id=apresentando-clube",
|
|
108
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "clube-bluevisa",
|
|
3
|
+
"titulo": "Vous prenez l'avion",
|
|
4
|
+
"categoria": "saas",
|
|
5
|
+
"resumo": "anúncio de 15 s, horizontal e em francês, da BlueVisa, empresa real de expatriação com destinos em Maurício, Dubai e Paraguai. A história cabe numa frase: você embarca e a empresa cuida do resto. Um bilhete é carimbado, o avião decola e pinta a tela de azul, a mala cai e o dossiê se resolve linha por linha, a câmera mergulha na etiqueta da mala e abre nas fotos dos três destinos, cada uma com um carimbo de visto, e os cartões dos destinos se fecham no logo. É uma recriação do \"Travel visa service promo\" de @thismacapital no prompt-motion.com, feito com o Claude Opus 5.5 a partir do prompt genérico de showreel. A nossa versão vestiu a identidade real do site (logo, fontes, azul e fotos oficiais), trocou o cartão que mudava seis vezes por um painel de dossiê, pôs uma música real cortada na batida e um som em cada elemento. Feito no HyperFrames.",
|
|
6
|
+
"indicado": "empresa de serviços (vistos, mudança, viagens, consultoria) que quer mostrar um processo resolvido de ponta a ponta; anúncio de marca com fotos reais de destinos ou produtos.",
|
|
7
|
+
"estilo": [
|
|
8
|
+
"anúncio de serviço",
|
|
9
|
+
"identidade de marca real",
|
|
10
|
+
"azul e branco",
|
|
11
|
+
"carimbo",
|
|
12
|
+
"painel de status",
|
|
13
|
+
"fotos com ambiente",
|
|
14
|
+
"sincronizado na batida"
|
|
15
|
+
],
|
|
16
|
+
"ficha": {
|
|
17
|
+
"formato": "1920×1080, 60 qps, 16:9",
|
|
18
|
+
"duracao": "15,0 s (900 quadros), sem narração; textos em francês",
|
|
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
|
+
"ElevenLabs"
|
|
28
|
+
],
|
|
29
|
+
"ficha_tecnica": {
|
|
30
|
+
"Duração": "15,0 s (900 quadros), sem narração; textos em francês",
|
|
31
|
+
"Formato": "1920×1080, 60 qps, 16:9",
|
|
32
|
+
"Ferramenta": "HyperFrames (HTML + GSAP numa timeline só, com MotionPathPlugin)",
|
|
33
|
+
"Desfoque de movimento": "render a 240 qps e `tmix=frames=4` para 60 qps",
|
|
34
|
+
"Trilha": "\"Adventure of a Lifetime\", Coldplay, emendada (31,60–39,13 s + 45,49 s em diante), 111 BPM; drop em 8,60 s",
|
|
35
|
+
"Som": "65 efeitos, 3 ambiências nas fotos e 2 Ping Boom em lá; −14,2 LUFS integrado, pico −1,0 dBTP",
|
|
36
|
+
"Revisão": "nenhum salto de quadro, nenhum quadro vazio, nenhum trecho de 20 quadros parado",
|
|
37
|
+
"Referência": "\"Travel visa service promo\", @thismacapital, prompt-motion.com"
|
|
38
|
+
},
|
|
39
|
+
"etapas": [
|
|
40
|
+
{
|
|
41
|
+
"titulo": "O roteiro",
|
|
42
|
+
"texto": "**Resumo:** o anúncio não tem narração; o roteiro é a sequência de seis cenas, com os tempos da timeline e o texto exato da tela, em francês, como no original. A ideia que amarra tudo: o cliente só precisa reservar o voo, e a empresa resolve o resto. Os cortes caem nos tempos fortes da música (111 BPM).\n\n## De onde veio a estrutura\n\nO prompt do original é o genérico de showreel (\"um vídeo de motion de 15 segundos que mostre o motion designer incrível que você é… vá com tudo\"). O assunto, a marca e as fotos o autor entregou por fora do prompt. A nossa versão manteve a ordem das ideias do original (bilhete, azul, mala e dossiê, destinos, três destinos, logo) e mudou como cada uma é contada.\n\n## Cenas por tempo\n\n | \n\n | #\n | Tempo (s)\n | Texto na tela\n | O que acontece\n\n | 1\n | 0–2,16\n | \"Votre seule mission :\" (cinza) / \"Réservez votre vol.\" · bilhete \"CARTE D'EMBARQUEMENT\", \"PAR Paris → MRU Maurice\", \"PASSAGER VOUS\", \"SIÈGE 1A\", \"PORTE B7\", \"HEURE 10:40\" · carimbo \"RÉSERVÉ\"\n | o título sobe por máscara; o bilhete entra girando em 3D e assenta; o painel de letras rola até M-R-U; **1,08 s: carimbo \"RÉSERVÉ\"** com tremida; em 1,30 s o avião do bilhete decola, faz uma curva e a tela se enche de azul a partir dele\n\n | 2\n | 2,16–4,30\n | \"C'est tout.\" · \"On s'occupe du reste.\"\n | o avião passa numa órbita pontilhada; \"C'est tout.\" entra letra a letra; \"On s'occupe du reste.\" com uma caixa branca atrás de \"du reste.\"; a caixa cresce e vira o fundo claro da cena seguinte\n\n | 3\n | 4,30–8,60\n | \"Posez vos valises.\" / \"Tout est déjà lancé.\" · etiqueta \"MRU\" · \"Votre dossier\" · \"Île Maurice · installation clef en main\" · \"Titre de séjour · Approuvé\", \"Société · Immatriculée\", \"Compte bancaire · Ouvert\", \"Assurance santé · Active\", \"Logement · Clés prêtes\", \"Visas famille · Délivrés\" · \"0 … 6 / 6\" · \"Tout est réglé.\" · \"Bienvenue chez vous.\"\n | **4,30 s: a mala cai** por cima da transição, achata e assenta; a etiqueta balança; o painel do dossiê entra e cada linha passa de \"En cours\" para check em 4,84 · 5,36 · 5,90 · 6,44 · 6,98 · 7,50 s, com barra e contador subindo; a faixa azul \"Tout est réglé. Bienvenue chez vous.\" sobe\n\n | 4\n | 8,06–11,84\n | \"Maurice\" · \"Dubaï\" · \"Paraguay\" · \"Visa · Société · Banque\" · coordenadas e \"01 / 03\" … \"03 / 03\" · carimbos \"VISA APPROUVÉ\"\n | a câmera mergulha na etiqueta MRU e **no drop (8,60 s)** a foto de Maurício abre dela; Dubai em 9,68 s e Paraguai em 10,76 s, trocadas por listras azuis da marca; cada foto com nome grande letra por letra, HUD com a silhueta do país, Ken Burns e um carimbo de visto na batida do meio\n\n | 5\n | 11,84–12,90\n | \"Une équipe. Trois destinations.\" · \"Maurice / Océan Indien\", \"Dubaï / Émirats arabes unis\", \"Paraguay / Amérique du Sud\"\n | a foto do Paraguai encolhe e vira o terceiro cartão, e o nome grande encolhe até a legenda; os outros dois cartões entram deslizando da esquerda\n\n | 6\n | 12,36–15,0\n | logo BlueVisa · \"Vous prenez l'avion. On s'occupe du reste.\" · \"Maurice · Dubaï · Paraguay\" · \"bluevisa.com\"\n | os cartões laterais se escondem atrás do central, que fecha num círculo azul; **12,90 s: o símbolo do logo nasce desse círculo** com dois anéis; a palavra sai de trás do símbolo; o slogan entra palavra por palavra, depois os destinos e o endereço; um brilho passa no logo e a câmera empurra até o fim\n\n## Momentos para a trilha\n\n- 0–8,60 s: introdução da faixa mais alta, porque o riff do clipe é mais baixo que o refrão.\n\n- 1,08 · 4,30 · 8,60 · 12,90 s: impactos (carimbo, mala, drop, logo), com a música abaixando 18% em cada um.\n\n- **8,60 s: drop** no mergulho da etiqueta, com Ping Boom em lá.\n\n- 8,55–12,10 s: ambiência de cada destino sob a música (mar, cidade, água).\n\n- 12,90 s: segundo Ping Boom no nascimento do logo; fade a partir de 14,1 s."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"titulo": "A identidade visual",
|
|
46
|
+
"texto": "**Resumo:** identidade real do site da BlueVisa: azul `#06A0F7`, fundo claro azulado, tinta azul-marinho, Plus Jakarta Sans pesada nos títulos e Inter na interface, logo e fotos oficiais. Movimento por GSAP numa timeline só, com cortes nos tempos fortes, carimbo como gesto da marca, câmera que deriva o tempo todo e mergulha num ponto. Números tirados do `index.html`, do `mixar.py` e dos aprendizados do projeto.\n\n## Cores\n\n | \n\n | Token\n | Hex\n | Papel\n\n | Azul\n | `#06A0F7`\n | marca, fundo da cena 2, check, contador completo\n\n | Variações\n | `#33A7F7`, `#66BDF9`, `#0580C6`, `#0586D6`\n | listras, brilhos, escuros\n\n | Fundo\n | `#F5F9FD`, claro `#E6F4FE`\n | fundo das cenas claras\n\n | Tinta\n | `#0F172A`; wordmark `#101E28`\n | títulos, bilhete, código de barras\n\n | Cinza\n | `#64748B`\n | texto secundário e a primeira linha do título\n\n## Fontes\n\n | \n\n | Uso\n | Fonte\n\n | Títulos e carimbos\n | Plus Jakarta Sans 800, tracking −0,045 em (woff2 do próprio site)\n\n | Interface, status, coordenadas\n | Inter (woff2 do próprio site)\n\nRegra da casa aplicada: nada de rótulo pequeno acima do título. O \"VOTRE SEULE MISSION\" do original virou a primeira linha do próprio título, em cinza.\n\n## Componentes\n\n | \n\n | Peça\n | Como é\n\n | Bilhete de embarque\n | \"CARTE D'EMBARQUEMENT\", PAR → MRU, passageiro, assento, portão e hora; código de barras gerado por hash; entra girando em 3D e assenta\n\n | Painel de letras\n | cada letra é uma coluna de 7 caracteres que rola até o destino (`power3.out`, 0,5–0,64 s, defasagem de 0,05 s), com desfoque de 3 px que some\n\n | Carimbo\n | escala 2,1–2,3 → 0,94–0,95 em 0,14–0,16 s (`power4.in`), depois `elastic.out(1, .45–.5)` até 1; anel de tinta que se abre; tremida de 6 px no que recebe o carimbo; textura de tinta por `feTurbulence` + `feColorMatrix` como máscara\n\n | Carimbo de visto\n | anel duplo em SVG com \"PAÍS · VISA APPROUVÉ · BLUEVISA ·\" em volta, o código do aeroporto no centro e a data\n\n | Pílula que vira fundo\n | a caixa branca de \"du reste.\" é medida uma vez e um retângulo cresce dali até cobrir a tela em 0,36 s (`expo.in`)\n\n | Mala\n | cai com gravidade (0,3 s, `power2.in`), achata a 109% × 88% no pouso e volta com `elastic.out`; dois anéis no chão; a etiqueta balança como pêndulo amortecido\n\n | Dossiê\n | \"Votre dossier\" com seis linhas (Titre de séjour, Société, Compte bancaire, Assurance santé, Logement, Visas famille), ícone de linha, \"En cours\" com spinner que vira check e status; foco que desliza 66 px por linha; barra e contador \"x / 6\"\n\n | Fotos dos destinos\n | Ken Burns de 1,2 → 1,06 com deriva lateral, nome grande letra por letra, HUD com silhueta do país, coordenadas e \"01 / 03\", e listras azuis da marca cobrindo a troca de foto\n\n | Cartões\n | `clip-path: inset(... round 30px)` do quadro inteiro até o cartão; o nome grande encolhe até virar a legenda\n\n | Logo\n | o cartão central fecha num círculo de 140 px no lugar do símbolo; dois anéis; a palavra sai de trás do símbolo por máscara; brilho que passa no wordmark\n\n## Câmera\n\n- **Deriva contínua:** x ±5 px (3,1 s), y ±4 px (2,3 s), rotação ±0,12° (4,4 s), em senoide, o vídeo inteiro.\n\n- **Empurrões por cena** de 3,5 a 4,5%.\n\n- **Mergulho num ponto:** com `transform-origin: 0 0`, `x = 960 − s·cx` e `y = 540 − s·cy`; o mesmo foco nas duas pontas do tween mantém o alvo parado no centro. Na etiqueta: pan até ela em escala 1,3 (0,26 s, `power2.inOut`) e depois zoom até 6,5 (0,3 s, `power3.in`), com a foto abrindo de um retângulo de 110×70 px.\n\n## Render\n\n240 qps no HyperFrames (3 workers, cerca de 7 min) e `tmix=frames=4` para 60 qps.\n\n## Trilha\n\n | \n\n | Item\n | Valor\n\n | Música\n | \"Adventure of a Lifetime\", Coldplay, versão do clipe\n\n | Emenda\n | 31,60–39,13 s + 45,49 s em diante, crossfade de 30 ms, as duas pontas no 3º tempo do compasso (pula a cena e o ruído do clipe)\n\n | Tempo\n | 111 BPM, Lá menor; tempos fortes em 0 · 2,16 · 4,30 · 6,44 · 8,60 · 10,76 · 12,90 s\n\n | Drop\n | 8,60 s, junto do mergulho na etiqueta\n\n | Dinâmica\n | introdução +5,6 dB até o drop (o riff do clipe é ~10 dB mais baixo que o refrão); música 18% mais baixa nos impactos de 1,08, 4,30, 8,60 e 12,90 s; fade de saída a partir de 14,1 s\n\n## Sound design e mix\n\n | \n\n | Ação na tela\n | Efeito\n\n | título sobe, troca de frase\n | whoosh curto\n\n | bilhete pousa, painel entra\n | papel deslizando\n\n | letras do painel rolam\n | contador rolando + cliques subindo de tom\n\n | carimbo\n | carimbo + impacto com passa-baixa\n\n | avião decola, azul inunda\n | whoosh longo, whoosh grave\n\n | pílula vira o fundo\n | riser curto\n\n | mala cai\n | whoosh, impacto e papel caindo\n\n | sublinhado\n | caneta\n\n | cada check do dossiê\n | pop subindo 0, 2, 3, 5, 7 e 10 semitons (pentatônica de lá menor) + clique\n\n | \"Tout est réglé.\"\n | sucesso\n\n | mergulho e drop\n | whoosh longo + impacto + Ping Boom em lá\n\n | cada foto\n | whoosh curto e carimbo variando ±2 semitons; ambiência do lugar\n\n | cartões, logo\n | whoosh, papel deslizando, impacto, pop, sinos e Ping Boom em lá\n\n- 65 efeitos em `evento − pico`, efeitos ×1,9; ambiências a 0,40–0,55 (×1,5), sobre arquivos de −24 LUFS; água com passa-baixa de 1,8 kHz.\n\n- **Equilíbrio medido por trilha separada:** música −19,7 e efeitos −19,6 LUFS antes do loudnorm.\n\n- **Final:** `loudnorm` em duas passagens; medido −14,2 LUFS e −1,0 dBTP.\n\n## O que é \"humano\" neste vídeo\n\n- O bilhete treme quando leva o carimbo e volta com mola.\n\n- A mala achata no pouso e a etiqueta continua balançando.\n\n- O spinner de cada linha gira até o check e o ícone pulsa quando a etapa termina.\n\n- O logo chega girando, passa um pouco do tamanho e flutua até o último quadro."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"titulo": "A montagem no HyperFrames",
|
|
50
|
+
"texto": "| \n\n | Arquivo\n | O que faz\n\n | `hf/index.html`\n | monta o DOM (código de barras do bilhete, painel de letras MRU, carimbos de visto em SVG com textura de tinta, linhas do dossiê, cartões) e uma timeline GSAP só, dividida em seis cenas com o tempo de cada uma no comentário\n\n | `render/comparar.sh`\n | gera a comparação para o celular: original em cima, a nossa embaixo, 1080×1216, com o áudio da nossa\n\n | `audio/mixar.py`\n | lê `splice.wav`, abaixa a música 18% nos impactos e sobe a introdução até o drop, põe cada efeito em `evento − pico` (com tom, corte, fade e passa-baixa por evento), soma as ambiências e os Ping Boom e normaliza em duas passagens. `python mixar.py mus` ou `sfx` exporta só uma trilha, para medir\n\n- **Junte as pastas:** copie `audio/` para dentro de `projeto/`.\n\n- **Ver:** dentro de `hf/`, rode `npm run dev` (o `package.json` chama o HyperFrames 0.8.144) e abra o endereço que ele imprimir. O GSAP é carregado da CDN do jsDelivr, então precisa de internet.\n\n- **Som:** no `audio/mixar.py`, aponte `NIV` para `audio/sfx/nivelados`, `PREM` para `audio/sfx/premium` e `TON` para `audio/sfx/tonais`, e rode `python audio/mixar.py`. Só precisa de Python e ffmpeg.\n\n- **Render:** `npx hyperframes@0.8.144 render hf --fps 240 --workers 3 --output render/bruto-240.mp4` (cerca de 7 min no original). Junte com o áudio:\n\nffmpeg -i render/bruto-240.mp4 -i audio/mix.wav -map 0:v -map 1:a -vf \"tmix=frames=4:weights=1 1 1 1,fps=60,format=yuv420p\" -c:v libx264 -crf 16 -c:a aac -b:a 256k -shortest render/bluevisa.mp4\n\n- **Comparação:** ajuste o caminho do original no `render/comparar.sh` para `referencias/original/` e rode `sh render/comparar.sh`.\n\n**Pegadinhas:** ao animar `clip-path: inset()`, nunca deixe a esquerda igual à direita (nem o topo igual à base): o navegador encurta a string e o GSAP interpola valores desalinhados, e o cartão \"explode\"; some 0,1 a 0,3 px. Para a câmera ir até um ponto sem o ponto escorregar, use `transform-origin: 0 0` e o mesmo foco nas duas pontas do tween. A faixa baixada do clipe oficial tem cena e ruído antes da música; a emenda pula esse trecho."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"titulo": "As decisões de direção",
|
|
54
|
+
"texto": "- **A identidade sai do site.** Logo, fontes woff2, o azul `#06A0F7` contado no CSS e as fotos `-large` das páginas internas vieram do site real da BlueVisa.\n\n- **O gesto do serviço vira transição.** O carimbo é o verbo do negócio (visto aprovado): \"RÉSERVÉ\" no bilhete e um carimbo circular \"VISA APPROUVÉ\" em cada destino, sempre na batida do meio.\n\n- **Um painel no lugar do cartão repetido.** O dossiê mostra as seis etapas ao mesmo tempo; o foco desliza de linha em linha, cada status vira check, e a barra e o contador sobem a cada batida até \"6/6\".\n\n- **Cada cena nasce da anterior:** o avião do bilhete decola e pinta a tela de azul; a pílula de \"du reste.\" cresce e vira o fundo; a mala cai por cima; a câmera mergulha na etiqueta MRU e a foto de Maurício abre dela no drop; a foto do Paraguai encolhe e vira o terceiro cartão; os cartões se fecham no círculo do símbolo do logo.\n\n- **Câmera nunca parada:** deriva lenta em x, y e rotação o tempo todo, mais empurrões de 3,5 a 4,5% por cena.\n\n- **Painel de aeroporto no bilhete:** as letras rolam até M-R-U em vez de embaralhar.\n\n- **Cada aprovação é uma nota:** os seis checks usam o mesmo pop subindo pela pentatônica do tom da música.\n\n- **Foto de lugar tem som de lugar:** gaivotas e mar em Maurício, cidade em Dubai, água caindo em Iguaçu.\n\n- **Música real cortada na batida:** cortes nos tempos fortes (0 · 2,16 · 4,30 · 6,44 · 8,60 · 10,76 · 12,90 s) e drop no mergulho da etiqueta.\n\nDetalhes de cores, curvas e som: estilo.md. Cenas por tempo e texto na tela: roteiro.md. Para fazer um anúncio no mesmo estilo com a sua marca: PROMPT.md."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"titulo": "As versões até o final",
|
|
58
|
+
"texto": "| \n\n | Versão\n | O que mudou\n\n | v1\n | a detecção achou um salto em 4,22 s, quando a pílula sumia por cima da mala; o render a 120 qps com `tmix=2` deixava imagem dupla no nome que encolhe\n\n | **final**\n | a cena da mala subiu para cima do azul, render a 240 qps com `tmix=4`, mix medido em trilhas separadas (música −19,7 e efeitos −19,6 LUFS antes do loudnorm) e comparação lado a lado com o original"
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"pacote": [
|
|
62
|
+
{
|
|
63
|
+
"pasta": "projeto/",
|
|
64
|
+
"conteudo": "`hf/index.html` (a composição inteira), `hf/BRIEF.md`, `hf/hyperframes.json`, `hf/meta.json`, `hf/package.json`, `hf/assets/` (logo oficial e as partes do logo, fontes Plus Jakarta Sans e Inter em woff2, fotos oficiais de Dubai e Iguaçu, foto aérea de Le Morne, silhuetas dos três países em SVG) e `render/comparar.sh`"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"pasta": "audio/",
|
|
68
|
+
"conteudo": "`mixar.py` (a lista de efeitos com tempos), `splice.wav` (a música já emendada), o mix final, as trilhas separadas de música e de efeitos, as batidas medidas (`beats.npy`, `downs.npy`) e `sfx/` com os 34 arquivos usados (as três ambiências vêm só com os 6 s iniciais, que é o trecho que o script usa)"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"pasta": "referencias/",
|
|
72
|
+
"conteudo": "o vídeo original, o prompt original, as folhas de contato dele, o estudo (quadros do original, curvas de câmera medidas, capturas das imagens do site) e a comparação original × nossa (vídeo e folha lado a lado)"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"pasta": "render.mp4",
|
|
76
|
+
"conteudo": "o anúncio final"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"pasta": "hf/index.html",
|
|
80
|
+
"conteudo": "monta o DOM (código de barras do bilhete, painel de letras MRU, carimbos de visto em SVG com textura de tinta, linhas do dossiê, cartões) e uma timeline GSAP só, dividida em seis cenas com o tempo de cada uma no comentário"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"pasta": "render/comparar.sh",
|
|
84
|
+
"conteudo": "gera a comparação para o celular: original em cima, a nossa embaixo, 1080×1216, com o áudio da nossa"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"pasta": "audio/mixar.py",
|
|
88
|
+
"conteudo": "lê `splice.wav`, abaixa a música 18% nos impactos e sobe a introdução até o drop, põe cada efeito em `evento − pico` (com tom, corte, fade e passa-baixa por evento), soma as ambiências e os Ping Boom e normaliza em duas passagens. `python mixar.py mus` ou `sfx` exporta só uma trilha, para medir"
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"prompt": "Quero um anúncio curto do meu serviço no mesmo método do projeto \"Vous prenez l'avion\" (BlueVisa), que está em 07-videos/projetos/bluevisa/.\n\nMarca e serviço: {{SERVICO}}\nSite oficial (logo, fontes, cores, fotos): {{SITE}}\nA promessa em uma frase (como \"você embarca, a gente resolve o resto\"): {{PROMESSA}}\nEtapas que o cliente não precisa mais fazer: {{ETAPAS}}\nIdioma do texto na tela: {{IDIOMA}}\nDuração: {{DURACAO}} (a referência tem 15 s) · Formato: {{FORMATO}} (a referência é 1920×1080)\n(Se algum desses estiver vazio ou com as chaves, me pergunte antes de começar.)\n\n1. Estude o projeto antes de propor qualquer coisa. Leia LEIA-ME.md, estilo.md e roteiro.md, e veja o original em referencias/original/ e a comparação em referencias/comparacao/. Depois abra projeto/hf/index.html e entenda a timeline única, as seis cenas, o carimbo, o painel de letras, o dossiê, a câmera que mergulha num ponto e os cartões que viram o logo. Leia também audio/mixar.py. Me explique em poucas linhas o que você vai reaproveitar.\n\n2. Tire a identidade do site antes de animar: baixe o logo, o fonts.css com as fontes woff2, conte os hex mais usados no CSS compilado e pegue as fotos grandes das páginas internas. Nada de cor ou fonte inventada.\n\n3. Ache o gesto do meu serviço (o carimbo é o \"visto aprovado\" da BlueVisa; pode ser um check, uma assinatura, um selo, um pagamento) e use-o como transição recorrente, sempre na batida do meio da cena.\n\n4. Escreva o roteiro de cenas com tempo e texto exato da tela e me mostre antes de codar: abertura com a única tarefa do cliente, a promessa, o processo resolvido num painel (todas as etapas visíveis, foco que desliza, check a cada batida, contador até o total), os destinos, produtos ou casos com foto real, e o fecho no logo com o slogan. Nada de rótulo pequeno acima do título.\n\n5. Construa no HyperFrames copiando o projeto, sem editar o original. Mantenha: câmera com deriva contínua e empurrões por cena; mergulho num ponto com transform-origin 0 0 e o mesmo foco nas duas pontas do tween; cada cena nascendo de um elemento da anterior (pílula que vira fundo, foto que vira cartão, cartões que fecham no símbolo do logo); clip-path inset sem valores simétricos. Troque textos, fotos, cores, logo e o gesto.\n\n6. Trilha num subagente: música real das minhas playlists, medida com o beat_this, cortes nos tempos fortes e drop no maior gesto. Se a faixa vier de clipe, confira se não há cena ou ruído antes da música e emende no mesmo tempo do compasso. Um efeito por elemento em evento − pico; aprovações em sequência com o mesmo pop subindo pela pentatônica do tom; foto de lugar com o ambiente do lugar. Meça música e efeitos em trilhas separadas antes do loudnorm a −14 LUFS.\n\n7. Render a 240 qps e tmix=frames=4 para 60 qps. Depois procure quadro com salto (diferença 3 vezes maior que os vizinhos), quadro vazio e trecho parado. Revise com folhas a 4 qps e uma IA que assista com áudio, conferindo cada ponto nos quadros antes de mexer. Entregue o MP4, a composição editável e uma anotação.",
|
|
92
|
+
"campos": [
|
|
93
|
+
"DURACAO",
|
|
94
|
+
"ETAPAS",
|
|
95
|
+
"FORMATO",
|
|
96
|
+
"IDIOMA",
|
|
97
|
+
"PROMESSA",
|
|
98
|
+
"SERVICO",
|
|
99
|
+
"SITE"
|
|
100
|
+
],
|
|
101
|
+
"fonte": {
|
|
102
|
+
"nome": "Clube do Motion",
|
|
103
|
+
"url": "https://clubedomotion.com/projeto/?id=bluevisa",
|
|
104
|
+
"uso": "liberado pelo dono do Clube do Motion em 18/10/2026 (docs/permissoes/clube-do-motion.md)"
|
|
105
|
+
}
|
|
106
|
+
}
|