Communitygithub.com

GitHub 视频宣传简历 (LIUFelix2004/github-promo-video-skill)

Genera un video promocional de currículum de ≤28 segundos para cualquier cuenta de GitHub: portada real con captura de pantalla del perfil (animación 3D desde lejos hasta cerca) + tarjetas blancas de repositorio (con contador de estrellas animado y resúmenes de README deslizantes) + final tipo nota adhesiva. Todo el texto se renderiza localmente, sin IA generativa, sin errores tipográficos.

¿Qué es github-promo-video-skill)?

Esta habilidad (skill) para agentes de IA como Claude Code o Cursor te permite crear videos promocionales profesionales y altamente personalizados para cualquier perfil de GitHub. El video, de aproximadamente 24.5 segundos (máximo 28s), consta de tres partes: una portada dinámica que muestra una captura de pantalla real del perfil de GitHub en perspectiva 3D (de plana a inclinada), tres tarjetas de proyectos (las dos con más estrellas y una tarjeta de resumen) con contadores animados de estrellas/forks y deslizamiento de resúmenes del README, y un cierre tipo nota adhesiva con la información del usuario y su avatar. La habilidad se basa en la renderización local con Python (Pillow, NumPy) y ffmpeg, sin utilizar IA generativa para texto o imágenes, lo que garantiza que no haya invenciones ni errores ortográficos. Es ideal para solicitudes como 'haz un video promocional de este GitHub' o 'crea un currículum en video a partir de un perfil de GitHub', y requiere que el usuario configure los datos reales extraídos del perfil y los repositorios en un archivo config.json.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add LIUFelix2004/github-promo-video-skill

Preguntar en tu IA favorita

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

Documentación

Video promocional de currículum de GitHub (misma línea de producción)

Estructura final (duración total ≤28s, por defecto ~24.5s):

  1. Portada dinámica (5.5s): Captura de pantalla real de la página de perfil de GitHub de la cuenta objetivo, transformada en perspectiva desde "plano horizontal lejano" hasta "inclinado cercano", con suelo de gradiente claro y sombra suave, transición de destello blanco.
  2. Tarjetas de proyecto ×3 (cada una 6–6.5s): Tarjetas blancas de repositorio de GitHub, mismo diseño — nombre del repositorio, subtítulo, números grandes rojos/azules que cuentan desde 0 hasta el número real de estrellas/forks, 4 líneas de resumen del README que se deslizan una a una, etiquetas técnicas al fondo que aparecen gradualmente. La tarjeta 1 y 2 son los dos proyectos con más estrellas; la tarjeta 3 es una visión general de "más proyectos" (los números grandes = total de repositorios / contribuciones del último año).
  3. Final tipo nota adhesiva (4.5s): Notas que se pegan una a una (nombre de usuario / @github / apodo / proyecto estrella · número de estrellas, la última con fondo rojo), con un avatar circular grande a la derecha (borde rosa) que entra ampliado.
  4. Música: Archivo de audio proporcionado por el usuario (ver notas importantes), sin voz en off.

Reglas estrictas

  • La portada debe ser un fotograma real capturado de la página de perfil: Usa scripts/capture_frame.py para capturarlo tú mismo, o una captura con navegador sin cabeza. Prohibido usar IA para generar/redibujar la página de perfil (inventaría nombres de repositorios, datos falsos), prohibido usar capturas de pantalla de otros como portada sin explicarlo.
  • Todo el texto mostrado en pantalla proviene solo de config: Números, nombres de repositorios, líneas de resumen se renderizan localmente (PIL), sin usar generación de video por IA para texto — esta es la razón fundamental por la que no hay errores de texto y no aparecen logotipos de marcas no relacionadas.
  • La descripción del proyecto debe basarse en la lectura real del README: Ordena por estrellas, toma los 2–3 proyectos principales, abre el README, extrae 4 líneas de resumen de una frase para cada uno y escríbelos en config; usar solo la descripción de la lista de repositorios no es válido. Si el tercer proyecto tiene poco contenido (p. ej., README de una sola línea), inclúyelo en la tarjeta 3 y explícalo en la entrega.
  • Auto-verificación de fotogramas antes de la entrega: Revisa al menos el fotograma inicial de la portada, el fotograma formado de cada tarjeta y el fotograma final; si encuentras problemas de texto/números, arréglalos antes de entregar y explica honestamente las imperfecciones residuales al usuario.

Pasos

1. Investigar la cuenta

  • Abre https://github.com/<user>?tab=repositories&sort=stargazers para obtener el ranking de estrellas y el recuento.
  • Abre la página de perfil para confirmar: nombre mostrado, seguidores, total de repositorios, contribuciones del último año, repositorios destacados.
  • Abre uno a uno el README de los 2–3 repositorios con más estrellas, escribe 4 líneas de resumen para cada proyecto (función/forma/técnica/característica), con 4–6 etiquetas técnicas.

2. Preparar materiales (assets/)

python3 scripts/capture_frame.py <user> assets/page_frame.png   # Captura de pantalla de la página de perfil (fotograma real)
curl -L https://github.com/<user>.png -o assets/avatar.png       # Avatar (o recortar de la página de perfil)
# BGM: Coloca el audio proporcionado por el usuario en assets/bgm.m4a (opcional)

3. Escribir config

Copia examples/config.example.json como config.json, completa los datos reales y resúmenes del paso 1 (las rutas son relativas al directorio donde se encuentra config o rutas absolutas).

4. Renderizar

python3 scripts/render_promo.py --config config.json --out out.mp4

Requiere: Python 3 + Pillow + numpy, ffmpeg, fuente Noto Sans CJK (el script buscará automáticamente en rutas comunes).

5. Auto-verificación de fotogramas y entrega

Usa ffmpeg para extraer un fotograma a los 0.4s / en el punto medio de cada segmento / y al final, verifica: números iguales al recuento de estrellas, texto sin desalineaciones, portada es una página real, nota final completa. Envía el video final junto con una "explicación de la estructura + imperfecciones conocidas" al usuario.

Resumen de campos de config

CampoDescripción
username / display_nameNombre de usuario / nombre mostrado (usado en la nota final)
page_frame / avatar / bgmRutas de materiales; bgm puede ser null (sin música)
cardsExactamente 3: {name, sub, n1, l1, n2, l2, rows[4], chips[]}; n1/l1 es el número grande rojo + etiqueta (p. ej., 303 / Stars), n2/l2 es azul (p. ej., 33 / Forks); la tarjeta 3 puede usar Repositories / Contributions
finale_strips4 líneas de texto para las notas, la última con fondo rojo automático
durationsOpcional: {cover, cards[3], finale} segundos, la suma total con transiciones debe ser ≤28

Notas importantes

  • Derechos de autor de la música: El repositorio no incluye ningún BGM. Solo usa archivos de audio proporcionados por el usuario o para los que tengas derecho de uso; no redistribuyas pistas de audio extraídas de videos de otros.
  • El servicio de captura de fotogramas (thum.io) puede devolver una imagen de marcador de posición en la primera solicitud; el script ya maneja "tomar dos veces".
  • Que no aparezcan logotipos de marcas como Apple en todo el video es un resultado del diseño (renderización local sin materiales externos), no requiere procesamiento adicional.

Skills relacionados