Saltar al contenido principal

Caso de Estudio · Operaciones de Contenido / Media

Un Sistema Multi-Agente de Edición de Video que Corta con Granularidad Humana

El cliente publica ediciones verticales cortas de actuaciones en vivo. Cada video solía costar semanas de corte manual; hoy una interfaz de chat maneja 15 herramientas MCP y un pipeline de ocho agentes especializados, y una edición terminada de 50 segundos sincronizada con la música se renderiza en 2 a 5 minutos. Esta página muestra la arquitectura, los trade-offs, las métricas y los fallos.

Publicación aprobada por el cliente. Todas las métricas etiquetadas: basado en datos internos de Fancam, Jun 2026. Sin infraestructura del cliente divulgada.

TL;DR: para líderes de negocio

  • Un video costaba semanas de edición manual; el pipeline anterior cortaba en secciones de 18 segundos frente a la granularidad de 1 segundo de un editor humano.
  • Construimos un sistema multi-agente de edición de video: una interfaz de chat con 15 herramientas MCP, ocho agentes orquestados y un pipeline que creció de 20 a 48 slots de edición en 4 rondas y 25 fixes.
  • Hoy renderiza en 2 a 5 minutos. Nueve de las 11 métricas objetivo están en verde; los dos fallos restantes están documentados con causa raíz y un plan.

Problema: un cerebro de 18 segundos para un trabajo de 1 segundo

El plan de implementación nombra la brecha: "Un editor humano opera a aproximadamente 1 segundo. El pipeline operaba a aproximadamente 18 segundos." (Jun 2026). Un humano corta sobre los patrones de kick, en el momento en que entra el groove, en el instante en que llega la voz. Un pipeline basado en secciones ve un solo bloque que abarca todo eso: en el tema de prueba, el groove empieza en el segundo 16 pero la sección etiquetada como intro llega hasta los 18.3 segundos.

Hacerlo a mano significa que una persona mira, marca, recorta, sincroniza y revisa, por cada video, mientras la cola nunca se encoge. La medida del fundador: "Lo que nos tomaba semanas de edición manual ahora corre en minutos." (Declaración del fundador, compartida con Waryl, Jun 2026).

Para tu empresa: si tu resultado depende de una persona frente a una timeline, tu techo de rendimiento es la atención, no la capacidad.

Sistema: producción y frontera, separadas a propósito

Producción es lo que corre hoy: una interfaz de chat que acepta peticiones en lenguaje natural, un runtime de agentes que expone 15 herramientas MCP, un analizador de clips en los servidores GPU del cliente y un renderizador. La cadena típica: get_event_info() trae los metadatos del evento, search_clips() encuentra el material, plan_composition_with_ai() selecciona la edición con un LLM de dos pasadas, build_composition() la ensambla, render_video() produce el MP4. "Hazme un video de 30 segundos" se convierte en un archivo terminado en 2 a 5 minutos.

La frontera de ingeniería es el pipeline, en su versión 16. Entrada: un MP3 y 16 clips crudos. La fase 0 lee la música: Demucs separa las pistas, librosa extrae 746 timestamps de kick y 375 ráfagas de acentos, MusicSectionDetection etiqueta las secciones, WhisperX construye la línea de tiempo de la letra, DeepSeek V4 Pro lo enriquece todo en una guía de edición con un arco de energía global. Luego los clips se puntúan de forma determinista, un orquestador los asigna a secciones bajo cuotas duras, cuatro agentes LLM en paralelo (ritmo, visual, color, audio) los editan, cada uno seguido de un validador determinista, se revisan y se renderizan.

Audio + 16 clips → análisis musical → puntuación de clips → orquestador (LLM + clamps)
→ sala de edición (4 editores LLM + validadores) → agente de revisión → render

Lee el registro de ingeniería de cómo construimos: /engineering

Arquitectura de producción

Este diagrama muestra un sistema que corre en producción, no una diapositiva.

