primocode 10.15.2 → 10.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/LICENSES/edit-ia-pro.txt +32 -0
  2. package/LICENSES/fontes-OFL.txt +476 -0
  3. package/LICENSES/hyperframes-Apache-2.0.txt +205 -0
  4. package/LICENSES/permanent-marker-Apache-2.0.txt +204 -0
  5. package/LICENSES/selfie-multiclass-Apache-2.0.txt +227 -0
  6. package/LICENSES/three-MIT.txt +23 -0
  7. package/LICENSES/video-use-MIT.txt +24 -0
  8. package/LICENSES/woven-sfx-CC0.txt +16 -0
  9. package/LICENSES/yunet-MIT.txt +21 -0
  10. package/README.md +2 -2
  11. package/bin/primocode.js +74 -9
  12. package/editor/LICENSE.md +11 -0
  13. package/editor/README.md +321 -0
  14. package/editor/SKILL.md +307 -0
  15. package/editor/THIRD_PARTY_NOTICES.md +228 -0
  16. package/editor/assets/baixar.json +591 -0
  17. package/editor/assets/fonts/anton/OFL.txt +93 -0
  18. package/editor/assets/fonts/caveat/OFL.txt +93 -0
  19. package/editor/assets/fonts/figtree/OFL.txt +93 -0
  20. package/editor/assets/fonts/fonts.json +10 -0
  21. package/editor/assets/fonts/montserrat/OFL.txt +93 -0
  22. package/editor/assets/fonts/permanentmarker/LICENSE.txt +202 -0
  23. package/editor/assets/models/SELFIE_MULTICLASS_LICENSE.txt +227 -0
  24. package/editor/assets/models/YUNET_LICENSE.txt +21 -0
  25. package/editor/assets/sfx/licencas/bass_drop.txt +32 -0
  26. package/editor/assets/sfx/licencas/cash.txt +76 -0
  27. package/editor/assets/sfx/licencas/charge.txt +31 -0
  28. package/editor/assets/sfx/licencas/click.txt +46 -0
  29. package/editor/assets/sfx/licencas/coin.txt +50 -0
  30. package/editor/assets/sfx/licencas/count.txt +47 -0
  31. package/editor/assets/sfx/licencas/data.txt +31 -0
  32. package/editor/assets/sfx/licencas/error.txt +32 -0
  33. package/editor/assets/sfx/licencas/flash.txt +31 -0
  34. package/editor/assets/sfx/licencas/gears.txt +82 -0
  35. package/editor/assets/sfx/licencas/keyboard.txt +48 -0
  36. package/editor/assets/sfx/licencas/metal_hit.txt +62 -0
  37. package/editor/assets/sfx/licencas/metal_riser.txt +61 -0
  38. package/editor/assets/sfx/licencas/mouse_click.txt +50 -0
  39. package/editor/assets/sfx/licencas/notification.txt +54 -0
  40. package/editor/assets/sfx/licencas/pop.txt +38 -0
  41. package/editor/assets/sfx/licencas/rewind.txt +32 -0
  42. package/editor/assets/sfx/licencas/rise.txt +46 -0
  43. package/editor/assets/sfx/licencas/sinteticos.txt +21 -0
  44. package/editor/assets/sfx/licencas/snap.txt +50 -0
  45. package/editor/assets/sfx/licencas/success.txt +40 -0
  46. package/editor/assets/sfx/licencas/synth_hit.txt +32 -0
  47. package/editor/assets/sfx/licencas/tick.txt +14 -0
  48. package/editor/assets/sfx/licencas/whoosh.txt +47 -0
  49. package/editor/assets/sfx/licencas/wind.txt +31 -0
  50. package/editor/assets/sfx/sfx.json +832 -0
  51. package/editor/assets/sfx/sfx_sinteticos.json +317 -0
  52. package/editor/assets/sfx/sfx_woven.json +387 -0
  53. package/editor/assets/sfx/woven/LICENCA.md +16 -0
  54. package/editor/fichas/briefing-do-video.md +45 -0
  55. package/editor/fichas/conferencia-da-amostra.md +56 -0
  56. package/editor/fichas/matriz-de-ganchos.csv +3 -0
  57. package/editor/fichas/padrao.json +16 -0
  58. package/editor/fichas/planilha-de-cenas.csv +4 -0
  59. package/editor/fichas/planilha-de-versoes.csv +4 -0
  60. package/editor/fichas/plano-em-blocos.md +32 -0
  61. package/editor/fichas/registro-de-materiais.json +27 -0
  62. package/editor/helpers/assets_ocr/ocr_vision.swift +41 -0
  63. package/editor/helpers/bordas_precisas.py +272 -0
  64. package/editor/helpers/camera_viva.py +426 -0
  65. package/editor/helpers/captions.py +601 -0
  66. package/editor/helpers/common.py +308 -0
  67. package/editor/helpers/compose_final.py +3555 -0
  68. package/editor/helpers/conferir_corte.py +234 -0
  69. package/editor/helpers/conferir_dados.py +405 -0
  70. package/editor/helpers/contact_sheet.py +282 -0
  71. package/editor/helpers/corte_por_onda.py +433 -0
  72. package/editor/helpers/corte_seco.py +595 -0
  73. package/editor/helpers/denoise.py +971 -0
  74. package/editor/helpers/efeitos.py +408 -0
  75. package/editor/helpers/efeitos_gerar.py +159 -0
  76. package/editor/helpers/elevenlabs_api.py +442 -0
  77. package/editor/helpers/face_layout.py +570 -0
  78. package/editor/helpers/fetch_images.py +423 -0
  79. package/editor/helpers/ganho_por_trecho.py +214 -0
  80. package/editor/helpers/gen_image.py +312 -0
  81. package/editor/helpers/gen_music.py +316 -0
  82. package/editor/helpers/gen_sfx.py +148 -0
  83. package/editor/helpers/grade.py +307 -0
  84. package/editor/helpers/icloud.py +119 -0
  85. package/editor/helpers/make_sfx.py +940 -0
  86. package/editor/helpers/matte.py +1342 -0
  87. package/editor/helpers/medir_referencia.py +2232 -0
  88. package/editor/helpers/mixar_trilha.py +354 -0
  89. package/editor/helpers/montar_corte.py +295 -0
  90. package/editor/helpers/motion/__init__.py +13 -0
  91. package/editor/helpers/motion/engine.py +1915 -0
  92. package/editor/helpers/motion/registry.py +510 -0
  93. package/editor/helpers/motion/render.py +665 -0
  94. package/editor/helpers/motion/templates/barra_progresso.py +370 -0
  95. package/editor/helpers/motion/templates/carimbo.py +132 -0
  96. package/editor/helpers/motion/templates/checklist.py +271 -0
  97. package/editor/helpers/motion/templates/comentario_cta.py +380 -0
  98. package/editor/helpers/motion/templates/contador.py +222 -0
  99. package/editor/helpers/motion/templates/destaque.py +263 -0
  100. package/editor/helpers/motion/templates/etiqueta_preco.py +461 -0
  101. package/editor/helpers/motion/templates/grafico_barras.py +510 -0
  102. package/editor/helpers/motion/templates/grafico_linha.py +462 -0
  103. package/editor/helpers/motion/templates/notificacao.py +266 -0
  104. package/editor/helpers/motion/templates/palavra_impacto.py +410 -0
  105. package/editor/helpers/motion/templates/passos.py +321 -0
  106. package/editor/helpers/motion/templates/riscado.py +298 -0
  107. package/editor/helpers/motion/templates/selo_garantia.py +150 -0
  108. package/editor/helpers/motion_render.py +241 -0
  109. package/editor/helpers/motion_sugerir.py +961 -0
  110. package/editor/helpers/noise_check.py +134 -0
  111. package/editor/helpers/pack_transcripts.py +223 -0
  112. package/editor/helpers/palavras_na_onda.py +176 -0
  113. package/editor/helpers/plano_sfx.py +839 -0
  114. package/editor/helpers/portao.py +427 -0
  115. package/editor/helpers/preview_server.py +1177 -0
  116. package/editor/helpers/rastrear_rosto.py +298 -0
  117. package/editor/helpers/render_cut.py +1256 -0
  118. package/editor/helpers/respiros.py +89 -0
  119. package/editor/helpers/sincronizar_cameras.py +571 -0
  120. package/editor/helpers/speech_regions.py +423 -0
  121. package/editor/helpers/style_catalog.json +231 -0
  122. package/editor/helpers/style_samples.py +246 -0
  123. package/editor/helpers/tela_verde.py +2113 -0
  124. package/editor/helpers/text_render.py +2059 -0
  125. package/editor/helpers/texto_na_tela.py +366 -0
  126. package/editor/helpers/timeline_view.py +292 -0
  127. package/editor/helpers/tira_de_quadros.py +113 -0
  128. package/editor/helpers/transcribe.py +734 -0
  129. package/editor/helpers/transcribe_batch.py +129 -0
  130. package/editor/helpers/trilhas.py +1146 -0
  131. package/editor/helpers/trilhas_humores.json +66 -0
  132. package/editor/helpers/valores.py +187 -0
  133. package/editor/helpers/verify_cut.py +820 -0
  134. package/editor/helpers/voice_levels.py +233 -0
  135. package/editor/helpers/voz_check.py +386 -0
  136. package/editor/helpers/voz_limpa.py +81 -0
  137. package/editor/helpers/watch_preview.py +372 -0
  138. package/editor/modelo-projeto/LEIA.md +402 -0
  139. package/editor/modelo-projeto/assets/fontes/OFL-Caveat.txt +93 -0
  140. package/editor/modelo-projeto/assets/fontes/OFL-JetBrainsMono.txt +93 -0
  141. package/editor/modelo-projeto/assets/fontes/OFL-Montserrat.txt +93 -0
  142. package/editor/modelo-projeto/assets/fontes/larguras.json +1 -0
  143. package/editor/modelo-projeto/assets/three/BufferGeometryUtils.js +1438 -0
  144. package/editor/modelo-projeto/assets/three/GLTFLoader.js +4895 -0
  145. package/editor/modelo-projeto/assets/three/LICENSE +21 -0
  146. package/editor/modelo-projeto/assets/three/ORIGEM.txt +17 -0
  147. package/editor/modelo-projeto/assets/three/RoomEnvironment.js +185 -0
  148. package/editor/modelo-projeto/assets/three/three.core.min.js +6 -0
  149. package/editor/modelo-projeto/assets/three/three.module.min.js +6 -0
  150. package/editor/modelo-projeto/build.py +4828 -0
  151. package/editor/modelo-projeto/compositions/cenas/2d/k2d_antes_depois.html +199 -0
  152. package/editor/modelo-projeto/compositions/cenas/2d/k2d_arquivo.html +232 -0
  153. package/editor/modelo-projeto/compositions/cenas/2d/k2d_busca.html +315 -0
  154. package/editor/modelo-projeto/compositions/cenas/2d/k2d_comando.html +304 -0
  155. package/editor/modelo-projeto/compositions/cenas/2d/k2d_conversa.html +217 -0
  156. package/editor/modelo-projeto/compositions/cenas/2d/k2d_esquema.html +289 -0
  157. package/editor/modelo-projeto/compositions/cenas/2d/k2d_medidor.html +249 -0
  158. package/editor/modelo-projeto/compositions/cenas/2d/k2d_notas.html +233 -0
  159. package/editor/modelo-projeto/compositions/cenas/3d/k3d_caminho.html +197 -0
  160. package/editor/modelo-projeto/compositions/cenas/3d/k3d_explodida.html +152 -0
  161. package/editor/modelo-projeto/compositions/cenas/3d/k3d_tela.html +167 -0
  162. package/editor/modelo-projeto/compositions/cenas/3d/k3d_volume.html +124 -0
  163. package/editor/modelo-projeto/compositions/cenas/3d/motor-three.js +728 -0
  164. package/editor/modelo-projeto/compositions/cenas/LEIA.md +177 -0
  165. package/editor/modelo-projeto/ferramentas/medir_fontes.py +65 -0
  166. package/editor/modelo-projeto/ferramentas/pessoa_recortada.py +176 -0
  167. package/editor/modelo-projeto/ferramentas/rastrear_maos.py +189 -0
  168. package/editor/modelo-projeto/hyperframes.json +12 -0
  169. package/editor/modelo-projeto/package.json +11 -0
  170. package/editor/modelo-projeto/projeto.json +16 -0
  171. package/editor/preview/app.css +1009 -0
  172. package/editor/preview/app.js +2122 -0
  173. package/editor/preview/index.html +307 -0
  174. package/editor/pyproject.toml +23 -0
  175. package/editor/references/3d.md +236 -0
  176. package/editor/references/animacao-catalogo.md +672 -0
  177. package/editor/references/animacao.md +498 -0
  178. package/editor/references/comandos.md +92 -0
  179. package/editor/references/corte-seco-como-funciona.md +50 -0
  180. package/editor/references/corte-seco.md +88 -0
  181. package/editor/references/corte.md +290 -0
  182. package/editor/references/direcao-por-blocos.md +218 -0
  183. package/editor/references/enquadramento.md +654 -0
  184. package/editor/references/estilos-prontos.md +355 -0
  185. package/editor/references/estudio.md +100 -0
  186. package/editor/references/exemplo-eventos.json +67 -0
  187. package/editor/references/lettering.md +252 -0
  188. package/editor/references/modelos.md +494 -0
  189. package/editor/references/phase2.md +1007 -0
  190. package/editor/references/referencia-aplicar.md +203 -0
  191. package/editor/references/referencia-medir.md +375 -0
  192. package/editor/references/revisao.md +335 -0
  193. package/editor/references/som-e-trilha.md +146 -0
  194. package/editor/references/tabela-de-sons.md +130 -0
  195. package/editor/references/variacoes.md +234 -0
  196. package/editor/uv.lock +1141 -0
  197. package/lib/act.js +38 -8
  198. package/lib/app-chat.js +97 -0
  199. package/lib/catalogo.js +7 -1
  200. package/lib/chamada-torta.js +81 -0
  201. package/lib/editor-pro.js +786 -0
  202. package/lib/entrega.js +58 -0
  203. package/lib/estudio/conferencia-visual.js +76 -0
  204. package/lib/estudio/diretor.js +6 -1
  205. package/lib/estudio/exportar.js +3 -1
  206. package/lib/estudio/gosto/tela.html +1349 -0
  207. package/lib/estudio/gosto.js +305 -0
  208. package/lib/estudio/index.js +12 -1
  209. package/lib/estudio/kit-ae/base.jsx +119 -13
  210. package/lib/estudio/kit-ae/cenas.jsx +47 -15
  211. package/lib/estudio/kit-ae/guarda.jsx +274 -0
  212. package/lib/estudio/kit-ae/primitivas.jsx +180 -24
  213. package/lib/estudio/maquina-diretor.js +70 -12
  214. package/lib/estudio/maquina-foto.js +177 -0
  215. package/lib/estudio/maquina-guarda.js +207 -0
  216. package/lib/estudio/maquina-layout.js +22 -1
  217. package/lib/estudio/maquina.js +64 -11
  218. package/lib/estudio/referencias.js +1 -1
  219. package/lib/estudio/visao/visao.swift +97 -0
  220. package/lib/estudio/visao.js +60 -0
  221. package/lib/headless.js +15 -3
  222. package/lib/local/cerebro.json +285 -7
  223. package/lib/local/motor.js +5 -2
  224. package/lib/memoria-usuario.js +164 -0
  225. package/lib/nuvem.js +33 -2
  226. package/lib/passagem.js +50 -0
  227. package/lib/perigo.js +19 -11
  228. package/lib/protecao.js +134 -0
  229. package/lib/repeticao.js +1 -1
  230. package/lib/sandbox.js +57 -9
  231. package/lib/titulo-conversa.js +46 -0
  232. package/lib/tools.js +23 -4
  233. package/lib/ui.js +2 -2
  234. package/package.json +3 -2
  235. package/skills/editar-meu-video/SKILL.md +6 -2
  236. package/skills/editar-video/SKILL.md +113 -0
  237. package/studio/pessoa.py +52 -0
  238. package/voz/primo_voz/__main__.py +55 -40
  239. package/voz/primo_voz/app.py +500 -4
  240. package/voz/primo_voz/chat.html +1773 -0
  241. package/voz/primo_voz/conversa.py +0 -26
  242. package/voz/primo_voz/hud.html +8 -2
  243. package/voz/primo_voz/hud.py +129 -5
  244. package/voz/primo_voz/identidade.py +1 -1
  245. package/voz/primo_voz/painel_dados.py +134 -0
