Communitygithub.com

uday629/talking-head-short

Editor maestro para videos verticales de cabezas parlantes (Reels, TikTok, Shorts). A partir de un clip en bruto, transcribe, elimina tomas malas y silencios, detecta el nicho (matriz de 24 géneros), pide al usuario elegir opciones de estilo y genera una edición profesional con subtítulos cinéticos de proporción áurea, gráficos animados con significado, B-roll con licencia, música, SFX y fuentes, corrección de color y QA.

¿Qué es talking-head-short?

Esta skill transforma un clip en bruto de una cabeza parlante (como videos de coach, fundador, UGC o explicativos) en un video vertical profesional listo para redes sociales (Reels, TikTok, Shorts). Es útil porque automatiza todo el flujo de edición: transcripción, eliminación de pausas y tartamudeos, selección de estilo basada en una matriz de 24 nichos, y renderizado con subtítulos cinéticos de proporción áurea, gráficos animados que refuerzan el significado, B-rol con licencia, música y SFX. Funciona en cualquier sandbox (claude.ai, Cursor, etc.) con una configuración de red adecuada. El proceso comienza con el análisis del video, sigue con un breve resumen que se presenta al usuario para elegir estilo, fuentes, paleta, densidad visual, música y B-roll. Luego genera un `spec.json` con la línea de tiempo, lo planifica, crea styleframes para validación visual, y finalmente renderiza, mezcla audio y realiza control de calidad. Todo el contenido (música, SFX, fuentes, B-roll) proviene de fuentes con licencia CC0 o equivalentes, garantizando cumplimiento legal.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/uday629/talking-head-short-skill/tree/HEAD/talking-head-short

Preguntar en tu IA favorita

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

Documentación

Talking-Head Short — editor maestro

Escribe respuestas concisas. No repitas transcripciones ni registros largos. Arregla los problemas editando spec.json con la herramienta Edit, nunca reescribiéndolo. Cada script imprime un informe compacto; léelo, actúa y continúa.

S=<directorio de esta skill>/scripts, WD=<directorio de trabajo junto al archivo raw>/ths_<nombre>.

0. Configuración (una vez por máquina/sandbox)

bash $S/setup.sh → usa el PY= impreso. Instala todo desde PyPI, incluyendo un ffmpeg estático si no existe. Cada descarga tiene una alternativa automática. Los sandboxes (ejecución de código en claude.ai, gratuito o de pago) suelen bloquear HuggingFace, Mixkit y la API de Google Fonts, pero permiten GitHub:

  • modelo de transcripción: HuggingFace → mirror en GitHub (whisper-base, luego whisper-tiny)
  • música/SFX: Mixkit → mirror en GitHub con paquete CC0 (ids como pack:lofi_chill)
  • fuentes: repositorio de Google Fonts → jsDelivr → mirror en GitHub con paquete OFL (32 familias) → fuente del sistema
  • B-roll: Mixkit → ninguna (usa tarjetas, o pide al usuario que suba clips) Si el setup imprime "no network" / pip falla: el sandbox tiene el acceso a red DESACTIVADO. Indica al usuario exactamente (un mensaje): "claude.ai → Settings → Capabilities → Code execution → Network access: All domains (o añade: pypi.org, files.pythonhosted.org, github.com, objects.githubusercontent.com, release-assets.githubusercontent.com, api.github.com, raw.githubusercontent.com, cdn.jsdelivr.net, huggingface.co, mixkit.co, assets.mixkit.co), luego inicia un nuevo chat y ejecuta /talking-head-short de nuevo." No intentes la edición sin numpy/ffmpeg. Solo si todas las fuentes fallan: pide una transcripción pegada → $PY $S/align_text.py $WD transcript.txt. Los assets se almacenan en caché en ~/.ths_assets.

1. Analizar

$PY $S/analyze.py RAW $WD Imprime la resolución, punto de los ojos, duración limpia, muletillas/tartamudeos/reinicios eliminados automáticamente, CHECK (muletillas suaves, palabras de baja confianza, pausas largas) y TEXT con marcas de tiempo cada 8 palabras.

  • Evalúa tú mismo las tomas malas. Elimina falsos inicios, frases incompletas, "tú sabes como yeah", "tipo de". Mantén repeticiones retóricas. Vuelve a ejecutar con --remove '[[s,e],...]' (segundos de origen). La transcripción se almacena en caché.
  • Revisa $WD/frames.jpg solo si el punto de los ojos o el encuadro están en duda.

2. Brief (en tu cabeza, luego 4 líneas al usuario)