Production system architectureLLMDeterministicdata packetFan-cam job: audio + 16 clipsMCP tools (15)product layerClip analyzerPhase 0 MusicPhases 1-5 ClipsOrchestratorEditing roomRendermusic_analysis.jsonconsolidated_job_data.jsontimeline_final.jsonMP4 9:16, 30 fpsvision tagging by Qwen3-OmniQwen3-Omni visionWhisperXembeddingsDemucs stemsMSD sectionslibrosa kick/beat gridDeepSeek labelingDeepSeek enrichmentdownloadpre-analysissegmentationreductionscoringdiversity gatequotasdirector passclip to section assignmentvalidateRhythmvalidateVisualvalidateColorvalidateAudioSubsafety netskey-moment overridesrhythm editorvisual editorcoloristaudio editorReview Agentaudio cutsmart crop 9:16Remotion + Chromium headlessDeterministic validatorsvalidation gate4 LLM editorsvalidatedClient-approved. All metrics labeled: based on Fancam internal data, Jun 2026. No client infrastructure disclosed.
El asistente de edición: chat, previsualización en vivo y ajustes manuales de composición. Composición de demostración con footage libre de regalías — sin media del cliente.
La interfaz de chat del asistente de edición que usa el equipo del cliente. Datos del cliente difuminados.
El asistente de edición, en vivo. Datos del cliente difuminados.
Panel del evento con el asistente de edición abierto. Nombres del evento y media difuminados.
El panel del evento con el asistente abierto. Nombres y media difuminados.

Para tu empresa: la producción es lo que compras; la frontera es de donde sale la próxima versión, y te mostramos ambas.

Decisiones: cuatro trade-offs hechos a propósito

1. Validadores deterministas antes que reglas solo de prompt.

Los LLM eran frágiles en todas partes: el editor de ritmo ignoraba la regla de stutter, el orquestador colapsaba secciones, los secuenciadores morían por límites de tokens. La regla pasó a ser: todo lo que puede ser programático DEBE ser programático. Los cortes en stutter pasaron de 0 a 20 el día que validateRhythm impuso el techo en código. Trade-off: menos libertad creativa bruta; una timeline que no puede romper sus propias reglas.

Para tu empresa: la confiabilidad es una decisión de código, no una decisión de prompt.

2. Intención creativa, no instrucciones de píxeles.

DeepSeek emite una intención como "buildup" con intensidad "high"; la capa de render la traduce en parámetros concretos. Trade-off: menos control directo por prompt, mucha más estabilidad cuando cambian los modelos.

Para tu empresa: el sistema sobrevive a las actualizaciones de modelo sin reescribir la lógica de edición.

3. API de DeepSeek para la orquestación, Qwen local para el análisis.

El análisis masivo (visión, transcripción, separación de pistas) corre en las GPUs locales del cliente; la dirección creativa corre en la API de DeepSeek. Trade-off: una dependencia externa para el director, mientras el volumen caro se queda en local.

Para tu empresa: el costo cae donde debe; el análisis es masa, la dirección es escasa.

4. La compuerta de diversidad.

El orquestador devolvió una vez missing_sections: ["verse", "outro"] y el video se colapsó en intro y chorus. La compuerta ahora garantiza al menos un slot por tipo de sección, limita la intro al 25% del objetivo y obliga a un mínimo de tres slots de intro. Trade-off: los objetivos cortos pierden el outro; la forma narrativa gana sobre la completitud.

Para tu empresa: una garantía estructural vale más que una petición bien redactada.

Métricas: de v7 a v16, con definiciones

Un "corte en stutter" es un corte de 400ms o menos dentro de una zona de ráfaga de acentos (densidad de kick de 6 o más en una ventana de 2 segundos). Los slots totales son los slots de edición de la timeline final. Los tipos de sección son las secciones musicales distintas representadas. Los fallos de editores son agentes LLM que fallaron y requirieron un fallback.

