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,387 @@
1
+ {
2
+ "airplane-ding": {
3
+ "file": "woven/airplane-ding.wav",
4
+ "sha256": "ab7eba449e5d4d9132ead7115169b24fa33511864430679fa3e98b4fac6ba81e",
5
+ "duration_s": 1.184,
6
+ "sample_rate": 44100,
7
+ "channels": 2,
8
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
9
+ "source_page": "https://assets.sfx.woven.video/sfx/airplane-ding.wav",
10
+ "license": "CC0 1.0 Universal (domínio público)",
11
+ "license_file": "woven/LICENCA.md"
12
+ },
13
+ "applause": {
14
+ "file": "woven/applause.wav",
15
+ "sha256": "4f70bd0339f70940616031e470c1f096cbec8ad0049f700f4a45c7b3463fdcfc",
16
+ "duration_s": 12.91,
17
+ "sample_rate": 44100,
18
+ "channels": 2,
19
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
20
+ "source_page": "https://assets.sfx.woven.video/sfx/applause.wav",
21
+ "license": "CC0 1.0 Universal (domínio público)",
22
+ "license_file": "woven/LICENCA.md"
23
+ },
24
+ "base-drop": {
25
+ "file": "woven/base-drop.wav",
26
+ "sha256": "9ba6f002bf70ca30903b5fc9ad0db29d5aafb0e939470fdfc303f51cdaeb17ee",
27
+ "duration_s": 3.297,
28
+ "sample_rate": 44100,
29
+ "channels": 2,
30
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
31
+ "source_page": "https://assets.sfx.woven.video/sfx/base-drop.wav",
32
+ "license": "CC0 1.0 Universal (domínio público)",
33
+ "license_file": "woven/LICENCA.md"
34
+ },
35
+ "bass-impact": {
36
+ "file": "woven/bass-impact.wav",
37
+ "sha256": "4b0cc7237c83d21bba4cd2aa73dffb758b1454bfea679dd227cb674843e40e4e",
38
+ "duration_s": 2.461,
39
+ "sample_rate": 44100,
40
+ "channels": 2,
41
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
42
+ "source_page": "https://assets.sfx.woven.video/sfx/bass-impact.wav",
43
+ "license": "CC0 1.0 Universal (domínio público)",
44
+ "license_file": "woven/LICENCA.md"
45
+ },
46
+ "beep-short": {
47
+ "file": "woven/beep-short.wav",
48
+ "sha256": "86e3ea1be85386d4ded5f8c42b12d2a90845d91a49d87cd97f9c296966e3b16d",
49
+ "duration_s": 0.697,
50
+ "sample_rate": 44100,
51
+ "channels": 2,
52
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
53
+ "source_page": "https://assets.sfx.woven.video/sfx/beep-short.wav",
54
+ "license": "CC0 1.0 Universal (domínio público)",
55
+ "license_file": "woven/LICENCA.md"
56
+ },
57
+ "camera-analog": {
58
+ "file": "woven/camera-analog.wav",
59
+ "sha256": "c910763a81c3b03f70c5d18ec2923ee840a16bb14522d4a470f2e0d8af27d2d9",
60
+ "duration_s": 0.859,
61
+ "sample_rate": 44100,
62
+ "channels": 2,
63
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
64
+ "source_page": "https://assets.sfx.woven.video/sfx/camera-analog.wav",
65
+ "license": "CC0 1.0 Universal (domínio público)",
66
+ "license_file": "woven/LICENCA.md"
67
+ },
68
+ "camera-flash": {
69
+ "file": "woven/camera-flash.wav",
70
+ "sha256": "a3dc1092e6ccf38f5e6fa5109b547a6fd2a6a992d594e80a1644cb80af060ebf",
71
+ "duration_s": 6.455,
72
+ "sample_rate": 44100,
73
+ "channels": 2,
74
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
75
+ "source_page": "https://assets.sfx.woven.video/sfx/camera-flash.wav",
76
+ "license": "CC0 1.0 Universal (domínio público)",
77
+ "license_file": "woven/LICENCA.md"
78
+ },
79
+ "camera-shutter-1-shot": {
80
+ "file": "woven/camera-shutter-1-shot.wav",
81
+ "sha256": "a34e1c2447eef7322016445478777c255fab98a3aa0aa0b287918d796384c69f",
82
+ "duration_s": 0.279,
83
+ "sample_rate": 44100,
84
+ "channels": 2,
85
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
86
+ "source_page": "https://assets.sfx.woven.video/sfx/camera-shutter-1-shot.wav",
87
+ "license": "CC0 1.0 Universal (domínio público)",
88
+ "license_file": "woven/LICENCA.md"
89
+ },
90
+ "camera-shutter-8-shots": {
91
+ "file": "woven/camera-shutter-8-shots.wav",
92
+ "sha256": "07d8e60ce9c57750d88965bc1b6babd735839c66983c4d18a376e8b803bbfcb4",
93
+ "duration_s": 1.115,
94
+ "sample_rate": 44100,
95
+ "channels": 2,
96
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
97
+ "source_page": "https://assets.sfx.woven.video/sfx/camera-shutter-8-shots.wav",
98
+ "license": "CC0 1.0 Universal (domínio público)",
99
+ "license_file": "woven/LICENCA.md"
100
+ },
101
+ "camera-shutter-release": {
102
+ "file": "woven/camera-shutter-release.wav",
103
+ "sha256": "265f81ce80661735cb4190d42834eca2b760aa3ed118ac6b222756f961eefbee",
104
+ "duration_s": 0.58,
105
+ "sample_rate": 44100,
106
+ "channels": 2,
107
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
108
+ "source_page": "https://assets.sfx.woven.video/sfx/camera-shutter-release.wav",
109
+ "license": "CC0 1.0 Universal (domínio público)",
110
+ "license_file": "woven/LICENCA.md"
111
+ },
112
+ "cheers-and-applause": {
113
+ "file": "woven/cheers-and-applause.wav",
114
+ "sha256": "e57f99c9e994f774e9156ed2e19a2e767261af5b4b8b43afce63253178fa00b6",
115
+ "duration_s": 4.087,
116
+ "sample_rate": 44100,
117
+ "channels": 2,
118
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
119
+ "source_page": "https://assets.sfx.woven.video/sfx/cheers-and-applause.wav",
120
+ "license": "CC0 1.0 Universal (domínio público)",
121
+ "license_file": "woven/LICENCA.md"
122
+ },
123
+ "deep-whoosh": {
124
+ "file": "woven/deep-whoosh.wav",
125
+ "sha256": "4a5c795193bad8bf5528d58db8f40a15991f4c194d8abf1c33c6a431843a0d7e",
126
+ "duration_s": 3.228,
127
+ "sample_rate": 44100,
128
+ "channels": 2,
129
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
130
+ "source_page": "https://assets.sfx.woven.video/sfx/deep-whoosh.wav",
131
+ "license": "CC0 1.0 Universal (domínio público)",
132
+ "license_file": "woven/LICENCA.md"
133
+ },
134
+ "dj-scratch": {
135
+ "file": "woven/dj-scratch.wav",
136
+ "sha256": "7880ae62cb13cba22cb310b437c157f6902de595af59657c52e06dbbc31bb4bd",
137
+ "duration_s": 1.556,
138
+ "sample_rate": 44100,
139
+ "channels": 2,
140
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
141
+ "source_page": "https://assets.sfx.woven.video/sfx/dj-scratch.wav",
142
+ "license": "CC0 1.0 Universal (domínio público)",
143
+ "license_file": "woven/LICENCA.md"
144
+ },
145
+ "dull-thud": {
146
+ "file": "woven/dull-thud.wav",
147
+ "sha256": "0d3bee8611d35bd3cc8b7f957165613b93fe37e694f3a6becbece89f5d242d97",
148
+ "duration_s": 1.393,
149
+ "sample_rate": 44100,
150
+ "channels": 2,
151
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
152
+ "source_page": "https://assets.sfx.woven.video/sfx/dull-thud.wav",
153
+ "license": "CC0 1.0 Universal (domínio público)",
154
+ "license_file": "woven/LICENCA.md"
155
+ },
156
+ "elevator-ding": {
157
+ "file": "woven/elevator-ding.wav",
158
+ "sha256": "a2a4e8fc590ed1b4d1c7534e8523d5aa0d8cf484b7729793f58cb1dd28f966e8",
159
+ "duration_s": 1.997,
160
+ "sample_rate": 44100,
161
+ "channels": 2,
162
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
163
+ "source_page": "https://assets.sfx.woven.video/sfx/elevator-ding.wav",
164
+ "license": "CC0 1.0 Universal (domínio público)",
165
+ "license_file": "woven/LICENCA.md"
166
+ },
167
+ "explosion": {
168
+ "file": "woven/explosion.wav",
169
+ "sha256": "c8595576a08e80978da4ee340e6ffbd239e5cc4825a0cab4716b84e9cc1bbf23",
170
+ "duration_s": 3.181,
171
+ "sample_rate": 44100,
172
+ "channels": 2,
173
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
174
+ "source_page": "https://assets.sfx.woven.video/sfx/explosion.wav",
175
+ "license": "CC0 1.0 Universal (domínio público)",
176
+ "license_file": "woven/LICENCA.md"
177
+ },
178
+ "fast-whoosh": {
179
+ "file": "woven/fast-whoosh.wav",
180
+ "sha256": "87da86fc4da1eb53583c486cc2d40905ef38f413b64eed7852168c945f0c45b5",
181
+ "duration_s": 0.395,
182
+ "sample_rate": 44100,
183
+ "channels": 2,
184
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
185
+ "source_page": "https://assets.sfx.woven.video/sfx/fast-whoosh.wav",
186
+ "license": "CC0 1.0 Universal (domínio público)",
187
+ "license_file": "woven/LICENCA.md"
188
+ },
189
+ "female-gasp": {
190
+ "file": "woven/female-gasp.wav",
191
+ "sha256": "f3e2292e395391719eb998fe212fbc407a2aa38d8f4c052797387ad38ba21268",
192
+ "duration_s": 0.488,
193
+ "sample_rate": 44100,
194
+ "channels": 2,
195
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
196
+ "source_page": "https://assets.sfx.woven.video/sfx/female-gasp.wav",
197
+ "license": "CC0 1.0 Universal (domínio público)",
198
+ "license_file": "woven/LICENCA.md"
199
+ },
200
+ "frog-ribbit": {
201
+ "file": "woven/frog-ribbit.wav",
202
+ "sha256": "b283d44e2681a72c51e84846534df5b80fed5101aa667570e147eb146bfea46b",
203
+ "duration_s": 0.697,
204
+ "sample_rate": 44100,
205
+ "channels": 2,
206
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
207
+ "source_page": "https://assets.sfx.woven.video/sfx/frog-ribbit.wav",
208
+ "license": "CC0 1.0 Universal (domínio público)",
209
+ "license_file": "woven/LICENCA.md"
210
+ },
211
+ "glitch-logo": {
212
+ "file": "woven/glitch-logo.wav",
213
+ "sha256": "4d46f773968ec16fe459cad3fdd451f7662b84d079be0890fe19c52be19fc49e",
214
+ "duration_s": 0.627,
215
+ "sample_rate": 44100,
216
+ "channels": 2,
217
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
218
+ "source_page": "https://assets.sfx.woven.video/sfx/glitch-logo.wav",
219
+ "license": "CC0 1.0 Universal (domínio público)",
220
+ "license_file": "woven/LICENCA.md"
221
+ },
222
+ "keyboard-typing-realistic": {
223
+ "file": "woven/keyboard-typing-realistic.wav",
224
+ "sha256": "106da1321cb67b64c4355373f65abccd36ce2a8053498aecea09ae3b20cffb1f",
225
+ "duration_s": 3.39,
226
+ "sample_rate": 44100,
227
+ "channels": 2,
228
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
229
+ "source_page": "https://assets.sfx.woven.video/sfx/keyboard-typing-realistic.wav",
230
+ "license": "CC0 1.0 Universal (domínio público)",
231
+ "license_file": "woven/LICENCA.md"
232
+ },
233
+ "keyboard-typing": {
234
+ "file": "woven/keyboard-typing.wav",
235
+ "sha256": "17f593ff95c4169456c42e6fd039575bf0f60839a781252118dad229041c6597",
236
+ "duration_s": 10.286,
237
+ "sample_rate": 44100,
238
+ "channels": 2,
239
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
240
+ "source_page": "https://assets.sfx.woven.video/sfx/keyboard-typing.wav",
241
+ "license": "CC0 1.0 Universal (domínio público)",
242
+ "license_file": "woven/LICENCA.md"
243
+ },
244
+ "male-gasp": {
245
+ "file": "woven/male-gasp.wav",
246
+ "sha256": "9333657681468b72fdf1e3eade5c7a46a1c34289cc99673ad6e6d0b0ef1f826d",
247
+ "duration_s": 0.464,
248
+ "sample_rate": 44100,
249
+ "channels": 2,
250
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
251
+ "source_page": "https://assets.sfx.woven.video/sfx/male-gasp.wav",
252
+ "license": "CC0 1.0 Universal (domínio público)",
253
+ "license_file": "woven/LICENCA.md"
254
+ },
255
+ "message-pop-reply": {
256
+ "file": "woven/message-pop-reply.wav",
257
+ "sha256": "003a5ad8341818450fd8662063269fafdeaa996fde418375ff47d5a2be20f132",
258
+ "duration_s": 0.882,
259
+ "sample_rate": 44100,
260
+ "channels": 2,
261
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
262
+ "source_page": "https://assets.sfx.woven.video/sfx/message-pop-reply.wav",
263
+ "license": "CC0 1.0 Universal (domínio público)",
264
+ "license_file": "woven/LICENCA.md"
265
+ },
266
+ "money-chalking": {
267
+ "file": "woven/money-chalking.wav",
268
+ "sha256": "797fe3ffd7e6f9c87019bfb9788afc6db75f5cd6b183f2c2562a205f7a152036",
269
+ "duration_s": 1.858,
270
+ "sample_rate": 44100,
271
+ "channels": 2,
272
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
273
+ "source_page": "https://assets.sfx.woven.video/sfx/money-chalking.wav",
274
+ "license": "CC0 1.0 Universal (domínio público)",
275
+ "license_file": "woven/LICENCA.md"
276
+ },
277
+ "mouse-click-1": {
278
+ "file": "woven/mouse-click-1.wav",
279
+ "sha256": "37e68fb3fe7fcdc21abde7bb9464f5ff99424899ca49bb74397801dc451c4510",
280
+ "duration_s": 0.766,
281
+ "sample_rate": 44100,
282
+ "channels": 2,
283
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
284
+ "source_page": "https://assets.sfx.woven.video/sfx/mouse-click-1.wav",
285
+ "license": "CC0 1.0 Universal (domínio público)",
286
+ "license_file": "woven/LICENCA.md"
287
+ },
288
+ "mouse-click-2": {
289
+ "file": "woven/mouse-click-2.wav",
290
+ "sha256": "144ff9b54529dd3763c269b5bac545891ea761303830f323d8e8bb64d13df867",
291
+ "duration_s": 0.186,
292
+ "sample_rate": 44100,
293
+ "channels": 2,
294
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
295
+ "source_page": "https://assets.sfx.woven.video/sfx/mouse-click-2.wav",
296
+ "license": "CC0 1.0 Universal (domínio público)",
297
+ "license_file": "woven/LICENCA.md"
298
+ },
299
+ "notification-ding": {
300
+ "file": "woven/notification-ding.wav",
301
+ "sha256": "5cb72bb54b78a4482d0d8828ef20c738b3fc9dac13e416fd9dc22e7fa2706269",
302
+ "duration_s": 1.997,
303
+ "sample_rate": 44100,
304
+ "channels": 2,
305
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
306
+ "source_page": "https://assets.sfx.woven.video/sfx/notification-ding.wav",
307
+ "license": "CC0 1.0 Universal (domínio público)",
308
+ "license_file": "woven/LICENCA.md"
309
+ },
310
+ "pop-hand": {
311
+ "file": "woven/pop-hand.wav",
312
+ "sha256": "02fed9196bc33a569ab3ddbdcc5d8b3c323346df6fb32e24b23930f990fc1cd5",
313
+ "duration_s": 0.348,
314
+ "sample_rate": 44100,
315
+ "channels": 2,
316
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
317
+ "source_page": "https://assets.sfx.woven.video/sfx/pop-hand.wav",
318
+ "license": "CC0 1.0 Universal (domínio público)",
319
+ "license_file": "woven/LICENCA.md"
320
+ },
321
+ "record-needle-scratch": {
322
+ "file": "woven/record-needle-scratch.wav",
323
+ "sha256": "1d3447fe8910557668a87a3c29338691be7b2a175214e98a18c62a843ad8bd49",
324
+ "duration_s": 1.649,
325
+ "sample_rate": 44100,
326
+ "channels": 2,
327
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
328
+ "source_page": "https://assets.sfx.woven.video/sfx/record-needle-scratch.wav",
329
+ "license": "CC0 1.0 Universal (domínio público)",
330
+ "license_file": "woven/LICENCA.md"
331
+ },
332
+ "record-scratch": {
333
+ "file": "woven/record-scratch.wav",
334
+ "sha256": "c24ed9d04423c25d3b63f4348db186b7e1f2552f88671ec27251a8be4ec55205",
335
+ "duration_s": 1.277,
336
+ "sample_rate": 44100,
337
+ "channels": 2,
338
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
339
+ "source_page": "https://assets.sfx.woven.video/sfx/record-scratch.wav",
340
+ "license": "CC0 1.0 Universal (domínio público)",
341
+ "license_file": "woven/LICENCA.md"
342
+ },
343
+ "several-coins": {
344
+ "file": "woven/several-coins.wav",
345
+ "sha256": "a51fe8c3d2a071e22c1a8a359620c8f397091c50e77a0e8cff77b2644ebb360d",
346
+ "duration_s": 1.416,
347
+ "sample_rate": 44100,
348
+ "channels": 2,
349
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
350
+ "source_page": "https://assets.sfx.woven.video/sfx/several-coins.wav",
351
+ "license": "CC0 1.0 Universal (domínio público)",
352
+ "license_file": "woven/LICENCA.md"
353
+ },
354
+ "sideways-record-needle": {
355
+ "file": "woven/sideways-record-needle.wav",
356
+ "sha256": "4caae85e351d2f65b5395b249e17e9a37e6a12b57a1cff89263d6396fdeacae8",
357
+ "duration_s": 0.58,
358
+ "sample_rate": 44100,
359
+ "channels": 2,
360
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
361
+ "source_page": "https://assets.sfx.woven.video/sfx/sideways-record-needle.wav",
362
+ "license": "CC0 1.0 Universal (domínio público)",
363
+ "license_file": "woven/LICENCA.md"
364
+ },
365
+ "swish-whoosh-large": {
366
+ "file": "woven/swish-whoosh-large.wav",
367
+ "sha256": "dd03c5bb45d3e9f4ae57e876543ff52ceabe8ebd12597bbf600eedde41c8fd92",
368
+ "duration_s": 0.789,
369
+ "sample_rate": 44100,
370
+ "channels": 2,
371
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
372
+ "source_page": "https://assets.sfx.woven.video/sfx/swish-whoosh-large.wav",
373
+ "license": "CC0 1.0 Universal (domínio público)",
374
+ "license_file": "woven/LICENCA.md"
375
+ },
376
+ "tick-sound": {
377
+ "file": "woven/tick-sound.wav",
378
+ "sha256": "4f0cbac876d2514c36fba7f859eb9b41cfb360eba49f3bd27c2b9c2ffbd2bf71",
379
+ "duration_s": 0.557,
380
+ "sample_rate": 44100,
381
+ "channels": 2,
382
+ "source": "Woven SFX, https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a)",
383
+ "source_page": "https://assets.sfx.woven.video/sfx/tick-sound.wav",
384
+ "license": "CC0 1.0 Universal (domínio público)",
385
+ "license_file": "woven/LICENCA.md"
386
+ }
387
+ }
@@ -0,0 +1,16 @@
1
+ # Woven SFX: licença dos sons
2
+
3
+ Os 35 arquivos `.wav` desta pasta vêm do Woven SFX (https://www.woven.video/sfx), repositório
4
+ https://github.com/woven-video/woven-sfx (commit 521b446db682a3cae9ae1647e94bbdc312cd9a3a, conferido em 27/09/2026).
5
+ Os arquivos são idênticos aos do CDN oficial (https://assets.sfx.woven.video/sfx/ID.wav; md5 conferido em pop-hand,
6
+ fast-whoosh e bass-impact).
7
+
8
+ Licença dos sons (arquivo SOUNDS_LICENSE do repositório):
9
+
10
+ > All sound effects in this repository are dedicated to the public domain under CC0 1.0 Universal
11
+ > (https://creativecommons.org/publicdomain/zero/1.0/). You may copy, modify, distribute, and use these sounds
12
+ > for any purpose, commercial or non-commercial, without asking permission.
13
+
14
+ O código do Woven SFX (e a skill `add-sfx`) é MIT. Nenhum código deles foi copiado pra esta skill; só os sons.
15
+
16
+ Crédito não é obrigatório. Se quiser: "Efeitos sonoros: Woven SFX (CC0)".
@@ -0,0 +1,45 @@
1
+ # Briefing do vídeo · [NOME DO PROJETO] · versão [v1]
2
+
3
+ Preencha antes da primeira amostra, com o que a pessoa já disse. Só pergunte o que falta e muda o vídeo, tudo
4
+ numa mensagem só. Depois, atualize só o que mudar. Grave como `BRIEFING.md` na pasta do projeto.
5
+
6
+ ## O pedido
7
+ - Arquivo bruto: [caminho relativo] (se houver dois candidatos a original, confirmar antes de editar)
8
+ - A ideia que tem que ficar clara: [uma frase]
9
+ - Para quem e em que rede: [público] · [Reels | TikTok | YouTube | página de venda | aula]
10
+ - Chamada e oferta de verdade: [exatamente como ela falou ou mandou] (faltou dado: fica a lacuna, nada inventado)
11
+ - Modelo escolhido: [número e nome em `references/modelos.md`]
12
+ - Formato: [9:16 1080x1920 | 16:9 1920x1080 | outro] · duração do bruto [s] · duração esperada [s]
13
+
14
+ ## Materiais
15
+ - Cores e fontes entregues: [cores] · [fontes, com arquivo e licença]
16
+ - Arquivos de apoio (e para que serve cada um): [arquivo · prova | demonstração | inspiração | ilustração]
17
+ - Referência e o que interessa nela: [arquivo ou link] · [ritmo | legenda | composição | som]
18
+ - O que falta pedir: [lista]
19
+
20
+ ## Direção em critérios que dá para conferir
21
+ - [ex.: legenda padrao de até 3 palavras, no peito, dentro de y 230 a 1530 e x 140 a 940]
22
+ - [ex.: títulos de até 4 palavras, longe do rosto]
23
+ - [ex.: uma animação nova a cada 4 a 6 s no máximo]
24
+ - Como a pessoa aparece; quando usar moldura: [ ]
25
+ - Como checar a legenda: [tamanho, lugar, contraste, palavras difíceis]
26
+ - Som: [um por animação | 5 ou 6 no total] · trilha [22 a 24] dB abaixo da voz · voz extra [não | sim, qual]
27
+
28
+ ## Limites
29
+ - O que fica igual: [fala, oferta, cores da marca, cortes aprovados...]
30
+ - O que é proibido: [ex.: aparecer nome de cliente, usar música com direito, mostrar a casa por dentro]
31
+ - Teto de gasto extra: [R$ 0 | até R$ ... em geração de voz, imagem ou vídeo] (sem teto escrito, nada pago)
32
+
33
+ ## Autorização e entrega
34
+ - Autorização: [aprovar a amostra antes | pode seguir até o fim sem me mostrar]
35
+ - Tipo de entrega esperada: [só uma ideia | trecho de teste | vídeo inteiro no estúdio | arquivo final exportado]
36
+ - Trecho da primeira amostra: [de] a [até] s · por quê: [a virada mais importante, um raciocínio inteiro e a volta à pessoa]
37
+ - Suposições que eu fiz (escolhas que dá para desfazer): [uma linha cada]
38
+
39
+ ## Depois da revisão
40
+ - Trecho que a pessoa assistiu de verdade: [de] a [até] s, em [estúdio | arquivo exportado]
41
+ - Veredito: [aprovado | ajustar um ponto | repensar a direção]
42
+ - Versão aprovada e onde está: [nome do arquivo ou pasta do projeto]
43
+ - Escolhas visuais aprovadas: [ ] (guardar também em `padrao.json`)
44
+ - O que ainda falta ajustar: [ ]
45
+ - O que ela já liberou para o próximo lote: [ ]
@@ -0,0 +1,56 @@
1
+ # Conferência da amostra (e do vídeo final)
2
+
3
+ Como conferir: o vídeo rodando, com som, numa janela do tamanho de um celular, do primeiro ao último segundo do
4
+ trecho (é nas bordas que o erro mais escapa). Cada item ganha um x ou um problema anotado. O conserto de um item
5
+ que falhou fica preso ao intervalo em que ele falhou; o que já estava aprovado em volta não se mexe.
6
+
7
+ Print não serve para ticar movimento. Um quadro parado mostra onde as coisas estão, mas não diz se a palavra
8
+ bateu com a fala, se a troca piscou ou se a peça fez o caminho certo. Para trocas e transformações, gere uma tira
9
+ a 30 qps (`helpers/tira_de_quadros.py`) e olhe quadro a quadro.
10
+
11
+ Trecho conferido: [de] a [até] s, em [estúdio | arquivo exportado].
12
+
13
+ **Fidelidade ao material**
14
+ - [ ] Data, valor, nome, prova e chamada iguais ao que a pessoa falou ou mandou.
15
+ - [ ] A inserção principal ajuda a entender a fala e é um arquivo que a pessoa mandou.
16
+ - [ ] Nada de clique, tela de sucesso, depoimento, reação ou número que não existe no material.
17
+ - [ ] Dado privado de outra pessoa (nome, telefone, e-mail, senha) borrado ou fora; no arquivo exportado, o
18
+ `conferir_dados.py` saiu com 0 achado (`references/revisao.md`).
19
+
20
+ **Imagem**
21
+ - [ ] Nada em cima dos olhos e da boca (a não ser que o efeito seja no rosto).
22
+ - [ ] Todo texto dentro da zona segura e legível no celular.
23
+ - [ ] O texto em destaque diz o que importa e não cobre rosto nem legenda.
24
+ - [ ] Uma ideia por vez: dá para entender sem ler muita coisa ao mesmo tempo.
25
+ - [ ] Cada elemento entra na palavra que chama e sai antes do próximo bloco.
26
+ - [ ] A animação termina a explicação antes da fala mudar de assunto, sem clarão.
27
+ - [ ] Legenda some quando a cena escreve a fala grande.
28
+ - [ ] A última frase escrita fica na tela o tempo de ler antes do fim.
29
+ - [ ] A pessoa segue bem enquadrada, sem salto de recorte nas trocas; mãos e gestos que contam cabem.
30
+ - [ ] Transições sem piscar preto e sem quadro vazio; moldura e zoom voltam ao normal quando acabam.
31
+
32
+ **Recorte e profundidade** (se houver)
33
+ - [ ] Recorte conferido no cabelo, nas pontas dos dedos e em movimento.
34
+ - [ ] Texto atrás da pessoa só com o teste de recorte aprovado, e a palavra continua legível.
35
+ - [ ] O que se chama de 3D tem profundidade de verdade (laterais, luz, oclusão); camadas planas vêm rotuladas
36
+ como 2,5D na entrega.
37
+
38
+ **Fala e corte**
39
+ - [ ] Emendas curtas (uns 0,12 s) e nenhum respiro de 0,25 s ou mais sobrando.
40
+ - [ ] Nenhuma palavra cortada no começo ou no fim (a fala do `conferir_corte.py` bate com o quote de cada trecho).
41
+ - [ ] Nenhuma frase repetida, nenhuma ressalva perdida, nenhuma frase montada que não foi dita.
42
+ - [ ] Legenda bate com o áudio (nomes, marcas e números iguais à fala), lê bem e não cobre informação.
43
+
44
+ **Som**
45
+ - [ ] Voz inteligível do começo ao fim.
46
+ - [ ] Cada som bate no quadro do movimento, sem cobrir a voz.
47
+ - [ ] Nada de som empilhado (espaço mínimo entre sons respeitado).
48
+ - [ ] Trilha audível no celular, mas uns 22 a 24 dB abaixo da voz.
49
+ - [ ] Volume final em torno de -14 LUFS.
50
+
51
+ **Veredito** (anote um)
52
+ - [ ] aprovado
53
+ - [ ] ajustar um ponto: [qual, com o intervalo]
54
+ - [ ] repensar a direção: [por quê]
55
+
56
+ Aprovado pela pessoa ou conferido por você? [pessoa, na mensagem de ... | conferência interna, autorização de ...]
@@ -0,0 +1,3 @@
1
+ versao,base,arquivo_do_gancho,gancho_falado,gancho_na_tela,corpo,corpo_conferido,cta,hipotese,o_que_muda,arquivo_final,situacao,origem_da_aprovacao
2
+ G01,corpo aprovado,ganchos/G01.mov,"[fala do gancho, como a gravação diz (não o índice)]","[texto na tela, o mesmo que ele fala]",corpo_aprovado.mp4,"[comparar_corpo.py: fala igual, mesma duração]","[chamada]","[por que este começo pode prender mais]",só o gancho,[PRODUTO]_G01_[resumo].mp4,pode montar,
3
+ G02,corpo aprovado,ganchos/G02.mov,,,corpo_aprovado.mp4,,,,só o gancho,[PRODUTO]_G02_[resumo].mp4,pode montar,
@@ -0,0 +1,16 @@
1
+ {
2
+ "_leia": "Padrão aprovado de um vídeo. Grave na pasta do projeto depois da aprovação e use como ponto de partida no próximo.",
3
+ "modelo": "anuncio-com-prova",
4
+ "formato": {"largura": 1080, "altura": 1920, "fps": 30},
5
+ "fontes": {"titulo": "Montserrat 900", "texto": "Montserrat 700", "rotulo": "JetBrains Mono 600"},
6
+ "cores": {"fundo": "#0b0616", "destaque": "#ffc400", "texto": "#ffffff"},
7
+ "legenda": {"estilo": "padrao", "max_palavras": 3, "y": 1180, "some_quando_cena_escreve": true},
8
+ "gancho": {"peca": "rotulo", "y_topo": 250},
9
+ "fim": {"segura_fim_s": 1.2},
10
+ "moldura": {"lado": "direito", "raio": 28, "borda": "#ffffff33"},
11
+ "ritmo": {"pausa_max_s": 0.18, "troca_visual_s": [2, 4], "punch_in": {"escala": 1.15, "duracao_s": 0.3}},
12
+ "animacoes_preferidas": ["lista-check", "numero-contando", "rotulo-na-cabeca", "cartao-final"],
13
+ "som": {"modo": "um-por-animacao", "espaco_min_s": 0.6, "biblioteca": "woven"},
14
+ "trilha": {"arquivo": null, "db_abaixo_da_voz": 22, "entra_em_s": null},
15
+ "loudness_lufs": -14
16
+ }
@@ -0,0 +1,4 @@
1
+ cena;de_s;ate_s;fala;conclusao;o_olho_segue;arquivo;o_que_se_move;escrito_na_tela;o_que_se_ouve;o_que_continua;como_conferir;situacao
2
+ b01_gancho;0,00;3,00;"[trecho da fala]";"[o que quem assiste entende]";rosto;cut.mp4;punch-in no rosto em 1,8;"[gancho escrito]";voz + pop no gancho;o rosto no mesmo lugar;tocar no celular com som;planejada
3
+ b02_prova;3,00;7,40;"[trecho da fala]";"[o que a prova mostra]";a tela do app;assets/tela_app.mp4;a tela entra inteira;"Tela do app";voz + whoosh na troca;a tela vira o fundo da moldura;tira a 30 qps na troca;planejada
4
+ b03_explica;7,40;15,20;"[trecho da fala]";"[a relação explicada]";o diagrama;compositions/diagrama.html;elementos entram um a um e ficam;rótulos de 1 a 3 palavras;voz + clique em cada elemento;a mesma cor por função;estúdio quadro a quadro;planejada
@@ -0,0 +1,4 @@
1
+ versao,base,hipotese,elemento_que_muda,como_era,como_fica,fica_igual,arquivos_novos,formato,pasta_saida,situacao,origem_da_aprovacao
2
+ V01,,base aprovada (não é hipótese),nada,,,tudo,nenhum,9:16 1080x1920,saida/,fechada,"[quem aprovou e onde, ex.: a pessoa na mensagem de 28/09]"
3
+ V02,V01,"um texto de abertura que faz uma pergunta pode prender mais quem ainda não conhece o produto",texto escrito da abertura,"[texto atual]","[texto novo]","a fala, o corte, as peças, os sons, a chamada",nenhum (usa a gravação da base),9:16 1080x1920,saida/V02_texto-abertura-pergunta/,pode montar,
4
+ V03,V01,"começar pela frase do problema pode deixar claro mais cedo para quem é o vídeo",primeira frase falada,"[frase atual]","[frase nova]","o corpo, as peças, os sons, a chamada","[tomada nova do gancho, quando existir]",9:16 1080x1920,saida/V03_fala-abertura-problema/,falta gravar,
@@ -0,0 +1,32 @@
1
+ # Plano em blocos · [NOME DO VÍDEO]
2
+
3
+ Formato: [9:16 1080x1920 | 16:9 1920x1080] · [fps] · corte de [duração] s + cartão final de [s] s
4
+ Pra onde vai: [anúncio | Reels | página | aula]
5
+ Referência: [arquivo ou "sem referência"] · guia: [caminho do guia-de-estilo.md, se houver]
6
+ Autorização: [aprovar a amostra antes | pode seguir até o fim]
7
+
8
+ ## Regras deste vídeo
9
+ - Tempos sempre pelas palavras do corte. Nada antes da palavra que chama (até 0,15 s antes).
10
+ - Rosto: olhos ~y [ ], boca ~y [ ], rosto ocupa x [ ] a [ ], y [ ] a [ ] (do face_layout). Não cobrir olhos e boca.
11
+ - Regiões obrigatórias além do rosto: [mãos em 00:08 a 00:12 | o pote em 00:20 | nenhuma].
12
+ - Zona segura: texto em y [230 a 1530] e x [140 a 940] (9:16).
13
+ - Fonte: [títulos] / [texto] / [rótulos]. Cores: fundo [ ], destaque [ ], texto [ ].
14
+ - Legenda: [padrao | discreta | cena própria], até 3 palavras por vez (`max_palavras` 3), posição y [ ]. Some quando a
15
+ cena escreve a fala.
16
+ - Fim: [segura_fim de [ ] s para ler a última frase | corta na última palavra].
17
+ - Moldura: lado [direito | esquerdo], cantos [ ] px.
18
+ - Som: [um por animação | 5 ou 6 no total]. Trilha: [arquivo], [22 a 24] dB abaixo da voz, entra em [ ] s.
19
+ - Fidelidade: número na tela só da fala ou de dado real. Nada de clique, tela de sucesso, depoimento ou
20
+ resultado que não esteja nos arquivos.
21
+
22
+ ## Blocos
23
+ | bloco | tempo (s) | fala | conclusão | o olho segue | o que aparece | texto na tela | animação | som | o que continua | material |
24
+ |---|---|---|---|---|---|---|---|---|---|---|
25
+ | b01_gancho | 0,00 a 3,00 | "..." | "..." | o rosto | rosto + gancho em cima | "..." | entra palavra a palavra | pop | o rosto no mesmo lugar | nada |
26
+ | b02_... | | | | | | | | | | |
27
+
28
+ ## Falta pedir à pessoa
29
+ - [ ] ...
30
+
31
+ ## Amostra
32
+ Trecho: [início] a [fim] s. Por quê: [a virada mais importante, um raciocínio inteiro e a volta à pessoa].
@@ -0,0 +1,27 @@
1
+ {
2
+ "_leia": "Registro de materiais das versões. Caminhos relativos à pasta do projeto. Sem senha, token ou caminho pessoal absoluto. Apague esta linha ao preencher.",
3
+ "projeto": "[nome do projeto]",
4
+ "base": {"versao": "V01", "pasta": "sala", "arquivo": "saida/[PRODUTO]_V01_base.mp4", "preservada": true},
5
+ "fontes": [
6
+ {"codigo": "F01", "caminho": "edit/cut.mp4", "tipo": "video", "papel": "corte aprovado (corpo)", "origem": "gravação da pessoa", "licenca": "da pessoa", "sha256": null},
7
+ {"codigo": "F02", "caminho": "ganchos/G03.mov", "tipo": "video", "papel": "fala nova da abertura", "origem": "gravação da pessoa", "licenca": "da pessoa", "sha256": null},
8
+ {"codigo": "F03", "caminho": "assets/sfx/pop.wav", "tipo": "audio", "papel": "som da entrada do gancho", "origem": "sons Woven da skill", "licenca": "CC0", "sha256": null}
9
+ ],
10
+ "versoes": [
11
+ {
12
+ "versao": "V03",
13
+ "hipotese": "[por que esta mudança pode mudar o entendimento ou a resposta]",
14
+ "rotulo": "uma mudança",
15
+ "mudancas": ["primeira frase falada"],
16
+ "dependencias_tecnicas": ["corte do gancho novo", "legenda do gancho recalculada", "tempos do corpo deslocados em +0,4 s"],
17
+ "uso_no_tempo": [
18
+ {"fonte": "F02", "origem_de_s": 1.20, "origem_ate_s": 3.85, "na_versao_de_s": 0.00, "velocidade": 1.0},
19
+ {"fonte": "F01", "origem_de_s": 2.40, "origem_ate_s": 31.10, "na_versao_de_s": 2.65, "velocidade": 1.0}
20
+ ],
21
+ "fps": 30,
22
+ "arquivo": "saida/[PRODUTO]_V03_fala-abertura-problema.mp4",
23
+ "situacao": "pode montar",
24
+ "origem_da_aprovacao": null
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,41 @@
1
+ // Leitor de texto da Apple (Vision) para o texto_na_tela.py.
2
+ // Uso: ocr_vision <pasta com f_*.jpg> <saida.json>
3
+ // Saída: { "f_00001.jpg": [ {"t": "...", "c": 0.93, "x": .., "y": .., "w": .., "h": ..}, ... ] }
4
+ // x/y/w/h são frações do quadro, com y medido de baixo para cima (padrão do Vision).
5
+ import Foundation
6
+ import Vision
7
+ import AppKit
8
+
9
+ let args = CommandLine.arguments
10
+ guard args.count >= 3 else {
11
+ FileHandle.standardError.write("uso: ocr_vision <pasta> <saida.json>\n".data(using: .utf8)!)
12
+ exit(2)
13
+ }
14
+ let pasta = args[1], saida = args[2]
15
+ let fm = FileManager.default
16
+ guard let nomes = try? fm.contentsOfDirectory(atPath: pasta).filter({ $0.hasSuffix(".jpg") }).sorted() else {
17
+ FileHandle.standardError.write("pasta ilegível\n".data(using: .utf8)!)
18
+ exit(2)
19
+ }
20
+ var out: [String: [[String: Any]]] = [:]
21
+ for nome in nomes {
22
+ let url = URL(fileURLWithPath: pasta + "/" + nome)
23
+ guard let img = NSImage(contentsOf: url),
24
+ let cg = img.cgImage(forProposedRect: nil, context: nil, hints: nil) else { continue }
25
+ let req = VNRecognizeTextRequest()
26
+ req.recognitionLevel = .accurate // .fast perde palavra curta ("SAIR")
27
+ req.usesLanguageCorrection = false
28
+ req.recognitionLanguages = ["pt-BR", "en-US"]
29
+ try? VNImageRequestHandler(cgImage: cg, options: [:]).perform([req])
30
+ var itens: [[String: Any]] = []
31
+ for r in (req.results ?? []) {
32
+ guard let c = r.topCandidates(1).first else { continue }
33
+ let b = r.boundingBox
34
+ itens.append(["t": c.string, "c": c.confidence,
35
+ "x": b.minX, "y": b.minY, "w": b.width, "h": b.height])
36
+ }
37
+ out[nome] = itens
38
+ }
39
+ let data = try! JSONSerialization.data(withJSONObject: out)
40
+ try! data.write(to: URL(fileURLWithPath: saida))
41
+ print("ok \(nomes.count)")