Communitygithub.com

Jenesyx/reel-split

Úsalo cuando el usuario ejecute /reel-split o solicite el explicador de pantalla dividida Reel: un panel animado de widgets en la parte superior (~45 % del cuadro), el orador debajo todo el tiempo, sin subtítulos ni efectos de sonido, típico para videos de tipo 'Encontré esta herramienta / Aquí hay 5 consejos', sobre una toma de entrevista en raw/.

¿Qué es reel-split?

Este skill de agente de IA automatiza la creación de videos Reel con pantalla dividida y panel de widgets. Cuando se invoca mediante el comando `/reel-split` o una solicitud similar, el agente genera un video explicativo donde un panel de color crema ocupa la parte superior del cuadro (por defecto el 45 %) mostrando widgets animados (tarjetas, medidores, alternadores, terminales, chips) que ilustran exactamente lo que el orador está diciendo, mientras el orador aparece debajo a escala 1 y nunca se mueve. El resultado final incluye una tarjeta de llamada a la acción con la palabra clave de comentario y una tarjeta de seguimiento. El skill procesa la toma de video cruda, la transcribe, rastrea la cara del orador, planifica escenas basadas en las ideas habladas, genera los widgets con HTML/JS, construye el proyecto HyperFrames, renderiza un avance rápido y finalmente el video completo, todo sin añadir subtítulos, música ni efectos de sonido (el audio es el original de la toma). Es compatible con Claude Code, Cursor, Codex, Windsurf, Cline y cualquier plataforma que admita skills de agente de IA. El flujo de trabajo está documentado paso a paso en el archivo SKILL.md, con defaults configurables y reglas precisas para los widgets y la interfaz.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jenesyx/arta-edit-studio/tree/main/.claude/skills/reel-split

Preguntar en tu IA favorita

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

Documentación

Reel — Edición dividida (panel 45 % sobre el orador)

Un panel crema permanente llena la parte superior del cuadro (1080 × split.panel_height, por defecto 864 = 45 %) con widgets de estilo UI (tarjetas, medidores, alternadores, terminales, chips) que ilustran exactamente lo que se está diciendo. El orador se coloca debajo a escala 1 y nunca se mueve. Final: la palabra clave del comentario grande en pantalla, luego una tarjeta de seguimiento. Ejemplo práctico: examples/split/ (plan + módulo de escena de un video real de 100 s sobre cinco habilidades de Claude).

Argumentos: $ARGUMENTS

Valores predeterminados (cambiar solo si el usuario lo indica)

Leer primero reel.config.json (si no existe, usar reel.config.example.json).

ElementoPredeterminado
División"split": split.panel_height (864 → panel 45 %, orador 55 %; 960 = 50/50)
Oradorescala 1, sin zoom, sin movimiento; rostro centrado en la región del orador (speaker_y)
Caja segura"safe": split.safe = [64, 160, 64, 32] → el contenido de la escena vive en 952 × 672 comenzando 160 px hacia abajo (el encabezado de Instagram / la barra de estado del teléfono ocultan la parte superior)
Subtítulos / SFX / músicaNinguno añadido. Audio = la mezcla original de la toma, re-multiplexada por finish.py
TomaAsumir que ya está cortada, etalonada, con música añadida → usar tal cual. Cruda/sin cortar → preguntar primero
CTAPalabra clave del comentario (palabra o número) enorme en una tarjeta de burbuja de diálogo; tarjeta de seguimiento con "handle": creator.handle, solo texto, nunca un recorte de rostro
Paletasplit_palette: panel crema, texto tinta, rellenos de acento; texto sobre crema usa accent_deep (contraste)

Entradas

El nombre de la toma y el tema provienen de los argumentos. Preguntar una vez, en un solo mensaje, solo lo que falta: ¿la toma ya está cortada/etalonada/con música?; la palabra clave del comentario; nombres o jerga que Whisper pueda malinterpretar (nombres de herramientas y productos).

Flujo de trabajo

PY = .venv/Scripts/python.exe -X utf8 (Windows) o .venv/bin/python -X utf8 (macOS/Linux). Pasos largos en segundo plano.

#PasoComando / acciónVerificar
1Mirarffprobe; hoja de contacto ffmpeg -i raw/<take> -vf fps=1/5,scale=216:384,tile=9x2 -frames:v 1 work/<take>/sheet.jpg y mirarla¿pared vacía sobre la cabeza? ¿ya editada?
2Transcribir$PY tools/transcribe.py <take> --prompt "<nombres, jerga>"corregir nombres de herramientas; silencios > 3 s → re-transcribir ventana
3Rostro$PY tools/face_track.py <take> --split <panel_height>imprime speaker_y
4Plan de ritmouna escena por idea, típicamente 3–7 s, cada widget anclado a una palabra hablada (señal = inicio de palabra). Las escenas cambian el contenido, nunca el diseño
5Archivo de planwork/<take>/showcase.json a partir de examples/split/showcase.json: video ("../../raw/<file>"), split, speaker_y, safe, scenes_module, scenes[] {kind, start, end, cue{...}}, handle en la escena de seguimiento; _note registra los números de rostro
6Escenastools/scenes_<slug>.py a partir de examples/split/scenes_5skills.py: una sc_<kind>(i, s) -> (html, js) por tipo, diccionario RENDER, opcional CSS/JS. Coordenadas dentro de la caja segura (952 de ancho); ids s{i}-*; tiempos de señal absolutos. sc_comment, sc_follow son el CTA
7Construir$PY tools/showcase_build.py <take>; en work/<take>/sc: npx hyperframes lint public → 0 errores; npx hyperframes snapshot public -o ../snaps --no-end --describe false --at <mitad de cada escena>; leer hojas, corregirtexto dentro del panel, nada debajo del encabezado
8Renderizado rápido$PY tools/finish.py <take> --seconds 12; leer work/<take>/sc/quick_sheet.jpg
9Renderizado completo$PY tools/finish.py <take> (segundo plano) → final/<take>/, verificar, qa/sheet.jpgleer la hoja
10Informeruta, duración, escenas, resultado de verificación. Si se aprendió algo nuevo, añadirlo a este skill

Reglas del panel

  • Los widgets ilustran la oración que se está diciendo en ese momento: una tarjeta de repositorio cuando nombran el repo, un medidor cuando comparan, un tachado cuando dicen "no esto".
  • Cada escena se desvanece 0.25 s antes de la siguiente (el constructor lo hace); dentro de una escena, los elementos aparecen en sus palabras clave.
  • Los números en pantalla deben ser recuentos reales de la toma.
  • Los tipos de escena integrados en showcase_build.py (hook, repo, cta, …) son anteriores a la caja segura del 45 % y pueden desbordarla; escribir tipos en tools/scenes_<slug>.py basados en examples/split/scenes_5skills.py en su lugar.
  • Texto en farsi / árabe: clase .fa (RTL en el elemento, nunca dir="rtl" en <html>), letter-spacing: 0, dígitos mediante fa(), un cero grande como latín 0.
  • Sin interpolaciones superpuestas en una propiedad, sin Math.random / from:"random", las inserciones llevan autoAlpha:0 en el estado de origen.
  • Si algún clip de origen es HDR (HLG), mapear tonos primero (TONEMAP en tools/story_assets.py) — finish.py se detiene ante "HDR auto-promotion".
  • hyperframes snapshot no es prueba del renderizado — el paso 8 lo es.

Individual skills in this repo

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

Skills relacionados