Communitygithub.com

Agentchengfeng/chengfeng-videocut-skills

Convierte un video de grabación de pantalla editado en un archivo final mp4: integra cortes del libro de cuentas, zooms, subtítulos y capas HTML, todo en un solo archivo. Se usa cuando el usuario dice exportar, generar archivo final, quemar subtítulos, renderizar, exportar video o generar archivo final. No usar para generar candidatos de eliminación de palabras, escribir subtítulos o hacer animaciones de pantalla.

¿Qué es chengfeng-videocut-skills?

Esta habilidad (skill) es la última etapa del flujo de trabajo de edición de video, responsable de convertir todos los datos de anotación (edición, subtítulos, capas visuales) en un archivo mp4 final. Antes de la exportación, todo es anotación: el libro de cuentas registra qué palabras se dicen, los subtítulos definen qué aparece en pantalla y las capas visuales especifican qué elemento se superpone. La previsualización muestra estos elementos en tiempo real pero sin guardarlos en disco. La exportación los quema en un solo archivo. Requiere Google Chrome para renderizar subtítulos y animaciones, y FFmpeg ≥ 6 para el procesamiento de video. La habilidad sigue un proceso de dos pasos: primero un modo de prueba (--dry-run) que informa la duración, fotogramas, número de pantallas de subtítulos, capas visuales, segmentos de zoom y resolución de salida; luego la ejecución real con cuatro fases de progreso (ensamblaje, superposición, composición y verificación). Si la resolución de origen es baja (<1920px de ancho), pregunta al usuario si tiene una versión de alta definición de la misma grabación para reemplazar la fuente, ya que la ampliación posterior no mejora el video original pero sí los subtítulos y animaciones redibujados a mayor resolución. La verificación final incluye tres comprobaciones: éxito del comando con comparación de metadatos, extracción de fotogramas para inspección visual y escucha humana (aunque esta última rara vez se realiza, se registra como no verificada).

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Agentchengfeng/chengfeng-videocut-skills/tree/HEAD/plugins/chengfeng-videocut/skills/chengfeng-export

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Exportar (archivo final)

Esta es la última etapa de la cadena, el único lugar en todo el producto donde realmente se dibujan píxeles.

Antes de ella, todo son anotaciones: el libro de cuentas registra "qué palabras decir", los subtítulos registran "qué escribir en la pantalla", las capas visuales registran "qué superponer", y la vista previa combina estos tres elementos en tiempo real para que el usuario los vea, sin guardarlos en disco. La exportación los quema en un solo archivo.

Requiere   edit-list.json (obligatorio), subtitles.json, visuals.json + modules/
Produce    archivo_final.mp4

Herramientas necesarias: Google Chrome en la máquina (para renderizar subtítulos y animaciones como imágenes). FFmpeg / FFprobe instalado desde el escritorio ya está dentro del directorio administrado del producto; la instalación solo por CLI aún requiere ffmpeg ≥ 6 en el sistema. Si falta Chrome, se mostrará un error claro; no intentes evitarlo: sin él no hay capa de subtítulos ni capa de animaciones.

Primero, lee y ejecuta la sección "Nivel de conclusión" del contrato de fase del skill de negocio. La exportación no entra en la máquina de estados de edición: no modifica ningún archivo del proyecto, no escritura en CAS, no avanza la etapa; el resultado es un archivo nuevo, y volver a ejecutarlo lo sobrescribe. Por lo tanto, no necesita confirmación.

0. Preparación

Primero, ejecuta la verificación de preparación del skill de actualización: comprobar si los skills están actualizados, si el Runtime es compatible; la raíz del plugin también se localiza allí (en los comandos de este documento, <raíz_del_plugin> se sustituye por esa ruta literal). Solo si está "listo" se continúa; si es "requiere nueva sesión" o "detener", se sigue su disposición (incluyendo la prohibición de "interfaz alternativa casera"), el skill de negocio no tiene su propia lógica de entorno.

Si el resultado de preparación es runtime.kind=desktop-managed, reutiliza directamente el CLI estable ya instalado por la aplicación de escritorio, las herramientas multimedia y el mismo servicio launchd/windows-task; no analices rutas de Electron, instales FFmpeg/Bun aparte ni inicies un segundo Runtime.

Comandos

