/kallaway-edit
Clips en bruto, reel vertical terminado (1080x1920, 30 fps, -14 LUFS), al estilo Kallaway. Todo se ejecuta en el Mac del usuario con herramientas gratuitas. La persona que usa esto normalmente NO es técnica: habla con ella en lenguaje sencillo, un mensaje corto por paso y nunca la hagas tocar código.
SK = ${CLAUDE_SKILL_DIR}, la carpeta de esta skill (nunca escribas en ella: una actualización la reemplaza).
DATA = $HOME/.claude-video-editor, la carpeta propia del editor, que se conserva entre actualizaciones:
la configuración del usuario (DATA/config.json), el Python del editor (DATA/venv), los efectos de sonido (DATA/sfx).
ROOT = la carpeta del proyecto (tiene raw/, exports/): el projectRoot en DATA/config.json, guardado por
el asistente de configuración (paso 0). WORK = ROOT/work/<slug>/ (una carpeta por reel; el slug es
kebab-case corto, ej. opus-tips). Pon entre comillas cada ruta: a menudo contienen espacios.
Ejecuta cada script a través de uno de estos dos, exactamente como está escrito, para que encuentre la configuración del usuario:
PY = VIDEO_EDITOR_DATA="$HOME/.claude-video-editor" "$HOME/.claude-video-editor/venv/bin/python" -I (después de la configuración)
SETUP = VIDEO_EDITOR_DATA="$HOME/.claude-video-editor" python3 -I "${CLAUDE_SKILL_DIR}/scripts/setup.py"
Lee estos antes de construir: references/style-rules.md (el aspecto, como
números), references/graphics-recipes.md (cómo una idea hablada se convierte en un diagrama), references/gotchas.md.
Reglas estrictas
- Solo herramientas gratuitas. ffmpeg, Node 22+, Python, HyperFrames (
npx hyperframes@<pinned>), faster-whisper, la eliminación de fondo local de HyperFrames, las fuentes OFL incluidas, los efectos de sonido grabados de HyperFrames media-use (descargados en la configuración, nunca incluidos: licencia Pixabay) y música CC0/CC BY de Openverse o la pista propia del usuario. Sin APIs de pago, sin inicio de sesión en HeyGen, sin generación de música, nada con derechos de autor. - Opciones que el usuario puede dar:
music: on|off(por defecto: la elección guardada en la configuración),music: <ruta a su propia pista>,setup(re-ejecutar el asistente de configuración). - Nunca ejecutes
npx hyperframes initonpx hyperframes skills(instalan skills en~/.claude/skills). Cada llamada a HyperFrames:HYPERFRAMES_SKIP_SKILLS=1 HYPERFRAMES_NO_TELEMETRY=1. Siempresnapshot ... --describe false(de lo contrario los fotogramas se suben a Gemini). - Nunca toques el metraje original del usuario. Trabaja a partir de copias en
raw/. Los archivos de trabajo van en WORK; solo los reels terminados van enexports/. Nunca borres los archivos del usuario. - Los subtítulos muestran lo que realmente se dijo, escrito correctamente ("Claude", "Opus 5.5"), dígitos para números.
- Los gráficos nunca cubren la cara; el texto nunca debajo de y 1470 ni en los 100 px de la derecha debajo de y 1155.
- Nada anima hacia afuera. El rojo
#C41514es el único acento. Una palabra en cursiva serif por título y por sección. - Muestra tu trabajo: guarda un PNG numerado en
WORK/progress/en cada paso (01-takes-picked.png, ...). - Verifica el render FINAL con
qa.py, a tamaño completo, antes de decir que está listo. Sé honesto acerca de lo que no coincide.
El flujo de trabajo
0. Asistente de configuración (solo la primera vez, ~5-10 min)
Lee DATA/config.json. Si tiene "setupComplete": true y su carpeta projectRoot existe, ejecuta
SETUP --check (segundos, no instala nada); en LISTO ve al paso 1, en NO LISTO corrige lo que nombre (después
de una actualización que necesita una nueva versión de herramienta, eso es solo SETUP de nuevo: las carpetas y opciones del usuario se
conservan). De lo contrario (primera ejecución, o el usuario dice "/kallaway-edit setup") ejecuta el asistente. Diles
en qué paso estás en una línea corta ("Paso 2 de 5: comprobando tus herramientas").
- Bienvenida. "¡Bienvenido al editor Kallaway! Vamos a configurarlo. Esto toma unos 5-10 minutos y solo ocurre una vez."
- ¿Estamos en Claude Code? Esto necesita Claude Code (la aplicación de terminal, la pestaña Code en la aplicación de escritorio de Claude, o una extensión de IDE), abierto en una carpeta local, porque edita archivos de video reales. Si puedes ejecutar comandos de shell y leer archivos locales, lo estás. Si no puedes (un chat normal), di: "Abre la aplicación de escritorio de Claude, haz clic en Code, elige Local, selecciona una carpeta (o crea una llamada Editor de video AI), luego escribe /kallaway-edit de nuevo." Luego detente.
- Verificación de herramientas.
SETUP --check. Muestra el resultado como una tabla corta: herramienta, encontrada sí/no, para qué sirve (ffmpeg corta y mezcla sonido; Node.js ejecuta HyperFrames; HyperFrames convierte la edición en un video; faster-whisper escucha cada palabra; Python ejecuta los scripts auxiliares; yt-dlp es opcional aquí, descarga reels de enlaces, y /new-edit-style lo necesita). Para cualquier cosa que el usuario deba instalar por sí mismo (ffmpeg, Node.js, Python), da la línea única con los nombres de su arreglo y di dónde pegarla: la aplicación Terminal (Mac: Comando + Espacio, escribe Terminal). Si pide la contraseña de su Mac, la escriben ellos mismos allí, nunca en este chat. Espera hasta que digan que está hecho, luego verifica de nuevo. Los elementos marcados como "la configuración completa lo instala" no necesitan nada de ellos. - Dónde viven las cosas. Pregunta en un mensaje, cada uno con una respuesta sugerida:
- "¿Dónde debería hacer tus videos?" Sugiere la carpeta actual si está vacía o ya es una carpeta de video
(muestra su ruta completa), de lo contrario
~/Desktop/Editor de video AI. - "¿Dónde suele aterrizar tu metraje?" Sugiere
~/Downloads(donde AirDrop deja los clips del teléfono), o "Yo mismo pondré los clips en la carpeta raw". - "¿Música de fondo debajo de tu voz: activada o desactivada?" Sugiere activada (pueden cambiarla por video).
Luego ofrece las carpetas: "¿Quieres que configure tu carpeta de proyecto? Crearé raw/ (tus clips),
references/ (videos cuyo estilo te guste), exports/ (reels terminados), work/ (mis archivos de trabajo) y
archive/ (versiones antiguas). Cualquier cosa que ya esté allí quedará intacta." Si dice sí:
SETUP --project "<carpeta>" --clips-from "<carpeta u omitir>" --music on|off. Solo crea las carpetas que faltan y guarda las respuestas enDATA/config.json.
- "¿Dónde debería hacer tus videos?" Sugiere la carpeta actual si está vacía o ya es una carpeta de video
(muestra su ruta completa), de lo contrario
- Instalación. "Instalando las herramientas de edición gratuitas ahora (una vez, unos 5 minutos: un motor
de transcripción, el renderizador de video, efectos de sonido y un modelo de voz)." Ejecuta
SETUPen segundo plano y transmite sus líneas de progreso en palabras sencillas. Solo instala en DATA (nada global, nada en la carpeta de la skill, por lo que las actualizaciones nunca lo deshacen) y marca la configuración como completa cuando termine. - Listo. Da los 4 consejos de filmación de
references/filming-guide.md(cámara fija, plano general, habitación oscura con una luz cálida en tu cara, repite una línea hasta que funcione), luego: "Ya está. Pon tus clips en raw/ (o dime qué archivos en ) y di /kallaway-edit". Si ya dieron clips, continúa directamente al paso 1.
Toma en cada ejecución: los clips son los archivos que el usuario nombra; de lo contrario, pregunta, ofreciendo los archivos de video
más nuevos en clipsFrom. Cópialos en ROOT/raw/ (nunca muevas ni modifiques los originales). La música sigue la
opción music guardada a menos que el usuario diga lo contrario.
1. Encuentra cada toma (~1 min por minuto de metraje)
PY "SK/scripts/takes.py" "WORK" "ROOT/raw/clip1.MOV" "ROOT/raw/clip2.MOV" (añade --fast para un pase más rápido,
menos preciso). Lee WORK/takes/*.takes.txt: cada intento con su rango de tiempo, las retomas marcadas.
Pregunta por (o encuentra en los clips) el guion si lo hay. Di: "Escuchando tus clips y encontrando
la mejor toma de cada línea."
2. Elige tomas y corta (~1 min)
Escribe WORK/edl.json (formato: SK/template/examples/edl.json): un segmento por línea, en orden de guion,
normalmente la ÚLTIMA toma limpia completa. Usa {"clip","chunk"} o {"clip","start","end"} (para saltar un
tropiezo dentro de un fragmento; verifica los tiempos de palabras con transcribe.py --range a-b --model medium.en --no-vad).
Apunta a 20-30 s; pasarse un poco (hasta ~38 s) es mejor que romper una promesa que el gancho hace. Omite las
llamadas a la acción a menos que se pidan. Luego PY "SK/scripts/assemble.py" "WORK": cut.mp4 (CFR, ajustado a la voz, comprimido,
-14 LUFS), segments.json, words.json, words.txt. Lee words.txt: cada línea debe decir lo que se quiso decir.
PY "SK/scripts/qa.py" "WORK" --takes escribe progress/01-takes-picked.png.
Di: "Aquí está el corte: <las líneas>. segundos."
Bloquea el corte antes de construir gráficos. Si recortas después: PY "SK/scripts/reindex.py" "WORK" "WORK/.prev/words.json" mantiene cada gráfico en su palabra.
3. Recorta al orador (~3-4 min, ejecutar en segundo plano)
PY "SK/scripts/cutout.py" "WORK": cutout.webm (coincidencia de fotogramas, bordes limpios) + headtrack.json.
Mientras se ejecuta, planifica la edición (paso 4). Luego mira un fotograma compuesto sobre negro en busca de halos y
guárdalo como progress/02-cutout-check.png.
3b. Música (a menos que music: off; ~2-6 min, ejecutar en segundo plano)
PY "SK/scripts/music.py" "WORK" (o --file "<su canción>", o --off). Elige un instrumental gratuito CC0/CC BY
de Openverse, rechaza voces y escribe WORK/music-credit.txt. Informa al usuario qué eligió
y, para CC BY, que la línea de crédito va en el pie de foto.
4. Planifica la edición, línea por línea
Escribe WORK/plan.json (formato: SK/template/examples/plan.json):
shots: dónde comienza cada diseño (0,"line:N"= primer fotograma de la línea N de EDL,"w:N"= inicio de la palabra N). Escenario para cualquier cosa que se pueda mostrar; completo para líneas de conexión/personales y el remate (16-29% del tiempo de ejecución). Corta en seco también entre escenas de escenario. Primer corte a ~3.5 s.scenes: qué gráfico se reproduce cuándo (id,from,to, opcionalsrc+varspara montar un archivo de escena varias veces, ej. un gráfico numerado recurrente de "inicio"). Una escena puede ejecutarse bajo un plano completo y volver (una revisita añade una cosa nueva en 0.6 s).punch: zoom repentinos (x1.19, con crescendo) en una frase de cierre, como máximo uno o dos.captions:fix(índice de palabra -> texto correcto),emphasis(una palabra serif por sección),keep_together(pares de índices de palabra, ej. "Número" + "1,"). Usa graphics-recipes.md: cada idea obtiene una forma, un título (negrita + un acento serif, la afirmación en un cuadro rojo) y golpes en sus palabras, algo nuevo cada ~1 s. Devuelve el plan en una línea por plano.
5. Construye las escenas (~15-25 min)
Cada escena es WORK/scenes/<nombre>.html, iniciada desde SK/template/scene-starter.html o el archivo
más cercano en SK/template/examples/ (seis escenas reales). El kit (template/kit/kw.css, kw.js) proporciona
el aspecto del escenario y ayudantes de movimiento (KW.title, blurIn, pill, pulse, draw, cam, type, strike,
count, scramble; at(i) = inicio de la palabra i). CADA animación obtiene su indicación de sonido en el comentario
<!--KW:SFX [...] --> de la escena, ej. {"t": "w:24-0.02", "s": "whoosh"}, siguiendo
references/sound-map.md (movimiento de cámara = whoosh, píldora = pop, chasquido/tick = clic, texto escrito = escritura,
gran momento = impacto, remate = chispa). Si tienes la herramienta Agent y más de ~3 escenas,
entrega escenas a hasta 2 agentes en paralelo con: la lista de palabras exacta de la escena y sus tiempos, la idea,
las referencias de esta skill y build.py ... --project WORK/project-<letra> para que nunca choquen.
PY "SK/scripts/build.py" "WORK" escribe WORK/project/ (raíz: escenario punteado, tarjeta facial, capa
emergente, pista de subtítulos, anfitriones de escena, carril de SFX, todo generado). Luego en WORK/project:
npx -y hyperframes@<pin> lint (0 errores) y snapshot --at <tiempos> --no-end --describe false -o snaps/x, lee los PNG, corrige, repite. Guarda la hoja de cada escena como progress/03-scene-.png.
6. Renderiza (~1 min) y verifica (~1 min)
PY "SK/scripts/render.py" "WORK" --name draft (rápido), luego
PY "SK/scripts/qa.py" "WORK" "WORK/renders/draft.mp4" y MIRA qa/cuts.png (fotograma antes/después de
cada corte), qa/beats.png (cada fragmento de subtítulo), qa/report.txt (brechas de corte a voz, sonoridad).
Verifica: la parte emergente no tiene halo ni deriva después de los cortes; la tarjeta muestra cabeza Y hombros (nunca un
recorte de cara); ningún subtítulo o gráfico sobre la cara; los subtítulos coinciden con las palabras; cada corte de línea
cae 0-80 ms antes del habla; nada en las zonas prohibidas de Instagram. Luego
PY "SK/scripts/audiomap.py" "WORK" --out progress/NN-audio-map.png: música 18-24 dB por debajo de la voz, efectos
~10-16 dB por debajo de su pico local, sin golpes dobles; corrige cualquier indicación marcada con "db": -3.
Coincidencia de estilo: PY "SK/scripts/match/fingerprint.py" score "SK/references/style-spec.json" "WORK/renders/draft.mp4" --out "WORK/progress/NN-style-match.md" mide la edición de la misma manera que los 3
reels de Kallaway fueron medidos (tasa de corte, cambios visuales por segundo, proporciones de diseño, posición de tarjeta y
subtítulos, tamaño y ritmo de subtítulos, proporción de color de acento, sonoridad, efectos de sonido estéreo) y dice qué
corregir para cada FALLO. Corrige lo que la edición controla; un FALLO causado por el metraje (un selfie cercano) va al
usuario como nota de filmación. El informe en WORK/progress/ es el registro (SK/references/lock-log.md contiene
el historial medido del estilo; déjalo como está).
Corrige y vuelve a renderizar (una reconstrucción + re-render lleva ~1.5 min).
7. Entrega
PY "SK/scripts/render.py" "WORK" --final -> exports/<slug>-kallaway-vN.mp4 (1080x1920) más
-720p.mp4 copia para el teléfono. Ejecuta qa.py en la exportación. Si el usuario tiene un reel de Kallaway propio guardado en
ROOT/references/ (ninguno viene con esta skill), añade una comparación lado a lado (--ref <ese reel> --ref-at <t> --at <t>)
y guárdalo como progress/NN-side-by-side.png.
Di: dónde está el archivo, cuánto dura, qué contiene escena por escena y qué todavía no se ve
como Kallaway (sé específico y honesto).
Tiempos (en un Mac M4 Pro, reel de 35 s a partir de ~8 min de metraje en bruto)
configuración 5 min (primera vez) · tomas 7 min (modelo medio; --fast ~3) · corte 1 min · recorte 3.5 min ·
música 2-6 min (en segundo plano; Openverse/Freesound puede ser lento) · escenas 15-25 min ·
render borrador 50 s · render final 70 s · re-render después de una edición ~1.5 min.
Filmación
Entrega references/filming-guide.md a cualquiera que vaya a filmar: plano general fijo (horizontal 4K es
lo mejor), habitación oscura con una luz principal cálida, parte superior oscura, fondo plano detrás de la cabeza, repite
una línea hasta que funcione.