primocode 10.16.0 → 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 (234) 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 +11 -2
  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 +36 -8
  198. package/lib/catalogo.js +4 -0
  199. package/lib/chamada-torta.js +81 -0
  200. package/lib/editor-pro.js +786 -0
  201. package/lib/entrega.js +58 -0
  202. package/lib/estudio/conferencia-visual.js +76 -0
  203. package/lib/estudio/diretor.js +6 -1
  204. package/lib/estudio/exportar.js +3 -1
  205. package/lib/estudio/gosto.js +45 -4
  206. package/lib/estudio/index.js +8 -5
  207. package/lib/estudio/kit-ae/base.jsx +119 -13
  208. package/lib/estudio/kit-ae/cenas.jsx +47 -15
  209. package/lib/estudio/kit-ae/guarda.jsx +274 -0
  210. package/lib/estudio/kit-ae/primitivas.jsx +180 -24
  211. package/lib/estudio/maquina-diretor.js +61 -7
  212. package/lib/estudio/maquina-foto.js +177 -0
  213. package/lib/estudio/maquina-guarda.js +207 -0
  214. package/lib/estudio/maquina-layout.js +22 -1
  215. package/lib/estudio/maquina.js +60 -11
  216. package/lib/estudio/referencias.js +1 -1
  217. package/lib/estudio/visao/visao.swift +97 -0
  218. package/lib/estudio/visao.js +60 -0
  219. package/lib/local/cerebro.json +192 -6
  220. package/lib/local/motor.js +5 -2
  221. package/lib/nuvem.js +11 -1
  222. package/lib/passagem.js +50 -0
  223. package/lib/perigo.js +19 -11
  224. package/lib/protecao.js +134 -0
  225. package/lib/titulo-conversa.js +46 -0
  226. package/lib/tools.js +3 -0
  227. package/lib/ui.js +1 -1
  228. package/package.json +3 -2
  229. package/skills/editar-meu-video/SKILL.md +6 -2
  230. package/skills/editar-video/SKILL.md +113 -0
  231. package/studio/pessoa.py +52 -0
  232. package/voz/primo_voz/app.py +43 -4
  233. package/voz/primo_voz/chat.html +17 -6
  234. package/voz/primo_voz/painel_dados.py +134 -0