node "<raíz_del_plugin>/scripts/ensure-running.cjs" --json
node "<raíz_del_plugin>/scripts/videocut-cli.cjs" export <proyecto> --dry-run --json          # Primero ver el plan, sin codificar
node "<raíz_del_plugin>/scripts/videocut-cli.cjs" export <proyecto> --json                    # Generar archivo final (por defecto 2x, velocidad de fotogramas original)
node "<raíz_del_plugin>/scripts/videocut-cli.cjs" export <proyecto> --out /ruta/archivo_final.mp4 --json
node "<raíz_del_plugin>/scripts/videocut-cli.cjs" export <proyecto> --scale 1 --json          # Solo resolución original
node "<raíz_del_plugin>/scripts/videocut-cli.cjs" export <proyecto> --keep-work --json        # Conservar archivos intermedios y PNGs fotograma a fotograma para depuración

Si ensure-running falla por identidad incorrecta, conflicto de puertos o servicio no saludable, detenerse inmediatamente; no se permite usar foreground como reemplazo temporal para continuar la exportación.

Dos pasos, no ejecutar solo el segundo

① --dry-run primero informa el plan: duración, fotogramas, número de pantallas de subtítulos, número de capas visuales, número de segmentos de zoom, resolución de salida.
               Léelo al usuario. Si los números no coinciden, el error está antes; diez minutos de codificación no lo arreglarán.
② Ejecución real: cuatro fases de progreso: assemble → overlay → compose → verify

Las warnings en --dry-run deben transmitirse textualmente. Solo reportan una cosa: algunas pantallas de subtítulos o capas visuales cuyas palabras ya fueron cortadas, por lo que no aparecerán en el archivo final. Esto es decisión de la etapa anterior, no algo que la exportación deba ocultar.

Nitidez: el video original es el límite; verificar su resolución antes de ampliar

Antes de exportar, verifica la resolución original (el campo source de --dry-run ya la tiene):

Ancho original ≥2560 (grabación nativa Retina) → --scale 1, la salida es nativa, el mejor caso
Ancho original <1920 (p. ej., 960×720) → detenerse primero: preguntar al usuario si tiene una exportación de alta definición de la misma grabación.
               La herramienta de grabación a menudo puede reexportar la misma grabación a 3x resolución,
               cambiar la fuente es más efectivo que cualquier posprocesamiento (ver sección siguiente). Si realmente no hay → --scale 2

--scale 2 es útil para fuentes de baja resolución porque: ampliar el original no lo hace más nítido, pero los subtítulos y animaciones se redibujan según la resolución de salida—el espectador realmente lee estos elementos; cuando la plataforma comprime de nuevo, la imagen más grande recibe un bitrate más alto.

No ajustes --fps para "hacerlo más nítido". La velocidad de fotogramas sigue al video original; cambiarlo solo desincronizará el muestreo de las animaciones con la grabación de pantalla.

Cambio de fuente: cuando el usuario proporciona una versión de alta definición de la misma grabación

Esto no forma parte del flujo de exportación—la exportación en sí siempre es de solo lectura. El cambio de fuente es una operación independiente sobre el material, después del consentimiento explícito del usuario; luego se vuelve a la exportación normal.

Primero determinar si es la misma grabación (las dos primeras condiciones son suficientes):

ffprobe -v error -show_entries format=duration -of csv=p=0 <dos_archivos>   # Duración exacta al milisegundo
ffmpeg -v error -i <archivo> -map 0:a:0 -c copy -f md5 -                  # Flujo de audio bit a bit idéntico
# Luego extraer dos o tres fotogramas para comparar visualmente el contenido

Audio bit a bit idéntico = misma línea de tiempo: todas las palabras, libro de cuentas, subtítulos, capas visuales están vinculadas al ID de palabra; ninguna necesita modificarse. Esto es exactamente lo que significa "vincular palabra, no segundo" en el cambio de fuente.

Cuatro pasos para cambiar la fuente (se realizó realmente el 2026-07-29; el paso ③ se omitió entonces, y la vista previa de edición mostró inmediatamente "error de generación": la huella no está solo en un lugar; busca todas las huellas antiguas con grep para encontrarlas antes de actuar):

① Reemplazar archivos   input/source.mp4 y uploads/source.mp4 son enlaces duros entre sí —
               eliminar ambos, copiar el nuevo archivo a input/, y crear el enlace duro de vuelta a uploads/
               (en macOS usar ln; en Windows usar New-Item -ItemType HardLink)
