Claude Code Skill

Scroll-Scrub Hero
Пошаговая инструкция

Два AI-изображения → 7-секундное видео → hero-секция где скролл управляет анимацией

🖼 START кадр
🖼 END кадр
🎬 Видео (Luma / Kling)
⚡ GSAP scroll-scrub
🚀 Vercel

Содержание

  1. Инструменты и аккаунты
  2. Шаг 1 — Промпты (скилл)
  3. Шаг 2 — START кадр
  4. Шаг 3 — END кадр
  5. Шаг 4 — Видео из 2 картинок
  6. Шаг 5 — Сборка сайта (3 скилла)
  7. Шаг 6 — Next.js вручную
  8. Шаг 7 — Деплой
  9. Антипаттерны
Требования

Инструменты и аккаунты

Зарегистрируйся везде до начала работы. Бесплатных квот хватит для одного проекта.

🍌

Higsfield → Nano Banana 2

Генерация START и END кадров. Бесплатный tier: ~10 генераций/день. Нужна регистрация через Google.

→ higsfield.ai
🌊

lumalabs.ai — Dream Machine БЕСПЛАТНО

Создание видео из 2 изображений. Режим «Start / End frame». 30 генераций/месяц бесплатно. Начни отсюда — не надо платить.

→ lumalabs.ai
🎬

Higsfield → Kling 3.0 ~$15/мес

Более кинематографичный переход чем Luma. Платная подписка ~$15/мес. Используй только если нужно максимальное качество или уже есть подписка на Higsfield для Nano Banana.

→ higsfield.ai
💡 Стратегия: Nano Banana 2 (Higsfield, нужна подписка) для кадров → lumalabs.ai бесплатно для видео. Так получаешь лучшее качество генерации + ноль затрат на видео.

Claude Code + скилл scroll-scrub-hero

Оркестратор всего пайплайна. Скилл уже установлен если ты читаешь это. Иначе — установи командой ниже.

bash
curl -fsSL https://raw.githubusercontent.com/sergeyramas/scroll-scrub-hero-skill/main/install.sh | bash
📦

Next.js проект с нужными пакетами

Next.js 16+, gsap, @studio-freight/lenis. Если проекта нет — создай:

bash
npx create-next-app@latest my-site --typescript --tailwind --app
cd my-site
npm i gsap @studio-freight/lenis

1

Генерируй промпты — скилл в Claude Code

Claude Code автоматически создаст 3 готовых промпта для Nano Banana 2 и видео-перехода

💡 Этот шаг выполняет Claude Code, не ты руками. Просто напиши одну фразу — скилл сам задаст нужные вопросы и выдаст промпты.

Открой Claude Code и напиши одно из:

/scroll-stop-prompter

— или любую из фраз:
Триггер-фраза

«Сгенерируй промпты для scroll-stop hero. Продукт: [название]. Метафора: [объект разбирается на части / собирается из хаоса]»

Что Claude спросит (4 вопроса):

ВопросПример ответа
Ниша / тип бизнеса«строительная сетка», «логистика», «кофемашины»
Основной объект«стеклопластиковая сетка ROCKMESH», «фургон AnyVan»
Метафора превращения«разборка на 4 компонента», «мебель вылетает из фургона»
Цвета бренда (hex)«#FF6B00, #0F0F0F» — или «пропусти»

Claude выдаст 3 промпта:

output от Claude Code
=== PROMPT 1 — START FRAME (Nano Banana 2) ===
Photorealistic top-down isometric view of [объект],
professional product photography style, soft directional lighting.
Clean white seamless background. 16:9, 2K. No objects touch edges.

=== PROMPT 2 — END FRAME (Nano Banana 2) ===
Same [объект], same angle — but now exploded into components:
[список компонентов floating mid-air].
Same white background, identical lighting. 16:9, 2K. No edges.

=== PROMPT 3 — VIDEO TRANSITION (Kling 3.0, 7s) ===
Smooth 7-second transition. [описание движения].
No text, no camera shake. Kling 3.0, multi-shot off, enhance off.
Сохрани все три промпта. Они нужны на шагах 2, 3 и 4.
2

START кадр — Nano Banana 2

Объект целиком, в собранном/исходном состоянии. Белый фон, 2K, 16:9.

  1. Открой higsfield.ai → войди через Google
  2. В левом меню выбери Nano Banana 2
  3. Вставь PROMPT 1 из шага 1 в поле ввода
  4. Поставь batch = 4 (кнопка количества генераций)
  5. Нажми Generate → дождись всех 4 вариантов
  6. Выбери лучший — сохрани как start.png (минимум 1920×1080)
⚠️ Критично: batch=4 минимум. Первый вариант редко лучший. Качество финального видео = качество кадров. 1K выглядит как «PowerPoint ребёнка».
ПараметрЗначениеПочему
Aspect ratio16:9Веб-стандарт
Resolution2K минимум1K = дешёво выглядит
Backgroundclean whiteБесшовный переход в hero
Edgesno objects touchingНужен воздух для вёрстки
Batch4 генерацииКачество кадров = качество видео
3

END кадр — Nano Banana 2

