Communitygithub.com

nnesu/animated-shorts

制作一个垂直的卡通故事短片(约40-90秒),采用“2D卡通角色在绘制的3D世界”风格,包含旁白、免费CC0音效和场景音乐,使用 three.js 内嵌 Remotion 渲染为 1080x1920。当用户要求制作“像桥那个视频”、“那种卡通3D风格”的历史/科学故事短片,或说“使用卡通短片技能”时使用。

animated-shorts 是什么?

该技能(nnesu/animated-shorts)指导AI根据用户提示制作完整的垂直故事短片,时长约40-90秒,分辨率为1080x1920,帧率30fps。视频风格为“2D卡通角色在绘制的3D世界”,并且必须使用 three.js 和 Remotion 渲染。它支持使用免费CC0音效和场景音乐,以及旁白。整个流程包含一个结构化流水线:从事实研究、脚本撰写、旁白生成,到道具收集、镜头规划、场景构建,直至最终渲染、混合和QA。该技能包含严格的规则:不得包含字幕或标签,保持清晰一致的旁白语气,确保每个镜头都隐藏地平线,并填充丰富的场景。技能要求用户进行两次明确审批(脚本审批和最终定稿审批),其余步骤由AI独立完成。它需要特定的开发环境(Bash、Python脚本)和文件结构(在项目src/videos/下)。此外,还有一套全面的参考文档(QA.md、SOUND.md、RENDER.md、API.md、GOTCHAS.md、LOOK.md)来指导AI的每个步骤。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/nnesu/animated-shorts/tree/HEAD

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

卡通3D故事短片(three.js + Remotion)

命令从项目根目录运行,使用 Bash(而不是 PowerShell)。references/ 和 templates/ 相对于此技能;SK = .claude/skills/cartoon-3d-short。

已完成的短片位于 src/videos/ 中,切勿编辑。不要通过阅读它们来学习代码:references/API.md 是地图。

references/STYLE_BIBLE.md 和 references/reports/ 是来自其他渠道的学习材料。切勿复制该渠道的脚本、角色或镜头,切勿在旁白或描述中提及该渠道名称。

规则

  • 无字幕或标签。仅限英语。保持一致的语音语调。笑话必须是经过研究的事实。
  • 每个镜头都必须用建筑物、树(树干间隙有2-3米灌木丛)或远处的山丘来隐藏地平线。只填充摄像机看到的内容。场景要丰富:拥挤的人群、装饰品、纹理、旗帜。
  • 最终导出为 1080x1920,30帧/秒,切勿使用 --scale。
  • 混音:旁白、低于旁白约6dB的免费CC0音效、在旁白下方回避的场景音乐提示(切不可使用单一连续音轨),整体混音为 -15 LUFS。
  • 免费、无版权的SFX和3D模型的一般审批:检查文件页面上的许可证,跳过署名/非商业/相同方式共享,在 _sfx/LICENSES.md 中记录,说明获取的内容和大小。在询问登录、付款、其他下载或运行未安装的软件包之前,请先询问用户。
  • 定稿检查清单(references/QA.md):在第一套完整定稿上使用 Opus-medium 代理,并在渲染前再使用一次;期间自行重新检查;然后用户批准定稿。绝对分数不是关口。
  • 修复仅重新渲染更改的块(--redo),切勿重新渲染整个视频。
  • 每个步骤后保存。为用户设置两个暂停点:脚本审批,以及最终渲染前的最终定稿审批。否则,无需询问即可继续工作直到交付。