② Actualizar huella    El source.sha256 en project.json debe cambiarse al del nuevo archivo
③ Buscar otro lugar    workbench.json también guarda la huella sourceSha256,
               y la previsualización de edición verifica precisamente este archivo—omitirlo hace que la vista previa se niegue a generarse
               (Este es el comportamiento correcto del producto: si la huella no coincide, es mejor fallar que mostrar una vista previa antigua falsa)
④ Reexportar        --scale 1 — cambiar la fuente es para obtener píxeles nativos; no ampliar más

Medida de seguridad: usa tu herramienta de búsqueda en todo *.json del directorio del proyecto para buscar los primeros 8 caracteres de la huella antigua; procesa cada lugar encontrado (los registros de caché como preview-edited/current.json se recalcularán automáticamente, no es necesario modificarlos manualmente).

Si el audio es diferente (regrabado, cortado, duración distinta) no es cambio de fuente, es un nuevo proyecto: las palabras deben transcribirse de nuevo y todas las anotaciones quedan invalidadas. No lo fuerces.

Verificación: tres cosas; sin una, la exportación no está completa

① El comando se completa con éxito    El producto compara dimensiones, fotogramas, pistas de audio del archivo final con el plan punto por punto.
                      Si no coinciden, se genera un error readback_mismatch, el archivo se deja en disco como evidencia,
                      y la exportación no se considera completa
② Extraer fotogramas y ver píxeles    Extraer fotogramas del archivo final y mirarlos. Al menos cubrir: un segmento de zoom,
                      un segmento de animación de pantalla completa, un segmento solo con subtítulos, y un borde entre capas
③ Escucha humana                Nadie lo ha hecho realmente; siempre registrar como human listening UNVERIFIED

② No se permite usar capturas de pantalla de la vista previa como sustituto. La vista previa y el archivo final son dos rutas de renderizado distintas; la verificación busca precisamente si coinciden—usar imágenes de la vista previa como evidencia del archivo final es dar por supuesto lo que se está verificando.

Para juzgar el zoom, busca puntos de referencia discriminatorios; la impresión general engaña (ocurrió realmente el 2026-07-29): La pantalla con zoom 1.6x todavía parece "una página completa" en vista general; en miniatura, casi no hay diferencia con la visión general—antes se juzgó erróneamente un fotograma de zoom correcto como "zoom perdido", perdiendo media hora y reexportando dos veces. El método correcto es buscar evidencias que solo el recorte puede causar: elementos cortados por la mitad (burbujas partidas), bordes desvanecidos (barra lateral, barra de título). Compáralo con el mismo fotograma del video original para decidir de inmediato.

Para extraer fotogramas, usa ffmpeg:

ffmpeg -v error -ss 8.84 -i archivo_final.mp4 -frames:v 1 -y frame.png

Dónde buscar si hay problemas

--keep-work deja tres cosas en .chengfeng-videocut/export/ del proyecto, que separan directamente "cuál mitad falló":

