Communitygithub.com

portfolio-reel

Crea un reel de presentación profesional de ~30 segundos (1080p60 MP4) para creadores, freelancers o desarrolladores, con un estilo fijo y animado (plantilla 'skill 2'). Incluye degradado mostaza, héroe de perfil, secciones de trabajo, tarjeta social con efecto 3D y dos modos de interfaz.

¿Qué es portfolio-reel?

Portfolio-reel es una habilidad para agentes de IA (como Claude Code, Cursor, Codex, etc.) que genera automáticamente un video de presentación profesional de unos 30 segundos, en formato 1080p60 MP4, ideal para creadores, freelancers, editores, diseñadores y desarrolladores. El video sigue una plantilla fija y amigable llamada 'skill 2': comienza con un degradado mostaza que muestra una pregunta de enganche, luego una cortinilla circular revela un héroe de perfil con avatar, insignia, saludo y botón de llamado a la acción. Después se desplazan 1 a 4 secciones de trabajo sobre fondo gris claro con sombras suaves, cada una con 1 a 3 tarjetas redondeadas que reproducen clips o imágenes del usuario. Finaliza con una tarjeta de perfil social que cuenta estadísticas, un clic convierte 'Seguir' en 'Siguiendo' y la tarjeta gira en 3D. Ofrece dos interfaces: 'clásica' (la plantilla original) y 'app' (una barra de búsqueda, panel tipo bento, carrusel con maquetas de navegador y móvil, pantalla de chat y tarjeta con código QR). Se pueden elegir entre cinco estilos de color (mostaza, medianoche, atardecer, ámbar, menta) y diez efectos visuales (bokeh, barridos de luz, resaltador, anillo orbital, desenfoque de movimiento, números de sección, destello en tarjetas, ticker de etiquetas, confeti, grano de película). El video se genera completamente con código, sin usar metraje de archivo ni servicios externos; el usuario solo necesita proporcionar una foto, algunos clips y su nombre. Es compatible con cualquier sistema que tenga ffmpeg, Node 22+, Chrome/Chromium y Python con numpy y scipy. Se configura mediante un archivo JSON (`promo.json`) y se previsualiza y renderiza con scripts incluidos.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/chydevit/Skill-create-videos/tree/HEAD/plugins/video-skills/skills/portfolio-reel

Preguntar en tu IA favorita

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

Documentación

Portfolio reel (plantilla: "skill 2")

Esta habilidad crea un reel de presentación de ~30 segundos a partir de un único archivo de configuración, promo.json. Una escena en canvas dibuja cada fotograma en Chrome sin cabeza y reproduce los clips del usuario dentro de las tarjetas. No se utiliza metraje de archivo, video generado por IA ni servicios de plantillas. La estructura sigue el ritmo del reel de referencia skill2.MP4 (un intro de creador de TikTok). Solo se copian las técnicas, nunca su metraje, palabras, nombres, identificadores o marca de agua.

Tiempo (3 secciones)Escena
0-2.3 sdegradado mostaza, dos grandes círculos suaves se deslizan; hook[0] se escribe palabra por palabra, luego hook[1] aparece grande y en negrita
2.3-2.9 sun círculo blanco se levanta desde abajo; el avatar aparece como un pequeño disco amarillo
2.9-6.4 shéroe de perfil sobre blanco: el avatar crece hasta convertirse en un círculo grande (con un anillo amarillo o un duotono amarillo), luego la píldora de badge delineada con una estrella, hello palabra por palabra, roles separados por barras finas, y una píldora de button negra con ↑ en un círculo blanco. La flecha se dispara hacia arriba y la página se desplaza
6.4-20.5 suna página por sección (4.6 s cada una) sobre gris claro con sombras suaves de luz de ventana: un título degradado, luego 1-3 tarjetas redondeadas que siguen el desplazamiento y flotan. Los videos se reproducen, las imágenes se acercan lentamente. Las tarjetas verticales son altas, las horizontales anchas, las filas mixtas se escalonan
20.5-24.4 suna luz amarilla emerge desde la parte inferior izquierda de regreso al degradado; cta[0], luego cta[1], palabra por palabra
24.4-30.3 suna tarjeta de perfil negra aparece desde un punto (avatar o logo, handle, name, hasta 3 stats contadores, dos botones). Un cursor hace clic en el primer botón, que se vuelve gris y muestra clicked, luego la tarjeta gira en 3D mostrando su back

La duración es de aproximadamente 30 s con 3 secciones, 4.6 s más o menos por sección, y un poco más larga con textos extensos.

Dos interfaces: "ui": "classic" (predeterminada) o "app"

app mantiene la misma línea de tiempo y textos, pero cada escena es una pantalla de aplicación moderna sobre un degradado de malla en movimiento:

