Communitygithub.com

clipper

Convierte un video largo en clips verticales con subtítulos palabra por palabra, listos para publicar.

¿Qué es clipper?

Clipper es una skill para Claude Code que transforma videos largos (como podcasts, grabaciones o directos) en clips cortos verticales con subtítulos sincronizados, optimizados para redes sociales como TikTok, Reels o Shorts. El proceso se ejecuta completamente en local, sin necesidad de API keys ni subir datos a la nube. Primero transcribe el video usando Whisper, luego Claude selecciona los 3-5 momentos más impactantes según criterios como gancho inicial, independencia contextual, payoff y energía. Finalmente, genera clips de 20-60 segundos reencuadrados a 9:16 centrados en el rostro del hablante, con subtítulos quemados y nivel de audio profesional (-14 LUFS). La skill verifica la calidad visual de cada clip mediante imágenes de prueba y permite ajustar colores, duración o eliminar subtítulos dobles. Es ideal para creadores de contenido que necesitan extraer rápidamente los mejores momentos de un video sin edición manual.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/corbinsylk/clipper-skill/tree/HEAD/skills/clipper

Preguntar en tu IA favorita

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

Documentación

¿Qué hace clipper?

Arrastra un video y Claude encuentra los momentos más impactantes, luego los convierte en clips cortos con subtítulos, listos para publicar.

Todo se ejecuta en este ordenador. No se sube nada. La skill se encuentra en ~/.claude/skills/clipper/; sus herramientas son scripts/transcribe.py y scripts/make_clips.py, ejecutadas con su propio Python: ~/.claude/skills/clipper/.venv/bin/python.

0. Verificar la instalación (cada ejecución)

test -x ~/.claude/skills/clipper/.venv/bin/python && command -v ffmpeg

Si falta alguno, indícale al usuario en una línea y ejecuta el instalador desde el repositorio que clonó (bash install.sh dentro de la carpeta clipper-skill). Si no encuentras la carpeta, clónala de nuevo: git clone https://github.com/corbinsylk/clipper-skill && cd clipper-skill && bash install.sh.

1. Obtener el video

El usuario arrastra el archivo o proporciona una ruta. Si no da ninguna, pídelo en una línea. Ambos scripts usan la carpeta de trabajo <nombre del video>-clips/ junto al video a menos que le pases otra. Los ajustes que el usuario puede dar (si no, usa los valores predeterminados, nunca preguntes):

AjusteValor predeterminado
Número de clipsDe 3 a 5, tantos como sean genuinamente potentes
Duración del clipDe 20 a 60 segundos (apunta a 30 a 45)
Colores de subtítulosBlanco roto #F5F1EA, la palabra que se dice en arcilla #B03926
SubtítulosActivados

2. Transcribir

~/.claude/skills/clipper/.venv/bin/python ~/.claude/skills/clipper/scripts/transcribe.py "<video>"

Imprime primero la carpeta de trabajo. La primera ejecución descarga el modelo de voz una vez (unos 500 MB para small); un video de 2 minutos tarda alrededor de un minuto, uno de una hora varios minutos. Para cualquier video de más de unos 10 minutos, ejecuta el comando en segundo plano (en Claude Code: la herramienta Bash con run_in_background) y dile al usuario que está funcionando. Para un acento fuerte o audio deficiente añade --model medium. Una advertencia sobre un token de HF o un consejo de velocidad en la primera ejecución es inofensivo.

3. Elegir los momentos (esta es tu tarea, no de un script)

Lee completo <carpeta de trabajo>/transcript.md. Elige los 3 a 5 momentos más impactantes. Un momento impactante:

  • Abre con un gancho en su primera frase. Una afirmación audaz, un número sorprendente, una pregunta, un error, el inicio de una historia. Nunca empieces con "entonces", "y", "eh", "como decía" ni una línea que necesite contexto anterior.
  • Se sostiene por sí solo. Alguien que nunca vio el video completo lo entiende. Sin "esto", "esa cosa" ni "como mencioné" que apunten fuera del clip.
  • Tiene recompensa. Termina en la respuesta, el remate, el resultado o la lección: un pensamiento completo, nunca a mitad de frase.
  • Tiene energía. Opiniones, detalles concretos, números, emoción, un giro. Salta saludos, lecturas de patrocinadores, aspectos técnicos y preparación lenta.
  • No repite otra selección. Cada clip plantea un punto diferente y los clips nunca se solapan en el tiempo. Un video corto da menos clips: por debajo de unos 5 minutos, de 1 a 3 clips es normal; nunca estires ni solapes para alcanzar un número.

Puntúa cada uno del 1 al 10 (gancho, independencia, recompensa y energía juntos). Conserva solo los que obtengan 7 o más; si menos de 3 lo hacen, conserva los 3 mejores y di que son más débiles. Luego escribe <carpeta de trabajo>/moments.json:

[
  {"title": "Título corto para el archivo", "start": 63.2, "end": 101.8, "score": 9,
   "hook": "la primera frase del clip, palabra por palabra",
   "why": "una línea: por qué funciona este momento",
   "caption": "un pie de foto listo para publicar: una línea de gancho, luego 2-3 líneas cortas, luego una pregunta o llamada a la acción"}
]

start y end están en segundos desde el inicio del video (los tiempos de la transcripción están en minutos:segundos, así que 01:03.2 = 63.2). <carpeta de trabajo>/words.json tiene cada palabra con su inicio (s) y final (e) exactos: léelo para fijar los bordes. Establece start al s de la primera palabra del gancho y end al e de la última palabra de la recompensa. El script conserva las palabras desde start hasta end (con un margen de 0.05 s) y nunca alcanza la palabra anterior o posterior, así que para eliminar una palabra como "Entonces" pon start en el s de la siguiente palabra.

4. Crear los clips

~/.claude/skills/clipper/.venv/bin/python ~/.claude/skills/clipper/scripts/make_clips.py "<video>"

Añade --text-color "#FFFFFF" --active-color "#FFD400" para otros colores de subtítulos, o --no-captions. Tarda aproximadamente un minuto por clip. Cada clip: cortado en los bordes de las palabras, reencuadrado a 1080x1920 (un video panorámico se recorta alrededor del rostro del hablante; cualquier tramo de un segundo o más sin rostro, como un gráfico, una pantalla o material de archivo, se muestra completo sobre un fondo de relleno difuminado en lugar de recortarse; un video vertical se mantiene completo), subtítulos de tres palabras a la vez con la palabra hablada resaltada, sonido nivelado a -14 LUFS.

5. Revisar antes de entregar

Abre cada clips/NN-*.jpg: cada una es una tira de 8 fotogramas a lo largo del clip completo. Míralas todas:

  • El rostro está en el encuadre y los subtítulos se leen, debajo de la barbilla, en cada fotograma con voz.
  • El video ya tiene subtítulos grabados (ves dos conjuntos de palabras): rehaz todos los clips con --no-captions.
  • El script imprime "face in X/Y checks" por clip. Si X es 0 no hay rostro que encuadrar (una grabación de pantalla, diapositivas): el clip está centrado, así que indícalo en el informe. Los fotogramas sin rostro son esperados en un video editado; son los cortes que se muestran completos.
  • Si un clip comienza o termina a mitad de palabra o pensamiento, corrige start/end en moments.json y rehaz solo ese clip con --only N.

6. Informe

Una lista breve: el archivo de cada clip, duración, puntuación y por qué funciona, además de su pie de foto. Señala clips/scores.md (todo en un archivo) y la carpeta clips/. Ofrece un siguiente paso: momentos diferentes, otros colores de subtítulos, o clips más largos o más cortos.

Skills relacionados