agentleFS
jeronimo114jeronimo114/claude-skills/skills/edicion-videos-marca-personal/SKILL.md

edicion-videos-marca-personal

Skill0 starsChanged 57 days agoMITView on GitHub

Pipeline para editar los reels y videos de la marca personal de Jerónimo Martínez (Jero) — el creador de contenido de IA en español "AI builder" de jeroooo.com y Club IA. Reels verticales 1080x1920 montados en Remotion: cámara con voz limpia, subtítulos karaoke, zoom multicam con jump-cuts, SFX (whoosh/pop), y takeovers a pantalla completa mostrando una demo o lo que sea relevante. Úsalo SIEMPRE que se edite un reel/video de Jero para su marca personal (no MELØ ni otro cliente), incluso si no dicen "Remotion": editar un .mov/.mp4 grabado con el celular, ponerle subtítulos, sincronizar captions, cortar retomas/silencios, hacerlo más rápido y dinámico, quitarle el ruido a la voz, agregar stickers/animaciones, hacer zoom a la cara, armar un reel de dos partes (cámara + demo del sitio con narración), o un reel takeover-first donde la cara casi no se ve y todo son gráficos animados, o un reel showcase de serie que demuestra un proceso real con el material del proyecto (screenshots, grabación de pantalla, iteraciones). Dispara con "edita este reel", "ponle captions", "hazlo más dinámico o más rápido", "hazlo dramático", "que no me vea tanto", "menos cara y más gráficos", "quítale el ruido", "más animaciones", "muestra cómo quedó el sitio al final", "hazlo tipo showcase", "justifícalo con una demo", "resultado bomba". Para animaciones puras estilo Vox deriva a vox-video-generator; para MELØ usa edicion-videos-melo.

  • Reads credentials
  • Installs packages

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Audio normal (REGLA): usa el micro tal cual: NO Voice Isolator de ElevenLabs, NO loudnorm/denoise, NADA de procesamiento.

    line 59
  2. Very specific:

    NO repetir: grades (eq/colortemperature), tonemaps ffmpeg (hable/mobius/reinhard, piel roja) y la matriz pura de swscale …

    line 323

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Edición de videos — marca personal (Jerónimo Martínez)

Sistema para convertir el metraje crudo de Jero (celular / DJI mic) en reels verticales (1080x1920) muy dinámicos: cabeza parlante con voz limpia, subtítulos karaoke, zoom multicam, SFX, y takeovers del sitio. Todo se monta en Remotion. La marca se ve cara porque sigue una receta estricta, no porque cada pieza sea difícil.

Es distinto de edicion-videos-melo (marca MELØ, otra paleta y otro talento). Aquí la marca es Jero: negro + amarillo #fbbf24 y el gancho siempre conecta con "construir cosas reales con IA en español, sin humo".

Antes de nada: las reglas de marca

Lee ~/.claude/CLAUDE.md y el TONO.md del proyecto youtube-ai-es. Lo no negociable, aplica a captions, copy y todo:

  • NUNCA emojis. NUNCA em dashes. Nada de guru-cringe.
  • "tú" siempre, español neutro LatAm, cero anglicismos con equivalente claro ("inteligencia artificial" no "AI", "correo" no "email"). Marcas y siglas OK.
  • Nombres propios de marca con su caso: Claude, Codex, Antigravity, ChatGPT, Shopify, OpenAI, n8n.

