Создание видео с Claude Code и remotion-best-practices | Учебники

В этой главе объясняется, как с нуля локально создать и сгенерировать проект промо-видео Remotion с помощью Claude Code и навыка remotion-best-practices.


Предварительные требования

Прежде чем начать, убедитесь, что ваша локальная среда соответствует следующим требованиям.

Зависимости Требование к версии Назначение
Node.js >= 18.0 Запуск Remotion и npm-скриптов
npm / pnpm Последняя стабильная версия Управление пакетами зависимостей
Claude Code Последняя версия Генерация кода и создание структуры проекта с помощью ИИ
remotion-best-practices Установлен как навык Предоставляет стандарты и шаблоны проектов Remotion

Установка Claude Code

Доступен официальный скрипт установки в один клик; запустите соответствующую команду в зависимости от вашей системы.

macOS, Linux, WSL:

curl -fsSL https://claude.ai/install.sh | bash

Windows PowerShell:

irm https://claude.ai/install.ps1 | iex

Windows CMD:

curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

После установки проверьте, прошла ли она успешно:

$ claude --version
2.1.142 (Claude Code)

При первом запуске требуется войти в свою учётную запись Anthropic и авторизоваться. Если у вас нет официальной учётной записи, вы можете проверитьКонфигурация API Claude Code


Установка Skill remotion-best-practices

Skill — это пакет расширения возможностей для Claude Code. remotion-best-practices содержит лучшие практики и шаблоны кода для проектов Remotion.

Что такое Skill

Skill — это по сути структурированный документ с промптом (SKILL.md). После того как Claude Code прочитает его, он получает профессиональные знания и ограничения спецификации в соответствующей предметной области.

Skill remotion-best-practices включает следующее содержимое:

Модуль контента Описание
Стандарты каталогов проекта Определяет стандартные многоуровневые структуры для композиций, компонентов и ресурсов
Использование Animation API Стандартные паттерны для interpolate, spring и useCurrentFrame
Лучшие практики по производительности Спецификации по предотвращению избыточного рендеринга, предзагрузке статических ресурсов и т. д.
Шаблоны конфигурации рендеринга Рекомендуемые комбинации параметров для codec, fps, resolution и т. д.

Способ установки

В терминале перейдите в каталог вашего проекта и выполните команду установки:

npx skills add https://github.com/remotion-dev/skills --skill remotion-best-practices

После установки вы можете проверить, что навык был распознан:

claude skills list

Вы должны увидеть раздел, похожий на следующий:

Installed skills:
  - remotion-best-practices  (active)

адрес исходного кода remotion-best-practices:https://github.com/remotion-dev/skills


Создание проекта Remotion

После завершения всех подготовок запустите Claude Code в пустом каталоге и с помощью одного промпта позвольте ему автоматически настроить проект.

Запуск Claude Code и передача промпта

Мы можем создать каталогvideo-marker, затем перейти в него:

mkdir video-marker
cd video-marker

Запустите в каталоге проекта:

claude

После входа в интерактивный интерфейс вставьте следующий промпт:

先读取 remotion-best-practices skill,然后创建一个 Remotion 项目。

目标:6 秒钟的「Hello Example」好莱坞风格片头视频,1920x1080,30fps.