@@ -0,0 +1,203 @@
1
+ # Aplicar referência
2
+
3
+ Você usa a leitura de um vídeo de referência para editar o vídeo do usuário com a mesma linguagem: quem ocupa a
4
+ tela e quando, o que faz cada virada, o ritmo, o jeito da legenda e do texto, as cores e o som na mesma medida. A
5
+ pessoa não é técnica. Ela quer que o vídeo dela "fique com a cara" daquele que ela gostou.
6
+
7
+ O conteúdo continua sendo dela: a fala, a oferta, o rosto, a marca, o jeito de falar. A referência orienta a forma.
8
+ Ela não entrega oferta, prova, imagem nem direito de uso.
9
+
10
+ ## Antes de começar
11
+
12
+ **O vídeo do usuário.** O corte aprovado. O estilo entra no plano em blocos e nas peças do projeto HyperFrames.
13
+
14
+ **A referência.** Três situações:
15
+
16
+ 1. **Já existe a pasta da medida** (`references/referencia-medir.md`): leia o `guia-de-estilo.md` (inclusive a
17
+ seção 8), o `regras-da-referencia.json`, o `trechos.csv` e o `leitura.md`. Pasta medida antes da troca de nome
18
+ tem `receita.json` no lugar do primeiro e `mapa.csv` no lugar do `trechos-medidos.csv` (o conteúdo é o mesmo),
19
+ e o `trechos.csv` dela pode ter colunas com outros nomes: leia pelo sentido. Se o arquivo da referência estiver
20
+ à mão, confira se é o mesmo (`shasum -a 256` contra o `sha256` do `regras-da-referencia.json`). Confira a
21
+ cobertura, os tempos e os limites das regras que interessam. Reabra só o que ficou `nao_visto`, o que está em
22
+ conflito, o que mudou ou a prova que falta para uma decisão. Refazer tudo sem motivo é desperdício.
23
+ 2. **Não dá para abrir a referência de novo:** diga que está trabalhando só em cima da leitura anterior. Não finja
24
+ que assistiu. O que era ESTIMADO continua estimado.
25
+ 3. **Não existe medida:** se a pessoa quer a extração completa antes, meça (`references/referencia-medir.md`).
26
+ Senão, assista o suficiente para entender a abertura, o desenvolvimento, as trocas de foco e o fechamento
27
+ (folha de quadros e tiras dos momentos que importam) e anote os intervalos que sustentam cada decisão.
28
+
29
+ Só imagens: dá para trazer composição, cor e tipografia aparente. Movimento, duração e transição não. Link
30
+ fechado: diga o que não deu para ver; pode trabalhar com a descrição da pessoa, marcada como descrição dela.
31
+
32
+ Não leia a transcrição que fica em `medidas/`: ela é da fala da referência e não serve para o vídeo do usuário.
33
+
34
+ ## Como falar com a pessoa
35
+
36
+ - Português simples, frases curtas, uma decisão por vez.
37
+ - Comece dizendo em 3 ou 4 linhas o que vai trazer e o que não vai. Exemplo:
38
+ > "Vou trazer o jeito de montar: você em tela cheia quando opina, a tela do app grande quando mostra, e você
39
+ > voltando num quadrinho. Também o ritmo (a imagem muda a cada 3 segundos) e a legenda de 2 palavras. Não vou
40
+ > usar a música nem as frases dela, e a cor de destaque vai ser a da sua marca. Primeiro faço um pedacinho de
41
+ > uns 10 segundos."
42
+ - Não cole JSON, comandos ou caminhos longos. Tempo no formato 00:12.
43
+ - Antes de gastar dinheiro (imagem, trilha ou efeito gerado por IA), peça autorização.
44
+ - Autorização em camadas: se a pessoa pediu para aprovar a amostra, espere; se já autorizou o vídeo todo, a
45
+ amostra é teste interno e você segue.
46
+
47
+ ## Três colunas na sua cabeça
48
+
49
+ Para cada decisão, separe:
50
+
51
+ | visto ou ouvido | palpite sobre como foi feito | proposta para este vídeo |
52
+ |---|---|---|
53
+ | "a palavra some atrás do ombro dela em 00:07" | "recorte da pessoa com o texto numa camada de trás" | "texto atrás da pessoa na frase principal, depois do teste de recorte" |
54
+
55
+ Palpite não vira fato. Aparência não prova técnica: uma maquete pode ser vídeo pronto, render ou geometria; um
56
+ fundo trocado pode ser chroma, máscara ou recorte. Escolha uma técnica que existe aqui e cumpre a função, e diga a
57
+ diferença.
58
+
59
+ ## Transfira a gramática, não só os números
60
+
61
+ O que mais dá identidade a uma referência quase nunca é o número de cortes. Procure e traga:
62
+
63
+ - **Quem ocupa a tela inteira** e em que momentos a pessoa divide o espaço com outra coisa.
64
+ - **Quanto tempo cada situação fica sem mudar**, em relação à velocidade da fala, e o que dispara cada mudança
65
+ (uma palavra, uma pausa, a entrada de um exemplo).
66
+ - **Proporção e hierarquia dos textos**: o que é grande, o que é apoio, onde fica cada um.
67
+ - **O papel da cor, da luz, do vazio e do contraste**: o que é aceso, o que fica escuro, quanto respiro tem.
68
+ - **Continuidade**: como um objeto segue de uma cena para a outra e que ação faz a passagem.
69
+
70
+ Cada regra do `leitura.md` vira decisão pelo campo **quando**: o que a fala do usuário está fazendo, nunca o
71
+ segundo da referência. Regra com firmeza `pede teste` passa por teste antes de virar padrão; `uma vez` entra
72
+ onde a fala dele tiver o mesmo motivo, e não se espalha pelo vídeo.
73
+
74
+ ## Adjetivo vira decisão que dá para conferir
75
+
76
+ A pessoa diz um adjetivo; você devolve decisões que dá para ver. Alguns jeitos de ler (escolha o que o material
77
+ dela sustenta):
78
+
79
+ - **"moderno":** poucas cores, muito espaço livre, texto em caixa baixa, cortes secos, nada de brilho.
80
+ - **"divertido":** cores saturadas, texto que entra com um pulinho, efeito sonoro curto em cada entrada, zoom
81
+ rápido na piada.
82
+ - **"cara de caro":** fundo escuro, uma cor de destaque só, animações lentas e poucas, trilha bem baixa.
83
+
84
+ Conte a leitura que escolheu em uma linha.
85
+
86
+ ## Várias referências
87
+
88
+ - Dê um papel a cada uma: uma manda na composição, outra no lettering, outra no som. No fim tem que parecer um
89
+ vídeo só, com a cara da marca dela.
90
+ - Duas referências mandando na mesma coisa (duas legendas diferentes, dois ritmos): fica o que ela pediu mais
91
+ recentemente, se ela escolheu. Sem preferência dela e com diferença que muda o vídeo: mostre o conflito com um exemplo de cada e proponha
92
+ uma saída. Diferença pequena: decida você e conte.
93
+
94
+ ## Adaptação
95
+
96
+ - Duração, voz e sentido são os da gravação dela. Não acelere a fala nem corte uma condição para imitar o ritmo.
97
+ Trecho de explicação pode ficar mais longo que na referência.
98
+ - Quando a pessoa tem cor e fonte obrigatórias, elas passam na frente das da referência.
99
+ - Regras do André continuam valendo: zona segura do Reels (texto em y 230 a 1530 e x 140 a 940), legenda de até 3
100
+ palavras por vez, rosto livre, som casado com cada animação e trilha 22 a 24 dB abaixo da voz.
101
+
102
+ ## Tabela de tradução: medida, decisão e o que adaptar
103
+
104
+ | Na referência (medido ou estimado) | Decisão no vídeo do usuário | O que adaptar |
105
+ |---|---|---|
106
+ | Cortes por minuto e plano médio (`ritmo`) | Meta de "algo muda na tela" a cada tantos segundos: corte, punch-in, prova, moldura ou animação | Os cortes do usuário nascem da fala dele. Nunca corte no meio da palavra para bater número. Com menos cortes, complete com punch-in, prova e animação |
107
+ | Cortes nos 3 primeiros segundos | Abertura com o mesmo número de mudanças no gancho | Se a referência abre com 2 cortes e o usuário tem uma frase só, use punch-in ou gancho escrito entrando |
108
+ | Maior trecho sem corte | Limite de tempo parado | Passou disso no vídeo do usuário, ponha uma mudança |
109
+ | Quem ocupa a tela e quando (`trechos.csv`) | Os `blocos` do plano: tela cheia, prova, moldura, tela verde, planos | Pelo papel de cada trecho da fala dele, não pelos tempos da referência |
110
+ | Zoom nos cortes e nível | Punch-in e zoom da tela cheia | Acima de 1,2 a imagem perde nitidez; pare em 1,2 |
111
+ | Tamanho do rosto e altura dos olhos | Deixe o enquadramento pelo rosto medido do usuário | Não recorte além de 1,2 para imitar close |
112
+ | Planos sem rosto (imagem de apoio) | Quantidade de provas e inserções por minuto parecida | Material do usuário, prints dele, imagens com licença ou geradas com o ok dele. Nunca imagens da referência. Ilustração nunca como prova |
113
+ | Posição da legenda (`legenda.centro_y`) | A legenda do projeto fica pelo rosto (no peito) | Só mude de lugar se o vídeo dele tiver o mesmo motivo. Fique na zona segura |
114
+ | Palavras por linha | `legenda.max_palavras` (até 3) e `legenda.max_letras` do projeto | Frases longas do usuário quebram em mais trocas; tudo bem |
115
+ | Caixa alta, contorno, fundo atrás | Estilo da legenda e das peças | Fundo claro no vídeo do usuário pede contorno ou fundo, mesmo que a referência não tenha |
116
+ | Lettering e hierarquia | `references/lettering.md` com a hierarquia vista | O texto é escrito para a fala dele. Nunca a frase da referência |
117
+ | Cor do texto e cor de destaque | Cor de destaque do projeto | Com cor de marca, use a da marca com brilho parecido. Confira contraste |
118
+ | Forma da letra | Fonte livre parecida (tabela "Fontes") | Veja abaixo |
119
+ | Texto de gancho nos 3 s (`gancho_escrito`) | Gancho escrito na mesma zona, maior que a legenda | Nunca a frase da referência |
120
+ | Textos fixos (rótulos, títulos) | Só a forma: "rótulo pequeno no topo por 5 s" | Nunca o texto, nunca @, logo ou marca d'água |
121
+ | Cores da imagem (`cores.dominantes`) | Paleta dos cartões, diagramas e peças | Não pinte o vídeo do usuário para parecer o da referência |
122
+ | Loudness | -14 LUFS, pico -1 | Mesmo que a referência esteja mais alta |
123
+ | Trilha: diferença para a voz | 22 a 24 dB abaixo da voz (o padrão do André) | Mais alta só se a pessoa pedir. Nunca a música da referência (`references/som-e-trilha.md`) |
124
+ | Efeitos por minuto | Um som por animação que importa, no quadro em que ela bate | Confiança baixa: pergunte se ela ouve efeitos. Sons livres desta skill |
125
+ | Família dos efeitos (grave, cheio, agudo) | Grave: impacto. Cheio: whoosh. Agudo: pop, clique | O timbre exato não foi ouvido; escolha pelo movimento |
126
+ | Palavras por minuto e pausas | Nada muda na voz | O ritmo da fala vem do corte. Nunca acelere a voz |
127
+ | Transições e continuidade (`leitura.md`) | Transições em cadeia do plano (`references/direcao-por-blocos.md`) | Com a técnica disponível aqui. O que não dá, deixe de fora e diga |
128
+
129
+ Status importa: **MEDIDO** pode virar meta direta. **ESTIMADO** é ponto de partida e passa pela amostra. **NÃO DÁ
130
+ PRA SABER** não vira decisão. Campo `null` no `regras-da-referencia.json`: decida com a pessoa ou use o padrão desta skill. O
131
+ bloco `editor_video` dele traz os mesmos números com os nomes do `edit_data.json` do motor antigo desta skill; no
132
+ projeto HyperFrames, use a tabela acima.
133
+
134
+ ## O que nunca copiar
135
+
136
+ - **Fala e roteiro**: frases, ganchos, promessas, chamadas. Nem trocando uma palavra.
137
+ - **Promessa e números de resultado da referência**: faturamento, prints de venda, depoimentos. São de outra
138
+ pessoa e não valem para o vídeo do usuário.
139
+ - **Marca**: nome, logo, @, marca d'água, produto, interface ou vinheta da referência.
140
+ - **Música e sons com direito**: a trilha da referência e qualquer som tirado dela.
141
+ - **Pessoa**: rosto, voz, jeito característico de apresentação de quem aparece na referência.
142
+ - **Imagens e gráficos prontos** da referência (prints, ilustrações, cartões com texto).
143
+ - **Fonte paga**: se a fonte da referência não for livre, use uma parecida (abaixo).
144
+
145
+ Se a pessoa pedir para copiar algo dessa lista, explique em uma frase por que não dá e ofereça a versão própria
146
+ (outra música do mesmo clima, gancho escrito para a oferta dela).
147
+
148
+ ## Fontes
149
+
150
+ A medida dá a forma da letra, não o nome. Escolha pela forma, sempre entre fontes livres:
151
+
152
+ | Forma medida | Google Fonts (livres) |
153
+ |---|---|
154
+ | Estreita (condensada) | Anton, Bebas Neue, Oswald |
155
+ | Média | Inter, Figtree, Manrope |
156
+ | Larga (geométrica) | Montserrat, Poppins, Archivo |
157
+ | Escrita à mão | Caveat, Permanent Marker |
158
+
159
+ - Se a pessoa souber o nome da fonte da referência e ela for paga, use a parecida da tabela. Se ela tiver a licença
160
+ e mandar o arquivo, pode usar o arquivo dela.
161
+ - Peso: legenda de reel quase sempre é pesada (800 ou 900).
162
+ - No projeto, a fonte vai em arquivo com `@font-face` e passa pela checagem de caracteres do português
163
+ (`references/lettering.md`). Registre a troca na entrega.
164
+
165
+ ## A amostra
166
+
167
+ - 8 a 15 s do vídeo do usuário. Não escolha pelo começo: escolha o trecho com o que mais marca a referência e com
168
+ o ponto em que você teve de adaptar.
169
+ - Monte no estúdio (`references/estudio.md`), sem render.
170
+ - Compare gramática, não pixels. Se a amostra só lembra a paleta e não repete os movimentos que dão identidade à
171
+ referência, está incompleta.
172
+ - Pediu para aprovar: mostre e espere. Já autorizou tudo: confira pelos critérios e siga.
173
+
174
+ Está bom quando: quem fala e o que se diz continuam sendo dela; cada decisão aponta para um momento da referência;
175
+ tudo se lê no celular; e nada entrou por palpite.
176
+
177
+ ## Passo a passo
178
+
179
+ 1. Leia a medida (ou assista, se não houver) e confira se a referência combina com o vídeo do usuário. Uma
180
+ referência cheia de 3D não vira isso num vídeo simples de celular. Diga o que dá para trazer.
181
+ 2. Conte o plano em 3 ou 4 linhas (o que traz, o que não traz).
182
+ 3. Escreva a tabela de transferência em `transferencia.md` na pasta do projeto, uma linha por decisão, com quatro
183
+ colunas: prova vista (id ou tempo na referência), regra, adaptação, como conferir.
184
+ 4. Monte as decisões no plano em blocos e no `projeto.json` (tabela de tradução).
185
+ 5. Amostra no estúdio (seção acima).
186
+ 6. Vídeo inteiro no estúdio, render só no fim, conferência do arquivo exportado.
187
+ 7. Confira o resultado contra a referência com números: rode o `helpers/medir_referencia.py` no vídeo final numa
188
+ pasta nova e compare cortes por minuto, posição da legenda, efeitos por minuto e trilha. Diferença grande que
189
+ ninguém escolheu vira ajuste.
190
+ 8. Nota de entrega curta: as regras que vieram da referência, as adaptações feitas de propósito, as técnicas
191
+ trocadas e os limites. Separe o que foi visto na referência do que foi proposta sua.
192
+
193
+ ## Quando não combina
194
+
195
+ - **Referência com legenda em outro idioma**: mantenha a forma, a legenda do usuário sai na língua dele.
196
+ - **Referência horizontal e vídeo vertical** (ou o contrário): converta as posições pela fração da altura
197
+ (`centro_y`), não pelos pixels.
198
+ - **Referência com dois vídeos empilhados ou tela dividida**: escolha com a pessoa qual metade é o estilo que ela
199
+ quer; use as medidas daquela posição.
200
+ - **Referência muito mais rápida que a fala do usuário**: não force. Chegue perto com punch-in, provas e animação e
201
+ diga à pessoa que o ritmo final depende da fala dela.
202
+ - **Medida com confiança baixa** (áudio mono, fala sem pausa, legenda não achada): decida junto com a pessoa,
203
+ ouvindo ou olhando a referência, e diga que foi decisão de ouvido.
@@ -0,0 +1,375 @@
1
+ # Referência medida
2
+
3
+ Você mede como um vídeo de referência foi editado e transforma isso em regras que a edição do usuário pode
4
+ seguir. Quem conversa com você não é técnico. A pessoa manda o vídeo de outra pessoa e diz "quero assim". Seu
5
+ trabalho aqui é descobrir, com medida e com prova, o que é esse "assim" e explicar em palavras simples.
6
+
7
+ Este passo só mede. Fazer a medida não autoriza editar nada. Só siga para a edição se o pedido já incluía isso.
8
+ Quem usa a medida no vídeo do usuário é `references/referencia-aplicar.md`.
9
+
10
+ ## Como falar com a pessoa
11
+
12
+ - Português simples, frases curtas. Diga "a imagem muda a cada 2 segundos", e não "30 cortes por minuto".
13
+ - Não cole JSON, comandos, caminhos longos nem log na conversa.
14
+ - Antes de rodar, avise o tempo: perto de 1 a 2 minutos para um reel de 1 minuto; uns 25 minutos para um vídeo
15
+ de 30 minutos. A transcrição e a leitura de texto são as partes mais lentas. A leitura com prova (trechos,
16
+ regras e pedido) leva mais uns minutos.
17
+ - No fim, conte o que achou em 4 a 6 frases e pergunte se era isso que ela gostou no vídeo.
18
+ - Se ela disser "decide você", decida, conte a decisão em uma linha e siga.
19
+
20
+ ## Regras fixas
21
+
22
+ 1. A medida serve para estilo. Fala, promessa, marca, logo, música, a pessoa da referência e números de
23
+ resultado nunca vão para o vídeo do usuário.
24
+ 2. Nunca grave nada na pasta do vídeo de referência e nunca altere o arquivo dele. A saída vai numa pasta
25
+ própria, por exemplo `<pasta do projeto do usuário>/referencias/<nome-curto>/`. Uma referência por pasta; não
26
+ sobrescreva a pasta de outra.
27
+ 3. Todo achado tem um grau, e você nunca apresenta um grau como outro:
28
+ - **MEDIDO** (constatado): tem prova que se localiza, vista, ouvida ou medida por uma ferramenta que você
29
+ sabe dizer qual é, num tempo que dá para achar.
30
+ - **ESTIMADO** (hipótese): diga o que sustenta e o que ele não prova.
31
+ - **NÃO DÁ PRA SABER**: diga o que impede.
32
+ 4. Não invente o que está no "não dá pra saber": tempo, quadro, nome da fonte, plugin, programa, arquivo
33
+ escondido, canal de transparência, geometria 3D, retenção. Ver as letras sumindo atrás do corpo é observação;
34
+ dizer qual programa recortou é invenção.
35
+ 5. Olhe as imagens antes de falar dos números. O script erra em vídeo com muita animação, e a folha de quadros
36
+ mostra o erro.
37
+ 6. Três pessoas, três vídeos: meça cada um na sua pasta e compare depois.
38
+ 7. Nada pago, nada instalado, nenhum modelo grande baixado e nenhum envio da mídia para fora sem autorização que
39
+ cubra isso. Sem ela, use o que há e diga o que perdeu.
40
+
41
+ ## Do que precisa
42
+
43
+ - Esta skill instalada. O helper roda com o Python dela (numpy, opencv, pillow) e usa o detector de rosto, a
44
+ leitura de texto e a transcrição dela.
45
+ - `ffmpeg` e `ffprobe` no sistema.
46
+ - No Mac, a leitura de texto usa a Vision da Apple e lê as palavras. Em outro sistema ela só acha manchas de
47
+ texto: posição sai, mas palavras por linha e caixa alta ficam sem medida.
48
+
49
+ `<SKILL>` abaixo é a pasta desta skill (a do SKILL.md).
50
+
51
+ ## O que a pessoa pode mandar
52
+
53
+ - **Arquivo** (mp4, mov, m4v, webm): o caminho normal.
54
+ - **Só um link:** peça o arquivo (salvar o vídeo ou gravar a tela do celular). Se não der, trabalhe com o que ela
55
+ descrever, marcado como descrição dela, e crie a pasta com um `leitura.md` que diz o impedimento. Nada de
56
+ análise inventada.
57
+ - **Só imagens** (prints, quadros): dá para falar de composição, cor e tipografia aparente. Movimento, duração,
58
+ transição e som ficam NÃO DÁ PRA SABER. Áudio é desconhecido, nunca "era mudo".
59
+ - **Vídeo sem som de verdade** (sem faixa de áudio): a análise é só visual. Não reconstrua a fala pelo texto da
60
+ tela.
61
+
62
+ Use só vídeo que ela pode assistir; a medida é estudo de estilo.
63
+
64
+ ## Passo a passo
65
+
66
+ 1. **Pegue o arquivo** (seção acima).
67
+ 2. **Escolha a pasta de saída**, fora da pasta da referência.
68
+ 3. **Rode** (caminhos sempre entre aspas simples; nome de reel costuma ter emoji, `#` e espaço):
69
+
70
+ ```bash
71
+ uv run --directory "<SKILL>" python helpers/medir_referencia.py '<VIDEO>' --saida '<SAIDA>'
72
+ ```
73
+
74
+ Opções:
75
+ - `--limiar 0.20`: nota de cena para contar corte seco. Baixe para `0.12` se a folha mostrar cortes que o
76
+ script não pegou (corte entre planos muito parecidos). Suba para `0.30` se ele marcar animação como corte.
77
+ - `--sem-fala`: pula a transcrição (vídeo sem fala, ou pressa). Perde ritmo de fala e a checagem "a legenda
78
+ escreve a fala".
79
+ - `--transcricao arquivo.json`: usa uma transcrição já pronta (formato do `transcribe.py` desta skill).
80
+ - `--sem-texto`: pula a leitura de texto.
81
+ - `--fps-texto 2`: leituras de texto por segundo. Suba para 4 se a legenda trocar muito rápido.
82
+ - `--editor-video PASTA`: usa os helpers de outra instalação da skill (o padrão é esta).
83
+
84
+ Rodar de novo na mesma pasta sobrescreve o que o script escreve (não os arquivos que você escreveu à mão).
85
+
86
+ 4. **Confira (obrigatório).**
87
+ - Abra `folha-de-quadros/folha_01.jpg` (e as seguintes). Cada quadro é 1 segundo. Borda vermelha = corte;
88
+ borda laranja = corte provável; etiqueta SOM = efeito sonoro provável naquele segundo.
89
+ - Abra `cortes-para-conferir.jpg`. Cada par mostra o último quadro antes e o primeiro depois. Corte de verdade
90
+ muda o enquadramento, o zoom ou a cena. Imagem entrando por cima do vídeo, painel animado ou texto grande
91
+ aparecendo também marcam nota alta: anote como "inserção" ou "animação", não como corte.
92
+ - Abra 2 ou 3 arquivos de `recortes/` para confirmar cor, contorno e forma da legenda.
93
+ - Nos momentos que importam (entrada de texto, transição, pessoa que muda de tamanho), gere uma tira densa
94
+ (seção "Ver um trecho de perto").
95
+ - Número que não bate com a imagem: confie na imagem e corrija a linha no guia com "(corrigido olhando a folha)".
96
+ 5. **Complete a seção 8 do guia** ("Leitura da IA"): tipo de vídeo, elementos gráficos, transições, imagens de
97
+ apoio, como abre e como fecha. Descreva a forma. Não copie frases da referência.
98
+ 6. **Escreva a leitura com prova**: `trechos.csv` e `leitura.md` (seções abaixo).
99
+ 7. **Escreva o pedido reutilizável**: `pedido.md` (seção abaixo).
100
+ 8. **Faça a autoconferência** do pacote (seção abaixo).
101
+ 9. **Conte para a pessoa.** Exemplo de tom:
102
+ > "Medi o vídeo. A imagem muda a cada 3 segundos, mais ou menos. A legenda fica um pouco abaixo do queixo,
103
+ > com 2 palavras por vez, letra branca grossa e a palavra falada em lilás. Quando ela fala de um passo, a
104
+ > tela vira a demonstração e ela volta num quadrinho. Tem música bem baixinha e uns 8 efeitos de som, quase
105
+ > sempre quando entra um elemento novo. Era esse jeito que você gostou?"
106
+ 10. **Próximo passo.** Se ela quiser usar no vídeo dela (e o pedido cobre isso), siga
107
+ `references/referencia-aplicar.md` com esta pasta.
108
+
109
+ ## O que sai na pasta
110
+
111
+ | Arquivo | Quem escreve | Para que serve |
112
+ |---|---|---|
113
+ | `guia-de-estilo.md` | script + você (seção 8) | Tudo que foi medido, em português, separado em MEDIDO, ESTIMADO e NÃO DÁ PRA SABER. |
114
+ | `regras-da-referencia.json` | script | Os mesmos números para máquina: ficha resumida e o sha256 da referência, ritmo, legenda, cores, áudio, e um bloco `hyperframes` com cores e tipografia de partida. |
115
+ | `trechos-medidos.csv` | script | Um segundo por linha: plano, corte, o que aparece, o que está escrito na tela (`escrito_na_tela`), som. Coluna `observacao` para você. |
116
+ | `trechos.csv` | você | Uma linha por plano, virada sem corte, trecho não visto ou quadro solto, agrupadas por ideia. |
117
+ | `leitura.md` | você | Cobertura, provas, achados por eixo e as regras reaproveitáveis. |
118
+ | `pedido.md` | você | O pedido para usar esta referência depois, com três lacunas. |
119
+ | `folha-de-quadros/` | script | 1 quadro por segundo em grade, com tempo, cortes e efeitos marcados. |
120
+ | `cortes-para-conferir*.jpg` | script | Par antes e depois de cada corte achado. |
121
+ | `recortes/` | script | Legenda e textos fixos em tamanho de trabalho. |
122
+ | `tiras/` | você | Tiras densas dos trechos que você olhou de perto. |
123
+ | `medidas/` | script | Dados brutos. A ficha técnica completa fica em `medidas/ficha.json` (sha256, fps, se a taxa é variável, codecs, canais e taxa do áudio). A transcrição da referência fica aqui e não entra em nenhum texto do usuário. |
124
+
125
+ Pasta medida antes da troca de nome tem `receita.json` no lugar do `regras-da-referencia.json` e `mapa.csv` no
126
+ lugar do `trechos-medidos.csv` (lá a coluna `escrito_na_tela` se chamava `texto_na_tela`). O conteúdo é o
127
+ mesmo: leia o nome antigo quando o novo não existir. Rodar de novo nessa pasta escreve os nomes novos e avisa
128
+ que os antigos sobraram.
129
+
130
+ Tudo em UTF-8, com caminhos relativos à pasta. Tempo sempre em segundos, contados do zero do arquivo que você
131
+ tem, com as casas que o método sustenta (a 30 qps, 0,033 s). Em taxa variável, use o tempo de cada quadro, não
132
+ número do quadro vezes a média.
133
+
134
+ ## Cobertura: o que foi visto de verdade
135
+
136
+ No começo do `leitura.md`, uma linha para cada meio: imagem, som e transcrição. Para cada um: o estado, os
137
+ intervalos examinados, o método e os buracos com o motivo.
138
+
139
+ | estado | quando |
140
+ |---|---|
141
+ | total | você examinou o meio inteiro, sem buraco |
142
+ | parcial | examinou só uma parte, ou com um método que não cobre tudo |
143
+ | sem acesso | o meio existe mas não deu para examinar (ferramenta faltando, link fechado) |
144
+ | não se aplica | o meio não existe (vídeo sem faixa de áudio) |
145
+
146
+ - Folha de 1 quadro por segundo e pares de corte orientam, mas não são passagem contínua: com eles, a imagem é
147
+ **parcial**. Imagem **total** só se você viu tiras densas (10 qps ou mais) do vídeo inteiro.
148
+ - Ler a duração nos metadados não é ter assistido.
149
+ - Ferramenta faltando é "sem acesso", não "não se aplica".
150
+ - Se algum meio ficou parcial ou sem acesso, o pacote não se diz completo, e isso aparece no `pedido.md`.
151
+
152
+ ## Trechos por emenda e por ideia (trechos.csv)
153
+
154
+ O `trechos-medidos.csv` conta o vídeo segundo a segundo; o `trechos.csv` conta a montagem. Você escreve este a
155
+ partir da folha, dos pares de corte e das tiras, sempre pelo módulo `csv` do Python (ele cuida de vírgula, aspas e
156
+ quebra de linha dentro do texto).
157
+
158
+ Como dividir:
159
+
160
+ - Toda emenda confirmada abre uma linha `plano`. Dentro de um plano, abra uma linha `virada` sempre que a tela muda
161
+ sem corte: a demonstração dá mais um passo, o arranjo troca, o olho é puxado para outro canto.
162
+ - Linhas que contam a mesma ideia levam o mesmo código em `ideia` (`I01`, `I02`...). Três cortes seguidos podem ser
163
+ uma ideia só.
164
+ - O segundo de `de_s` pertence ao trecho; o de `ate_s` já é do seguinte (de `12.40` a `15.10`, o quadro de 15,10 s
165
+ é do próximo). Uma transição fica numa linha só, nunca nas duas. Borda incerta: `exatidao` diz `aproximada` e
166
+ como você chegou nela.
167
+ - Pedaço do vídeo que você não examinou também vira linha, `nao_visto`. Um quadro olhado isolado vira
168
+ `quadro_solto`, sem `ate_s`, e não tapa o buraco de um trecho não visto.
169
+ - Uma linha `plano` ou `virada` tem que bastar para alguém refazer a cena: de onde parte, o que se vê acontecer,
170
+ onde termina, para onde o olho vai e que palavras da fala estão por baixo (poucas, só para achar o ponto).
171
+ - Célula vazia é ambígua. Escreva `nao_olhei` quando não examinou aquilo naquele trecho e `nao_tem` quando olhou e
172
+ não havia.
173
+
174
+ Colunas, nesta ordem: primeiro o tempo e a fala (é por eles que quem edita acha o trecho), depois a imagem, o som
175
+ e as provas.
176
+
177
+ | coluna | o que vai |
178
+ |---|---|
179
+ | `trecho` | código único da linha (`T01`, `T02`...) |
180
+ | `de_s`, `ate_s` | começo e fim, em segundos |
181
+ | `exatidao` | `exata` ou `aproximada`, com o método |
182
+ | `ideia` | o código da ideia que a linha ajuda a contar |
183
+ | `natureza` | `plano`, `virada`, `nao_visto` ou `quadro_solto` |
184
+ | `fala_para_achar` | poucas palavras da fala, só para localizar |
185
+ | `palavra_que_dispara` | a palavra ou a ideia que faz a tela mudar, e com quanto atraso |
186
+ | `pessoa_no_quadro` | tamanho e lugar de quem fala, e quando divide a tela |
187
+ | `o_olho_segue` | o que puxa o olhar naquele trecho |
188
+ | `escrito_na_tela` | título, rótulo ou chamada fora da legenda: lugar, tamanho, forma |
189
+ | `legenda` | posição, palavras por vez, destaque |
190
+ | `entra_por_cima` | imagem, print ou peça que cobre o vídeo |
191
+ | `frente_e_fundo` | o que fica atrás e o que fica na frente da pessoa |
192
+ | `cores` | paleta, contraste, luz |
193
+ | `passagem` | como este trecho vira o próximo |
194
+ | `o_que_se_ouve` | voz, trilha e efeitos, e qual deles manda |
195
+ | `andamento` | quanto tempo fica parado, onde respira |
196
+ | `provas_ligadas` | ids das provas do `leitura.md` que apontam para esta linha |
197
+ | `nota` | o que não coube nas outras |
198
+
199
+ ## Os doze eixos (leitura.md)
200
+
201
+ Para cada eixo, pelo menos um achado: algo que existe, uma ausência que você viu, ou um limite que impediu de ver.
202
+ Nenhum eixo fica em silêncio. Cada achado tem grau e aponta para provas.
203
+
204
+ | eixo | o que olhar | o que a imagem sozinha não prova |
205
+ |---|---|---|
206
+ | legenda | posição, palavras por vez, quebras, destaque, sincronia | sem som, a sincronia |
207
+ | tipografia e hierarquia | forma, peso, caixa, largura, lugar, o que manda | o nome da fonte |
208
+ | pessoa no quadro | onde está, com que folga, quando divide a tela | rosto no centro não prova rastreamento |
209
+ | recorte, zoom e acompanhamento | quando aproxima, quando reenquadra | câmera, recorte e escala podem parecer iguais |
210
+ | camadas e oclusão | o que fica atrás e na frente, paralaxe | vídeo achatado não mostra a pilha do projeto |
211
+ | recorte do fundo e volume | pessoa recortada, profundidade | o método (fica inferido) |
212
+ | o que entra por cima | tipo, tamanho, para que serve, quando entra, quanto fica, como sai | que o arquivo de origem exista |
213
+ | transições e continuidade | o que liga um estado ao outro | nome de plugin por semelhança |
214
+ | cor e luz | paleta aparente, contraste, vazio | a cor tirada de vídeo comprimido é aproximada |
215
+ | som | o que é voz, música e efeito, quando cada um entra e sai, qual fica por cima | nome da música, licença, loudness exato sem medida |
216
+ | fala e movimento | que verbo ou ideia dispara cada ação, e com que atraso | |
217
+ | ritmo | quanto dura cada ideia, quanto tempo fica parado, onde respira | retenção, venda ou tempo de produção |
218
+
219
+ Provas: `P01`, `P02`... Cada uma com os trechos do `trechos.csv` ligados, o tempo, a exatidão, o método (folha,
220
+ tira a 30 qps, medida do script, ouvido) e uma descrição curta; se tiver, o arquivo auxiliar (a tira em `tiras/`).
221
+ Prova só aponta para linha que você viu (nunca para `nao_visto`), e com tempo compatível.
222
+
223
+ ## Regras reaproveitáveis (leitura.md)
224
+
225
+ Das provas saem as regras (`R01`, `R02`...). Escreva cada uma como uma ficha que outra pessoa consiga seguir no
226
+ vídeo dela, com estes campos, nesta ordem (primeiro o quanto dá para confiar, depois o que fazer, por último como
227
+ checar):
228
+
229
+ 1. **firmeza:** `se repete` (visto em mais de um ponto), `uma vez` (escolha isolada que vale levar) ou `pede teste`
230
+ (depende de palpite ou de técnica que ninguém testou aqui; teste antes de virar padrão).
231
+ 2. **apoiada em:** os ids das provas. Limite que pesa sobre uma delas aparece escrito aqui também.
232
+ 3. **quando:** o que a fala do vídeo alvo precisa estar fazendo para a regra entrar ("quando a pessoa cita uma
233
+ etapa"). Segundo da referência nunca é resposta para "quando".
234
+ 4. **o que acontece:** na tela ou no som.
235
+ 5. **até quando:** critério de leitura, não cronômetro ("até terminar de dizer a etapa"). A duração vista na
236
+ referência vai junto como número observado, não como ordem.
237
+ 6. **como sai:** de que jeito e em que momento vai embora.
238
+ 7. **não pode perder:** o que continua intacto enquanto a regra age (rosto livre, legenda legível).
239
+ 8. **estraga se:** o erro que desmonta a regra.
240
+ 9. **precisa de:** o que a pessoa manda e o que teria de ser feito ou conseguido (com autorização).
241
+ 10. **se mudar o formato:** o que muda com outra proporção, outro tamanho, menos recurso ou outra marca.
242
+ 11. **como conferir:** o teste no vídeo do usuário.
243
+
244
+ No fim do `leitura.md`, três listas curtas: o que dá para transferir, o que exige material da própria pessoa e o
245
+ que precisa de teste. Sem slogan, roteiro, depoimento ou identidade da referência nessas listas. E uma linha de
246
+ encaminhamento: que partes desta skill ajudam depois (lettering, animação, enquadramento, variações) e por quê.
247
+
248
+ ## O pedido reutilizável (pedido.md)
249
+
250
+ Um texto pronto para a pessoa (ou você, numa conversa futura) usar esta referência em outro vídeo. Específico
251
+ desta referência. Tem exatamente três lacunas entre colchetes: `[VÍDEO ALVO]`, `[FORMATO DE SAÍDA]` e
252
+ `[IDENTIDADE VISUAL]`. Nenhuma instrução de preenchimento sobra no arquivo.
253
+
254
+ Escreva como pedido, em primeira pessoa da pessoa, cobrindo:
255
+
256
+ 1. Ler o `guia-de-estilo.md`, o `regras-da-referencia.json`, o `trechos.csv` e o `leitura.md` desta mesma pasta,
257
+ e avisar se só o texto do pedido estiver disponível.
258
+ 2. As instruções e autorizações atuais da pessoa vencem o que esta medida sugere.
259
+ 3. Não copiar fala, voz, marca, oferta, prova, música nem imagem da referência.
260
+ 4. As regras, cada uma com id, firmeza, quando, o que acontece, estraga se e como conferir, separando o que foi
261
+ visto na referência do que é sugestão de adaptação.
262
+ 5. Os limites desta medida (cobertura parcial, graus ESTIMADO).
263
+ 6. Recalcular a sequência pela fala e pela duração do vídeo alvo; nunca copiar tempos.
264
+ 7. Mostrar primeiro uma amostra com a passagem de cena e o arranjo visual que mais marcam a referência, e só
265
+ depois espalhar o padrão pelo vídeo (se tudo já estiver autorizado, a amostra é teste interno).
266
+ 8. Camada inclinada é 2,5D, não 3D; máscara não é recorte; movimento calculado por quadro; nada pago sem
267
+ autorização.
268
+ 9. Sem identidade visual: propor uma direção própria, nunca a da referência.
269
+
270
+ ## Autoconferência do pacote
271
+
272
+ Antes de dizer que terminou:
273
+
274
+ - Os arquivos existem. `regras-da-referencia.json` abre como JSON e `trechos.csv` abre como CSV.
275
+ - Ids únicos; toda prova e toda regra apontam para ids que existem.
276
+ - Prova nenhuma aponta para linha `nao_visto`.
277
+ - Nenhum início depois do fim, nada além da duração, nenhuma sobreposição entre planos.
278
+ - O estado da cobertura bate com o método (medir a duração ou transcrever não é cobertura de imagem).
279
+ - Todo limite que pesa sobre um achado aparece na regra que depende dele e no `pedido.md`.
280
+ - As três lacunas estão no `pedido.md`.
281
+ - Nada foi renderizado, postado ou mandado para serviço por causa da medida.
282
+
283
+ Parte disso se confere com um script curto (grave na pasta de saída e rode com o Python da skill):
284
+
285
+ ```python
286
+ # conferir_pacote.py uso: uv run --directory "<SKILL>" python '<SAIDA>/conferir_pacote.py' '<SAIDA>'
287
+ import csv, json, re, sys
288
+ from pathlib import Path
289
+ pasta = Path(sys.argv[1])
290
+ regras = next(a for a in (pasta / "regras-da-referencia.json", pasta / "receita.json") if a.exists()) # nome antigo: receita.json
291
+ dur = json.loads(regras.read_text(encoding="utf-8"))["ficha"]["duracao_s"]
292
+ linhas = list(csv.DictReader(open(pasta / "trechos.csv", encoding="utf-8")))
293
+ ids = [l["trecho"] for l in linhas]
294
+ erros = [f"trecho repetido: {i}" for i in sorted({i for i in ids if ids.count(i) > 1})]
295
+ planos = []
296
+ for l in linhas:
297
+ if l["natureza"] == "quadro_solto":
298
+ continue
299
+ a, b = float(l["de_s"]), float(l["ate_s"])
300
+ if a > b or b > dur + 0.05:
301
+ erros.append(f"{l['trecho']}: tempo fora ({a} a {b}, duração {dur})")
302
+ if l["natureza"] == "plano":
303
+ planos.append((a, b, l["trecho"]))
304
+ planos.sort()
305
+ erros += [f"sobreposição: {x[2]} e {y[2]}" for x, y in zip(planos, planos[1:]) if y[0] < x[1] - 0.01]
306
+ leitura = (pasta / "leitura.md").read_text(encoding="utf-8")
307
+ for l in linhas:
308
+ for p in filter(None, re.split(r"[;\s]+", l["provas_ligadas"])):
309
+ if p not in leitura:
310
+ erros.append(f"{l['trecho']}: prova {p} não está no leitura.md")
311
+ if l["natureza"] == "nao_visto":
312
+ erros.append(f"{l['trecho']}: trecho não visto com prova {p}")
313
+ pedido = (pasta / "pedido.md").read_text(encoding="utf-8")
314
+ erros += [f"pedido.md sem {x}" for x in ("[VÍDEO ALVO]", "[FORMATO DE SAÍDA]", "[IDENTIDADE VISUAL]") if x not in pedido]
315
+ print("\n".join(erros) or "ok")
316
+ ```
317
+
318
+ Validar a estrutura não substitui olhar. Confira no próprio vídeo as fronteiras de corte, a duração dos estados,
319
+ a sincronia e os trechos `nao_visto` que você declarou.
320
+
321
+ Na conversa, diga onde estão as peças, a cobertura atingida e o que limita o reuso.
322
+
323
+ ## Como cada número é medido
324
+
325
+ | No guia | Em palavras simples | Como | Confiança |
326
+ |---|---|---|---|
327
+ | Cortes, cortes por minuto, plano médio | De quanto em quanto tempo a imagem muda | Nota de mudança de cena do ffmpeg (`select` com `scene`) em todos os quadros. Corte = nota 0,20 ou mais. Provável = pico fraco 8 vezes maior que a vizinhança | Medido. Prováveis precisam de conferência |
328
+ | Rosto, altura do rosto, olhos | Quão perto a câmera está | Detector de rosto YuNet em 1 quadro por segundo e no meio de cada plano | Estimado |
329
+ | Zoom nos cortes | Se o rosto muda de tamanho de um plano para o outro | Tamanho do rosto antes e depois de cada corte | Estimado |
330
+ | Posição, altura da linha, palavras por linha, linhas, caixa alta | Onde e como a legenda fica | Leitura de texto 2 vezes por segundo (helper `texto_na_tela.py` desta skill). A legenda é o texto que troca e bate com a fala da transcrição. Outra posição só conta se durar 2,5 s seguidos com a mesma altura de letra | Medido |
331
+ | Tamanho da fonte, forma da letra, cores do texto | Parecença da letra | Altura da linha lida, largura por letra, cores do miolo das letras | Estimado |
332
+ | Loudness, pico | Volume percebido | Filtro loudnorm do ffmpeg (padrão EBU R128) | Medido |
333
+ | Trilha, quanto abaixo da voz | Se tem música e quão baixa | Nível nas pausas da fala, picos de nota musical e o canal lateral (esquerdo menos direito, onde a voz centralizada some) | Estimado |
334
+ | Efeitos sonoros | Quantos sons de edição e onde | Canal lateral subindo 6 dB acima dos 4 s em volta, sons nas pausas, graves que a voz não explica | Estimado. Confiança baixa em áudio mono |
335
+ | Palavras por minuto, pausas | Velocidade da fala | Transcrição local (Whisper desta skill) | Medido |
336
+
337
+ Os limiares foram ajustados em dois reels que já tinham sido medidos à mão. Nesse teste, os 6 cortes secos
338
+ bateram no quadro, a posição da legenda ficou a 6 px da medida manual, as cores da legenda ficaram a poucos pontos
339
+ de hex, e o detector de efeitos achou 9 de 14 e 23 de 30 efeitos marcados. Use esses números como ordem de
340
+ grandeza da precisão, não como garantia.
341
+
342
+ ## Quando o resultado sai estranho
343
+
344
+ - **Animação marcada como corte** (painel entrando, tela girando): a folha mostra. Anote no guia como transição
345
+ animada e, no `trechos.csv`, como `virada` dentro do plano. Se forem muitas, rode de novo com `--limiar 0.30`.
346
+ - **Corte que o script não pegou** (dois planos quase iguais): rode com `--limiar 0.12` e confira os pares.
347
+ - **Transição de vários quadros** (chicote, zoom rápido): aparece com "(vários quadros)" na lista.
348
+ - **Legenda não achada**, mas ela existe na folha: a letra pode ser muito enfeitada para a leitura. Meça à mão
349
+ pela folha e pelos recortes e marque como "medido olhando".
350
+ - **Texto fixo que não é legenda** (título, @, marca d'água, chamada): fica em "Textos que ficam parados". O que
351
+ parecer marca ou perfil vem marcado "não copiar".
352
+ - **Dois vídeos empilhados ou tela dividida**: as posições valem para o quadro inteiro. Diga isso no guia.
353
+ - **Áudio mono** (celular sem estéreo): efeitos sonoros ficam com confiança baixa. Não use o número como meta;
354
+ pergunte à pessoa se ela ouve efeitos no vídeo.
355
+ - **Fala sem pausa**: o som de fundo fica "incerto". Não afirme que tem ou não tem trilha.
356
+ - **Taxa de quadros variável** (`fps_variavel` em `medidas/ficha.json`): os tempos dos cortes são os carimbos de cada quadro.
357
+ Não converta número de quadro em tempo pela média.
358
+ - **Vídeo longo** (VSL de 10 minutos ou mais): demora (uns 25 minutos para 30 minutos de vídeo) e a conferência
359
+ de cortes vira uma amostra de até 120 pares. Os primeiros minutos não valem como padrão do resto. Meça em
360
+ pedaços em sequência, cada um encavalando uns 2 s no anterior, confira as emendas entre os pedaços e o
361
+ encerramento. Com pressa, meça três trechos (começo, meio e fim) e declare a cobertura como parcial:
362
+ `ffmpeg -ss 300 -i '<VIDEO>' -t 120 -c copy '<SAIDA>/trecho_05min.mp4'`.
363
+
364
+ ## Ver um trecho de perto
365
+
366
+ A folha tem 1 quadro por segundo. Para ver como uma palavra entra, quanto dura um zoom ou em que quadro um título
367
+ some, gere uma tira de quadros do trecho:
368
+
369
+ ```bash
370
+ uv run --directory "<SKILL>" python helpers/tira_de_quadros.py '<VIDEO>' 17.4 17.9 --fps 30 --faixa 0.66:0.78 --saida '<SAIDA>/tiras/legenda_17s.jpg'
371
+ ```
372
+
373
+ `--fps 30` mostra quadro a quadro; `--faixa` corta só uma parte da altura (a faixa da legenda, por exemplo).
374
+ Conte os quadros para escrever a duração no guia (a 30 qps, 3 quadros = 0,1 s). Cada tira que sustenta um achado
375
+ vira arquivo auxiliar de uma prova.