edicion-parches-de-ia
Skill0 starsChanged 56 days agoMITView on GitHub
Pipeline para editar los videos de PARCHES DE IA (comunidad de encuentros presenciales de inteligencia artificial en Medellín, fundada por Jacobo Villada y Jerónimo Martínez) en reels verticales 1080x1920 montados en Remotion, con la identidad real de la marca: lima #a8e028 sobre negro, Archivo Black, metraje desaturado, subtítulos quemados, franjas lima para los datos duros, contenedor de línea fina con chips numerados y el arco del isotipo. Úsalo SIEMPRE que se edite un video de Parches de IA o de su talento, incluso si no dicen "Remotion": ponerle captions, cortar retomas y silencios, sincronizar subtítulos, hacer zoom o punch-ins, meter música y efectos, o armar un reel de bienvenida o de convocatoria a un parche. Dispara con "edita este video de Parches", "ponle los colores de Parches", "el reel de la comunidad", "estilo parches.", "hazlo con la marca del arco". No es para MELØ (eso es edicion-videos-melo) ni para la marca personal de Jero (eso es edicion-videos-marca-personal).
- Reads credentials
In this repository14 other files it gives its agents.
- asset-generatorSkill
- brochure-esicSkill
- citar-personaSkill
- edicion-videos-marca-personalSkill
- fix-my-mac-editSkill
- immpulso-slidesSkill
- importados-medellin-lujoSkill
- pecositas-informe-horarioSkill
- remotion-best-practicesSkill
- skill-textoSkill
- slide-imageSkill
- slides-3dSkill
- tono-presentacionesSkill
- vox-video-generatorSkill
The file
Files
Edición de video · Parches de IA
Convierte metraje crudo de cabeza parlante en reels verticales (1080x1920) con la identidad de Parches de IA. Todo se monta en Remotion, sin editor de línea de tiempo. La marca se ve cara porque sigue una receta estricta, no porque cada pieza sea difícil.
Parches de IA es marca aparte de MELØ. El naranja #f39200 de MELØ NUNCA entra
a una pieza de Parches. MELØ aparece como organizador y patrocinador, no como dueño.
⚠️ La regla que costó dos rondas de corrección
NUNCA cortes ni sincronices con los tiempos de palabra de Whisper. En material real se equivoca hasta medio segundo: estira una palabra por encima de un silencio o arranca otra antes de que se oiga. Si cortas con esos tiempos:
- el corte cae dentro de una palabra y el usuario lo oye como tartamudeo;
- queda sin cortar el aire muerto que creías haber quitado;
- el caption se prende en lima mientras todavía hay silencio.
scripts/build_pdi_reel.py ya resuelve esto: detecta los silencios midiendo el
RMS de la onda y pega cada palabra a la voz medida (snap). Un corte solo puede
caer dentro de un silencio real. Úsalo siempre con --audio.
Verificación obligatoria antes de renderizar (debe dar ~0 palabras fuera de voz y cero huecos > 0.4s):
python3 - <<'PY'
import json, wave, numpy as np
w=wave.open('/tmp/pdi/fast.wav'); sr=w.getframerate()
a=np.frombuffer(w.readframes(w.getnframes()),dtype=np.int16).astype(np.float32)/32768
hop=0.02; n=int(sr*hop)
db=np.array([20*np.log10(np.sqrt((a[i:i+n]**2).mean())+1e-9) for i in range(0,len(a)-n,n)])
v=db>=-45
d=json.load(open('src/pdi/captions.json'))
ws=[x for c in d['captions'] for x in c['words']]
bad=[x for x in ws if not v[int((x['s']+0.02)/hop)]]
print(f"palabras {len(ws)} | fuera de voz {len(bad)}", [x['t'] for x in bad])
PYAntes de nada: la marca
Fuente de verdad: ~/Downloads/marca-parches-de-ia/manual-marca.html y tokens.css
(copia en references/tokens.css). Lo esencial para video:
- Color: negro
#080808, lima#a8e028, lima brillante#c2f050, oliva#4d6614/#7aa31e(rampa del arco), hueso#f0f0e0(no blanco puro: el blanco puro sobre negro vibra), glow cálido#262312. - La proporción manda sobre el hex: negros 54%, limas 31%, hueso 10%, medios 5%. El lima nunca pasa de un tercio de la pieza. Ese es el límite entre sobrio y fluorescente, y en video se rompe rapidísimo.
- Tipografía: Archivo Black en titulares (MAYÚSCULA, tracking
-.02em, interlínea.9), Archivo en cuerpo, Space Mono en etiquetas (MAYÚSCULA,.24emsiempre: sin ese letterspacing se lee como código), Instrument Serif itálica para la voz y para el "IA" del titular. - Fotografía: blanco y negro o desaturada, con el lima como único color de la pieza. Nunca metraje a color compitiendo con el lima.
- La tipografía nunca va suelta sobre la foto: siempre velo (degradado negro 0→80% en el tercio superior y en el inferior) o el contenedor de línea fina encima.
- Nunca emojis. Nunca guiones como puntuación (ni raya ni guion suelto en ningún copy: se parte con punto, coma o dos puntos). Español colombiano natural: parche, no meetup.
- Logo en video:
parches.(la palabra en minúscula con punto lima), no el lockup completo. El arco del isotipo va como recurso de fondo a gran escala y puede salirse del encuadre por abajo. - Datos duros que sí se pueden decir: la entrada nunca se cobra, los encuentros son presenciales en Medellín. Cualquier otro dato (fecha, sede, cupos, número de edición) confírmalo con el usuario, no lo inventes.
Flujo
- Sondea:
ffprobe(ojo conrotationen side_data: el celular graba 1920x1080 con rotación 90 y en realidad es vertical) y extrae frames para ver el encuadre. - Denoise:
~/.claude/skills/edicion-videos-melo/scripts/denoise_elevenlabs.sh crudo.MP4 clean.wav(ElevenLabs Audio Isolation, key en~/.config/melo/secrets.env). - Transcribe con dos modelos y contrasta: mlx
large-v3+large-v3-turbo,--condition-on-previous-text False. Serializa, no los corras en paralelo. - Corta retomas a mano con trim+concat de ffmpeg, montando el video contra el
audio LIMPIO. Regla de oro: agrupa las tomas por idea y quédate con la última
toma buena (no la última a secas). Verifica cada hueco con
rms_envelope.py: dead-air se corta, retoma se conserva. →video_cut.mp4 - Jump-cuts + speed + captions:
scripts/build_pdi_reel.py tx_cut.json --audio cut16k.wav --out-dir src/pdi. Escribecut_filter.txt,captions.jsonybeats.json(beats + cues). Aplícalo:ffmpeg -i video_cut.mp4 -i video_cut.mp4 -filter_complex_script cut_filter.txt \ -map '[outv]' -map '[outa]' -r 30 -c:v libx264 -crf 16 -c:a aac public/video/talento.mp4 - Verifica con el snippet de arriba. Si hay palabras fuera de voz, no sigas.
- Monta con
assets/ParchesReel.tsx+assets/kit.tsx+assets/brand.ts. - QA por frame (
npx remotion still ... --frame=N) antes de renderizar. - Render + normaliza el audio (obligatorio, el denoise deja la voz bajita):
npx remotion render src/index.tsx ParchesReel out/reel.mp4 --codec=h264 --crf=17 ffmpeg -i out/reel.mp4 -c:v copy -af "loudnorm=I=-14:TP=-1.5:LRA=11" \ -c:a aac -b:a 256k -ar 48000 out/reel-final.mp4
Los cinco recursos propios, animados
Están todos en assets/kit.tsx, listos:
| Recurso | Componente | Para qué |
| 01 Arco con líneas | ArcBg | fondo a gran escala, se sale por abajo |
| 02 Franja lima plana | Strip | los datos duros: etiqueta mono + valor Archivo Black, negro sobre lima |
| 03 Contenedor línea fina | LineBox | agrupa listas, borde lima 1px, radio 14 |
| 04 Chip numerado + IA itálico | NumChip / IAItalic | ordena la lista, firma el titular |
| 05 Glow cálido | WarmGlow | el 12% que hace que el negro respire, siempre detrás |
Más Grade/gradeAt (desaturación), Scrim (velo de legibilidad), Wordmark,
MonoLabel, Sfx, Music y usePop/useExit.
Decisiones que hicieron que el reel funcionara
- El metraje arranca monocromo y vuelve a color a los ~3s, cuando sale el sting de marca. La apertura es la marca; el resto es la persona. Que no compitan.
- Reparto de trabajo entre caption y gráfico: en el subtítulo van en lima SOLO las
palabras de marca (
parches,IA,comunidad). Los datos duros (WhatsApp, Instagram, Medellín) NO se pintan en el caption porque cada uno ya entra en su franja lima; pintarlos dos veces dispara el lima por encima de un tercio y se ve barato. - Palabra activa del karaoke: negro sobre lima, que es el recurso 02 aplicado a la palabra. No naranja, no blanco, no borde.
- Los gráficos se enganchan a los cues de
beats.json, nunca a números escritos a mano. Si hay que volver a cortar el metraje, todo se resincroniza solo. - Nada tapa la cara: el sting va en el tercio superior, los paneles y franjas en
top1046-1150 (pecho), los captions enbottom: 268. - Cierre: negro con glow, arco saliéndose por abajo,
parches.grande y una etiqueta mono de CTA. Sobrio, sin franja encima del wordmark.
Audio
- SFX y música son del cliente, no sintetizados. Pídelos si no los tienes.
- Alinea el drop de la canción con la tarjeta de cierre: mide en qué segundo entra
el drop (envelope RMS) y arranca la música en
VIDEO_DUR - DROPpara que caiga exacto. Un riser resolviendo ahí encima remata. - Un riser solo se usa si resuelve en algo (un reveal, un cambio de color, el drop). Riser sin payoff suena a que falta algo.
- Volúmenes medidos, no a ojo: cama musical ~14 dB debajo de la voz (
bed 0.055), SFX de acento ~10 dB debajo del pico de voz (0.22), y el cierre puede ir 6-7 dB arriba del resto porque ahí ya no hay nadie hablando. Compruébalo midiendo el mix por tramos antes de dar el render por bueno.
Entregar
- El render bueno va a 1080x1920 con el audio normalizado a −14 LUFS.
- Para mandar por Gmail desde el navegador el tope de subida es 10 MB: saca una
copia en dos pasadas (
-b:v 2000k) y dile al usuario que esa es solo para revisar desde el celular, que la buena está en disco.
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
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.