assembled.mkv    Solo la edición, sin ninguna superposición. Si falla = error en libro de cuentas o cortes
overlay/*.png    Solo las superposiciones, con fondo transparente. Si falla = error en estilo de subtítulos o módulos
spans/*.mp4      Segmentos después de la composición. Si falla = error en zoom o alineación

Tabla de correspondencia:

Archivo final sin subtítulos/animaciones       ¿Los overlay PNG son completamente transparentes? ¿El módulo no aceptó seek?
Animación se queda en primer fotograma          El módulo no implementó seek, o la línea de tiempo GSAP no está paused
Pantalla completamente blanca                   Al módulo le falta `:root { color-scheme: dark }`
El cuadro de zoom está torcido                  El viewBox del módulo y el zoom de la capa no son el mismo conjunto de números
Archivo final más corto que el plan             Algún span tiene menos fotogramas; ver el error en la fase compose
Destello de un segmento de video original en borde de capa   La captura de overlay es obsoleta (validación de marcador de fotograma falló). El producto se basa en una barra de marcador de fotograma en la parte superior de cada página para demostrar que cada captura pertenece a un fotograma específico; si vuelve a ocurrir, primero verificar que el overlay PNG tenga la barra de marcador en la parte superior y que compose la haya recortado
No se encuentra Chrome              Instalar Google Chrome; no cambiar a otra ruta de renderizado

Lo que NO está permitido

  • No declarar "exportación exitosa" como "verificación aprobada"—el retorno exitoso del comando solo significa que el producto coincide consigo mismo, no que la imagen sea correcta
  • No usar capturas de pantalla de vista previa, DOM, logs como sustituto de la extracción de fotogramas del archivo final
  • No declarar human listening PASS si nadie escuchó
  • No modificar archivos del proyecto (cambiar subtítulos, eliminar capas, mover libro de cuentas) para que la exportación funcione. Exportación es solo lectura, no escritura
  • No hacer el trabajo de etapas anteriores en la exportación: si faltan subtítulos, ve a escribirlos; si falta imagen, ve a crearla; no improvises aquí

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

Agentchengfeng/chengfeng-videocut-skills

剪辑环境的唯一管理者:就绪检查(skills 是否最新 → Runtime 是否配套)、Skills 更新激活、Runtime 安装与体检。用户说检查更新、安装剪辑环境、装播放器、检查剪辑环境、剪辑环境就绪了吗、配置转录凭证时使用;业务 Skill(剪口播/字幕/画面/导出)第 0 步也引用本 Skill 的就绪检查。不用于剪辑、字幕、画面、导出本身或项目数据迁移。

Agentchengfeng/chengfeng-videocut-skills

剪辑中文口播原素材:逐词转录、词典修字出修字表、五轮扫描找口误与重复、汇总表与重复句子表、打开 Studio 让用户复核、复盘沉淀用户偏好与词典。只产出一份已复核的删词账本,不切媒体、不做字幕、不做分镜动画。用户说剪口播、处理口误、生成口播基础素材、继续剪口播,或确认卡回传 action=return_cut_review 时使用。不要用于执行物理剪切、导出剪后视频、单独安装、单独打开工作台或口播分镜成片。

Agentchengfeng/chengfeng-videocut-skills

整理、脱敏并上报 chengfeng-videocut 的 GitHub Bug。用户说上报 Bug、反馈剪口播问题、提交 GitHub Issue、这个问题告诉开发者,或要求继续提交已预览的 Bug 草稿时使用。不要用于功能建议、普通排错、代码提交或未获用户确认的自动上报。

Agentchengfeng/chengfeng-videocut-skills

给剪好的口播做字幕:直接用已有的逐词稿加账本算出剪后时间(不必导出、不必重新转录)、用词典和作者文稿改写听错的专名、按句子分屏、在 Studio 里逐屏复核。用户说做字幕、加字幕、改字幕、重新分屏、字幕不对时使用。不要用于删词剪辑、物理剪切、分镜动画或成片渲染。

Agentchengfeng/chengfeng-videocut-skills

操作 chengfeng-videocut 剪辑工作台的已有工程,通过 Runtime CLI 查工程与词句位置、添加或替换画面覆盖层、移除画面、删除明确指定的词句或片段、拆分裁剪移动已有片段、调整画布比例并回读核验。用户说插入片段、删掉这句、移除动画、换个画面、调整顺序或管理时间线时使用;先区分画面覆盖与主轨顺延插入,不负责自动判断口误、创作动画、制作字幕、导出或排查安装故障。

Agentchengfeng/chengfeng-videocut-skills

Create Ian Xiaohei-style HTML/SVG motion illustrations for Chinese articles, scripts, storyboard scenes, workflow explanations, concept metaphors, and short video visual aids. Use when the user asks for 小黑 SVG、漫画感 HTML、分层 SVG 动效、把小黑生图做成 HTML/SVG、可编辑矢量动效、口播流程动画、手绘漫画动效、正文配图动画, or wants a Xiaohei illustration style adapted into controllable HTML/SVG/GSAP output instead of raster image generation.

Agentchengfeng/chengfeng-videocut-skills

给剪好的口播配画面:在录屏上盖 HTML 层(圈重点标注 / 小黑整屏动画 / 推近),层绑字幕屏、由播放器逐帧驱动、直接在预览里看。用户说做分镜、配画面、加动画、圈重点、B-roll、做 storyboard 时使用。不要用于删词剪辑、字幕、物理剪切或成片渲染。

Skills relacionados