Communitygithub.com

montage-editeur

Edita un video de persona hablando (9:16 Reel, TikTok, Short o anuncio pago) y lo convierte en una edición dinámica con gráficos en movimiento: cámara a pantalla completa intercalada con paneles donde el orador se aleja para aparecer en una tarjeta inferior con su cabeza asomando, mientras gráficos animados de la marca (logotipo oficial, capturas del sitio web, maquetas de chat/teléfono, tarjetas de características, revelación del logotipo) se muestran arriba. Incluye subtítulos, música de fondo, efectos de sonido, movimientos de cámara de acercamiento/alejamiento; luego abre una INTERFAZ DE EDICIÓN local tipo CapCut (lista de escenas, vista previa en vivo, línea de tiempo de cada animación, subtítulos, pistas de voz/música/efectos) donde el usuario hace clic en cualquier elemento para dejar un comentario que Claude procesa. Úsalo cuando el usuario envíe un video hablado para editar 'con gráficos en movimiento', 'para un cliente', 'como un anuncio', 'como una demo de producto', o pida 'una interfaz de edición / línea de tiempo', 'para ajustar los niveles de sonido' o 'para comentar una animación'.

¿Qué es montage-editeur?

Este skill transforma un video de persona hablando (formato vertical 9:16 para Reels, TikTok, Shorts o anuncios pagados) en una pieza pulida con gráficos en movimiento, combinando tomas a pantalla completa con paneles dinámicos donde el orador aparece en una tarjeta inferior con su cabeza emergiendo, mientras gráficos animados de la marca (logotipos oficiales, capturas de sitios web, maquetas de interfaz, tarjetas de características y una revelación final del logotipo) se muestran arriba. Además, añade subtítulos sincronizados, música de fondo, efectos de sonido y movimientos de cámara como acercamientos y alejamientos. El skill incluye un editor visual local (similar a CapClip) con lista de escenas, vista previa en vivo, línea de tiempo de cada animación y pistas de audio, donde el usuario puede hacer clic en cualquier elemento para dejar un comentario que Claude procesa automáticamente, modificando la animación, el sonido o los subtítulos según la solicitud. Está diseñado para Claude Code, Cursor, Codex y otras plataformas que ejecutan scripts bash/Python/Node, y sigue un flujo de trabajo estructurado: preparación del video, captura de marca, generación de subtítulos, plan de edición, aplicación de gráficos y sonidos, renderizado y edición interactiva. Es útil para creadores de contenido, mercadólogos y agencias que necesitan producir videos promocionales o de demostración de producto con un acabado profesional y coherente con la identidad de la marca.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hakunadigitalpro-png/montage-editeur/tree/HEAD

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Edición con gráficos en movimiento + interfaz de edición

Habla con el usuario en su idioma. Escribe los subtítulos con las palabras exactas del orador (nunca parafrasees).

Rutas: ME = esta carpeta del skill, W = una carpeta de proyecto por video. Todos los scripts son bash/python/node; scripts/env.sh encuentra ffmpeg, node, python, Chrome y el motor empaquetado (engine/). Primera vez: consulta README.md → Instalación (npm install en la carpeta del skill, pip install -r requirements.txt).

Reglas (no negociables)

  1. Solo logotipos oficiales para cualquier marca mencionada — nunca un icono "inspirado" redibujado. Obténlo del sitio web de la marca (capture_site.js) o pregúntale al usuario.
  2. Manual de marca: para un cliente, lee los colores, fuentes y logotipo de su sitio web (captures/info.json) y escribe la paleta al inicio de parts/top.js. Para los videos del propio usuario, pregunta por su manual una vez y guárdalo en theme.json + top.js.
  3. Capturas del sitio web: captura el sitio del cliente (páginas completas, escritorio + móvil) y úsalas en los paneles (navegador con scroll, ilustraciones oficiales recortadas). Los banners de cookies se ocultan, nunca se aceptan. Las pantallas de producto con sesión iniciada no son accesibles: indícalo y ofrece integrar capturas de pantalla que el usuario proporcione.
  4. Ritmo: pantalla completa ↔ paneles (alejamiento ENTRANDO, acercamiento SALIENDO), acercamientos en palabras fuertes (~1 cada 2-3 s), exactamente un momento destacado (revelación del logotipo/nombre), música de fondo atenuada bajo la voz, efectos de sonido (whoosh en cada zoom, pops, clics, tecleo, impacto en la revelación), destello de luz en los cortes.
  5. Anuncios pagados: nada importante en el 14 % superior (y < 270) ni por debajo de y ≈ 1250 (interfaz de Reels/TikTok); subtítulos elevados (CAPDY); sin subtítulos dentro de los paneles (el panel muestra las palabras como títulos); tarjeta final = logotipo de la marca + URL + las palabras del orador; sin afirmaciones ni números inventados.
  6. Subtítulos nunca sobre el rostro. Idiomas LTR → "sens": "ltr" en projet.json (el build corrige el orden de las palabras); RTL (árabe) → "rtl". Nombre de la marca como una píldora (fx: "pill", colores en projet.json → pill).
  7. Mezcla: el usuario ajusta voz / música / efectos en el editor. Valores predeterminados: voz 100 %, música 46 %, efectos 36 %. Siempre normaliza el volumen a -14 LUFS.
  8. Cada animación es un ELEMENTO del registro (ver más abajo) para que el usuario pueda seleccionarlo, desplazarlo, ocultarlo y comentarlo. No hay animación fuera del registro.
  9. Anclajes: cada wS(card, word) debe apuntar a la palabra que la animación ilustra — ejecuta scripts/ancres.py y lee la tabla; nunca adivines un índice.