流水线

  1. 主题和事实。 一个有视觉、物理因果关系的令人惊讶的真实故事,加上一个日常类比。带有来源的事实放在 src/videos/<name>/SCRIPT.md 的顶部。
  2. 脚本。 长度遵循故事发展。字数 = 秒数 x 字/秒,根据所选语音的一个句子样本测量(无样本:假设为3字/秒,并在录制后检查)。节拍:钩子(一个荒诞的事实,一行),背景设定(年份,地点,骄傲),动作(3-4个逐步升级的节拍),转折,面无表情的评论(“幸运的是... / 不幸的是...”),解释(一个想法,日常类比),后果,回调转折。永远不要描述观众已经看到的内容。仅限布局:templates/SCRIPT_example.md。在此处停止,直到用户批准脚本。
  3. 语音。 用户将录音生成到 _voiceover/<name>/voice_raw.wav。然后运行 python scripts/voice_trim.py _voiceover/<name>/voice_raw.wav _voiceover/<name>/voice.wav 和 python scripts/words_whisper.py _voiceover/<name>/voice.wav _voiceover/<name>/words.json。所有内容都根据 words.json 计时:切勿直接阅读它,而是将其打印为 word@frame,并使用一个简短脚本修复错误的单词。根据 kept pauses 行进行操作(references/GOTCHAS.md “语音”部分)。
  4. 视频文件夹。 将 templates/starter/ 中的四个文件复制到 src/videos/<name>/,将 Short.tsx 重命名为 <Name>.tsx,并重命名其中的 StarterShort / STARTER_FRAMES,在 src/Root.tsx 中注册该合成。它们只包含故事数据加上一个标记为 EXAMPLE 的2镜头演示;引擎在 src/shared/ 中。在编辑前阅读 references/API.md。如果 src/shared/ 或 scripts/ 缺失或缺少文件,请从 templates/shared/ 或 templates/scripts/ 复制。
  5. 道具扫描。 对于每个节拍,grep public/kenney/INDEX.txt 并将选取的道具表记录在 src/videos/<name>/PROPS.md 中。缺少道具:获取一个免费的CC0包(references/GOTCHAS.md)到 public/kenney/<pack>/,追加到 INDEX.txt,将 <pack>/<model> 添加到 world.ts 的 KENNEY 中。
  6. 在 story.ts 中的镜头规划:TOTAL = ceil(语音秒数 x 30),然后是 SHOTS、XFADE、FLASH_AT、CAMS、KICKS、DOF_V2。视觉反应应当在其对应的单词之前0-3帧出现。每个停顿镜头都有微妙的移动。每个循环运动都有明确的切换时间。
  7. 通过替换 EXAMPLE 部分来构建镜头。 房屋外观已内置在引擎中(references/LOOK.md);切勿为了单个视频而编辑 src/shared/。
    • 世界(world.ts):场景、道具、材质、pose() 中的移动道具。天空、灯光、城镇、港口、太阳和视距剔除来自引擎。对于主要道具,在 prop() 中传递 keep = true。
    • 角色(cast.ts):服装和每个舞台化的一个 stage() 案例。卡片、轮廓、眨眼和阴影来自引擎。
    • 合成(<Name>.tsx):名称和 poolShots 仅此而已。后期处理链(墨迹、镜头模糊、辉光、色调映射、调色)在引擎中。
  8. 定稿检查,在任何长时间渲染之前(references/QA.md):每个镜头中间帧的定稿,脚本检查,代理检查,修复和自检,第二次代理检查,修复和自检。在此处停止,直到用户批准定稿。
  9. 音效准备(references/SOUND.md):_sfx/<name>_events.json 中的SFX事件,_sfx/<name>_music_cues.json 中的音乐提示。
  10. 最终渲染(references/RENDER.md):REMOTION_TMP=C:/remotion-tmp node scripts/render_chunks.mjs <Comp> out/<name>/video.mp4 <TOTAL>。
  11. 混音和QA。 组装音乐(music_cues.py,参见 references/SOUND.md),然后运行 python SK/templates/audio/build_mix.py _voiceover/<name>/voice.wav out/<name>/video.mp4 out/<name> _sfx/<name>_events.json [_sfx/<name>_music.wav] 写入 video_final.mp4。然后运行 python scripts/bridge_shots.py src/videos/<name>/story.ts out/<name>/shots.json 和 python scripts/short_qa.py out/<name>/video_final.mp4 out/<name>/qa out/<name>/shots.json --voice _voiceover/<name>/voice.wav,必须退出码为0。使用 render_chunks.mjs ... --redo A-B,C-D 修复,然后再次混音和QA。用户对最终视频的备注:references/QA.md “用户审查”部分。
  12. 交付。 发送 video_final.mp4(超过30 MB:提供一个较小的预览版加上路径),删除 C:/remotion-tmp 中此短片的包文件夹,更新记忆。

参考文件

文件何时阅读
references/QA.md定稿检查、检查清单提示、short_qa
references/SOUND.mdSFX库、音乐提示、混音
references/RENDER.md渲染设置、补丁循环、恢复
references/API.md在编辑起始文件之前:什么放哪里、函数签名
references/GOTCHAS.md语音、道具和场景、取景陷阱、此PC
references/LOOK.md房屋外观值、相机和角色规则
references/LOOK_MATCH.md仅用于原始参考外观或外观匹配传递
references/house/GRADER_PROMPT.md成对A/B比较,仅在更改外观时使用

更改技能本身(文档、起始文件、引擎、脚本):首先阅读 MAINTAINING.md。

相关技能