El pipeline (resumen — detalle en references/pipeline.md)

  1. Sondea el crudo: ffprobe (los videos del celular vienen con flag de rotación; ffmpeg los auto-rota a vertical, NO hay que recortar). Ojo: pueden ser 4K (3840x2160 -> auto-rota a 2160x3840); en ese caso se escala a 1080x1920 en el filtro del corte. Chequea SIEMPRE color_transfer: si es arib-std-b67/bt2020 es HDR y hay que convertir (ver lección HDR abajo). Chequea también start_time del audio y avg_frame_rate vs r_frame_rate del video: si difieren mucho es VFR con drift (ver lección desync). Nivel de audio: mira volumedetect; si el pico max está por debajo de ~-10 dB, compensa con GANANCIA PURA en Remotion (volume={N} en OffthreadVideo), nunca con procesamiento.
  2. Audio normal (REGLA): usa el micro tal cual. NO Voice Isolator de ElevenLabs, NO loudnorm/denoise, NADA de procesamiento. Jero prefiere el sonido natural del micrófono. En el corte, saca el audio directo del [0:a] del MOV (sin filtros). El denoise_eleven.sh queda SOLO como opción manual si un crudo viniera realmente sucio.
  3. Transcribe con VARIOS modelos (mlx + faster-whisper + openai-whisper) y contrasta (ver skill edicion-videos-melo: transcribe_multi.sh + contrast_transcripts.py). Es clave: Whisper oye mal las marcas (Cloud→Claude, Sprout/sprunt→prompt, cable→café). Con 2-3 modelos cortas y subtitulas exacto.
  4. Corta: retomas -> deja SIEMPRE la última. Silencios reales. Como Jero habla denso (casi sin pausas), "más rápido" se logra con speed 1.15x (atempo, preserva tono) además de cortar. Ver scripts/build_fast_reel.py: hace multi-STT -> jump-cuts + speed -> filtro ffmpeg + captions remapeadas + cues.
  5. Genera captions karaoke (scripts/build_captions.py / build_reel_captions.py): UNA palabra por chunk, sin puntos ni comas, case natural (NUNCA todo mayúsculas), sin fondo detrás del texto; palabra clave en amarillo y/o tipografía distinta y más grande. Corrige los errores de Whisper con un dict FIX. OJO: los scripts traen chunk=2 por default histórico; pásalos a 1 palabra y limpia la puntuación.
  6. Monta en Remotion reusando los componentes de assets/ (ver references/remotion-patterns.md): capa de cámara con zoom que salta en cada beat, stickers Vox en las palabras clave, karaoke, SFX. Para el segundo bloque, el takeover del sitio.
  7. QA por frame (npx remotion still ... --frame=N) escena por escena ANTES de renderizar. Verifica que el audio esté en ambas partes.
  8. Render (--image-format=png --crf=16), optimiza para IG (-crf 20 -movflags +faststart) y guarda el entregable en la carpeta del día: Documents/Personal/reels/{dia}-{YYYY-MM-DD}/ (ej. jueves-2026-07-09/). Los videos renderizados van SIEMPRE dentro de la carpeta del día, NUNCA sueltos en reels/, para encontrar todo rápido. {dia} = día de la semana en español (LC_ALL=es_ES.UTF-8 date +%A). El working dir intermedio (reel-<id>/) es aparte.

El estilo visual (resumen — detalle en references/estilo-marca.md)

  • Vertical 1080x1920. Paleta: amarillo #fbbf24, crema #f6efe0, tinta #0d0b09, rojo #e0492e.
  • Zoom-out de apertura (SIEMPRE): todo video abre con zoom out sutil de escala 130 a 100 en 1 segundo, origen en la cara, easing suave. El hook se dice durante ese zoom. Después arranca el sistema de beats.
  • Zoom multicam: la cámara hace jump-cut de zoom/encuadre en cada beat de caption (~1s). Da energía tipo Hormozi sin marear.
  • Stickers Vox (collage de papel, borde blanco + trazo rojo) caen sobre la cara en las palabras clave (guía, Claude, contexto, sitio, automatizado...). Van en las esquinas para no tapar la cara. Reusa la librería keyeada (vox5144/, vox-lib/).
  • Karaoke (recalibrado jul 2026, feedback Teo Visuals): UNA palabra por chunk, case natural (nunca todo mayúsculas), sin puntos ni comas, SIN fondo ni caja detrás (legibilidad por contorno negro + sombra). Palabra clave en amarillo y/o tipografía distinta, más grande. Una sola tipografía base por reel (Montserrat default). Referencia visual: caption "opening my editing" (palabra clave grande en color, resto normal).
  • SFX MÍNIMOS (re-recalibrado jul 31 2026, reel Parches 552x): los assets viejos de public/sfx/ (impact, whoosh.mp3, pop, riser, sparkle, ui, ding) quedaron RECHAZADOS DEL TODO ("horribles, no uses assets"), incluida la combinación impact+whoosh del jul 15. Lo único aprobado hoy: whoosh_suave.wav (sintetizado: ruido rosado filtrado, corto y discreto; vive en reels/_audio-lab/sfx/ y en public/ de remotion) SOLO en transiciones de clip, volume ~0.5, arrancando ~8 frames antes del corte. Nada en stickers, reveals ni hooks. En talking-head tranquilo, CERO SFX. Música de cama: solo la que Jero elija en su herramienta de audición (reels/_audio-lab/musica.html, servir con http.server); en el 552x eligió 01_instagram_reel_a.mp3 de cama completa (0.30 sin voz, 0.13 bajo la voz, fade final). Si hay que elegir sonidos nuevos: generar candidatos + herramienta de audición (reels/_audio-lab/efectos.html) y que él marque; no decidir por él.
  • Hook badge los primeros ~5s.
  • Efectos de texto para keywords/reveals (feedback Teo Visuals, jul 19 2026): shine/glow con barrido de brillo, entrada de recorrido corto + easing + motion blur (el gran aprendizaje: corto+eased+blur = cinemático, largo+lineal+sin blur = robótico), palabra clave DETRÁS del cutout de Jero (profundidad, reusa rembg — le encantó), inicial decorativa en la keyword, y flicker solo en el hook. Van SOLO en keywords/reveals, nunca en el karaoke corrido. Recetas traducidas a Remotion en references/estilo-marca.md -> "Efectos de texto avanzados".

