Communitygithub.com

johnnyfekete/video-organize

Organiza material de vídeo para un guion. Transcribe cada grabación localmente, encuentra cada toma y la empareja con una escena del storyboard, puntúa integridad, palabras rotas y audio, lee veredictos en el set, sugiere la mejor toma o un parche de dos tomas, cataloga el b-roll, escribe TAKES.md y ofrece renombrar con nombres estilo cinematográfico.

¿Qué es video-organize?

Esta skill para Claude Code organiza el material de vídeo sin editar de acuerdo con un storyboard previamente definido. Es ideal para flujos de trabajo de edición scripted, ya que automatiza la transcripción local de cada grabación, identifica cada take y lo empareja con una escena del storyboard, y puntúa cada take según su integridad, palabras rotas y calidad de audio. Además, respeta los veredictos tomados en el set (aprobación/rechazo) para priorizar o descartar tomas, y cuando ninguna toma individual es suficiente, sugiere un "parche" combinando las mejores partes de dos tomas. También cataloga el material b-roll, haciendo coincidir sus descripciones con las notas de b-roll del storyboard. La skill genera un archivo TAKES.md que resume todas las tomas y sus puntuaciones, y ofrece renombrar los clips con nombres cinematográficos estándar (como S02A_T03_original). Se ejecuta después de `video-setup` y antes de `video-assemble`, y requiere `ffmpeg`, la skill `resolve-bridge`, y un transcriptor (Whisper local u otro mediante `RVS_TRANSCRIBE_CMD`). Su funcionamiento es modular: primero cuenta los archivos, luego transcribe, encuentra y puntúa tomas, extrae frames de b-roll y finalmente escribe el informe. El usuario puede intervenir para corregir la selección de tomas, responder preguntas sobre diferencias entre tomas, y aprobar el renombrado final.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/johnnyfekete/resolve-video-skills/tree/HEAD/skills/video-organize

Preguntar en tu IA favorita

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

Documentación

¿Qué hace video-organize?

Ejecútalo después de video-setup y antes de video-assemble. No necesita una línea de tiempo y funciona con Resolve cerrado. Requiere la skill resolve-bridge instalada junto a esta (o configurar RVS_BRIDGE), ffmpeg, y ya sea uv (para Whisper local) o un comando transcriptor en RVS_TRANSCRIBE_CMD.

Ejecuta los scripts como python3 <carpeta de esta skill>/scripts/organize.py --workdir <carpeta> <comando>.

Formato del storyboard

Markdown simple, un bloque por escena. El identificador de escena proviene del encabezado.

## S01
Setup: encimera

Déjame empezar con una confesión: la IA me ayudó a planificar este vídeo.

## S03
Voiceover: sí
B-roll: mostrando a la IA investigando algo divertido

Setup, Voiceover y B-roll son opcionales. Todo lo demás en un bloque es el texto hablado. Un bloque con solo B-roll: es una escena solo de b-roll. Un guion simple sin encabezados cuenta cada párrafo como una escena. Sin ningún storyboard, las tomas se agrupan por texto similar (G01, G02), con una advertencia al inicio de TAKES.md y sin puntuación contra un guion ni oferta de renombrado.

