Video → Página de Inicio con Desplazamiento Cinemático
Construye una página de aterrizaje cinematográfica donde el héroe es un video que se reproduce al desplazarse en lugar de por tiempo, como las páginas de producto de Apple o la página de inicio de GitHub Copilot. Los fotogramas se extraen del video fuente y se intercambian según el desplazamiento del usuario; debajo del héroe fijo, las secciones con desplazamiento normal contienen el texto y la llamada a la acción.
Cuándo invocar
- El usuario proporciona un video y solicita una página de aterrizaje, sitio con desplazamiento, héroe de fotogramas al desplazar o sitio web a partir de un video.
- Menciones como "desplazamiento estilo Apple", "página de inicio de GitHub Copilot", "avance al desplazar", "fotograma al desplazar".
- Equivalentes en hebreo: "דף נחיתה מסרטון", "אתר עם גלילה", "סרטון בגלילה"
Ubicación de guardado
Predeterminada: ~/Documents/yuv-projects/landings/<slug>/ — guarda siempre las páginas de aterrizaje aquí para poder encontrarlas después. Crea el directorio padre si falta.
mkdir -p ~/Documents/yuv-projects/landings
cd ~/Documents/yuv-projects/landings
# Construye <slug>/ aquí.
Ruta final: ~/Documents/yuv-projects/landings/<slug>/. Informa al usuario dónde se encuentra la página al final de cada construcción.
Flujo de trabajo (8 pasos)
- Analizar la fuente —
ffprobepara duración, FPS, dimensiones, audio. - Elegir número de fotogramas — predeterminado
80. Mínimo40(entrecortado si es menor), máximo160(página pesada). Elegir según la duración: ≤10s → 50, 10–30s → 80, 30–60s → 120, >60s → 160. - Decidir directorio de salida — predeterminado
~/Documents/yuv-projects/landings/<slug>/. El<slug>es corto, derivado del nombre del video o del tema. Sobrescribir solo por solicitud explícita. - Extraer fotogramas — ejecutar
references/extract-frames.py <video-fuente> <directorio-salida> [cantidad]. Generadirectorio-salida/frames/f_0001.jpg… con calidad JPG constante 82 y un ancho máximo de 1920 (redimensionado si la fuente es más grande). - Copiar y personalizar
references/landing-template.htmlenoutput-dir/index.html:- Reemplazar el marcador de posición
__FRAMES__con etiquetas<img>para cada fotograma (el script de construcción lo hace automáticamente al pasar--build-html). - Completar
__HEADLINE__,__TAGLINE__,__CTA_TEXT__,__CTA_HREF__, secciones. - Para contenido en hebreo: establecer
<html lang="he" dir="rtl">y cambiar las fuentes a Rubik/Assistant (verreferences/design-notes.md).
- Reemplazar el marcador de posición
- Optimizar fotogramas — el script de construcción ya escala a un ancho máximo de 1920px. Si el peso total de la página supera los 12 MB, reducir la calidad a 75 o disminuir el número de fotogramas.
- Previsualizar —
python -m http.serverdentro del directorio de salida y abrirhttp://localhost:8000. El desplazamiento se siente suave en un equipo decente. - Desplegar — colocar la carpeta en Vercel/Netlify/Cloudflare Pages. No se necesita paso de construcción.
El mecanismo de desplazamiento
- El contenedor de desplazamiento exterior
.scroll-stagetiene una altura en unidades de viewport (predeterminado600vh= desplazamiento de 5 pantallas para recorrer todos los fotogramas). - Héroe fijo
position: sticky; top: 0; height: 100vhque contiene todos los fotogramas posicionados de forma absoluta y ocultos excepto el activo. - El listener de desplazamiento calcula
progress = scrolledIntoStage / scrollableHeightlimitado entre 0 y 1. idx = floor(progress * (N - 1))— intercambia la clase.activea ese fotograma.- Envolver el listener en
requestAnimationFramepara mantener 60fps.
Reglas de diseño
- Usar el sistema de diseño del proyecto si se especifica, de lo contrario, predeterminar al sistema yuv-design-system: Anton + Inter (inglés) / Rubik + Assistant (hebreo), paleta Fly High púrpura (
#5E17EB) + amarillo (#FFEC00) + gris (#F1F2F2), blanco roto (nunca#fffpuro), radios 0px o 999px (sin esquinas de 8–12px). Editorial cálido (rosa+amarillo+crema) está reservado solo para la familia de marca Hope/bigcats. - Las superposiciones del héroe deben ser sutiles — una viñeta y un único titular grande; no ahogar el fotograma.
- Secciones debajo del héroe: fondo crema, titular grande en Anton, texto del cuerpo en Inter a 18–22px, CTA como un rectángulo rosa afilado con texto en Anton.
- Para hebreo: respetar RTL, usar Rubik 900 para titulares, Assistant 400/500 para el cuerpo.
Referencias de archivos
| Archivo | Propósito |
|---|---|
references/extract-frames.py | Extractor de fotogramas basado en ffmpeg; opcionalmente construye el HTML completo de una sola vez |
references/landing-template.html | Esqueleto de página de aterrizaje autónomo con el mecanismo de desplazamiento |
references/design-notes.md | Tipografía, paleta y valores predeterminados de movimiento |