Tres moldes de reel (elegir ANTES de montar)

  1. Talking-head clásico: la cara todo el tiempo + stickers en esquinas + zoom suave de origen fijo + karaoke. Para tips tranquilos, tono café. Es el default si Jero no pide otra cosa.
  2. Takeover-first ("menos cara, más gráficos"): la cara SOLO en el hook y el CTA; todo el medio son takeovers animados que la tapan. Úsalo cuando pida "dramático", "rápido", "muy animado" o "que no me vea tanto". Molde completo abajo.
  3. Showcase de serie ("te lo demuestro"): cuando el guion narra un proceso real que ya se hizo en otro proyecto, cada frase se demuestra con el MATERIAL REAL de ese proyecto (screenshots, herramientas, iteraciones, resultado final), no con gráficos abstractos. Úsalo cuando pida "showcase", "demo", "que se justifique lo que digo". Molde completo abajo.

Molde takeover-first (validado: reel "Deja de usar la IA ya", jul 2026)

A Jero le ENCANTÓ este molde ("me gustó MUCHO la edición"). Se replicó de un reel viral de referencia y funciona con recursos mínimos. Plantilla real: assets/ReelAgentes.tsx. Las piezas, en orden:

  1. Hook contrarian en los primeros 2s. Afirmación que rompe una creencia común, en texto grande a pantalla ("Deja de usar la IA ya"). Sin saludo, sin intro: en frío directo al conflicto. Cara visible + scrim oscuro + tipografía encima.
  2. Cara mínima, gráficos máximos. La persona solo aparece en el hook y en el CTA. Todo el medio son takeovers: paneles de fondo oscuro que TAPAN la cara con tipografía cinética y elementos animados. La cámara sigue montada debajo (el audio del micro nunca se corta).
  3. B-roll conceptual construido con código, no con clips. Cada idea abstracta se vuelve un objeto visual concreto: para "la usas como Google" se animó una barra de búsqueda tipo Google escribiéndose sola. Preguntarse SIEMPRE por frase del guion: "¿qué objeto visual representa esta idea?" y construirlo en Remotion.
  4. Lista de valor animada. Las enumeraciones habladas ("le das control, acceso a herramientas, ejecutar tareas...") se montan como lista que entra línea por línea con íconos cutout estilo collage. Sube la energía en vez de aplanarla.
  5. Reveal grande de la palabra clave. El concepto central del reel ("AGENTES") recibe SU propio plano: tipografía enorme (serif Playfair para contraste), animación blur+escala de entrada, y un impact SUAVE (volume ~0.25). Encima, shine sweep + glow (ver references/estilo-marca.md -> "Efectos de texto avanzados"). Opción bomba: montar la palabra DETRÁS del cutout de Jero para que su cabeza la tape (profundidad).
  6. Captions karaoke palabra por palabra todo el tiempo (legible sin sonido).
  7. CTA claro al final sobre la cara del creador, con sticker de refuerzo ("Sígueme / automatiza tu trabajo").