Тот же объект, тот же ракурс — но трансформирован по твоей метафоре.

⚠️ Тот же ракурс и освещение что в START. Если ракурсы разные — видео не склеится, переход будет рваным.
  1. Снова Nano Banana 2 в Higsfield
  2. Вставь PROMPT 2 из шага 1
  3. Batch = 4, Generate
  4. Выбери кадр где тот же ракурс и освещение что в START
  5. Сохрани как end.png

Хорошие метафоры для END кадра:

ТипОписаниеПример
«Взорвано»Компоненты разлетаютсясетка → волокна + смола + песок + узлы
«Разобрано»Части разложены аккуратнофургон → мебель/коробки летят наружу
«Собрано»Хаос → порядокроссыпь стержней → арматурный каркас
«Переродилось»Старое → новоеубитая квартира → современный лофт
4

Видео из 2 картинок

Два варианта. Попробуй lumalabs первым — быстрее и проще.

Вариант A — lumalabs.ai (рекомендую)

  1. Открой lumalabs.ai → войди
  2. Нажми «+ New generation» или «Dream Machine»
  3. В настройках найди «Start frame» / «End frame» (иконки кадра слева/справа)
  4. Загрузи start.png как начальный кадр
  5. Загрузи end.png как конечный кадр
  6. В поле промпта вставь PROMPT 3 из шага 1 (или используй текст ниже)
  7. Длительность: 5–7 секунд
  8. Нажми Generate, дождись (~2-5 минут)
  9. Скачай .mp4 → назови hero.mp4
Промпт для lumalabs (скопируй)

Smooth product teardown animation, objects gently separate and float outward, cinematic slow motion, no text, no camera shake, seamless transition between states

Вариант B — Higsfield + Kling 3.0

  1. Higsfield → «Create Video»
  2. Модель: Kling 3.0
  3. Загрузи start.png как первый кадр, end.png как последний
  4. Вставь PROMPT 3 из шага 1
  5. Настройки (КРИТИЧНО):
НастройкаЗначениеПочему
ModelKling 3.0Лучшее качество transitions
Duration7 секундОптимум для scroll-scrub
Resolution1080pСтандарт
Multi-shotOFFИначе режет на сцены
EnhanceOFFПортит результат
Скачал .mp4? Скопируй в папку проекта: public/video/hero.mp4
5

Сборка сайта — выбери скилл

Три скилла Claude Code. Каждый берёт готовое .mp4 и строит сайт — разного уровня сложности.

💡 Видео hero.mp4 уже готово — просто скажи Claude Code одно из слов-триггеров. Скилл сам задаст вопросы (бренд, цвет, CTA) и соберёт сайт.
⭐ Рекомендую
/3d-animation-creator

Apple-style: FFmpeg кадры + canvas

Самый мощный скилл. Разбивает видео на кадры через FFmpeg, рендерит через <canvas> (как Apple iPhone teardown). Строит полный сайт из одного HTML-файла с:

✨ Annotation cards со snap-stop
🌟 Анимированный starscape
📊 Specs с count-up анимацией
🔄 Navbar → pill при скролле
💳 Glass-morphism feature cards
🎭 Loader + progress bar

Триггер-фразы:

Что написать в Claude Code

«Вот видео hero.mp4. Собери полный сайт с Apple-style scroll анимацией. Бренд: ROCKMESH. Цвет: #FF6B00. Фон: тёмный.»

⚠️ Нужен FFmpeg: brew install ffmpeg — иначе скилл не сможет извлечь кадры. Первый кадр видео должен быть на белом фоне.
Быстро
/3d-website-builder

Vanilla HTML + GSAP video.currentTime

Берёт готовый .mp4 и строит MVP-сайт на чистом HTML/CSS/JS. Не нужен FFmpeg — напрямую использует video.currentTime через GSAP ScrollTrigger. Готово к деплою за минуты.

Что написать в Claude Code

«Видео готово: ./assets/hero.mp4. Собери MVP сайт с scroll-stop анимацией. Бренд: ROCKMESH, акцент #FF6B00, CTA: Позвонить.»

Выдаёт: index.html + css/style.css + js/scroll.js + README

Next.js
/scroll-scrub-hero

Next.js 16 + TypeScript + Tailwind

Для проектов на Next.js. Создаёт HeroSection.tsx с GSAP ScrollTrigger, тултипами компонентов, Lenis smooth scroll и mobile autoplay fallback.

Что написать в Claude Code

«Видео hero.mp4 в public/video/. Реализуй scroll-scrub hero в Next.js: sticky 300vh, GSAP scrub, fade-out текста, mobile fallback.»

Сравнение скиллов

СкиллМетод рендераFFmpegРезультатКогда выбирать
/3d-animation-creator Canvas + кадры Нужен Полный сайт HTML Хочешь Apple-style wow + полный лендинг
/3d-website-builder video.currentTime Не нужен MVP vanilla HTML Быстрый прототип без фреймворка
/scroll-scrub-hero video.currentTime Не нужен Next.js компонент Уже есть Next.js проект

Или сделай вручную — ключевые файлы Next.js

1. Скопируй видео:

bash
cp ~/Downloads/hero.mp4 ./public/video/hero.mp4