TiempoEscena app
hookuna barra de búsqueda de cristal escribe hook[0] hook[1]; un menú desplegable de resultados lista a la persona (avatar, nombre, roles) y las dos primeras secciones; el cursor hace clic en la persona
heroel resultado clickeado crece hasta convertirse en un panel tipo bento de mosaicos de cristal: un mosaico de foto alto (nombre y handle), el mosaico de saludo (badge, hello con resaltador, chips de rol), un mosaico de estadísticas que cuenta profile.stats, un mosaico de button que el cursor clickea, y un mosaico que lista las secciones
sectionsun carrusel horizontal, una diapositiva por sección: un número grande, el título, "n trabajos", una barra de progreso en la parte superior. El trabajo se muestra en maquetas de dispositivos: clips horizontales en una ventana de navegador (luces de tráfico, barra de direcciones site/title-de-la-sección), clips verticales en un teléfono, en cascada hacia el lado derecho
ctauna pantalla de chat: puntos de escritura, luego cta[0] y cta[1] llegan como burbujas de mensaje de la persona (la última en el color de acento)
carduna tarjeta de perfil con un banner de portada degradado, avatar superpuesto, handle, nombre, estadísticas contadoras y dos botones en píldora; el cursor hace clic en Seguir (confeti), luego gira para mostrar un código QR de profile.qr / profile.back (generado con qrencode si está instalado), con la dirección debajo

site (opcional) establece la dirección que se muestra en las maquetas del navegador; por defecto es profile.back. Todos los estilos y efectos funcionan en ambas interfaces (en app, no se usan orbit ni ticker).

Estilos y efectos

"style" elige un tema de color. Los estilos oscuros tienen páginas oscuras con una cuadrícula tenue y tarjetas brillantes en lugar de sombras de ventana.

EstiloApariencia
mustard (predeterminado)la plantilla: degradado mostaza, héroe blanco, páginas gris claro, píldora negra, botones azules
midnightíndigo a negro, neón cian y violeta, páginas oscuras, tarjetas brillantes
sunsetmelocotón a rosa, páginas blanco cálido, títulos y botones coral
amberdorado sobre casi negro (aspecto de desarrollador o portafolio), páginas oscuras, píldora y botones ámbar
mintmenta a verde azulado, páginas blancas, títulos verdes

"colors" sobrescribe cualquier color individual del estilo.

Todos los efectos están activados por defecto. Desactiva uno con "effects": {"ticker": false}, o todos con "effects": false para el aspecto de plantilla simple:

EfectoQué hace
bokehpartículas de luz suave flotan hacia arriba en las escenas de degradado
shineun barrido de luz sobre la pregunta grande, el botón y la tarjeta de perfil, más anillos de eco en la cortinilla circular y un anillo de pulso en el botón
markerun resaltador se desliza debajo del nombre (text.highlight elige las palabras, o todo después de la segunda palabra)
orbitun anillo discontinuo con tres puntos gira alrededor del avatar
blurdesenfoque de movimiento vertical mientras la página se desplaza
labels"01 / 03" sobre cada título de sección y una línea subrayada que se dibuja
glareun destello diagonal cruza cada tarjeta de trabajo después de que aterriza
tickergrandes etiquetas delineadas se desplazan detrás de las líneas de cierre (text.tags, o si no, los roles y títulos de sección)
confettiuna explosión de confeti en los colores del estilo cuando se hace clic en el botón
graingrano de película y una viñeta suave sobre todo

Para permitir que el usuario elija, renderiza los mismos 4 momentos en cada estilo (un "tablero de estilos") antes del renderizado completo. Usa render.mjs --times en copias de promo.json que solo difieran en style.

Requisitos: ffmpeg, Node 22+, Google Chrome o Chromium (CHROME_PATH), y un Python con numpy y scipy (PROMO_PY; promo.sh encuentra uno automáticamente).

Flujo de trabajo

1. Reúne lo que necesita el reel

  • Avatar: una foto de retrato, cara y hombros. Proporciona crop: [x, y, size] (píxeles) para que la cara quede en el círculo, y verifica la vista previa. Con un fondo ocupado o claro, "avatarStyle": "duotone" crea una figura oscura sobre amarillo, como en la plantilla.
  • Secciones (1-4): un título corto cada una (2-4 palabras) y 1-3 clips: videos ({"file", "at"}, 5.5 s desde at se reproducen en la tarjeta) o imágenes. Usa el mejor trabajo del usuario, y mezcla vertical y horizontal para variedad.
  • Textos: mantenlos cortos.
    • hook: una línea pequeña y una pregunta grande de 1-2 palabras.
    • badge: un eslogan de hasta aproximadamente 50 caracteres.
    • hello: "Hola, soy …".
    • roles: 2-4 roles cortos.
    • button: la etiqueta del botón.
    • cta: dos líneas de cierre.
  • Tarjeta de perfil: handle, name, hasta 3 stats, buttons, clicked y back. Usa solo números reales (del usuario, su sitio o su perfil). Un valor de cadena (como "2023") se muestra tal cual, sin contar.
  • Idioma: para khmer, establece "lang": "km" y escribe khmer natural. Kantumruy Pro está incluido.
  • Opcional: style, effects, logo (dentro del círculo de la tarjeta), colors, text.highlight, text.tags, music (+ musicStart), sfxDir.