Principio general del molde: tomar el guion hablado y convertir cada frase en un objeto visual (barra de búsqueda, lista, palabra gigante) en vez de dejar la cara hablando sola. Eso es lo que lo hace sentir caro y viral.

Molde showcase de serie (validado: reel "Tienda online con IA" Cap. 1, jul 15 2026)

Jero lo pidió así: "muestra un resultado bomba... te lo justifico y te lo demuestro". El primer corte (solo cara + captions) lo rechazó como "demasiado mediocre, super light". Lo que lo salvó fue meterse al proyecto real (Importados Medellín) y sacar TODOS los insumos. Plantilla real: assets/ReelTienda.tsx. Las piezas, en orden:

  1. Apertura de serie: zoom drástico + thumbnail de capítulo. Primeros ~2s: zoom out drástico de cámara (escala 2.3 -> 1.0 en ~1.2s, easing out) con el título de la serie encima en 3 líneas (micro-línea 800 + título gigante amarillo 900 + remate Playfair italic). Al segundo 2, cuando empieza a explicar, entra un thumbnail de capítulo: card con la imagen hero del proyecto, borde crema 6px, sombra roja offset, rotada -1.5deg, chip "CAP. N · TEMA" arriba. Sale con whoosh al takeover 1. (Pedido explícito de Jero: "un zoom muy drástico para presentar la serie y luego un thumbnail en el segundo 2 cuando ya empiezo a explicar".)
  2. Cada frase del guion se demuestra con material REAL del proyecto. No b-roll conceptual: los screenshots reales de los referentes scrolleando en columnas, la ventana de Claude Code capturándolos (typewriter + mini-thumbs reales), el panel de ChatGPT generando los insumos reales (blur+clip-path reveal), la grabación de pantalla REAL de la herramienta interna, el montage de las 15 iteraciones reales con contador "v7/15", y el resultado final real (video Kling en marco de browser).
  3. Grabación de pantalla real con Playwright (script: scripts/record_screen_playwright.js): chromium channel:'chrome' headless, viewport 1000x1400 @2x, recordVideo, cursor falso inyectado (div que sigue los clicks con transición suave) para que se sienta demo humana. Interacciones reales (scroll suave, estrellas, pills). El webm sale a 25fps: convertir a mp4 h264 60fps y ajustar velocidad con ffmpeg (-ss X -vf "setpts=PTS/1.65") EN VEZ de playbackRate en Remotion (timing determinista). Entra con whoosh+marco de browser.
  4. Marco de browser reutilizable (componente Browser en ReelTienda): barra con 3 puntos + URL pill en mono, sombra roja offset de marca. Todo lo que sea "web" va dentro de este marco.
  5. Mockups de web final: serif RECTA, look terminado. Si el reel muestra "así quedó el sitio", el mockup debe verse terminado: nav completa (Menú · marca · Bolsa) en Cinzel, headline en Cormorant Garamond recta (Jero rechazó la cursiva ahí: "que no tenga cursiva, que se vea más terminado"), strip inferior de envíos. La cursiva Playfair queda para captions/keywords, no para mockups de sitio.
  6. Karaoke 1 palabra con keywords en serif amarilla. Palabra normal: Montserrat 900 crema 86px. Keyword: Playfair italic 800 amarilla 108px rotada -2deg. Esto sí le gustó ("los subtítulos están bonitos").
  7. CTA de serie: "CAP. N+1 · lo que viene" + Sígueme amarillo + cutout en la ESQUINA (nunca sobre la cara).

Takeover del sitio (segundo bloque)

Un patrón que funciona muy bien: reel de DOS partes = cabeza parlante + al final un takeover a pantalla completa mostrando el sitio (o una demo), narrado con un segundo audio. Cómo:

  1. Captura la página COMPLETA con Chrome headless a un ancho angosto (~700px = columna única, ideal vertical): chrome --headless=new --window-size=700,4600 --screenshot=site.png URL. (El screenshot inline del preview no sirve como asset.)
  2. Mide la posición de cada sección (getBoundingClientRect) para sincronizar.
  3. En Remotion, anima el translateY de esa imagen (scroll) sincronizado a la narración, con barra de navegador falsa arriba y callouts (anillos amarillos) que resaltan cada parte cuando la nombra. Ver SiteTakeover en assets/ReelPrimeraTarea.tsx.

