npx skills add https://github.com/kimny1143/claude-code-template --skill remotion使用 React 生成视频的 Remotion,制作视频内容的通用技能。
“所有事情都做得完美”是AI生成感的真面目。“舍弃什么”才是设计。
实现 Remotion 文件时,请遵循以下原则。详细检查清单:references/anti-template-checklist.md
---|---|---
1 | 所有元素使用相同的 spring config 入场 | 根据元素重量改变 damping/mass (重:20/1.2, 轻:8/0.3)
2 | 仅使用 translateY+opacity 一种模式 | 混合使用遮罩揭示、单词交错、硬切等
3 | delay={i * 8} 的均匀延迟 | 使用 [0, 5, 13, 21] 这样有机的间隔
4 | 所有场景都是居中布局 | 至少有一个场景使用非对称布局
5 | 相同转场使用3次以上 | 混合使用 Wipe, Scale, Hard cut, Crossfade
6 | 超过8秒构图不变的场景 | 中途改变 scale/position/缩放
bash .claude/skills/remotion/scripts/check-quality.sh <target-dir>
Reactで動画を生成する Remotion を使い、動画コンテンツを制作する汎用スキル。
「全部ちゃんとやる」がAI生成感の正体。「何を捨てるか」がデザイン。
Remotionファイルの実装時、以下の原則に従うこと。 詳細チェックリスト: references/anti-template-checklist.md
---|---|---
1 | 全要素が同じspring configで入場 | 要素の重さ別にdamping/massを変える (重:20/1.2, 軽:8/0.3)
2 | translateY+opacity の1パターンのみ | マスクリビール、単語スタガー、ハードカット等を混ぜる
3 | delay={i * 8} の均等ディレイ | [0, 5, 13, 21] のような有機的間隔
4 | 全シーンがセンター配置 | 最低1シーンは非対称レイアウト
5 | 同じトランジション3回以上 | Wipe, Scale, Hard cut, Crossfade を混ぜる
6 | 8秒以上構図が変わらないシーン | 途中でscale/position/ズームを変化させる
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
此检查在 Remotion 文件的 Write/Edit 时会自动执行(hook 已设置)。
调色板、字体、吉祥物角色的规格,请在各个项目的
CLAUDE.md中定义。 此技能不包含品牌特定信息。预计项目方会准备如下部分:
## Video Branding
- Primary: #XXXXXX
- Accent: #XXXXXX
- Background: #XXXXXX
- Font Heading: ...
- Font Body: ...
- Mascot: (角色名、设计规格、动画模式等)
# 1. 项目初始化(技能附带脚本)
bash <path-to-skill>/scripts/init-remotion.sh <project-name>
# 2. 预览
cd <project-name> && npx remotion studio
# 3. 渲染
npx remotion render src/index.ts <CompositionId> out/video.mp4
# 新建项目
npx create-video@latest my-video
# 添加到现有项目(依赖关系会变复杂,建议使用独立目录)
npm install remotion @remotion/cli @remotion/player
0-5秒 : Hook — 提出问题 + 吸引人的视觉效果
5-10秒 : Problem — 可视化课题
10-20秒 : Solution — 产品的世界观·功能演示
20-28秒 : Social Proof — 数字或用户的声音
28-30秒 : CTA — Logo + URL
合成设置:
0-3秒 : 功能名称标题(文字动画)
3-12秒 : 实际演示(屏幕录制或模拟)
12-15秒 : 结束语 + 引导下一步行动
合成设置:
0-5秒 : 导入 — 标题 + 问候
5-50秒 : 步骤1-3 — 操作说明(屏幕录像 + 叠加层)
50-58秒 : 总结 — 回顾要点
58-60秒 : CTA
0-2秒 : 吸引眼球(动作或文字)
2-8秒 : 单点信息
8-10秒 : Logo + CTA
合成设置:
my-video/
├── src/
│ ├── Root.tsx # 合成注册
│ ├── compositions/
│ │ ├── Promo.tsx # 30秒宣传片
│ │ ├── FeatureIntro.tsx # 15秒功能介绍
│ │ ├── Tutorial.tsx # 60秒教程
│ │ └── SnsShort.tsx # 5-10秒SNS
│ ├── components/
│ │ ├── Character/ # 吉祥物 / 角色
│ │ │ ├── CharacterBase.tsx
│ │ │ ├── Expressions.tsx
│ │ │ └── Animations.tsx
│ │ ├── Typography/
│ │ │ ├── TitleReveal.tsx
│ │ │ └── SubtitleFade.tsx
│ │ ├── Transitions/
│ │ │ ├── WipeTransition.tsx
│ │ │ └── FadeTransition.tsx
│ │ └── Branding/
│ │ ├── Logo.tsx
│ │ └── CallToAction.tsx
│ └── styles/
│ └── theme.ts # 颜色·字体定义
├── public/
│ ├── fonts/
│ ├── images/
│ └── audio/
├── remotion.config.ts
└── package.json
<Sequence> 管理场景时间interpolate() 进行平滑的值插值spring() 实现自然的物理动画{ damping: 20, mass: 1.2 }{ damping: 8, mass: 0.3 }/public/audio/<Audio> 组件进行同步播放export const theme = {
colors: {
primary: '#XXXXXX',
accent: '#XXXXXX',
background: '#XXXXXX',
text: '#XXXXXX',
subAccent: '#XXXXXX',
},
fonts: {
heading: 'Your Heading Font',
body: 'Your Body Font',
mono: 'JetBrains Mono',
},
// ★ 根据元素重量区分 spring config
spring: {
heavy: { damping: 22, mass: 1.2 }, // mockup, 全屏元素
medium: { damping: 14, mass: 0.7 }, // 文字, 卡片
light: { damping: 8, mass: 0.3 }, // 点, 徽章, 小图标
bounce: { damping: 6, mass: 0.4, stiffness: 180 }, // CTA, 焦点元素
},
fadeIn: { durationInFrames: 15 },
} as const;
// BPM同步(根据BGM调整)
export const music = {
bpm: 120,
fps: 30,
framesPerBeat: (30 * 60) / 120, // 15
framesPerBar: ((30 * 60) / 120) * 4, // 60
} as const;
export type Theme = typeof theme;
请使用项目
CLAUDE.md中定义的品牌颜色·字体填充上述占位符。
项目有吉祥物角色时的通用动画模式。角色名称和外观因项目而异,因此此处仅定义运动模式。
| 状态 | 用途 | 动画 |
|---|---|---|
| idle | 待机 | 轻微呼吸(上下2px,2秒周期)+ 眨眼 |
| curious | 兴趣·说明 | 歪头 + 睁大眼睛 |
| happy | 喜悦·完成 | 弹跳 + 表情变化 |
| pointing | 指示 | 身体转向 + 伸展手臂/翅膀 |
// 登场: 从画面外带 spring 效果滑入
const entrance = (
frame: number, fps: number,
from: 'left' | 'right' | 'bottom' = 'right'
) => {
const progress = spring({ frame, fps, config: { damping: 12, stiffness: 80 } });
const offsets = { left: { x: -300, y: 0 }, right: { x: 300, y: 0 }, bottom: { x: 0, y: 200 } };
const dir = offsets[from];
return {
translateX: dir.x * (1 - progress),
translateY: dir.y * (1 - progress),
opacity: progress,
scale: 0.5 + progress * 0.5,
};
};
当 mcp-image (Nano Banana Pro) MCP 服务器可用时,可以生成视频用的素材图像。
// 生成的图像放置在 public/images/,通过 staticFile() 引用
<Img src={staticFile('images/generated-bg.png')} />
| 用途 | quality | aspectRatio | 备注 |
|---|---|---|---|
| 草稿·验证 | fast | 匹配视频 | 用于迭代,速度优先 |
| 正式素材 | balanced | 9:16 或 16:9 | 用于最终成品 |
| 关键视觉 | quality | 9:16 或 16:9 | 用于海报·缩略图 |
generate_image 生成素材(推荐 purpose: "remotion video asset")public/images/staticFile('images/filename.png') 从 Remotion 引用# MP4(通用)
npx remotion render src/index.ts Promo out/promo.mp4
# 高品质
npx remotion render src/index.ts Promo out/promo-hq.mp4 --codec=h264 --quality=100
# GIF(短视频·循环用)
npx remotion render src/index.ts SnsShort out/short.gif --codec=gif
# SNS用竖版(9:16)
npx remotion render src/index.ts VerticalComp out/vertical.mp4 --height=1920 --width=1080
# 批量渲染
bash <path-to-skill>/scripts/render-all.sh
无需预渲染即可交互式播放。
import { Player } from '@remotion/player';
import { FeatureIntro } from './compositions/FeatureIntro';
<Player
component={FeatureIntro}
durationInFrames={450}
fps={30}
compositionWidth={1080}
compositionHeight={1080}
style={{ width: '100%' }}
controls
/>
<Player
component={Tutorial}
inputProps={{
message: "操作してみましょう",
stepNumber: 1,
}}
durationInFrames={300}
fps={30}
compositionWidth={1920}
compositionHeight={1080}
controls
autoPlay
loop
/>
Remotion 3人以下的公司免费(允许商业使用)。4人以上时需要 Company License($25/开发者/月)。详情:https://www.remotion.dev/license
npx add-skill remotion-dev/skillsreferences/animation-patterns.mdreferences/anti-template-checklist.mdWeekly Installs
91
Repository
First Seen
Jan 22, 2026
Security Audits
Installed on
claude-code76
opencode52
gemini-cli51
codex49
cursor49
github-copilot48
bash .claude/skills/remotion/scripts/check-quality.sh <target-dir>
このチェックはRemotionファイルの Write/Edit 時に自動実行される(hook設定済み)。
カラーパレット、フォント、マスコットキャラクターの仕様は、各プロジェクトの
CLAUDE.mdで定義すること。 このスキルにはブランド固有の情報を含めない。 プロジェクト側に以下のようなセクションを用意する想定:## Video Branding - Primary: #XXXXXX - Accent: #XXXXXX - Background: #XXXXXX - Font Heading: ... - Font Body: ... - Mascot: (キャラ名、デザイン仕様、アニメーションパターン等)
# 1. プロジェクト初期化(スキル付属スクリプト)
bash <path-to-skill>/scripts/init-remotion.sh <project-name>
# 2. プレビュー
cd <project-name> && npx remotion studio
# 3. レンダリング
npx remotion render src/index.ts <CompositionId> out/video.mp4
# 新規作成
npx create-video@latest my-video
# 既存プロジェクトに追加(依存関係が複雑になるため別ディレクトリ推奨)
npm install remotion @remotion/cli @remotion/player
0-5秒 : Hook — 問題提起 + キャッチーなビジュアル
5-10秒 : Problem — 課題の可視化
10-20秒 : Solution — プロダクトの世界観・機能デモ
20-28秒 : Social Proof — 数字 or ユーザーの声
28-30秒 : CTA — ロゴ + URL
コンポジション設定:
0-3秒 : 機能名タイトル(テキストアニメーション)
3-12秒 : 実演デモ(スクリーンキャプチャ or モック)
12-15秒 : 締めのメッセージ + 次のアクション誘導
コンポジション設定:
0-5秒 : 導入 — タイトル + 挨拶
5-50秒 : ステップ1-3 — 操作説明(画面録画 + オーバーレイ)
50-58秒 : まとめ — 要点の振り返り
58-60秒 : CTA
0-2秒 : アイキャッチ(動き or テキスト)
2-8秒 : ワンポイント情報
8-10秒 : ロゴ + CTA
コンポジション設定:
my-video/
├── src/
│ ├── Root.tsx # コンポジション登録
│ ├── compositions/
│ │ ├── Promo.tsx # 30秒プロモ
│ │ ├── FeatureIntro.tsx # 15秒機能紹介
│ │ ├── Tutorial.tsx # 60秒チュートリアル
│ │ └── SnsShort.tsx # 5-10秒SNS
│ ├── components/
│ │ ├── Character/ # マスコット / キャラクター
│ │ │ ├── CharacterBase.tsx
│ │ │ ├── Expressions.tsx
│ │ │ └── Animations.tsx
│ │ ├── Typography/
│ │ │ ├── TitleReveal.tsx
│ │ │ └── SubtitleFade.tsx
│ │ ├── Transitions/
│ │ │ ├── WipeTransition.tsx
│ │ │ └── FadeTransition.tsx
│ │ └── Branding/
│ │ ├── Logo.tsx
│ │ └── CallToAction.tsx
│ └── styles/
│ └── theme.ts # カラー・フォント定義
├── public/
│ ├── fonts/
│ ├── images/
│ └── audio/
├── remotion.config.ts
└── package.json
<Sequence> でシーンを時間管理interpolate() でスムーズな値の補間spring() で自然な物理アニメーション{ damping: 20, mass: 1.2 }{ damping: 8, mass: 0.3 }/public/audio/ に配置<Audio> コンポーネントで同期再生export const theme = {
colors: {
primary: '#XXXXXX',
accent: '#XXXXXX',
background: '#XXXXXX',
text: '#XXXXXX',
subAccent: '#XXXXXX',
},
fonts: {
heading: 'Your Heading Font',
body: 'Your Body Font',
mono: 'JetBrains Mono',
},
// ★ 要素の重さ別にspring configを分ける
spring: {
heavy: { damping: 22, mass: 1.2 }, // mockup, 全画面要素
medium: { damping: 14, mass: 0.7 }, // テキスト, カード
light: { damping: 8, mass: 0.3 }, // ドット, バッジ, 小アイコン
bounce: { damping: 6, mass: 0.4, stiffness: 180 }, // CTA, 注目要素
},
fadeIn: { durationInFrames: 15 },
} as const;
// BPM同期(BGMに合わせて調整)
export const music = {
bpm: 120,
fps: 30,
framesPerBeat: (30 * 60) / 120, // 15
framesPerBar: ((30 * 60) / 120) * 4, // 60
} as const;
export type Theme = typeof theme;
プロジェクトの
CLAUDE.mdに定義したブランドカラー・フォントで上記プレースホルダーを埋めること。
プロジェクトにマスコットキャラクターがある場合の汎用アニメーションパターン。 キャラクター名や見た目はプロジェクトごとに異なるため、ここではモーションパターンのみ定義する。
| 状態 | 用途 | アニメーション |
|---|---|---|
| idle | 待機 | 軽い呼吸(上下2px、2秒周期) + まばたき |
| curious | 興味・説明 | 首を傾ける + 目を見開く |
| happy | 喜び・完了 | バウンス + 表情変化 |
| pointing | 指し示す | 体を向ける + 腕/羽を伸ばす |
// 登場: 画面外からspring付きスライドイン
const entrance = (
frame: number, fps: number,
from: 'left' | 'right' | 'bottom' = 'right'
) => {
const progress = spring({ frame, fps, config: { damping: 12, stiffness: 80 } });
const offsets = { left: { x: -300, y: 0 }, right: { x: 300, y: 0 }, bottom: { x: 0, y: 200 } };
const dir = offsets[from];
return {
translateX: dir.x * (1 - progress),
translateY: dir.y * (1 - progress),
opacity: progress,
scale: 0.5 + progress * 0.5,
};
};
mcp-image (Nano Banana Pro) MCPサーバーが利用可能な場合、動画用の素材画像を生成できる。
// 生成した画像は public/images/ に配置し、staticFile() で参照
<Img src={staticFile('images/generated-bg.png')} />
| 用途 | quality | aspectRatio | 備考 |
|---|---|---|---|
| ドラフト・検証 | fast | 動画に合わせる | 反復用、速度優先 |
| 本番素材 | balanced | 9:16 or 16:9 | 最終成果物用 |
| キービジュアル | quality | 9:16 or 16:9 | ポスター・サムネ用 |
generate_image で素材を生成(purpose: "remotion video asset" 推奨)public/images/ にコピーstaticFile('images/filename.png') でRemotionから参照# MP4(汎用)
npx remotion render src/index.ts Promo out/promo.mp4
# 高品質
npx remotion render src/index.ts Promo out/promo-hq.mp4 --codec=h264 --quality=100
# GIF(短尺・ループ用)
npx remotion render src/index.ts SnsShort out/short.gif --codec=gif
# SNS向け縦型(9:16)
npx remotion render src/index.ts VerticalComp out/vertical.mp4 --height=1920 --width=1080
# 一括レンダリング
bash <path-to-skill>/scripts/render-all.sh
事前レンダリング不要でインタラクティブに再生できる。
import { Player } from '@remotion/player';
import { FeatureIntro } from './compositions/FeatureIntro';
<Player
component={FeatureIntro}
durationInFrames={450}
fps={30}
compositionWidth={1080}
compositionHeight={1080}
style={{ width: '100%' }}
controls
/>
<Player
component={Tutorial}
inputProps={{
message: "操作してみましょう",
stepNumber: 1,
}}
durationInFrames={300}
fps={30}
compositionWidth={1920}
compositionHeight={1080}
controls
autoPlay
loop
/>
Remotionは 3人以下の会社は無料 (商用利用OK)。 4人以上になった場合は Company License($25/開発者/月)が必要。 詳細: https://www.remotion.dev/license
npx add-skill remotion-dev/skillsreferences/animation-patterns.mdreferences/anti-template-checklist.mdWeekly Installs
91
Repository
First Seen
Jan 22, 2026
Security Audits
Installed on
claude-code76
opencode52
gemini-cli51
codex49
cursor49
github-copilot48
Tailwind CSS v4 + shadcn/ui 生产级技术栈配置指南与最佳实践
2,600 周安装