2. Escribe el proyecto

Crea una carpeta de proyecto y copia examples/creator-reel.json dentro como promo.json, luego edítalo. Cada clave está descrita en references/config.md. Las rutas son relativas a la carpeta del proyecto.

3. Vista previa (aproximadamente 10 s)

<skill>/scripts/promo.sh <project>/promo.json --preview

Esto corta los clips y renderiza aproximadamente 13 fotogramas estáticos en out/<name>-preview.png. Lee la vista previa y verifica:

  • el recorte del avatar;
  • que ninguna línea esté apretada (los textos largos se encogen);
  • que las tarjetas de cada sección muestren buenos fotogramas: cambia at;
  • los números de la tarjeta de perfil.

4. Renderizado (aproximadamente 2 minutos; ejecútalo en segundo plano)

<skill>/scripts/promo.sh <project>/promo.json --jobs 4

Las etapas se ejecutan en este orden: assets, plan, render, mix, encode. --from mix re-mezcla el sonido sin renderizar los fotogramas de nuevo.

Salida: out/<name>-1080p60.mp4 y out/<name>-contact.png.

5. Verifica antes de entregar

  • Lee la hoja de contacto.
  • ffprobe debería mostrar la duración que da build/cues.json. La mezcla está normalizada a -14 LUFS / -1 dBTP.
  • No puedes escuchar el resultado, así que informa al usuario de lo que verificaste y pídele que lo escuche.

Ajustes

  • Tiempos: plan() en scripts/scene.mjs. SEC es la duración de una sección y SCROLL la duración de un desplazamiento de página. Las marcas en buildCues() se actualizan automáticamente.
  • Apariencia:
    • Los temas son STYLES y los efectos son EFFECTS en scene.mjs; los colores también pueden venir de colors.
    • El diseño de las tarjetas es layout().
    • Las sombras de ventana son buildShade().
    • El giro es drawFlip(), tiras con perspectiva.
  • Sonido: SFX en scripts/audio.py lista los nombres de archivo que se prueban en sfxDir. make_bed() es el ritmo lo-fi.

Individual skills in this repo

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

brand-loop

Make a seamless looping background video of glossy 3D liquid blobs in a brand's colours. Two colour families float slowly in zero gravity, each merging and pinching off like mercury, on a soft off-white studio backdrop with a warm gradient, faint ripple rings, soft drop shadows and shallow depth of field. It renders in Blender EEVEE at 4K 60 fps as H.264, HEVC 10-bit and 1080p, and the last frame flows into the first. Use it whenever the user wants a looping background, brand backdrop, abstract 3D or liquid loop, motion background for a website, stream, event screen or presentation, a "seamless loop", or a background for their logo or text, or types /brand-loop.

brand-promo

Make a ~50-second dark, kinetic studio showreel / promo video from a brand's own videos, its logo animation and a few lines of text. It has a typed intro, a ring of 3D cards, a glitchy title drop, and 3-5 spotlights (each work on a tilted card or a phone, playing its own sound). Then "Your story… next.", a 3D rush of clips, and the liquid logo reveal with the name, chips and website. It comes with an original synthesised score, narration (VoxCPM2, English or Khmer) and sound effects, as a 1080p60 MP4. Use it whenever the user wants a showreel, studio reel, portfolio video, agency or brand promo, "demo video" of their work, a promo like a template video, or a Khmer version of one, or types /brand-promo, even if they only hand over a few videos and a logo.

generate-logo

Turn any logo image (PNG, JPG, WebP or SVG) into finished 5-second animated logo reveals in five styles (liquid, neon, bounce, lens, rise). Each comes as a 1080p60 MP4 with synthesised sound effects, a transparent WebM (optional ProRes 4444 .mov) for video editors, and a keyframe sheet. It can add a two-tone wordmark, render square or vertical versions for social media, and build a bespoke style for a particular logo. Use it whenever the user wants a logo animation, animated logo, logo reveal, intro, outro or sting, motion logo, a brand intro for a video, or "make my logo move", or types /generate-logo, even if they only attach a logo and say "animate this".

saas-promo

Make a kinetic SaaS / startup / product / developer promo video (1080p60 MP4) in one fixed, fast motion-design style: an ~11-second teaser, or a ~50-second version with chapters (one per product or project) cut on the beat of the user's own song. It opens with glyph flashes and purple/lime neon shapes, then types a word with a cursor while a 3D swirl of your screenshots orbits it. Cards slide onto a painted meadow and build a bento wall with words typing inside them, and the camera zooms into a card. A glowing gradient orb then reveals the headline word by word, and a glitch drops into a long-exposure flower on a blue-to-orange sky with flying symbols and "From … / To …". Every frame is drawn in code, with typing, whoosh, riser and impact sound effects and a synthesised ambient bed or your own song (its tempo and drop are measured, so every cut lands on the beat), mixed to -14 LUFS. English or Khmer. Use it whenever the user wants a SaaS promo, product or app teaser, a developer or...

Skills relacionados