Componentes reutilizables (assets/)

  • ReelPrimeraTarea.tsx — PLANTILLA del reel de 2 partes (cámara jump-cut + stickers + SFX; takeover del sitio con scroll + callouts). El mejor punto de partida.
  • ReelTienda.tsx — PLANTILLA del molde showcase de serie (apertura zoom drástico
    • thumbnail de capítulo, takeovers con material real: columnas de referentes, Claude Code, grid ChatGPT, grabación de pantalla en marco Browser, montage de iteraciones, mockup de web final en serif recta, CTA de serie). 60fps. La más reciente (jul 2026).
  • ReelAgentes.tsx — PLANTILLA del molde takeover-first (hook contrarian, cara solo hook+CTA, barra de búsqueda animada, lista de valor, reveal serif de palabra clave, SFX a media ganancia). La que más le ha gustado a Jero.
  • ReelEmpanadas.tsx — PLANTILLA del talking-head exterior MUY animado (cara visible todo el tiempo + punch-ins por beat + badges/chips/blur-reveals/check-rows/ stickers encima + karaoke). Soporta 2 clips crudos concatenados. Es el molde intermedio entre el clásico y el takeover-first.
  • AgenteReel.tsx — reel de 1 parte (cámara) con Full Overtake.
  • ClaudeCodeOvertake.tsx — simulación de Claude Code a pantalla completa (prompt typewriter + proceso + barra). Reusable para "muéstrale trabajando".
  • VoxPrimeraTarea.tsx — explainer 16:9 puro estilo Vox (para embeber en el sitio).
  • vox-helpers.tsx — helpers Vox (Cutout, SharedBackground, Headline, Hi, etc.).
  • CenteredLabel.tsx — subtítulo/etiqueta centrado en el centro exacto, SIN fondo, con fade in/out y pop sutil (palabra clave opcional en amarillo). Para nombrar un tema cuando aparece en cámara o un remate; NO reemplaza al karaoke. Va dentro de un <Sequence>. Detalle en estilo-marca.md -> "Subtítulo centrado sin fondo".

Copia el que sirva a src/ de un proyecto Remotion, ajusta rutas de assets en public/, y regístralo en Root.tsx.

Scripts (scripts/)

  • denoise_eleven.sh — Voice Isolator de ElevenLabs (lee la key del .env, NUNCA la imprime).
  • tts_eleven.sh / tts_openai.sh — voz en off. OJO: el plan de ElevenLabs bloquea voces clonadas en español; usa premade (Eric). OpenAI suele estar sin crédito.
  • build_fast_reel.py — multi-STT -> jump-cuts + speed 1.15x -> filtro ffmpeg + captions + cues. El corazón del corte dinámico.
  • build_reel_captions.py / build_captions.py — captions karaoke (2 partes, corte transformado, dict FIX de errores de Whisper).
  • record_screen_playwright.js — grabación de pantalla de una web/herramienta con cursor falso visible (Playwright, NODE_PATH=~/node_modules node ...). Ajustar URL/selectores por proyecto; convertir el webm a mp4 y acelerar con ffmpeg.
  • remove_bg_video.py — quita el fondo de un tramo de video (rembg u2net_human_seg) y deja PNGs con alpha para el hook "flash carrusel de fondos": cutout de Jero sobre fondos que cambian (amarillo -> rojo -> imagen temática -> crema -> real, swaps ~0.43s, whoosh 0.08 c/u, impact 0.14 al inicio, pop 1.07->1.0). Validado reel IMG_3731 (jul 2026): recorte limpio de pelo, micro DJI y hombros.