效果要求:
- 纯黑背景
- "HELLO EXAMPLE" 文字以冲击力方式砸入画面,伴随冲击波扭曲效果
- 撞击瞬间爆发金色粒子
- 强烈的色差闪光(chromatic aberration)
- 文字落定后,绿色(#3A7EC2)轮廓光晕脉冲
- 顶部和底部黑色宽幅遮幅条像电影一样滑入

只需一个 Composition,不用拆分场景。整体质感对标好莱坞大片片头字幕。

Затем просто дождитесь, пока он сгенерирует~

После завершения он сообщит вам, как сгенерировать файл mp4:

Предпросмотр в браузере:

cd hello-example
npm run dev

Эффект предпросмотра:

Сгенерировать mp4:

cd hello-example
npx remotion render HelloExample out/hello-example.mp4

Информация об экспорте:

Видео находится в каталоге out:

В промпте явно требуется, чтобы Claude Code сначала прочитал навык, поэтому сгенерированный код строго следует спецификации remotion-best-practices, а не полагается на собственные привычки модели по умолчанию.

Что будет делать Claude Code

После чтения навыка Claude Code автоматически выполнит следующие шаги:

Шаг Действие Сгенерированное содержимое
1 Инициализировать проект package.json、tsconfig.json、remotion.config.ts
2 Создать структуру каталогов src/compositions、src/components、src/assets
3 Сгенерировать компоненты Scene Intro.tsx、FeaturesScene.tsx、StatsScene.tsx、Outro.tsx
4 Сгенерировать общие компоненты TechCard.tsx、AnimatedCounter.tsx、CodeSnippet.tsx
5 Зарегистрировать Composition Завершите объединение всех сцен в Root.tsx

Другие примеры

Пример 1: Анимация роста числа

帮我用 Remotion 创建一个 8 秒的视频。背景是深色,画面中央显示一个数字,从 0 逐渐增长到 1,000,000,数字有弹跳动画效果,最后定格时出现"突破百万!"的字样。字体要大,颜色用金黄色。
Claude Code 接到这个指令后会:

Мы можем напрямую поручить ИИ экспортировать видео за нас в Claude:

Сгенерированное видео:

Пример 2: Обратный отсчёт до запуска продукта

用 Remotion 做一个 15 秒的产品发布倒计时视频。从 10 倒数到 0,每个数字出现时有缩放+透明度的过渡动画,背景用黑色,数字用白色大字体,右上角有"NEW"红色徽章。倒计时结束时全屏出现产品名称"CLAUDE PRO",字体要震撼。

Сгенерированное видео:

Ключевые моменты:Чем конкретнее промпт, тем лучше. Если вы чётко опишете время, цвета, эффекты и текстовое содержимое, Claude Code сможет сделать всё правильно с первого раза без необходимости повторных корректировок.


Понимание структуры сгенерированного проекта

После настройки проекта структура каталогов выглядит так:

hello-example/
├── package.json
├── tsconfig.json
├── remotion.config.ts
└── src/
    ├── index.ts              ← 入口,注册所有 Composition
    ├── Root.tsx              ← 主 Composition,拼接所有场景
    ├── compositions/
    │   ├── Intro.tsx         ← 开场 Logo 动画
    │   ├── ProblemScene.tsx  ← 问题引入场景
    │   ├── FeaturesScene.tsx ← 技术卡片展示
    │   ├── StatsScene.tsx    ← 数据统计场景
    │   └── Outro.tsx         ← 结尾 CTA
    ├── components/
    │   ├── TechCard.tsx      ← 单个技术卡片
    │   ├── AnimatedCounter.tsx ← 数字滚动
    │   └── CodeSnippet.tsx   ← 代码块动画
    └── assets/
        ├── colors.ts         ← 品牌色常量
        └── logo.svg

Пояснение к основному файлу

Root.tsxЭто точка входа всего видео, где все сцены объединяются в порядке временной шкалы:

Обзор структуры Root.tsx

import "./index.css";
import { Composition } from "remotion";
import { HelloExample } from "./Composition";

export const RemotionRoot: React.FC = () => {
  return (
    <>
      <Composition
        id="HelloExample"
        component={HelloExample}
        durationInFrames={180}
        fps={30}
        width={1920}
        height={1080}
      />
    </>
  );
};

Основной видеокомпонент, использующий Series для соединения сцен по порядку:

const MainVideo = () => {
  return (
    <Series>
      <Series.Sequence durationInFrames={90}>   {/* 3秒 */}
        <Intro />
      </Series.Sequence>
      <Series.Sequence durationInFrames={210}>  {/* 7秒 */}
        <FeaturesScene />
      </Series.Sequence>
      <Series.Sequence durationInFrames={450}>  {/* 15秒 */}
        <StatsScene />
      </Series.Sequence>
      <Series.Sequence durationInFrames={300}>  {/* 10秒 */}
        <Outro />
      </Series.Sequence>
    </Series>
  );
};

Установка зависимостей и предварительный просмотр

После того как Claude Code сгенерирует код, установите зависимости согласно его подсказкам:

npm install

Запустите Remotion Studio для предпросмотра эффекта видео:

npx remotion studio
> [email protected] studio
> remotion studio

Remotion Studio running at http://localhost:3000

Браузер откроется автоматическиhttp://localhost:3000, и вы сможете перетаскивать таймлайн, чтобы в реальном времени просматривать эффект каждого кадра.

Если анимация в какой-либо сцене во время предпросмотра выглядит слишком быстрой или слишком медленной, просто скажите Claude Code: "Анимация появления карточки во 2-й сцене слишком быстрая, сделай задержку длиннее", и он найдёт соответствующий код и изменит его.


Итерации с Claude Code для внесения правок

Во время предпросмотра в Remotion Studio, если вы обнаружите проблемы, вы можете описать их прямо на естественном языке в Claude Code, не меняя код вручную.

Типичные сценарии корректировки

Описание проблемы Как сказать Claude Code
Анимация карточки слишком быстрая Снизьте жёсткость пружины карточек в FeaturesScene до 80
Неправильный цвет фона Измените цвет фона всех сцен на #0d1117
Счётчик чисел работает не плавно Используйте easing easeOutCubic для AnimatedCounter в StatsScene
Хочу добавить сцену Добавьте 10-секундную сцену после StatsScene, демонстрирующую функцию онлайн-инстанса
Шрифт текста слишком мелкий Измените шрифт главного заголовка в Intro.tsx на 96px

Опишите проблему прямо в терминале Claude Code, и он найдёт соответствующий файл и изменит его. После изменения Remotion Studio автоматически выполнит горячую перезагрузку.


Рендеринг и экспорт финального видео

После того как вы останетесь довольны результатом, отрендерите его в файл MP4:

Команда рендеринга

npx remotion render \
  src/index.ts \           # Входной файл
  ExamplePromo \            # ID композиции, согласованный с Root.tsx
  out/example-promo.mp4 \   # Путь вывода
  --codec=h264 \           # Формат кодирования, лучшая совместимость
  --width=1920 \           # Ширина вывода
  --height=1080            # Высота вывода
Rendering ExamplePromo (1800 frames)
Progress: ████████████████████ 100%
Rendered in 2m 34s → out/example-promo.mp4

Лучшие практики Remotion: помогаем ИИ делать лучше

Скорость рендеринга зависит от сложности сцены и производительности компьютера. Если видео длинное и содержит много эффектов, можно добавить параметр--concurrency=4, чтобы включить многопоточный параллельный рендеринг, что может ускорить в 3–4 раза.

На практике есть несколько советов, которые могут значительно улучшить качество ваших видео. Добавление этих инструкций в ваш промпт даст заметный результат:

🎬 Частота кадров и размер

  • Укажите Claude Code, на какую платформу вы ориентируетесь: Douyin использует1080×1920 вертикальный экран; Bilibili использует1920×1080 горизонтальный экран, WeChat использует1:1 квадрат。
  • Для частоты кадров (fps) рекомендуется использовать30fps(плавно) или60fps(сверхплавно, больший размер файла).

🎞 Ритм анимации

  • Используйтеspring()функцию Remotion для пружинных анимаций, которая в 10 раз естественнее линейных анимаций. В промпте напишите: «использовать эффекты пружинного сглаживания».
  • Когда текст появляется посимвольно, скажите Claude использовать «stagger delay», чтобы каждый символ появлялся с интервалом в несколько кадров.
  • Добавьте 0.5 секунды плавного появления и затухания в начале и конце видео для более профессионального вида.

🎨 Визуальная текстура

  • Не используйте сплошной цвет для фона; попросите Claude использовать градиенты или сетчатые текстуры, чтобы мгновенно улучшить текстуру.
  • При добавлении субтитров добавьтеtext-shadowк тексту; белый текст четче на темных фонах.
  • Для графиков данных используйте@remotion/motion-blurплагин, который добавляет эффект размытия во время движения, делая изображение более похожим на кинематографичный кадр.

⚡ Эффективность рендеринга

  • Во время разработки используйтеnpx remotion previewпредпросмотр, а рендеринг/экспорт выполняйте только когда всё устраивает, экономя время.
  • Если видео очень длинное, попросите Claude включить--concurrencyпараметр параллельного рендеринга, что ускоряет его в несколько раз.
  • Для ресурсов изображений и шрифтов используйтеstaticFile()ссылки, чтобы избежать ошибок с путями.

Часто задаваемые вопросы

Claude Code не прочитал навык

Если сгенерированный код не соответствует спецификации remotion-best-practices, значит навык не был прочитан правильно.

Добавьте это предложение явно в начало промпта:

Принудительное чтение навыка

Перед написанием любого кода, прочитайте файл навыка remotion-best-practices полностью.

Ошибка запуска Remotion Studio

Частая причина — слишком старая версия Node.js. Проверьте и обновите:

Обновите Node.js

# Используйте nvm для переключения на Node.js 20
nvm install 20
nvm use 20

Анимация spring() показывает только первый кадр

Это потому, чтоframe - delay, когда значение отрицательное, spring возвращает 0.

Добавьте защиту clamp:

Исправление проблемы с отрицательным frame

const scale = spring({
  frame: Math.max(0, frame - delay),  // Убедитесь, что переданное значение неотрицательно
  fps,
  config: { damping: 12, stiffness: 180 },
});
Другие расширения