npx skills add https://github.com/notedit/happy-skills --skill video-producer当用户提供视频简报时使用此技能——即描述一个包含多个场景或叙事弧线的完整视频。
触发词: “创建宣传视频”、“制作产品演示”、“我需要一个30秒的广告”、“制作社交媒体动画”,或任何描述多场景视频的提示。
请勿用于:
gsap-animationreact-animationvideo-producer (此技能) ← 编排:什么故事,哪些场景
├── gsap-animation ← 动画:文本拆分、SVG绘制、时间线编排
├── spring-animation ← 物理:弹性入场、弹性拖尾、有机运动
├── react-animation ← 视觉效果:极光、丝绸、粒子、噪点
└── Remotion ← 引擎:渲染、合成、序列
初始请求:$ARGUMENTS
从用户请求中提取信息。对于任何缺失的必填字段,使用 AskUserQuestion。
| 字段 | 必填 |
|---|
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 默认值 |
|---|
| 示例 |
|---|
| 产品/品牌名称 | 是 | — | "Topview" |
| 视频类型 | 是 | SaaS 宣传片 | SaaS 宣传片 / 排版动画 / 社交媒体叠加层 |
| 核心信息 (2-4条) | 是 | — | "AI 驱动的编辑"、"无需编码" |
| 情感基调 | 是 | — | 紧迫 / 安心 / 兴奋 / 专业 / 叛逆 / 温暖 / 活泼 |
| 记忆锚点 | 是 | — | "观众在30秒后会记住的单一画面" |
| 目标受众 | 否 | 通用 | "开发者"、"营销人员" |
| 时长 | 否 | 模板默认 | "25 秒" |
| 分辨率 | 否 | 1920x1080 | 1080x1080 (方形) |
| 帧率 | 否 | 30 | 60 (用于社交媒体) |
| 视觉风格 | 否 | Apple 极简 | Apple 极简 / 粗体排版 / 暗黑科技 / 温暖有机 / 复古流行 / 编辑单色 |
| 行动号召文本 | 否 | 无 | "开始创作 →" |
| 强调色 | 否 | 来自风格预设 | "#FF7D00" |
情感基调驱动动画技术选择、弹簧配置和节奏:
SPRING.stiff + GSAP 硬切,快速错开 (2-3 帧),GSAP 场景使用 power3.outSPRING.smooth / SPRING.gentle,高阻尼,缓慢显现,暖色调SPRING.bouncy / SPRING.pop,低阻尼,饱和色彩,SpringTrail 弹入SPRING.snappy / SPRING.smooth,精准的时序,干净的运动,充足的停顿SPRING.stiff + SPRING.rubber 混合,GSAP 故障效果,不规则错开SPRING.gentle / SPRING.molasses,温暖渐变,圆润形状,慢速错开 (6-8 帧)SPRING.wobbly / SPRING.rubber,极端过冲,GridStagger 中心向外扩散,明亮强调色记忆锚点——观众会截图或回忆的唯一视觉时刻。每个制作决策都应强化这个锚点。自问:“如果有人向朋友描述这个视频,他们会描述什么画面?”
选择叙事模板 基于视频类型 → 参见 rules/narrative-templates.md
选择视觉风格 → 参见 rules/style-presets.md
将用户信息映射到所选模板的场景槽位
为每个场景选择动画模式 → 参见 rules/scene-patterns.md
以表格形式向用户展示计划:
Scene | Duration | Pattern | Content 1 | 3s | TitleCard | "Topview is powerful" 2 | 3s | CardFlip3D | CLI pain → AI solution ...
等待用户确认后再继续。
生成标准的 Remotion 项目结构 → 参见 rules/project-scaffold.md:
src/config.ts — 所有参数(颜色、排版、场景帧数)src/Root.tsx — 合成注册src/Composition.tsx — 包含所有场景的 TransitionSeriessrc/components/ — 共享组件(背景等)src/scenes/ — 每个场景一个文件帧数计算: sceneFrames = Math.ceil(sceneDurationSeconds * fps)
按顺序实现场景。每个场景在进入下一个之前都要经过构建 → 验证 → 修复循环。→ 完整评分标准和自动修复规则参见 rules/scene-evaluator.md。
对于每个场景:
步骤 4a:实现场景
src/scenes/SceneN_Name.tsxuseGSAPTimeline 或 useGSAPWithFonts (来自 gsap-animation 技能)spring() + 预设 (来自 spring-animation 技能)interpolate()Composition.tsx 并在 Root.tsx 中注册预览步骤 4b:渲染静态帧
捕获两个关键帧进行视觉检查:
# 入场帧 — 捕捉早期布局、初始位置
npx remotion still src/index.ts SceneN-Preview /tmp/sceneN_entry.png --frame={floor(SCENE_FRAMES.sceneN * 0.15)}
# 峰值帧 — 高潮时刻,所有入场元素就位
npx remotion still src/index.ts SceneN-Preview /tmp/sceneN_peak.png --frame={floor(SCENE_FRAMES.sceneN * 0.60)}
步骤 4c:评估
读取场景代码 + config.ts + 渲染的截图。在 7 个加权维度上评分(反模式合规性、排版、色彩与对比度、运动设计、构图、叙事连贯性、技术正确性)。
步骤 4d:自动修复 (最多 2 次迭代)
根据扣分项应用针对性修复 → rules/scene-evaluator.md 中的扣分到修复映射表。每个扣分项都对应一个具体的代码更改——而不是模糊的建议。修复后:
跨场景跟踪: 维护一个运行上下文,记录每个场景使用的强调色、弹簧预设、入场方向和技巧。在第 3 个及以后的场景中,检查多样性问题(连续 3 次使用相同预设、相同入场方向等)。
所有场景完成后: 在进入阶段 5 之前,输出完整的评估摘要表,显示每个场景的分数、迭代次数和跨场景备注。
模式选择原则: 对于具有弹跳/过冲效果的物理驱动运动,使用 spring()。对于 SplitText、DrawSVG、MorphSVG 和复杂的时间线编排,使用 GSAP。对于简单的线性/缓动运动,使用 interpolate()。
# 标准 MP4
npx remotion render src/index.ts MainVideo --output out/video.mp4
# 高质量
npx remotion render src/index.ts MainVideo --codec h264 --crf 15
# 透明背景 (社交媒体叠加层)
npx remotion render src/index.ts MainVideo --codec prores --prores-profile 4444
npx remotion render src/index.ts MainVideo --codec vp9 --output out/overlay.webm
| 格式 | 透明度 | 使用场景 |
|---|---|---|
| MP4 H.264 | 否 | 通用播放 |
| ProRes 4444 | 是 | 专业合成 |
| WebM VP9 | 是 | 网页叠加层 |
使实现复杂度与情感基调和视觉风格相匹配。投入动画的精力必须服务于创意愿景——既不能过度,也不能不足。
| 基调 × 风格 | 节奏 | 弹簧预设 | GSAP 使用 | 停顿时长 |
|---|---|---|---|---|
| 紧迫 + 粗体排版 | 快 (1.5-2.5s 场景) | stiff (错开: 2f) | charCascade, 硬切转场 | 短 (0.5s) |
| 兴奋 + 暗黑科技 | 中快 (2-3s) | bouncy / pop (错开: 3f) | circleReveal 转场, DrawSVG | 中 (0.8s) |
| 专业 + Apple 极简 | 精准 (3-4s) | smooth / snappy (错开: 5f) | textReveal, SplitScreenComparison | 长 (1.2s) |
| 温暖 + 温暖有机 | 慢 (3-5s) | gentle / molasses (错开: 8f) | 最少 GSAP,优先仅用 spring | 长 (1.5s) |
| 叛逆 + 复古流行 | 不规则 | stiff + rubber 交替 | ScrambleText, 故障效果 | 可变 |
| 活泼 + 任意 | 弹跳 (2-3s) | wobbly / pop (错开: 3f) | 最少 GSAP,SpringTrail + GridStagger | 中 (0.8s) |
原则: 一个完美执行的标志性转场比六个平庸的效果更具冲击力。将动画预算投入到记忆锚点时刻。
反臃肿规则: 每个场景应使用一种主导动画技术:
spring() + interpolate() (弹性入场、拖尾、计数器)useGSAPTimelineSpring 优先原则: 默认所有入场、退场和错开动画都使用 spring()。仅当特别需要 SplitText、DrawSVG、MorphSVG、ScrambleText 或复杂的时间线标签时才添加 GSAP。Spring 更轻量,无需额外依赖,并能产生自然的有机运动。
每个视频都必须有观点。 一个没有强烈美学承诺的“干净、专业”视频只是一个普通视频。致力于做出具体、大胆的选择:
记忆性测试: 在最终确定计划之前,自问:“如果把这个视频放在 10 个其他 AI 生成的宣传视频旁边,我的视频看起来会明显不同吗?” 如果不会,就进一步推进美学风格。
| "我需要..." | 使用 |
|---|---|
| 粗体文字入场 (拆分字符) | gsap: charCascade / textReveal 效果 |
| 粗体文字入场 (弹跳单词) | spring: WordTrail / CharacterTrail |
| 并排比较 | gsap: SplitScreenComparison 模板 |
| 卡片翻转揭示 (平滑) | gsap: CardFlip3D 模板 |
| 卡片翻转揭示 (弹簧物理) | spring: SpringCardFlip |
| 两侧元素入场 | gsap: PerspectiveEntrance 模板 |
| 单词高亮 | gsap: TextHighlightBox 模式 |
| UI 点击模拟 | gsap: CursorClick 模式 |
| 文本交换动画 | gsap: RotateXTextSwap 模式 |
| 流动背景 | react-animation: Aurora / Silk |
| 胶片颗粒叠加层 | react-animation: NoiseOverlay |
| 简单淡入淡出 / 滑动 | Remotion: interpolate() |
| 数字计数器 (线性) | Remotion: interpolate() |
| 数字计数器 (过冲) | spring: SpringCounter |
| 弹跳缩放入场 | spring: ScalePop |
| 错开列表/网格揭示 | spring: SpringTrail / GridStagger |
| 入场 + 退场动画 | spring: useSpringEnterExit |
| 顺序编排 | spring: useSpringChain |
| 打字效果 | Remotion: .slice() + interpolate() |
| 场景转场 (擦除/光圈) | gsap: circleReveal / wipeIn 效果 |
| 场景转场 (弹簧滑动) | spring: SpringSlide / SpringCrossfade |
| Logo 描边绘制 | gsap: DrawSVG + drawIn 效果 |
| 功能网格弹入 | spring: SpringFeatureGrid |
绝不在不同的视频中产生相同的美学效果。每个作品都必须感觉是独特的创意作品,而不是模板填充。
差异化规则: 在开始阶段 3 之前,在脑海中比较计划的美学效果与“默认 AI 视频”——白色背景、居中的 Inter 字体、淡入转场、蓝色强调色。如果你的计划与这些特征共享超过一个,就进一步偏离默认值。
每个视频都应该让观众想要截图一帧并分享。这是作为工艺的动态图形——而不是模板组装。
超越“功能性”,追求“卓越”。使用意想不到的字体组合。尝试感觉有风险的色彩组合。让一个场景打破网格。给予记忆锚点时刻 2 倍于其他场景的动画投入。
一个容易被遗忘的宣传片和一个令人难忘的宣传片之间的差距,不在于技术复杂性——而在于创意勇气。做出大胆的选择,并以精确度执行它们。
每周安装量
73
仓库
GitHub 星标
325
首次出现
2026年2月12日
安全审计
安装于
gemini-cli72
codex72
opencode72
kimi-cli71
github-copilot71
amp70
Use this skill when the user provides a video brief — a description of a complete video with multiple scenes or a narrative arc.
Triggers: "create a promo video", "make a product demo", "I need a 30-second ad", "build a social media animation", or any prompt describing a multi-scene video.
Do NOT use for:
gsap-animationreact-animationvideo-producer (this skill) ← orchestration: what story, which scenes
├── gsap-animation ← animation: text splits, SVG drawing, timeline orchestration
├── spring-animation ← physics: bouncy entrances, elastic trails, organic motion
├── react-animation ← visuals: Aurora, Silk, particles, grain
└── Remotion ← engine: rendering, composition, sequences
Initial request: $ARGUMENTS
Extract from the user's request. Use AskUserQuestion for any missing required fields.
| Field | Required | Default | Example |
|---|---|---|---|
| Product / brand name | Yes | — | "Topview" |
| Video type | Yes | SaaS Promo | SaaS Promo / Typographic / Social Overlay |
| Core messages (2-4) | Yes | — | "AI-powered editing", "No coding required" |
| Emotional tone | Yes | — | Urgent / Reassuring / Exciting / Professional / Rebellious / Warm / Playful |
| Memory anchor | Yes | — | "The single image viewers will remember 30s later" |
| Target audience | No | General | "Developers", "Marketers" |
| Duration | No | Template default |
Emotional tone drives animation technique selection, spring config, and pacing:
SPRING.stiff + GSAP hard cuts, fast stagger (2-3 frames), power3.out for GSAP scenesSPRING.smooth / SPRING.gentle, high damping, slow reveals, warm paletteSPRING.bouncy / SPRING.pop, low damping, saturated colors, SpringTrail pop-insSPRING.snappy / SPRING.smooth, measured timing, clean motion, generous holdsSPRING.stiff + mix, GSAP glitch effects, irregular staggerMemory anchor — the ONE visual moment viewers will screenshot or recall. Every production decision should reinforce this anchor. Ask: "If someone describes this video to a friend, what image do they describe?"
rules/narrative-templates.mdrules/style-presets.mdrules/scene-patterns.mdScene | Duration | Pattern | Content
1 | 3s | TitleCard | "Topview is powerful"
2 | 3s | CardFlip3D | CLI pain → AI solution
...
Wait for user confirmation before proceeding.
Generate the standard Remotion project structure → see rules/project-scaffold.md:
src/config.ts — all parameters (colors, typography, scene frames)src/Root.tsx — composition registrationsrc/Composition.tsx — TransitionSeries with all scenessrc/components/ — shared components (background, etc.)src/scenes/ — one file per sceneFrame calculation: sceneFrames = Math.ceil(sceneDurationSeconds * fps)
Implement scenes in order. Each scene goes through a build → verify → fix loop before moving to the next. → see rules/scene-evaluator.md for the full scoring rubric and auto-fix rules.
For each scene:
Step 4a: Implement scene
src/scenes/SceneN_Name.tsxuseGSAPTimeline or useGSAPWithFonts (from gsap-animation skill)spring() + presets (from spring-animation skill)interpolate()Composition.tsx and register preview in Root.tsxStep 4b: Render stills
Capture two key frames for visual inspection:
# Entry frame — catches early layout, initial positions
npx remotion still src/index.ts SceneN-Preview /tmp/sceneN_entry.png --frame={floor(SCENE_FRAMES.sceneN * 0.15)}
# Peak frame — hero moment, all entrances settled
npx remotion still src/index.ts SceneN-Preview /tmp/sceneN_peak.png --frame={floor(SCENE_FRAMES.sceneN * 0.60)}
Step 4c: Evaluate
Read the scene code + config.ts + rendered screenshots. Score across 7 weighted dimensions (anti-pattern compliance, typography, color & contrast, motion design, composition, narrative coherence, technical correctness).
Step 4d: Auto-fix (max 2 iterations)
Apply targeted fixes from the deduction → fix mapping table in rules/scene-evaluator.md. Each deduction maps to a concrete code change — not a vague suggestion. After fixing:
Cross-scene tracking: Maintain a running context of accent colors, spring presets, entrance directions, and techniques used per scene. At scene 3+, check for variety issues (same preset 3x in a row, same entrance direction, etc.).
After all scenes complete: Output a full Evaluation Summary Table showing per-scene scores, iteration counts, and cross-scene notes before proceeding to Phase 5.
Pattern selection principle: Use spring() for physics-driven motion with bounce/overshoot. Use GSAP for SplitText, DrawSVG, MorphSVG, and complex timeline orchestration. Use interpolate() for simple linear/eased motion.
# Standard MP4
npx remotion render src/index.ts MainVideo --output out/video.mp4
# High quality
npx remotion render src/index.ts MainVideo --codec h264 --crf 15
# Transparent background (social overlays)
npx remotion render src/index.ts MainVideo --codec prores --prores-profile 4444
npx remotion render src/index.ts MainVideo --codec vp9 --output out/overlay.webm
| Format | Alpha | Use Case |
|---|---|---|
| MP4 H.264 | No | Universal playback |
| ProRes 4444 | Yes | Professional compositing |
| WebM VP9 | Yes | Web overlays |
Match implementation complexity to the emotional tone and visual style. The effort invested in animation must serve the creative vision — not exceed or undercut it.
| Tone × Style | Pacing | Spring Preset | GSAP Usage | Hold Duration |
|---|---|---|---|---|
| Urgent + Bold Typography | Fast (1.5-2.5s scenes) | stiff (stagger: 2f) | charCascade, hard cut transitions | Short (0.5s) |
| Exciting + Dark Tech | Medium-fast (2-3s) | bouncy / pop (stagger: 3f) | circleReveal transitions, DrawSVG | Medium (0.8s) |
| Professional + Apple Minimal | Measured (3-4s) | smooth / snappy (stagger: 5f) |
Principle: One signature transition executed perfectly creates more impact than six mediocre effects. Invest animation budget in the memory anchor moment.
Anti-bloat rule: Each scene should use ONE dominant animation technique:
spring() + interpolate() for all motion (bouncy entrances, trails, counters)useGSAPTimeline for text splits, SVG operations, complex orchestrationSpring-first principle: Default to spring() for all entrances, exits, and stagger animations. Only add GSAP when you specifically need SplitText, DrawSVG, MorphSVG, ScrambleText, or complex timeline labels. Spring is lighter, requires no additional dependency, and produces naturally organic motion.
Every video must have a point of view. A "clean, professional" video without a strong aesthetic commitment is just a generic video. Commit to specific, bold choices:
The Memorability Test: Before finalizing the plan, ask: "If I showed this next to 10 other AI-generated promo videos, would mine look distinctly different?" If no, push the aesthetic further.
| "I need..." | Use |
|---|---|
| Bold text entrance (split chars) | gsap: charCascade / textReveal effect |
| Bold text entrance (bouncy words) | spring: WordTrail / CharacterTrail |
| Side-by-side comparison | gsap: SplitScreenComparison template |
| Card flip reveal (smooth) | gsap: CardFlip3D template |
| Card flip reveal (spring physics) | spring: SpringCardFlip |
| Elements from both sides | gsap: PerspectiveEntrance template |
| Word highlighting | gsap: TextHighlightBox pattern |
| UI click simulation | gsap: CursorClick pattern |
| Text swap animation | gsap: RotateXTextSwap pattern |
| Flowing background | react-animation: Aurora / Silk |
| Film grain overlay | react-animation: NoiseOverlay |
| Simple fade / slide | Remotion: interpolate() |
| Number counter (linear) |
NEVER produce the same aesthetic twice across different videos. Each production must feel like a unique creative work, not a template fill-in.
The Divergence Rule: Before starting Phase 3, mentally compare the planned aesthetic to a "default AI video" — white background, centered Inter text, fade-in transitions, blue accent. If your plan shares more than ONE of these traits, push further from the default.
Every video should make viewers want to screenshot a frame and share it. This is motion graphics as a craft — not template assembly.
Push beyond "functional" toward "remarkable." Use unexpected font pairings. Try color combinations that feel risky. Let one scene break the grid. Give the memory anchor moment 2x the animation investment of other scenes.
The gap between a forgettable promo and a memorable one is not technical complexity — it's creative courage. Make bold choices and execute them with precision.
Weekly Installs
73
Repository
GitHub Stars
325
First Seen
Feb 12, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
gemini-cli72
codex72
opencode72
kimi-cli71
github-copilot71
amp70
通过 LiteLLM 代理让 Claude Code 对接 GitHub Copilot 运行 | 高级变通方案指南
44,900 周安装
Umbraco单元测试指南:使用@open-wc/testing测试后台扩展与Lit元素
72 周安装
OpenClaw沙盒防护配置生成器 - 安全隔离不受信技能的Docker沙盒方案
195 周安装
LLM错误分析指南:如何系统化诊断和分类AI流水线故障
194 周安装
Nansen 持币者分析工具:评估代币持有者质量,识别聪明钱与散户信号
195 周安装
Symfony端到端测试工具:Panther与Playwright集成,实现自动化E2E测试与TDD开发
198 周安装
Microsoft Agent Framework:开源AI智能体与工作流平台,支持Python/C#跨平台开发
195 周安装
| "25 seconds" |
| Resolution | No | 1920x1080 | 1080x1080 for square |
| FPS | No | 30 | 60 for social media |
| Visual style | No | Apple Minimal | Apple Minimal / Bold Typography / Dark Tech / Warm Organic / Retro Pop / Editorial Mono |
| CTA text | No | None | "Start Creating →" |
| Color accent | No | From style preset | "#FF7D00" |
SPRING.rubberSPRING.gentle / SPRING.molasses, warm gradients, rounded shapes, slow stagger (6-8 frames)SPRING.wobbly / SPRING.rubber, extreme overshoot, GridStagger center-out, bright accents| textReveal, SplitScreenComparison |
| Long (1.2s) |
| Warm + Warm Organic | Slow (3-5s) | gentle / molasses (stagger: 8f) | Minimal GSAP, prefer spring-only | Long (1.5s) |
| Rebellious + Retro Pop | Irregular | stiff + rubber alternating | ScrambleText, glitch effects | Variable |
| Playful + any | Bouncy (2-3s) | wobbly / pop (stagger: 3f) | Minimal GSAP, SpringTrail + GridStagger | Medium (0.8s) |
| Remotion: interpolate() |
| Number counter (overshoot) | spring: SpringCounter |
| Bouncy scale entrance | spring: ScalePop |
| Staggered list/grid reveal | spring: SpringTrail / GridStagger |
| Enter + exit animation | spring: useSpringEnterExit |
| Sequential orchestration | spring: useSpringChain |
| Typing effect | Remotion: .slice() + interpolate() |
| Scene transition (wipe/iris) | gsap: circleReveal / wipeIn effect |
| Scene transition (spring slide) | spring: SpringSlide / SpringCrossfade |
| Logo stroke draw | gsap: DrawSVG + drawIn effect |
| Feature grid pop-in | spring: SpringFeatureGrid |