Lecciones aprendidas (evita re-trabajo)

  • Estilo de captions y apertura recalibrado (jul 2026, feedback de Mateo Escobar / Teo Visuals, aprobado por Jero). Los 5 cambios: (1) zoom out de apertura 130->100 en 1s en TODOS los videos; (2) captions de UNA palabra; (3) sin puntos ni comas; (4) case natural, nunca todo mayúsculas; (5) SIN fondo detrás de los subtítulos (Jero: "no me gusta que tengan fondo"), palabra clave en color y/o tipografía diferente y más grande. Los renders anteriores a jul 2026 (2 palabras, MAYÚSCULAS, fondo en la hot word) quedan obsoletos como referencia de captions.
  • Efectos de texto de Teo Visuals traducidos a Remotion (jul 19 2026, aprobado por Jero). Shine/glow en keywords, entrada de recorrido corto + easing + motion blur (corto+eased+blur = cinemático), palabra clave DETRÁS del cutout de Jero (le encantó; reusa remove_bg_video.py), inicial decorativa en la keyword, y flicker solo en el hook. Detalle en references/estilo-marca.md -> "Efectos de texto avanzados". Regla: son para KEYWORDS/reveals, NUNCA el karaoke corrido, y todos van sobre el TEXTO (no son grades de cámara). El blend "diferencia" metálico se evaluó y se descartó (Jero: no).
  • Multi-STT SIEMPRE. Un solo modelo se come marcas (Cloud→Claude). Con 2-3 y contraste, cortas y subtitulas exacto.
  • Audio normal, sin procesar (REGLA firme). Usa el audio del micro tal cual: NADA de Voice Isolator ni loudnorm/denoise. Jero prefiere el sonido natural del micro. En el corte, el audio sale directo del [0:a] del MOV. (Si un crudo viene realmente sucio, el denoise es opción manual puntual, nunca el default.)
  • "Más rápido" = speed 1.15x + jump-cuts, no solo cortar silencios (habla denso).
  • Stickers en las esquinas, nunca sobre la cara.
  • "Dramático / que no me vea tanto" = molde takeover-first. La cara solo en hook y CTA; el resto gráficos animados que la tapan. Validado jul 2026 (reel agentes): le gustó MUCHO. Cada frase del guion se convierte en un objeto visual.
  • SFX a media ganancia o nada. A volumen completo "entran muy duro"; con volume={0.2-0.35} en los momentos grandes sí funcionan. Talking-head tranquilo: cero SFX.
  • QA por frame antes de renderizar. Un still tarda ~5s, un render minutos.
  • La voz nativa en español no está disponible (ver [[reference-tts-voces]]): premade Eric por defecto.
  • iPhone = vertical nativo (rotación), no recortes de horizontal.
  • HDR (Dolby Vision/HLG) del iPhone: mezzanine con avconvert, sin tonemap y sin grade. Si el crudo tiene color_transfer=arib-std-b67, cortar sin convertir deja la piel naranja/roja "rota". El FIX DEFINITIVO (validado reels 1883/1884/1885) es la conversión nativa de Apple: avconvert --preset Preset1920x1080 genera el mezzanine SDR bt709 con "el color que grabé" (la rendición de QuickTime). Cortar DESDE el mezzanine (audio directo del MOV crudo) y conservar tags bt709 en el encode y el optimize IG. Rechazados por Jero, NO repetir: grades (eq/colortemperature), tonemaps ffmpeg (hable/mobius/reinhard, piel roja) y la matriz pura de swscale (in_color_matrix=bt2020:out_color_matrix=bt709, finales lavados/grises). Detalle en la memoria reference-iphone-hdr-dolby-vision. Verificar SIEMPRE un frame del mp4 cortado (y un still de Remotion) antes de renderizar.
  • NO efectos de color (regla firme de Jero). Nada de saturate/hue/tint/grades sobre la cámara, ni siquiera "sutiles" para bajar una luz cálida. La única transformación de color permitida es la conversión técnica HDR->SDR de arriba. La viñeta oscura para legibilidad de textos sí va (no es color).
  • Micro bajo = ganancia pura, nada más. El DJI a veces graba con pico max ~-11 dB (inaudible en IG). Se compensa con volume={2-4} en el OffthreadVideo de Remotion: mismo sonido natural, solo más fuerte. Cero denoise/compresión/loudnorm.
  • NUNCA montar dos instancias del video de cámara (ej. una segunda VideoLayer para el CTA): el audio arranca de cero en la segunda y se oye eco. Para oscurecer el CTA usa un overlay oscuro encima de la única capa de video.
  • Desync de Final Cut Camera / clips A001_*.mov (VFR con drift). Síntoma: audio y video desincronizados y el desfase CRECE. Causa: el video viene VFR con PTS mal etiquetados (flag 120fps, captura real ~55-60fps) y un offset falso de edit-list en el audio (~1.2s). El fix: estirar el video al reloj del audio y anclar ambos a 0: -vf "setpts=(PTS-STARTPTS)*K,fps=30" -af "asetpts=PTS-STARTPTS" con K = duración_audio / duración_video (medidas con ffprobe de cada stream). Verificar empíricamente: transcribir y comparar la boca contra el onset de palabras al inicio, medio y final. Editar SIEMPRE desde el master synced, no desde el crudo.
  • Onsets de Whisper alineados con la respiración (jul 2026, reel IMG_3723). En las fronteras de retomas/silencios, faster-whisper pone el onset ANTES del inicio audible real (lo alinea con la respiración dentro del silencio). Si asignas palabras a segmentos por onset crudo: se cuelan palabras de retomas eliminadas, se duplican ("y", "después") o se caen palabras en los bordes. Fix: cruzar con silencedetect + openai-whisper y corregir esos onsets al inicio audible antes de armar captions. Y SIEMPRE verificar el render final transcribiéndolo y comparando contra el guion esperado (cero faltantes = corte limpio).
  • "Solo cara + captions bonitos" = mediocre para Jero. El primer corte de IMG_3723 (talking-head con captions elegantes, sin takeovers) lo rechazó de plano: "está demasiado mediocre, super light". Si el guion narra un proceso o un resultado, hay que DEMOSTRARLO con material real (molde showcase). Los captions solos nunca cargan el reel.
  • Al quitar una frase por UNA palabra, pregunta o corta quirúrgico. Quitar la frase entera puede dejar huérfano lo que sigue ("Primero..." sin el "esta es la estrategia"). Jero terminó prefiriendo dejar la frase completa aunque contuviera lo que quería quitar. Si haces corte a nivel de palabra, ojo con palabras fantasma que se cuelan en las captions por el margen del filtro (+0.3s): limpiarlas del JSON.
  • Reels de 2 clips crudos (ej. IMG_9467+9468): el mismo build_cut acepta (input_index, start, end) por segmento y concatena; captions se remapean igual.
  • Música: NO quemarla en el render. Jero la agrega como audio trending desde el propio Instagram al subir (mejor alcance, cero copyright). Entregar el reel solo con voz+SFX.
  • Si el render falla con tslib/módulos raros o PNGs con ERR_CONTENT_LENGTH_MISMATCH: hubo corrupción de disco. npm install tslib --force y escanear assets con for f in public/**/*.png; do ffprobe -v error "$f" || echo CORRUPTO $f; done; reponer los corruptos desde la librería verde de Downloads o vox5144/vox-lib.
  • Screen recs de web SIN grabar la pantalla del compu (jul 2026, reel IMG_3741). No grabar la pantalla en vivo (captura lo que Jero este usando, p. ej. WhatsApp). El metodo bueno: manejar la pestana via extension (fondo), capturar la VENTANA por id sin foco (screencapture -o -x -l<windowID>, id via Quartz CGWindowList), y animar los stills en Remotion con un PanZoom con clamp tipo cover (keyframes s/cx/cy; s minimo = screenH/(ih*base))
    • typewriter/rings/cursor. Se ve como grabacion real y es 100% determinista.
  • Retomas: SIEMPRE contrastar antes de cortar. faster-whisper large y openai-whisper small esconden retomas seguidas (las funden en una palabra larga o un gap). Delatan: gaps >1s entre palabras y palabras con span >1.5s. Confirmar onsets con STT de snippets cortos (base en el rango exacto si las oye) + silencedetect, cortar dejando la ULTIMA toma, y SIEMPRE transcribir el render final para verificar (si aparecen frases repetidas, quedo una retoma).
  • Entrega: open -R en Finder y ojo con copias viejas. Jero a veces abre una copia desactualizada (iCloud/Escritorio) y cree que no cambió nada. El entregable canónico es el de la carpeta del día; si dice "lo veo igual", verificar md5/mtime, abrir en QuickTime (open -a "QuickTime Player") y resetear miniaturas (qlmanage -r cache).
  • Guarda el entregable en la carpeta del día Documents/Personal/reels/{dia}-{YYYY-MM-DD}/ (ej. jueves-2026-07-09/), NUNCA suelto en reels/, y optimiza para IG (faststart). Así todo lo renderizado queda agrupado por fecha y se encuentra rápido.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.