End-to-end metrics, v7 to v16End-to-end metrics, v7 to v16based on Fancam internal data, Jun 2026Total slots20252848v7 baselinev12 seq fixv15 8 fixesv16 actualtarget≥35Stutter cutsstutter cut = cut <= 400ms in an accent-burst zone015 of 2514 of 2820 of 48 (42%)v7 baselinev12 seq fixv15 8 fixesv16 actualtarget≥8Clips used11151616v7 baselinev12 seq fixv15 8 fixesv16 actualtarget16/16Editor failuresFallbacksFallbacks00target0v7 baselinev12 seq fixv15 8 fixesv16 actual
Métricav7 (baseline)v12 (fix de secuenciador)v15 (8 fixes)v16 (actual)Objetivo
Tipos de sección2443 (sin outro)≥3
Slots de intro1113≥3
Slots totales20252848≥35
Duración total~42s36.1s43.5s47.2s50s
Cortes en stutter015 (60%)14 (50%)20 (42%)≥8
Clips usados11/1615/1616/1616/1616/16
clip_9 (bailando)nuncanuncauna vez, 383mschorus (artist_dancing)en el clímax
clip_12 (bailando)nuncanunca2 vecesintro (3er slot)en el clímax
Fuente de best_sectionPhase4 (roto)50% intro forzada19 Phase4 + 1 fallback20 Phase4 + 0 fallbackPhase4 preservado
Fallos de editoresFallbacksFallbacks000
Tamaño del video120.8 MB94.9 MB112.3 MB103.8 MB-
Outro en objetivo de 50sNoNoNo

Fuente: basado en datos internos de Fancam, Jun 2026. El stutter se reporta como absoluto con su denominador: 20 de los 48 slots (42%). De las 11 filas con objetivo, 9 están en verde; los dos déficits (47.2s frente al objetivo de 50s, clip_12 en la intro) aparecen en la auditoría de abajo con su causa.

Para tu empresa: métricas con definiciones son la diferencia entre una demo y un sistema.

Evaluación honesta: la auditoría de v16

Puntuamos v16 contra el mapa editorial ideal, momento por momento: clip correcto, sección correcta, duración correcta, efectos correctos. Cuatro de seis momentos fallaron ese mapa. Contra el baseline de v7, v16 lo aplasta. Ambas afirmaciones son ciertas; ambas están en las tablas.

MomentoVeredictoCausa raízClase
Intro 0-14sParcial 40%El pool no tiene material de venue ni atmósfera; los clips de baile puntúan 0.3 en la intro en vez de 0Pool + puntuación
Ráfaga de kick 14-16sFallo 0%key_moments nunca llega al orquestador, así que el override de stutter no puede dispararseDato (bloqueante 1)
Groove 16-31sFallo 0%El editor de ritmo ignora rhythmic_accents_ms; no existe pacing por zonasProgramático (bloqueante 2)
Ráfaga 31-32sFallo 0%El mismo hueco de datos: key_moments ausenteDato (bloqueante 1)
Clímax 33sFallo 0%Sin key_moments, sin override de entrada de voz, sin hold; el primer clip dura 383msDato (bloqueante 1)
Chorus 33-50sParcial 50%El validador de color enfría a 5985K contra un objetivo de 5300KProgramático (parámetro)

Qué significa cada clase para tu empresa:

  • Pool: ningún algoritmo inventa material. Los huecos de contenido son un problema de planificación, no de código.
  • Dato: un bug de propagación es un fix de ~10 líneas, no un rediseño.
  • Programático: el pacing pertenece al código; dejado en prompts, deriva.

Bloqueantes abiertos, clasificados: (1) key_moments nunca se persiste en la entrada del orquestador (dato, ~10 líneas); (2) no hay pacing por zonas en validateRhythm (programático, ~40 líneas); (3) no hay clips de venue atmosféricos en el pool fuente (contenido, no arreglable en código); (4) los clips de baile sobreviven en la intro porque su peso es 0.3, no 0 (regla de puntuación).