@@ -0,0 +1,24 @@
1
+ video-use (https://github.com/browser-use/video-use)
2
+ Código adaptado em editor/helpers/transcribe.py, transcribe_batch.py, pack_transcripts.py, render_cut.py, grade.py e timeline_view.py.
3
+
4
+ MIT License
5
+
6
+ Copyright (c) 2026 Browser Use
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in all
16
+ copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
+ SOFTWARE.
@@ -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,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 Shiqi Yu <shiqi.yu@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # PrimoCode v10.16.0
1
+ # PrimoCode v10.17.0
2
2
 
3
3
  Agente de engenharia brasileiro para o terminal, no estilo Claude Code.
4
4
  Cria arquivos de verdade, roda comandos, **controla o navegador e o desktop** —
@@ -9,7 +9,7 @@ OpenRouter, e cada apelido (`top`/`main`/`fast`) é uma **corrente**: se um mode
9
9
  está no limite de pedidos, o próximo atende. Você não vê o erro, e não paga nada.
10
10
 
11
11
  ```
12
- ▐▛███▜▌ Primo Code v10.16.0
12
+ ▐▛███▜▌ Primo Code v10.17.0
13
13
  ▝▜█████▛▘ Bem-vindo de volta, Joel
14
14
  ▘▘ ▝▝ ~/primocode · /dir <pasta> muda
15
15
  ```
package/bin/primocode.js CHANGED
@@ -102,7 +102,10 @@ const state = {
102
102
  memoria: memoria.nova(),
103
103
  // O histórico que o app desktop e o celular enxergam. Cifrado antes de
104
104
  // sair daqui; o porquê de cada peça está em lib/nuvem.js.
105
- gravador: nuvem.gravador(),
105
+ gravador: nuvem.gravador({
106
+ // título de 2 a 5 palavras escrito pelo modelo, depois da primeira resposta (lib/titulo-conversa.js)
107
+ batizar: (pedido, resposta) => require('../lib/titulo-conversa.js').escolher({ pedido, resposta, perguntar: perguntarNome }),
108
+ }),
106
109
  /* Começa LIBERADO e a abertura decide depois. Começar bloqueado deixaria
107
110
  um instante em que a pessoa digita e leva "sem acesso" antes de o
108
111
  plano ter sido conferido — e num pipe, onde a abertura nem roda, o
@@ -2942,6 +2945,12 @@ async function main() {
2942
2945
  if (process.argv[2] === 'video') {
2943
2946
  process.exit(await require('../lib/video/cli.js').main(process.argv.slice(3)));
2944
2947
  }
2948
+ /* `primocode editor <acao> --json '{...}'`: a edição completa de vídeo falado
2949
+ (lib/editor-pro.js, motor do EDIT IA PRO), pelo run_shell quando o servidor
2950
+ ainda não declara a ferramenta editor_pro. Uma linha de JSON no stdout. */
2951
+ if (process.argv[2] === 'editor') {
2952
+ process.exit(await require('../lib/editor-pro.js').main(process.argv.slice(3)));
2953
+ }
2945
2954
  // `primocode mcp …`: os servidores MCP pelo run_shell (lib/mcp.js).
2946
2955
  if (process.argv[2] === 'videos') {
2947
2956
  const r = require('../lib/estudio/exportar.js').main(process.argv.slice(3));
@@ -3071,7 +3080,7 @@ async function main() {
3071
3080
  if (typeof fl.resume === 'string') await retomarConversa(fl.resume);
3072
3081
  else if (continuar) await continuarUltima();
3073
3082
  state.semTerminal = true;
3074
- process.env.PRIMOCODE_SEM_TELA = '1'; // modo script: nenhuma tela de gosto abre
3083
+ process.env.PRIMOCODE_SEM_TELA = '1'; // modo script: nenhuma tela de gosto abre no navegador (com PRIMOCODE_APP=1 o app abre pela linha `primocode:abrir-gosto`)
3075
3084
  if (process.env.PRIMOCODE_LOG_FERRAMENTAS === '1') { // o app do Primo registra cada ferramenta no log dele
3076
3085
  require('../lib/voz-ponte').escutar((nome, a) => process.stderr.write(`ferramenta: ${nome} ${JSON.stringify(a || {}).slice(0, 220)}\n`));
3077
3086
  }
@@ -0,0 +1,11 @@
1
+ # Licença
2
+
3
+ Copyright (c) 2026 SHK Soluções Digitais LTDA. Todos os direitos reservados.
4
+
5
+ Este software é distribuído apenas para quem tem acesso liberado ao produto. Não é permitido
6
+ revender, sublicenciar ou redistribuir sem autorização por escrito.
7
+
8
+ Partes deste projeto foram adaptadas de software de código aberto, e ele inclui fontes
9
+ (`assets/fonts/`) e um modelo de detecção de rosto (`assets/models/`) com licença livre. Os avisos e
10
+ as licenças dessas partes estão em `THIRD_PARTY_NOTICES.md` e ao lado de cada arquivo, e continuam
11
+ valendo nos termos originais. Este aviso de direitos reservados não se aplica a elas.
@@ -0,0 +1,321 @@
1
+ # Editor de Vídeo
2
+
3
+ Uma skill para o **Claude Code** e para o **Codex** que edita vídeos falados gravados no celular,
4
+ só conversando. Feita para quem grava criativo de anúncio, Reels e TikTok olhando para a câmera.
5
+
6
+ Você entrega a pasta com as gravações e conversa. A IA:
7
+
8
+ - ouve tudo e escolhe as melhores tomadas;
9
+ - tira pausas, erros, gaguejadas e repetições;
10
+ - monta o corte na ordem que funciona para anúncio (gancho, problema, virada, prova, chamada);
11
+ - depois coloca legenda animada, texto de gancho, tela dividida com imagem, zoom nos cortes,
12
+ efeitos sonoros, trilha, botão de chamada e, se você pedir, aviso de resultado;
13
+ - faz tela verde sem pano verde: recorta você do fundo da gravação e te coloca no canto ou no meio, na
14
+ frente de um print, uma foto ou um vídeo (bom para comentar uma página, reagir a um vídeo ou mostrar um
15
+ produto). As imagens e vídeos da edição passam no fundo, sem tela dividida, e o print aparece inteiro acima
16
+ de você. O recorte roda no seu computador e leva uns 3 minutos por minuto de vídeo na primeira vez;
17
+ - anima textos e números que a IA de vídeo não desenha certo: lista com check, lista riscada, passo a
18
+ passo, etiqueta de preço, contador, gráfico, palavra de impacto e "comenta a palavra", no segundo em
19
+ que você fala, sem cobrir o seu rosto;
20
+ - escolhe entre 24 efeitos sonoros prontos pelo sentido da fala (notificação na venda, erro, contagem
21
+ de números, grave na revelação, teclado, rebobinar...), que você também pode pedir pelo nome em
22
+ português;
23
+ - guarda as suas músicas de fundo por clima (animada, triste, tensa...) para você só dizer
24
+ "trilha triste" na próxima edição;
25
+ - se você quiser, limpa o ruído de fundo da voz (chiado, ventilador, rua);
26
+ - confere o próprio trabalho (som, cortes, textos na tela, rosto livre) antes de te mostrar.
27
+
28
+ Tudo roda no seu computador. Você acompanha num **preview** com player e linha do tempo, marca o
29
+ que quer mudar e aprova em dois momentos: o corte e o vídeo final.
30
+
31
+ ## Do que você precisa
32
+
33
+ - **Mac com chip Apple** (M1, M2, M3, M4) com **macOS 13 (Ventura) ou mais novo**. No macOS 14 ou mais
34
+ novo a transcrição usa a placa gráfica e fica bem mais rápida.
35
+ - **Mac com processador Intel** com **macOS 14 (Sonoma) ou mais novo**. Funciona, mas a transcrição
36
+ é mais lenta.
37
+ - **Windows 10 ou 11 de 64 bits** com processador Intel ou AMD.
38
+ - Não funciona em Windows com processador ARM (como Snapdragon), nem em Mac com sistema mais antigo
39
+ que os de cima: algumas bibliotecas não existem para eles. O instalador avisa e não instala nada.
40
+ - **8 GB de memória** (16 GB deixa tudo mais folgado).
41
+ - **Uns 5 GB livres** no disco: cerca de 1 GB de programas, 1,6 GB do modelo de voz e o espaço
42
+ dos seus vídeos.
43
+ - **Claude Code** (app ou terminal) ou o **app do Codex**, já com login feito.
44
+ - Internet na instalação e na primeira transcrição. Depois disso, cortar e legendar funciona sem
45
+ internet (só a busca de imagens precisa).
46
+
47
+ ## Instalação
48
+
49
+ ### 1. Instale o uv e o ffmpeg
50
+
51
+ **Mac:** abra o app Terminal e rode:
52
+
53
+ ```
54
+ brew install uv ffmpeg
55
+ ```
56
+
57
+ Se aparecer `command not found: brew`, instale o Homebrew antes, seguindo as instruções de
58
+ https://brew.sh, e rode o comando de novo.
59
+
60
+ **Windows:** abra o PowerShell e rode:
61
+
62
+ ```
63
+ winget install astral-sh.uv Gyan.FFmpeg
64
+ ```
65
+
66
+ Se o seu Windows não aceitar os dois de uma vez, rode um de cada vez:
67
+ `winget install astral-sh.uv` e depois `winget install Gyan.FFmpeg`.
68
+
69
+ ### 2. Feche e abra o terminal
70
+
71
+ Feche todas as janelas do Terminal ou do PowerShell e abra de novo. Sem isso o computador ainda
72
+ não enxerga o que você acabou de instalar.
73
+
74
+ ### 3. Rode o instalador
75
+
76
+ Descompacte a pasta `editor-video` que você recebeu e abra o terminal dentro dela:
77
+
78
+ - **Mac:** no Terminal, digite `cd ` (com espaço), arraste a pasta para a janela e aperte Enter.
79
+ - **Windows:** clique com o botão direito na pasta e escolha **Abrir no Terminal**.
80
+
81
+ Depois rode:
82
+
83
+ ```
84
+ uv run --no-project python install.py
85
+ ```
86
+
87
+ O instalador:
88
+
89
+ 1. confere se o computador é compatível;
90
+ 2. acha o Claude Code e o Codex no seu computador e copia a skill para cada um
91
+ (`~/.claude/skills/editor-video` e `~/.codex/skills/editor-video`);
92
+ 3. baixa as bibliotecas que a skill usa (na primeira vez leva alguns minutos);
93
+ 4. confere se o ffmpeg está instalado;
94
+ 5. mostra um resumo. Quando aparecer **Pronto!**, deu tudo certo.
95
+
96
+ Depois **feche e abra o Claude Code ou o Codex** para a skill aparecer.
97
+
98
+ Opções do instalador (para casos especiais):
99
+
100
+ | Opção | Para que serve |
101
+ |---|---|
102
+ | `--dry-run` | Mostra o que faria, sem mudar nada. |
103
+ | `--dest PASTA` | Instala só nessa pasta (pode repetir). |
104
+ | `--no-sync` | Copia os arquivos sem baixar as bibliotecas. |
105
+ | `--dev` | Cria um atalho para a pasta em vez de copiar (para quem mexe no código). |
106
+
107
+ ## Primeiro uso
108
+
109
+ Coloque os vídeos brutos numa pasta só, por exemplo `Filmes/criativo-bolsa`. No Mac, evite Mesa,
110
+ Documentos e Downloads na primeira vez (o macOS pode bloquear o acesso; veja "Problemas comuns").
111
+
112
+ ### No Claude Code
113
+
114
+ 1. Abra o Claude Code na pasta dos vídeos. No app, escolha a pasta ao começar a conversa. No
115
+ terminal, entre na pasta e rode `claude`.
116
+ 2. Peça em português normal, por exemplo:
117
+ *"Edita os vídeos dessa pasta para um anúncio de uns 30 segundos."*
118
+ Se quiser chamar a skill pelo nome, digite `/editor-video`.
119
+ 3. O preview abre ao lado da conversa. Responda as perguntas, aprove o corte, escolha o estilo e
120
+ aprove o final.
121
+
122
+ ### No app do Codex
123
+
124
+ 1. Abra o Codex e escolha a pasta dos vídeos como projeto.
125
+ 2. Peça, por exemplo: *"Use $editor-video para editar os vídeos desta pasta."*
126
+ 3. O Codex abre o preview no navegador do app. Se não abrir, entre no endereço que ele mostrar
127
+ (normalmente `http://127.0.0.1:4830`).
128
+ 4. Quando o Codex pedir permissão para rodar comandos ou abrir o preview, aprove.
129
+ 5. **Importante no Codex:** depois de clicar em Aprovar, Salvar marcações ou Salvar estilo, mande
130
+ uma mensagem na conversa (pode ser só "pronto"). O Codex só vê o clique quando você escreve.
131
+
132
+ ### Como é o caminho
133
+
134
+ 1. **Conversa rápida:** produto, para onde vai o clique, duração.
135
+ 2. **Corte:** a IA transcreve, escolhe as tomadas e te conta o plano antes de cortar.
136
+ 3. **Você assiste o corte** no preview. Gostou, clica em **Aprovar**. Quer mudar, marca o trecho
137
+ (tecla `I` no começo, `O` no fim), escreve o que quer e clica em **Salvar marcações**.
138
+ 4. **Estilo:** na aba Estilo você escolhe o tipo de edição (limpa, tela dividida ou tela verde, com a
139
+ posição: canto esquerdo, canto direito ou meio), legenda, gancho, cor, elementos e a trilha de fundo (um
140
+ clima da sua biblioteca, um arquivo da pasta ou sem trilha), vendo amostras no seu próprio vídeo.
141
+ O elemento **Motion** liga as animações de texto e número: a IA sugere onde elas cabem pela sua
142
+ fala e só coloca as que você aprovar.
143
+ 5. **Final:** a IA monta o vídeo completo. Você aprova ou marca de novo.
144
+ 6. O vídeo pronto fica em `edit/final.mp4`, dentro da pasta dos vídeos. Seus arquivos originais
145
+ nunca são alterados.
146
+
147
+ Atalhos do player: `Espaço` toca e pausa, setas andam 1 quadro, `Shift` + setas andam 1 segundo.
148
+
149
+ ## Biblioteca de trilhas
150
+
151
+ Você pode guardar músicas de fundo prontas, separadas por clima, e usar em qualquer edição sem
152
+ gerar nada de novo. Na conversa, é só dizer *"trilha triste"* ou *"põe uma trilha animada"*, ou
153
+ escolher o clima na aba Estilo do preview.
154
+
155
+ Os climas prontos são: **Animada** (energia, oferta, novidade), **Inspiradora** (conquista, virada de
156
+ vida), **Triste** (dor, problema, desabafo), **Tensa** (segredo, alerta, erro comum), **Calma**
157
+ (explicação, tutorial, confiança), **Épica** (revelação, resultado, grande virada), **Divertida**
158
+ (humor, bastidor) e **Luxo** (produto premium). Você pode criar os seus.
159
+
160
+ **Onde fica.** Fora da pasta da skill, para não se perder quando você atualiza ou reinstala:
161
+
162
+ - Mac: `~/.editor-video/trilhas` (pasta `.editor-video` dentro da sua pasta de usuário)
163
+ - Windows: `%USERPROFILE%\.editor-video\trilhas`
164
+
165
+ Dentro dela há uma pasta por clima (`animada`, `triste`...), a lixeira `_lixeira` (música removida vai
166
+ para lá, nada é apagado) e o índice `trilhas.json`, com duração, volume e energia de cada música. A
167
+ pasta só é criada quando a primeira música entra. O instalador nunca mexe nela.
168
+
169
+ **Como pôr as suas músicas.** Peça na conversa, por exemplo *"guarda esta música como trilha
170
+ animada: /Users/ana/Músicas/pop.mp3"*. A IA copia o arquivo (o original fica onde está), mede e
171
+ anota tudo. Use só música que você tem direito de usar em anúncio: feita por você, comprada com
172
+ licença comercial ou de um banco que libera uso comercial. Diga de onde veio para ficar anotado.
173
+ Também dá para marcar a favorita de cada clima: é ela que entra primeiro.
174
+
175
+ **Músicas feitas com IA na sua conta ElevenLabs** também podem ir para a biblioteca (peça, por
176
+ exemplo, *"gera uma trilha tensa e guarda na biblioteca"*). Elas seguem as regras da ElevenLabs
177
+ logo abaixo: plano pago certo na hora de gerar, uso só nos seus vídeos, sem repassar, vender ou
178
+ juntar em pacote. A biblioteca é sua: não mande a pasta para outras pessoas.
179
+
180
+ ## Chaves opcionais
181
+
182
+ Nada disso é necessário. Sem chave, as imagens vêm do Wikimedia Commons (grátis) e a trilha é um
183
+ arquivo seu ou da sua biblioteca de trilhas (ou fica sem trilha).
184
+
185
+ | Chave | Para que serve |
186
+ |---|---|
187
+ | `PEXELS_API_KEY` | Buscar fotos no Pexels (grátis, precisa de cadastro no site do Pexels). |
188
+ | `OPENROUTER_API_KEY` | Gerar imagem com IA pelo OpenRouter (pago por imagem). |
189
+ | `ELEVENLABS_API_KEY` | Gerar trilha (música de fundo) ou um efeito sonoro com IA na sua conta ElevenLabs (pago por uso). Para usar em anúncio, a conta precisa de plano pago. |
190
+
191
+ **Trilha e efeito com IA (ElevenLabs):** são gerados na sua própria conta, com a sua chave, e ficam
192
+ só na pasta `edit` do seu vídeo. Nenhuma música gerada vem junto com a skill. Antes de gerar, a IA
193
+ mostra o custo em créditos e pede o seu ok. Regras da ElevenLabs (lidas em 16/09/2026; elas mudam,
194
+ então confira os termos no site dela antes de anunciar):
195
+
196
+ - Para usar em anúncio, a sua conta precisa estar num plano pago na hora de gerar. No plano grátis
197
+ o uso comercial não é permitido.
198
+ - Pessoa física pode usar do plano Starter para cima. Empresa precisa do Scale (menos de 10
199
+ funcionários), do Business (menos de 50) ou do Enterprise.
200
+ - Vale para anúncio e post na internet. TV, rádio e cinema ficam de fora.
201
+ - O arquivo é só para os seus vídeos: não repasse, não venda e não monte pacote de músicas ou de
202
+ sons com ele.
203
+ - No pedido, nada de nome de artista, banda, compositor, música, álbum, gravadora, filme ou marca,
204
+ nem trecho de letra.
205
+ - A chave é só sua: não mande para ninguém.
206
+
207
+ **Jeito mais fácil:** peça na conversa, por exemplo *"quero usar imagem com IA, minha chave do
208
+ OpenRouter é ..."* ou *"quero trilha com IA, minha chave da ElevenLabs é ..."*. A IA grava a chave
209
+ no arquivo certo para você, sem você mexer em pasta escondida. Faça isso uma vez no Claude Code e
210
+ uma vez no Codex, se usar os dois: cada app tem a sua cópia da skill.
211
+
212
+ Para fazer na mão: crie um arquivo chamado `.env` dentro da pasta da skill
213
+ (`~/.claude/skills/editor-video/.env` e/ou `~/.codex/skills/editor-video/.env`) com uma chave por
214
+ linha:
215
+
216
+ ```
217
+ PEXELS_API_KEY=cole_sua_chave_aqui
218
+ OPENROUTER_API_KEY=cole_sua_chave_aqui
219
+ ELEVENLABS_API_KEY=cole_sua_chave_aqui
220
+ ```
221
+
222
+ Não mande esse arquivo para ninguém. O instalador mantém o `.env` quando você atualiza, mesmo se a
223
+ atualização falhar no meio.
224
+
225
+ ## Atualizar
226
+
227
+ Baixe a versão nova, abra o terminal dentro da pasta dela e rode o mesmo comando:
228
+
229
+ ```
230
+ uv run --no-project python install.py
231
+ ```
232
+
233
+ Suas chaves no `.env` continuam lá, e a biblioteca de trilhas também (ela fica fora da skill). Feche e
234
+ abra o Claude Code ou o Codex.
235
+
236
+ ## Desinstalar
237
+
238
+ Apague a pasta `editor-video` dentro de `~/.claude/skills` e/ou `~/.codex/skills`. A biblioteca de
239
+ trilhas (`~/.editor-video/trilhas`) continua no computador; apague só se não quiser mais as músicas.
240
+
241
+ ## Problemas comuns
242
+
243
+ **`command not found: uv` ou "uv não é reconhecido"**
244
+ Feche e abra o terminal. Se continuar, instale de novo (Mac: `brew install uv`; Windows:
245
+ `winget install astral-sh.uv`) e feche todas as janelas do terminal antes de tentar.
246
+
247
+ **`'ffmpeg' não encontrado`**
248
+ Mac: `brew install ffmpeg`. Windows: `winget install Gyan.FFmpeg`. Depois feche e abra o terminal
249
+ e também o Claude Code ou o Codex.
250
+
251
+ **O instalador diz "Este computador não é compatível"**
252
+ A skill funciona em Mac com chip Apple no macOS 13 ou mais novo, em Mac Intel no macOS 14 ou mais novo
253
+ e em Windows 64 bits com Intel ou AMD. Num Mac com macOS antigo, atualize o sistema e rode o instalador de novo.
254
+
255
+ **O instalador diz que não achou o Claude Code nem o Codex**
256
+ Abra o Claude Code ou o Codex pelo menos uma vez (isso cria a pasta de configuração) e rode o
257
+ instalador de novo.
258
+
259
+ **A skill não aparece**
260
+ Feche e abra o app. Confira se existe o arquivo `SKILL.md` em `~/.claude/skills/editor-video` ou
261
+ `~/.codex/skills/editor-video`. Se não existir, rode o instalador de novo.
262
+
263
+ **A primeira transcrição demora muito**
264
+ Na primeira vez a skill baixa o modelo de voz (cerca de 1,6 GB). Aparece "baixando o modelo...
265
+ (só na primeira vez)". Deixe terminar com a internet ligada. Das próximas vezes é rápido.
266
+
267
+ **No Windows a transcrição é lenta**
268
+ No Windows ela roda no processador, sem a aceleração do chip da Apple. É normal levar mais tempo.
269
+ Feche programas pesados enquanto isso.
270
+
271
+ **Mac: erro de permissão, "Operation not permitted" ou o preview diz que não consegue gravar**
272
+ O macOS protege as pastas Mesa, Documentos, Downloads e discos externos. Duas saídas:
273
+ 1. Libere: **Ajustes do Sistema > Privacidade e Segurança > Arquivos e Pastas** e ative o acesso
274
+ para o app que você usa (Claude, Codex ou Terminal). Para disco externo, ative "Volumes
275
+ removíveis". Se não resolver, use **Acesso Total ao Disco**. Depois feche e abra o app.
276
+ 2. Ou mova os vídeos para outra pasta, como `Filmes`.
277
+
278
+ **O preview não abre**
279
+ Abra no navegador o endereço que a IA mostrou (normalmente `http://127.0.0.1:4830`). Se outra
280
+ edição já estiver aberta, a porta pode ser outra, como 4831. O endereço certo fica anotado em
281
+ `edit/preview_cache/server.json`.
282
+
283
+ **Cliquei em Aprovar e nada aconteceu (Codex)**
284
+ Mande uma mensagem na conversa, por exemplo "pronto". O Codex só vê o que você fez no preview
285
+ quando você escreve.
286
+
287
+ **Cores estranhas em vídeo de iPhone**
288
+ Vídeo gravado em HDR pode ficar com a cor diferente depois do corte. Para os próximos vídeos,
289
+ desligue em **Ajustes > Câmera > Gravar Vídeo > Vídeo HDR**.
290
+
291
+ **O disco está enchendo**
292
+ Depois de terminar um vídeo, você pode apagar as pastas `clips`, `renders` e `preview_cache` dentro
293
+ de `edit`. Elas são só arquivos temporários e a skill recria se precisar.
294
+
295
+ **O instalador falhou no "uv sync"**
296
+ Leia a linha de ERRO do instalador: ela diz se é internet (confira a conexão e rode de novo) ou se
297
+ uma biblioteca não existe para este computador (veja "Do que você precisa").
298
+
299
+ ## Privacidade
300
+
301
+ O corte, a transcrição, o recorte da tela verde e a montagem acontecem no seu computador. Só sai para a internet: o download
302
+ do modelo de voz na primeira vez, a busca de imagens (Wikimedia Commons ou Pexels) e, se você
303
+ quiser, o pedido de imagem com IA ao OpenRouter e o pedido de trilha ou efeito à ElevenLabs, na sua
304
+ conta. Nesses pedidos vai só o texto que descreve a imagem ou o som, nunca o seu vídeo.
305
+
306
+ O preview só aceita conexões deste computador e só grava cliques feitos na própria página do
307
+ preview (outro site aberto no navegador não consegue aprovar nem ler a sua edição).
308
+
309
+ ## Licença
310
+
311
+ Uso restrito a quem tem acesso ao produto. Veja `LICENSE.md`. Partes de código aberto, fontes, o
312
+ modelo de detecção de rosto, o modelo de recorte da pessoa (tela verde) e os efeitos sonoros incluídos estão
313
+ listados em `THIRD_PARTY_NOTICES.md`.
314
+
315
+ Os 24 efeitos sonoros prontos (`whoosh`, `pop`, `click`, `tick`, `rise`, `cash`, `coin`,
316
+ `notification`, `success`, `error`, `count`, `keyboard`, `snap`, `mouse_click`, `bass_drop`,
317
+ `metal_hit`, `synth_hit`, `flash`, `charge`, `metal_riser`, `wind`, `rewind`, `gears`, `data`) são CC0
318
+ ou de domínio público, ou feitos pelo código do próprio editor, então eles vão junto e você pode usar
319
+ nos seus vídeos, inclusive comerciais, sem pagar e sem dar crédito a ninguém. O comprovante de licença de
320
+ cada som (página de origem, autor, licença, a frase da licença e a data em que ela foi lida) fica em
321
+ `assets/sfx/licencas/`.