Flujo de trabajo

  1. Verificación de configuración. Ejecuta la check de video-setup. Advierte si no hay storyboard registrado, y .edit/config.json debe contener storyboard, approve_phrases y reject_phrases (una lista phrases antigua aparece solo como nota: pregunta qué frases aprueban y cuáles rechazan, y guárdalas con setup.py write).
  2. Primero cuenta. Pregunta por la carpeta de material, luego:
    python3 scripts/organize.py --workdir <carpeta> run --footage <carpeta_de_grabaciones> [--storyboard ARCHIVO] [--every 2]
    
    Sin --yes imprime los conteos (grabaciones, duración, escenas) y se detiene. Confirma con el usuario que la carpeta sea la correcta.
  3. Ejecutar.
    python3 scripts/organize.py --workdir <carpeta> run --footage <carpeta_de_grabaciones> --yes
    
    Transcribe (una grabación ya transcrita y sin cambios se omite), encuentra y puntúa tomas, extrae frames de b-roll, escribe TAKES.md y registra problemas (escenas sin toma utilizable, b-roll no filmado, fragmentos rotos que nadie puede parchear).
  4. Tu parte: describe el b-roll. La ejecución lista una carpeta de frames por grabación de b-roll (un JPEG por muestra, el frame N está en N x cada every segundos). Para cada carpeta:
    • abre los frames y describe lo que se ve en pantalla, por marca de tiempo;
    • empareja las descripciones con las notas de B-roll: del storyboard: escena, inicio, fin, y motivo;
    • escribe la carga útil y luego regístrala:
      {"<ruta de grabación>": {"frames": {"0": "una persona escribiendo", "2": "primer plano de una pantalla"},
                                "matches": [{"scene": "S04", "start": 2, "end": 6, "why": "primer plano de pantalla"}]}}
      
      python3 scripts/organize.py --workdir <carpeta> describe payload.json
      
    Describe solo lo que puedas ver. No inventes coincidencias.
  5. Tu parte: preguntas sobre letras de toma. Cuando la ejecución no puede determinar si dos archivos de una escena pertenecen a la misma configuración de cámara, lista una pregunta con una diferencia de frames. Pregunta al usuario, luego registra cada respuesta:
    python3 scripts/organize.py --workdir <carpeta> answer S02 <archivo> B
    
  6. Mostrar TAKES.md. Una sección por escena con la toma sugerida primero, su puntuación y razones, parches (marcados con ambos IDs de toma, siempre una recomendación), clips no emparejados y escenas sin toma. Lee los problemas al usuario.
  7. Correcciones. Cuando el usuario prefiere otra toma ("usa S02A-T03"):
    python3 scripts/organize.py --workdir <carpeta> pick S02A-T03
    
    La elección del usuario sobrevive a re-ejecuciones. report reescribe TAKES.md sin cambiar nada más.
  8. Renombrar. Ofrecido por organize.py rename (propuesta primero, --apply solo después de que el usuario apruebe la lista completa, --undo para deshacer). Muestra la lista completa de antiguo a nuevo y aplica solo con un sí claro. Nunca renombres de otra forma. Los clips ya colocados en una línea de tiempo en el proyecto abierto de Resolve se omiten y se listan con el motivo, porque reenlazar un clip usado puede perder sus cortes y gradación; renómbralos manualmente en Resolve si es necesario. Si el proyecto contiene clips compuestos, multicámara o Fusion, cuyo contenido no se puede listar, se omite cada clip importado. --apply aplica exactamente la propuesta mostrada por última vez y se niega si cambió. Con Resolve cerrado, --apply y --undo necesitan --never-imported (el material nunca se importó); si Resolve está abierto, los clips usados aún se verifican.
  9. Finalizado. La ejecución registra el paso organize en sí, por lo que no hay nada más que registrar. Señala video-assemble (aún no construido) como el siguiente paso.

Nombres

CasoNombre
ID de toma en TAKES.mdS02A-T03
Archivo con una tomaS02A_T03_IMG_5419.MOV
Archivo con varias tomas de un planoS02A_T01-T03_IMG_5420.MOV
Archivo con varias escenasS03A_S05A_S06A_IMG_5422.MOV
Segunda configuración de cámara de una escenaS02B_T01_IMG_5430.MOV

Cada plano tiene una letra. Una letra diferente significa una configuración de cámara diferente, no una retoma. El b-roll y los archivos no emparejados conservan sus nombres.

Reglas

  • El material fuente nunca se mueve ni se sobrescribe. Solo se renombra mediante el rename aprobado.
  • La puntuación es de 0 a 100 y siempre se muestra con razones. Un rechazo en el set tiene prioridad sobre la puntuación; una aprobación se clasifica primero. Las escenas de voiceover se juzgan principalmente por el sonido.
  • Los parches intercambian al menos un corte de idea completo en una pausa natural, nunca una sola palabra.
  • Los archivos de trabajo residen en <carpeta>/.edit/organize/ (no editar a mano). video-assemble solo lee esos archivos.

Individual skills in this repo

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

Skills relacionados