Flujo de trabajo

  1. Preparar: bash $ME/scripts/preparer.sh <video> <W> <lang> "<Whisper prompt: nombres propios>" → fuente copiada, recorte a pantalla completa, fotogramas, cortes probables, transcripción palabra por palabra. Luego el recorte de la persona en el fondo (~1 s/fotograma; no ejecutes Whisper al mismo tiempo — RAM): python $ME/engine/mask.py u2net_human_seg <W> && python $ME/engine/make_head.py <W>.
  2. Cliente (si aplica): node $ME/scripts/capture_site.js <url> <W> → captures/, assets/logo-*.png, colores/fuentes. Revisa las capturas; recorta elementos visuales útiles en W/assets/ (ilustraciones, una página larga para un navegador con scroll).
  3. Subtítulos: escribe W/cartes.json (palabras exactas + tiempos de Whisper; tarjetas de 2-5 palabras; hot, fx) → python $ME/scripts/cartes.py <W>. Plantilla: templates/cartes.EXAMPLE.json.
  4. Plan de edición: divide el guion en bloques (gancho, problema, producto, prueba, CTA…), elige para cada uno: pantalla completa o panel, qué objeto concreto mostrar, un momento destacado, sonidos. Escribe W/plan-montage.md (plantilla templates/plan.EXAMPLE.md) y muéstralo brevemente al usuario antes de animar.
  5. projet.json (plantilla templates/projet.EXAMPLE.json): nom, titre, langue, sens, outro, vol, musique_gain, pill, coupes, cadrage (tomas que van a un panel → ventana de medición), cadrage_force si la máscara captura el fondo. Luego python $ME/scripts/framing.py <W>.
  6. Escenas en W/parts/: top.js ← templates/top.EXAMPLE.js (paleta, CUTS/SEGB, PANELS, zooms ZP, CAPDY); primitives.js ← templates/primitives.js; gfx.js ← templates/gfx.EXAMPLE.js (SCENES_ED, un EL(...) por animación, capas, tarjeta final, fuentes).
  7. Sonidos: W/sons.json (plantilla templates/sons.EXAMPLE.json): musique {bpm, intro_filtree, coupure = silencio antes de una revelación, accords} y events = [element|null, time|"fin+x", "sound[:param]", gain, [repeat, step]]. Sonidos: pop, bulle, clic, shutter, succes, buzz, tick, touche, impact, tape, whoosh_in:dur, whoosh_out:dur, ding:freq:dur, shimmer:dur, riser:dur, souffle:dur. Vincula cada sonido a su elemento para que lo siga cuando el elemento se desplaza u oculta.
  8. Anclajes: python $ME/scripts/ancres.py <W>.
  9. Vistas previas: python $ME/scripts/build.py <W> luego node $ME/engine/04_render_frames.js <W> preview t1 t2 … → hoja de contactos → revisa como un editor exigente (¿legible? ¿rostro claro? ¿zonas seguras para anuncios?) y corrige antes de renderizar.
  10. Renderizar: bash $ME/scripts/rendu.sh <W> (segundo plano, 3-6 min) → <nom>.mp4 (+ .srt/.txt), pistas en mixage/pistes/, medios del editor. Revisa 6-8 fotogramas del MP4, -14 LUFS, tamaño.
  11. Editor: ejecuta python $ME/scripts/editor_server.py <W> <port> (en Claude Code de escritorio: agrégalo a .claude/launch.json y usa la herramienta de vista previa), abre http://localhost:<port>/editeur/. Verifica que la vista previa, la selección con clic y la reproducción funcionen.
  12. Monitorear comentarios: vigila W/comments.json y emite una línea por cada comentario nuevo con status == "à faire" (comando en references/editor.md).

Procesar un comentario

  1. Léelo (target = el:<id> | scene:<id> | cap:<n> | audio:<track>, t, clic x,y).
  2. Establece el estado "en cours": POST /api/comments/status {"id":…,"status":"en cours"}.
  3. Cambia el elemento en parts/gfx.js (o top.js para zooms/paneles, cartes.json para subtítulos, sons.json para sonidos), manteniéndote dentro del manual de marca y el registro. Si la solicitud es vaga, aplica la mejor opción y menciona una alternativa en la respuesta.
  4. python $ME/scripts/build.py <W> (+ sons.py si cambian los sonidos) → el editor recarga su vista previa automáticamente. Revisa 1-2 fotogramas de vista previa.
  5. Estado "fait" + un reply breve (qué cambió) — se muestra en el editor. Recuerda al usuario que puede hacer clic en "Renderizar el video".
  6. Una preferencia general ("Nunca quiero X") → agrégala a las Reglas de este archivo.

Registro de elementos (contrato con el editor)

EL(id, name, scene, layer, [x,y,w,h], ()=>[start,end], t=>{…draw…})

  • layer: 'panel' (dibujado dentro del panel, detrás de la cabeza emergente) · 'full' (pantalla completa, al frente) · 'none' (globales: destellos, tarjeta final).
  • t recibido = tiempo desplazado por el editor (EDITS.off); dibuja solo dentro de tu ventana; oculto si EDITS.hide[id].
  • La caja [x,y,w,h] se usa para hacer clic en la vista previa: mantenla precisa.
  • SCENES_ED = escenas listadas a la izquierda del editor (id, label, a, b, kind).
  • Zooms: cada entrada ZP es el elemento zoom<i> (se puede eliminar en el editor).

Archivos del proyecto

projet.json · cartes.json → caps.json (caps.orig.json = base del editor) · sons.json · parts/{top,primitives,gfx}.js · framing.js · edits.json (configuración del editor: off, hide, caps, vol) · comments.json · captures/, assets/ · mixage/pistes/ · editeur/ · <nom>.mp4/.srt/.txt.

Skills relacionados