2. Создай компонент HeroSection.tsx:

src/components/HeroSection.tsx
'use client'
import { useRef, useEffect } from 'react'
import gsap from 'gsap'
import { ScrollTrigger } from 'gsap/ScrollTrigger'

gsap.registerPlugin(ScrollTrigger)

export default function HeroSection() {
  const sectionRef = useRef<HTMLElement>(null)
  const videoRef  = useRef<HTMLVideoElement>(null)
  const textRef   = useRef<HTMLDivElement>(null)

  useEffect(() => {
    const video = videoRef.current
    const section = sectionRef.current
    if (!video || !section) return

    // prefers-reduced-motion → autoplay, no scrub
    if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
      video.autoplay = true; video.loop = true; return
    }
    // mobile → autoplay loop fallback
    if (window.matchMedia('(max-width: 768px)').matches) {
      video.autoplay = true; video.loop = true; return
    }

    // scroll → video.currentTime
    ScrollTrigger.create({
      trigger: section, start: 'top top', end: 'bottom bottom',
      scrub: 0.5,
      onUpdate: (self) => {
        if (video.duration)
          video.currentTime = self.progress * video.duration
      },
    })

    // текст исчезает в первые 30% скролла
    gsap.to(textRef.current, {
      opacity: 0, y: -40,
      scrollTrigger: { trigger: section, start: 'top top',
                       end: '30% top', scrub: true },
    })

    return () => ScrollTrigger.getAll().forEach(t => t.kill())
  }, [])

  return (
    <section ref={sectionRef} style={{ height: '300vh' }}>
      <div className="sticky top-0 h-screen overflow-hidden bg-white">

        <video ref={videoRef} src="/video/hero.mp4"
          muted playsInline preload="auto"
          className="absolute inset-0 w-full h-full object-contain" />

        <div className="absolute inset-y-0 left-0 w-1/2
             bg-gradient-to-r from-[#0F0F0F] to-transparent" />

        <div ref={textRef}
             className="absolute left-8 top-1/2 -translate-y-1/2 z-10 max-w-lg">
          <h1 className="font-extrabold text-4xl text-white mb-4">
            Твой заголовок
          </h1>
          <a href="tel:+7XXXXXXXXXX"
             className="bg-[#FF6B00] text-white px-6 py-3 rounded-lg">
            Позвонить
          </a>
        </div>

      </div>
    </section>
  )
}

3. Подключи в page.tsx:

src/app/page.tsx
import HeroSection from '@/components/HeroSection'

export default function Home() {
  return <main><HeroSection /></main>
}

4. Инициализируй Lenis (плавный скролл):

src/components/SmoothScroll.tsx
'use client'
import { useEffect } from 'react'
import Lenis from '@studio-freight/lenis'

export function SmoothScroll({ children }: { children: React.ReactNode }) {
  useEffect(() => {
    const lenis = new Lenis()
    const raf = (time: number) => { lenis.raf(time); requestAnimationFrame(raf) }
    requestAnimationFrame(raf)
    return () => lenis.destroy()
  }, [])
  return <>{children}</>
}

5. Проверь что работает:

bash
npm run dev       # открой localhost:3000, скролль вниз
npm run build     # должен собраться без ошибок
npm run lint      # чистый lint
7

Деплой на Vercel

Через скилл ship-to-vercel или вручную за 2 команды

Через Claude Code (рекомендую)

/ship-to-vercel

— Claude сам сделает git push + vercel deploy --prod

Вручную

bash
# 1. Если репо ещё нет
git init -b main
gh repo create my-hero-site --public --source=. --push

# 2. Линкуй с Vercel (первый раз)
vercel link

# 3. Деплой в прод
git add . && git commit -m "Add scroll-scrub hero"
vercel deploy --prod
⚠️ Если после git push Vercel auto-deploy не стартует — запускай vercel deploy --prod вручную. Это известный глюк когда auto-deploy не триггерится.
Видео .mp4 в public/ — Vercel отдаёт статику напрямую. Никаких дополнительных настроек для видео не нужно.

Осторожно

Антипаттерны — что убивает эффект

❌ Ошибка✅ Правильно
Генерить кадры в 1K разрешенииМинимум 2K (1920×1080)
Разные ракурсы START и ENDТот же ракурс, то же освещение
Текст в промпте для видео (Kling)Никакого текста — замыливается
multi-shot ON / enhance ON в KlingОба OFF
preload не указан на <video>preload="auto" — иначе скролл лагает
ScrollTrigger на мобильном без fallbackПроверяй max-width: 768px → autoplay
Объекты касаются краёв кадраno objects touching the edges в промпте
Фон не белый (градиент, серый)clean white seamless background

Карта скиллов

Какой скилл вызвать когда

КогдаКоманда в Claude Code
Нужны промпты для Nano Banana 2
/scroll-stop-prompter
Есть видео, нужен полный hero в Next.js
/scroll-scrub-hero
Есть видео, нужен vanilla HTML MVP
/3d-website-builder
Деплой на Vercel
/ship-to-vercel
Весь пайплайн с нуля, одной командой
/scroll-scrub-hero