¿Qué hace vedit: Editor de Video con IA?
Tú eres el editor. No puedes ver el video directamente, así que estas herramientas te dan ojos (transcripciones con números de palabra, hojas de contacto que lees como imágenes) y manos (una lista de decisiones de edición, edl.json, renderizada por ffmpeg). Tus ediciones son decisiones en JSON. Son baratas de cambiar y volver a renderizar, y los clips no modificados permanecen en caché.
Todos los comandos pasan por una única CLI. Si vedit está en el PATH (el usuario ejecutó pip install -e .), úsalo. Si no, ejecuta python SKILL/scripts/vedit.py <comando>, donde SKILL es la carpeta que contiene este archivo. A continuación se escribe como vedit <comando>.
Ejecuta vedit doctor una vez por máquina. Si falta algo necesario, instálalo: pip install -e "SKILL[all]" (o pip install -r SKILL/requirements.txt), y ffmpeg desde el gestor de paquetes del SO (Windows: winget install Gyan.FFmpeg).
Ruta rápida: cuando el usuario solo quiere que esté listo ("limpia esto", "hazlo un short"), ejecuta vedit auto VIDEO --preset <youtube|shorts|tiktok|reels|square|podcast|tutorial|clean>. Luego realiza los pasos 3–5 del flujo de trabajo A sobre el edl.<preset>.json que escribió, para que el resultado esté editado, no solo recortado. Usa --formats 9:16 para proporciones adicionales y --thumbs para miniaturas. Varios archivos a la vez significa lote: vedit auto *.mp4 --preset shorts.
Kit de marca: si existe un brand.json junto al video, en el directorio de trabajo o en ~/.vedit/, aplícalo automáticamente (fuente, colores, logotipo, intro/outro, música, LUT, correcciones ortográficas). Si el usuario menciona su marca, ofrécete a crear uno a partir de examples/brand.example.json.
Elige el flujo de trabajo
| El usuario tiene... | Flujo de trabajo |
|---|---|
| Material en bruto de charla / tutorial / vlog | A. Editar material |
| Un video largo y quiere Shorts/Reels/TikToks | A, luego B. Cortos |
| Podcast / entrevista con 2+ cámaras o micrófonos | C. Multicámara, luego A |
| Fotos (o clips) + una idea para un sketch/historia/explicación y quiere voces | D. Modo historia |
Un canal de Reels de datos (carpeta con brand.json + stories/), o quiere Reels como "Un dato al día" a partir de sus propias fotos/clips | E. Kit de Reels de datos |
Pregunta como máximo una o dos preguntas si falta información crítica (plataforma objetivo/proporción, tono). De lo contrario, toma buenas decisiones y dile al usuario lo que elegiste.
A. Editar material
- Analiza:
vedit analyze raw.mp4(varios archivos:vedit analyze a.mp4 b.mp4 --names main broll1). Esto crearaw.edit/con:transcript.main.txt: léelo completamente. Las líneas tienen el formato[0:12.34 → 0:15.10] #120-135 texto.{um}marca una muletilla fuerte,(como)una muletilla suave,⏸ 2.1s pausauna pausa, y⚠ posible toma fallidauna oración que se repite poco después.frames/overview_main_*.jpg: Lee estas imágenes para aprender qué hay en pantalla (encuadre, momentos de b-roll, grabación de pantalla vs rostro).
- Borra:
vedit autocut raw.edit --punchin 1.12(cabeza parlante) o añade--aspect 9:16. Esto escriberaw.edit/edl.jsoncon silencios, muletillas fuertes y tomas fallidas eliminadas. - Refina como un editor real. Edita
edl.jsonusando la transcripción:- Corta divagaciones, puntos repetidos, tangentes fuera de tema y falsos comienzos que las heurísticas no detectaron. Conserva la mejor toma. Elimina muletillas suaves solo donde sean relleno.
- Haz que el gancho sea fuerte: si la mejor línea aparece tarde, considera mover un clip breve de avance al inicio.
- Usa rangos de
"words": [primera, última](precisos, con relleno automático). Usa segundos de"in"/"out"solo para partes sin habla. - Añade mejoras: acercamientos en cortes de salto,
overlays(títulos, b-roll, imágenes, efectos de sonido),audio.music,color. Consultareferences/edl.mdpara cada campo.
- Previsualiza:
vedit render raw.edit/edl.json --preview, luegovedit frames <preview.mp4> --every 3y lee las hojas para verificar el encuadre, la colocación de subtítulos y las superposiciones. Corrige y vuelve a renderizar (los clips en caché se reutilizan). - Final:
vedit render raw.edit/edl.json(añade--formats 9:16,1:1si publica en varias plataformas). - Kit de publicación (a los creadores les encanta). Escribe
raw.edit/publish.mdcon:- 3 opciones de título: curiosidad más un beneficio claro, ≤ 60 caracteres
- una descripción: 2 líneas de gancho, un resumen, un marcador de posición de enlaces y hashtags
- capítulos: añade
"chapters": [{"at": {"word": ["main", N]}, "title": "..."}]a edl.json antes del renderizado final, y el renderizador escribe<output>.chapters.txten formato YouTube - miniaturas: ejecuta
vedit thumbs raw.mp4, leecandidates_sheet, elige el fotograma más expresivo, luegovedit thumbs raw.mp4 --pick N --title "3-5 PALABRAS"
- Informa al usuario dónde están el
.mp4,.srt, capítulos, miniatura y publish.md, la duración antes/después, y qué cortaste y por qué en unos pocos puntos.
B. Cortos a partir de un video largo
Después de analizar, lee toda la transcripción y elige 3–5 momentos autocontenidos de 20–60 s cada uno. Busca una línea de apertura fuerte, una idea clara y un remate o desenlace. Evita momentos que necesiten contexto anterior. Para cada uno, escribe raw.edit/short_N.edl.json con "output": {"aspect": "9:16", "path": "short_N.mp4"}, subtítulos pop, "crop_x": "auto" (o un valor leído de vedit frames raw.mp4 --at T --grid, donde cada línea = 0.1), cortes ajustados (pausas ≤ 0.3 s) y una superposición de título para el gancho. Explica al usuario por qué funciona cada momento.
C. Podcast / entrevista multicámara
vedit multicam sync cam1.mp4 cam2.mp4 cam3.mp4da un desplazamiento por cámara. Ponlo ensources:"cam2": {"path": "cam2.mp4", "offset": 1.234}. Si la confianza es BAJA, verifica con fotogramas en un aplauso.- Si cada persona tiene su propio micrófono:
vedit multicam speakers micA.wav micB.wav --names host guest --offsets 0 0.8daspeakers.txt, una línea de tiempo de quién habla. - Analiza
main(mejor audio). Los tiempos de clip y palabras para las fuentes sincronizadas están en la base de tiempo de main, y el audio proviene de main automáticamente. Corta a la cámara del hablante, usa un plano general para conversaciones cruzadas o reacciones, y evita tomas de menos de 1.5 s.
D. Modo historia / sketch (fotos + voces de IA)
- Escribe el guion con la idea del usuario: líneas cortas y contundentes (≤ 15 palabras cada una), un gancho en los primeros 3 segundos y un final o remate claro. Usa un hablante por línea. Para sketches, dale a cada personaje una voz y un color de subtítulo distintos.
- Ejecuta
vedit story grid story.jsony lee cadagrid_sceneN.jpgpara obtener los puntosfocusde cada personaje. En la cuadrícula, x usa las etiquetas amarillas e y las etiquetas cian. - Escribe
story.json(esquema completo enreferences/story.md). Usa unshotcercano +focuscuando un personaje hable, y un plano general o un movimientomotiontipo Ken Burns para la narración. Añadesfx,title,transition: fadeentre escenas ymusic. vedit story voices story.jsonsintetiza las líneas e imprime una tabla de tiempos. Verifica el ritmo (un short suele durar ≤ 60 s).vedit story build story.json --preview, luego verifica los fotogramas, y luego ejecutavedit story build story.json.
Voces: edge es gratuita y natural, sin necesidad de clave API. Elige voces con vedit tts --list-voices --lang en (Filipino: --lang fil). Usa openai (instrucciones de actuación mediante "style") o elevenlabs solo cuando el usuario tenga una clave y solicite voces premium. Nunca inventes la voz de una persona real ni te hagas pasar por personas reales.
E. Kit de Reels de datos (fotos/clips en bruto -> Reels de datos con marca)
Guía: templates/fact_reels/README.md. Nuevo canal: vedit reels new DIR; nuevo video: vedit reels story DIR NAME.
- Observa los archivos en bruto del usuario (
vedit frames clip.mp4para clips) y elige tipos de escena:image+cardcon narración,video+lines(b-roll, narrado, silenciado), ovideo+keep_audio: truesinlines(el usuario hablando: voz real, subtítulos automáticos). Eligein/outa partir de los fotogramas/transcripción. - Escribe
story.json: gancho → dato → "¿Y sabías que?" → dato → ... → comentario/compartir/seguir, ~185 palabras ≈ 60 s, una narración fluida. Usasaypara números, años y nombres que la voz pueda leer mal. Texto de la tarjeta:*estrellas*= acento. vedit reels build STORY_DIR --only cardsy lee las tarjetas ythumbnail.jpg. Corrige el texto que se desborda.vedit reels build STORY_DIR --preview, verifica los fotogramas, luego construye con máxima calidad. Verifica cada dato; pon las fuentes encaption.txt.
Criterio de edición (lo que lo hace bueno)
- Ritmo: para cabezas parlantes en YouTube, reduce las pausas a ~0.3–0.45 s. Para Shorts, corta más ajustado (~0.2–0.3 s). Deja espacio para respirar después de un remate o un momento emotivo (
"pad": [0.1, 0.6]en ese clip). - Oculta los cortes de salto alternando acercamientos (1.0 ↔ 1.10–1.15) o cortando a b-roll. No hagas acercamiento en cada corte de una grabación de pantalla, donde perjudica la legibilidad. Usa
"fit": "blur"o"pad"al pasar a vertical. - Subtítulos: usa
poppara Shorts/Reels,cleanpara formato largo y tutoriales, yboxpara fondos con mucho movimiento. Corrige nombres de marca y términos malinterpretados concaptions.replace. - Audio es la mitad del video. Mantén
normalizeactivado (−14 LUFS para redes/YouTube). Activadenoise: truesolo en habitaciones ruidosas. Mantén la música a 0.1–0.2 con ducker activado. - Verifica siempre visualmente antes de dar por terminado, y di lo que verificaste.
- Renderizados largos: previsualiza un fragmento primero con
vedit render edl.json --preview --clips 0-10.
Solución de problemas
- Whisper no detectó las muletillas: se le indicó que las conservara, pero si aún faltan, usa
--model mediumo corta por pausas. - Idioma incorrecto:
vedit analyze raw.mp4 --language tl(Tagalo),es, etc. - Subtítulos en la fuente incorrecta: establece
captions.fonta una fuente instalada (Montserrat, Poppins, Arial), o coloca archivos .ttf enSKILL/fonts/. - Un segmento falla al renderizar: el error nombra el índice del clip. Verifica su in/out contra la duración de la fuente.
- El comando ffmpeg final se guarda en
<workdir>/.render_cache/last_final_cmd.txt.