Escribe: tema · mensaje central · arco emocional (gancho → ... → remate) · fila de nicho (de NICHES) · tono (tranquilo/equilibrado/enérgico) · encuadre raw (abierto o cerrado). Luego ejecuta $PY $S/style.py RAW "<nicho>" --out $WD/style.json. Devuelve la paleta adaptada con razones, fuentes, dirección de MG/B-roll/música/SFX y notas importantes. Lee references/craft.md una vez (las reglas) y references/spec.md (el formato de spec).

3. Preguntar antes de construir (nunca renderizar primero)

Usa AskUserQuestion si está disponible; si no, un mensaje numerado compacto. Recomienda la opción 1 cada vez.

  1. Estilo: nicho detectado + tono (ej. "Autoayuda · tranquilo-reflexivo") frente a 1–2 alternativas.
  2. Fuentes: el par de la fila frente a 2 alternativas con un claro contraste de estilo (sans líder + serif/itálica clave, o sans bold clave + serif itálica acento).
  3. Paleta: paleta de la fila adaptada al metraje frente a paleta derivada del metraje frente a un color de marca que el usuario proporcione.
  4. Densidad visual: Mínimo (subtítulos + 2–3 tarjetas) · Equilibrado (subtítulos + 4–6 tarjetas / B-roll) · Rico (más MG + B-roll).
  5. Música: 3 candidatos con licencia de $PY $S/assets.py music "<estado de ánimo>" (id · título · etiquetas), o ninguno.
  6. B-roll: sí (material de archivo con licencia que coincida con líneas literales) / no. Omite cualquier pregunta que el usuario ya haya respondido. Espera las respuestas.

4. Reunir assets

  • Fuentes: $PY $S/assets.py font "Familia" ...
  • Música, SFX, video: ejecuta assets.py music|sfx|video "<consulta>" para listar, luego assets.py get <tipo> <id> $WD.
    • SFX según tono: tranquilo → "air woosh", "chime"; equilibrado → "whoosh", "pop"; enérgico → "swoosh", "impact" (usados una vez).
  • Las fuentes bloqueadas recurren automáticamente (ids de paquetes). assets.py pack lista todo el paquete CC0 offline.

5. Escribir spec.json, planificar, styleframes

  1. Escribe $WD/spec.json (ver references/spec.md): subtítulos en orden de habla, tarjetas sobre las cláusulas correctas, audio.
  2. $PY $S/engine.py $WD --plan → corrige cada ISSUE editando el spec (acorta o fusiona beats, mueve o elimina subtítulos debajo de tarjetas), luego replanifica hasta que no reporte ninguno o solo los aceptables.
  3. $PY $S/engine.py $WD --frames t1,... con 10–15 momentos: el punto medio de cada tarjeta y final−0.3 s, y cada subtítulo al final−0.1 s. Revisa $WD/styleframes.jpg y corrige cualquier cosa cortada, abarrotada, desalineada o fuera de paleta.
  4. Muestra al usuario los styleframes con una línea ("¿ok para renderizar?"). Itera solo sobre lo que ellos señalen.

6. Renderizar, mezclar, QA

  • bash $S/render.sh $PY $WD renderiza partes en paralelo y las concatena (≈5 min por minuto de video en un portátil). En un sandbox con límite de tiempo por comando, ejecuta $PY $S/engine.py $WD --render --part i/N una vez por parte, luego --concat N.
  • $PY $S/mix.py $WD → final.mp4 (limpieza de voz, música con atenuación y alineación del remate, SFX, -14 LUFS).
  • $PY $S/qa.py $WD → revisa qa_endframes.jpg. Cada beat y final de tarjeta debe mostrar texto y animación completos. Los fotogramas flash deben ser cero.
  • Entrega la ruta del archivo, más 3 líneas sobre lo que elegiste y por qué. Menciona cualquier asset que no hayas podido descargar.

No negociables (por qué: cada uno fue señalado como amateur)

  • Los subtítulos nunca se cortan. El lead es ≤ ancho de la clave y está cerca. Dos estilos de fuente contrastantes en proporción áurea. Nunca subtitules palabras de relleno solas.
  • Los gráficos animados muestran el significado, terminan antes de que cambie la escena y se mantienen en un sistema visual. Sin figuras de palitos ni clip art.
  • Suave: un zoom con easing que sigue los ojos entre cortes; sin fotogramas flash; transiciones variadas.
  • Solo corrección de color. Solo assets con licencia (Mixkit / Google Fonts OFL), con LICENSES.txt guardado en $WD.

Skills relacionados