Video promocional de currículum de GitHub (misma línea de producción)
Estructura final (duración total ≤28s, por defecto ~24.5s):
- 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.
- 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).
- 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.
- 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.pypara 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=stargazerspara 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
| Campo | Descripción |
|---|---|
username / display_name | Nombre de usuario / nombre mostrado (usado en la nota final) |
page_frame / avatar / bgm | Rutas de materiales; bgm puede ser null (sin música) |
cards | Exactamente 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_strips | 4 líneas de texto para las notas, la última con fondo rojo automático |
durations | Opcional: {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.