Plan v17, próximos pasos documentados: propagar key_moments de punta a punta (~10 líneas); añadir pacing programático por zonas desde la densidad de acentos (~40 líneas); aceptar y documentar la limitación del pool, y conseguir material de venue para la próxima ejecución.

Para tu empresa: una auditoría que nombra causas raíz y estimaciones de líneas es un roadmap, no una confesión.

Este es el tipo de audit que entregamos: medido, etiquetado, con causas. Una semana, un proceso crítico, $1,500.

1 semana · Eres dueño de los hallazgos · 100% acreditado hacia tu build (dentro de 60 días)

Stack: piezas públicas, un sistema que es tuyo

Pipeline phases: LLM vs deterministicPipeline phases: LLM vs deterministicProduction pipeline, v16. Full stack is open source.PHASEINPUTOUTPUTTYPEMODELPhase 0 stem separationmusic_path + output_dir4 stems WAV + has_vocals + has_drumsDemucs Hybrid Transformer (GPU)DETPhase 0 beat/kick griddrums.wav (other.wav fallback)beat_grid_ms, kick_grid_ms (746 kicks),rhythmic_accents_ms (375 bursts), BPMlibrosa + Butterworth lowpass 130HzDETPhase 0 sectionsMP3 + stems8 sections (type, start, end, multi-stemfeatures)MusicSectionDetection(MERT-v1-330M + adapter 24.6M)DETPhase 0 transcriptionvocals.wavlyrics_timelineWhisperXDETPhase 0 labeling (#1)MSD sections + featuressection labels (type, confidence, narrative,energy) + global_arcdeepseek-v4-proLLMPhase 0 enrichment (#2)sections + multi-stem features + RMScurves + key_momentsediting_guide + global_editing_arcdeepseek-v4-proLLMPhases 1-3 clipsMP4 clipssegments 2-7s, reduced poolQwen3-Omni (vision tagging)DETPhase 4 deeppool segmentsface bboxes, actionQwen3-OmniLLMPhase 5/5.5 scoringconsolidated + editing_guidecompatibility[section], best_sectioncomputeBestSectionDeterministicDETPhase 6a pre-orchestratorsections + target + poolfiltered sections + quotasdiversity gate +computeSectionQuotasDETPhase 6a orchestratorsegments + sections + clippreferencesclip to section assignment, narrative_role,mood, effect_intent, audio_intentdeepseek-v4-pro + programmaticclampsLLM + DETPhase 6b editing roomtimeline + editing_guide + kick_grid+ accentstimeline_final.json (durations, effects,color, mix)4 editors (deepseek-v4-pro) +validateRhythm, validateVisual,validateColor, validateAudioSub +safety nets + Review AgentLLM + DETPhases 6.5-8 rendertimeline_final.jsonMP4 9:16, 30 fpsRemotion + Chromium headlessDETmusic_fit was removed after a hallucination, see honest assessment.Vision model names per server inspection.
ComponenteRolCapaDónde corre
Demucs (Hybrid Transformer)Separación de pistas: voz, batería, bajo, restoModelo neuronal deterministaGPU del cliente
librosaRejilla de beats, rejilla de kicks (746 kicks), ráfagas de acentos, BPMDeterministaGPU del cliente
MusicSectionDetectionEtiquetas de sección (Intro, Verse, Chorus, Bridge, Outro)Modelo deterministaGPU del cliente
WhisperXTranscripción a nivel de palabra para la línea de tiempo de la letraModelo deterministaGPU del cliente
DeepSeek V4 Pro (API)Enriquecimiento musical, orquestación, 4 agentes de edición, revisiónLLMAPI
Qwen3-Omni (local)Análisis de visión de clips: etiquetas narrativas, acción, rostrosLLMGPU del cliente
Remotion + ChromiumRender MP4 a 30fpsDeterministaGPU del cliente
ComfyUIGeneración experimental de frames para clips AIDifusión (no LLM)GPU del cliente

La capa de chat de producción expone 15 herramientas MCP: get_event_info, search_clips, get_thumbnail, plan_composition_with_ai, build_composition, start_preview, render_video, upload_image, las herramientas de la biblioteca de patrones load_patterns, save_pattern y get_artist, más herramientas de soporte para metadatos de medios, estado de trabajos y manejo de sesiones.

Para tu empresa: cada componente es software público; la orquestación es el foso, y es tuyo.

Prompts: tres instrucciones que cargaron el proyecto

RULE PRECEDENCE: P1 (quotas) → P2 (variety) → P3 (must_include) →
P4 (diversity) → P5 (compatibility). Higher priority ALWAYS wins.
If P4 conflicts with P2, P2 wins. No exceptions.

Por qué: los peores fallos del orquestador eran conflictos de reglas que el modelo no podía arbitrar. La prioridad explícita eliminó la ambigüedad; el código impone los techos.

P2: VISUAL VARIETY (THE #1 FAILURE MODE):
no single source clip may occupy more than 40% of any section's slots.
A flagged gap is 10x better than a loop.

Por qué: un clip reutilizado 9 veces produjo un loop visualmente roto. La regla tasa un hueco admitido por debajo de una repetición.

Do NOT generate pixel-level instructions.
Emit creative intent: {"effect_intent": "buildup", "intensity": "high"}.
Specialized tools translate intent into concrete render parameters.

Por qué: separación de responsabilidades. El director decide cómo se siente el momento; la herramienta es dueña de cómo renderizarlo.

Tres citas que resumen el criterio:

"Todo lo que puede ser programático DEBE ser programático."

Doctrina de confiabilidad.

"DeepSeek no debe generar instrucciones a nivel de píxel. Debe generar intención creativa que las herramientas especializadas interpreten."

Doctrina de arquitectura.

"El validador enmarca, no pisa."

El blend 50/50: el validador de color mezcla el valor del modelo con el objetivo programático, mitad y mitad, y luego suaviza la curva.

Para tu empresa: los prompts son contratos, no magia. El código que hay debajo es lo que puedes auditar.

Lecciones: 4 rondas, 25 fixes, una doctrina

Ronda 1 (de v7 a v9), estructural: compuerta de diversidad, best_section determinista (el modelo de visión alucinaba, asignando el 47% de los clips a la intro sin ningún dato musical), stutter hecho programático. Ronda 2 (de v9 a v12), el secuenciador: los límites de tokens mataron una llamada de 79K tokens; la política pasó a ser un reintento con feedback y cero fallbacks. Ronda 3 (de v12 a v15), objetivos: preservar los valores validados, tope duro de 10 beats por slot, los 16 clips usados. Ronda 4 (de v15 a v16), clímax e intro: intro limitada al 25%, mínimo 3 slots de intro, overrides de momentos clave, preferencias de clips bloqueadas en duro.

La doctrina, del documento de estado del proyecto (Jun 2026): "Cada fix programático es 10 veces más confiable que un prompt de LLM. El stutter forzado en validateRhythm() funciona. El stutter vía el prompt del editor de ritmo no."

Contexto de proceso (fuente: registros de sesiones de desarrollo, Jun 2026): 408 sesiones, 11,704 mensajes, 24 días. Los validadores que cargan el pipeline: validateRhythm (duraciones, clamps de stutter), validateVisual (repetición de efectos, transiciones), validateColor (arco de temperatura, blend 50/50), applyKeyMomentOverrides (entradas de voz, clímaxes), computeBestSectionDeterministic (emparejamiento de clip a sección) y la compuerta de diversidad (cobertura de secciones).

Para tu empresa: la doctrina se transfiere. Las partes deterministas de tu flujo de trabajo pertenecen al código, no a las peticiones.

Manual edit vs systemDIMENSIONMANUAL EDITSYSTEMweeksminutesFounder statementClip correctTBDTBDrender 2-5 min (production)Section correctTBDTBDDuration correctTBDTBDEffects correctTBDTBD"From weeks to minutes."Founder statement, not a benchmark. Values pending founder confirmation before publish."

Empieza con evidencia, no con un pitch

Empieza con un Audit ($1,500)

Una semana, un proceso crítico, y obtienes el mismo tipo de veredicto medido que muestra esta página, aplicado a tu flujo de trabajo. Los hallazgos son tuyos; el audit se acredita al 100% hacia tu build dentro de 60 días.

1 semana · Eres dueño de los hallazgos · 100% acreditado hacia tu build (dentro de 60 días)

Reserva una llamada de estrategia

30 minutos, sin deck de pitch. Trae tu flujo de trabajo; te diremos dónde ayudan los agentes y dónde no.

Salta a Custom System ($15K+)

¿Scope y presupuesto claros? Sistemas multi-agente a medida desde $15K; cada línea de código es tuya.

Salta a Custom System ($15K+) →

Veredictos medidos, no diapositivas. Publicación aprobada por el cliente. Ningún número inventado aquí, y ninguno en tu auditoría tampoco.

Genre-agnostic by designGenre-agnostic by designThe same musical phases, detected in the numbers of any genreReggaetonRockSalsaBalladAtmospheric introNo dembow, softpercussionClean guitarSolo pianoPiano + soft vocalsAnticipationKick burstDrum fillPercussion breakIntensity buildGroove establishedDembowMain riffMontunoSteady rhythmClimaxSinger entryBand chorusBrass + backing vocalsEmotional peak✓ Derived from numeric features, not genre labels.✓ Nothing hardcoded for reggaeton.Numeric features: kick density, drum RMS, vocal RMS, energy level.
Climax map, moment by momentClimax map, moment by momenta reggaeton track at 117.45 BPM0 BPM0 clipstarget 0s0s5s10s15s20s25s30s35s40s45s50sCalm introcuts 2-3s · ken_burns · crossfade · 5200KKick burst #1stutter 200-400mssync · flash_whiteDembow groovesteady 800-1500ms · beat_sync · zoom_inKick burst#2stutter cutsChorusfast cuts1sCLIMAX33sHOLD 2-3s on artist · zoom_pulse6000-6500K · music ducked5300K · dip_to_blackTimeline not to scale: 1-2s kick-burst zones widened for legibility.based on Fancam internal data, Jun 2026

FAQ

¿Por qué no construirlo internamente?

La brecha entre "llamadas de LLM que casi siempre funcionan" y "un pipeline con 0 fallos de editores" son exactamente los 25 fixes en 4 rondas de arriba: validadores, compuertas, reintentos, clamps. Un equipo puede conectar las llamadas; la doctrina tomó 24 días de evidencia para aprenderse. Puedes saltarte la matrícula.

¿$25K es caro?

Medido contra semanas de edición manual por video, no. El número del propio fundador: semanas por video antes, minutos por render ahora, en producción. Y nunca te comprometes a ciegas: el audit de $1,500 te dice exactamente qué construir, y se acredita al build.

¿Funciona con cualquier género?

El sistema lee características numéricas, no etiquetas de género: densidad de kicks, RMS de batería, RMS de voz, curvas de energía. El tema de prueba fue un tema de reggaetón a 117.45 BPM, y las mismas 20 reglas guiadas por la música aplican a rock, salsa y baladas.

¿Qué pasa si falla?

No construimos hasta que el audit muestre un caso. La entrega es por fases, y el primer agente está en producción antes de comprometer el presupuesto completo. Como eres dueño del código, un sistema parcial sigue siendo tuyo, no un costo hundido detrás de una puerta cerrada.

¿Soy dueño del sistema?

De todo: código, prompts, arquitectura, configuración de modelos. Sin licencias, sin lock-in de plataforma, desplegado en tu infraestructura. El cliente de este case study abrió el código al terminar el proyecto; con nosotros, eso es la norma, no la excepción.

¿Prefieres español?Ir a la versión en español

When SaaS isn't enough. This is what replaces it.