/stickman
将一个主题转化为完整的火柴人电影,完全通过代码生成:平面2D角色、黄昏色调、电影级运镜和真实音效。该技能涵盖四种输出:视频、画外音脚本、YouTube标题和缩略图提示。
它可以在Claude能运行代码的任何环境中工作,包括Claude免费计划。无需付费工具,也无需使用AI图像或视频工具。ElevenLabs仅为可选项,仅用于画外音。如果没有MP3,技能会使用免费的、内置的开源语音(scripts/tts.py,参见references/free-voice.md)直接朗读脚本,因此一部有旁白的电影完全不需要ElevenLabs。
以下所有内容均相对于此技能的文件夹(即包含此文件的文件夹)。请一次性找到其绝对路径,并在每个脚本中使用它。在Claude Code中,该路径为${CLAUDE_SKILL_DIR}。在下面的命令中将其称为SKILL。使用python3,在Windows上使用python。
第1步:明确用户需求
用户可能想要整个套件或仅其中一部分。只做被要求的部分:
| 请求 | 操作 |
|---|---|
| 故事创意 | 执行下面的“故事创意”,然后停止 |
| 制作视频 | 执行第2-6步 |
| 编写画外音脚本 | 阅读references/script-playbook.md,交付脚本,然后停止 |
| 将脚本转化为画外音 | 阅读references/free-voice.md,运行tts.py,交付vo.mp3,然后停止 |
| 标题或缩略图 | 阅读references/packaging-playbook.md,交付配对,然后停止 |
| 完整套件 | 脚本,然后视频,然后标题和缩略图提示 |
故事创意
如果未说明长度,请先询问视频应该多长。然后提供5个创意,按编号排列,以便用户可以通过编号选择一个。每个创意包括一个简短名称、一句描述发生什么的简单句子以及结局。使每个创意适合该长度:20秒以下意味着一个角色和一个简单的转折。创意必须易于使用references/engine.md中的内容进行动画制作,并且每个创意必须是原创的。之后,“制作创意3”即指该创意。
第2步:构建前先询问
除非请求已经明确说明,否则请在一次消息中一起询问以下问题,如果存在提问工具则使用它。跳过任何已经回答的问题。如果无人回答,则使用默认值并说明。
- 风格: 2D还是3D?默认2D。两者使用相同的外观。3D会添加围绕场景的真实摄像机移动。
- 长度: 多长?默认30秒。如果有MP3,画外音决定长度。
- 画外音: 是或否?如果附带了MP3则跳过此问题。如果是,用户提供MP3及其脚本文本,或者要求你为ElevenLabs编写脚本并随后提供MP3。不需要SRT文件。或者,当没有MP3时的默认选项:免费内置语音朗读脚本(用户的或你编写的),因此用户无需离开聊天。仅当用户关心时询问使用哪个语音;
references/free-voice.md中有试听。 - 音效: 是或否?默认为是。
- 背景音乐: 是或否?默认为否。如果是,则使用用户上传的音轨(如果有),否则使用代码生成的音乐背景。
- 故事板: 你想先看到一个故事板吗?除非请求已明确说明,否则始终询问此问题。如果无人回答,则跳过。
不要假设音乐、音效或语音。安静的房间氛围不是音乐。
第3步:设置
python3 SKILL/scripts/doctor.py
python3 SKILL/scripts/new_film.py film # 添加 --3d 用于3D
doctor.py会安装任何缺失的组件。如果Chromium完全无法运行,请转到“如果渲染不可行”。
免费语音: 在规划之前立即生成它,因为语音决定了时间。将脚本保存为film/script.txt,然后运行python3 SKILL/scripts/tts.py film film/script.txt --voice am_michael,并在film/audio_mix.py中设置VOICE = "vo.wav"。详情参见references/free-voice.md。
然后按以下顺序阅读:
references/style-bible.md:外观和不可违反的规则。references/production.md:快速路径和已知陷阱。references/engine.md:工具包,以便重用而非重绘。references/film-craft.md:用于无台词或短片的叙事与镜头。
同样相关的文件(按需阅读):references/script-playbook.md用于编写脚本,references/free-voice.md用于免费内置语音,references/voiceover.md用于MP3,references/sound.md用于混音,references/symbolic-beats.md用于约一分钟或更长的影片,references/3d.md用于3D。
第4步:规划电影
在编写任何绘图代码之前写下这些内容,因为在代码内部进行规划会产生幻灯片,而不是电影:
- 一句话,让一个分心的观众也能理解。
- 一个节拍表,每个节拍包含一个动作、一种情感、一个摄像机和一种声音。
- 一个世界: 一个包含每个角色和道具固定位置的列表。每个镜头只是这个世界上的一个摄像机。
- 一个镜头列表,使用帧数而不是秒数。目标为每30秒8-11个镜头,并包括一个展示地理格局的全景镜头。
- 如果要求了完整套件,则确定缩略图时刻,以便它作为一个真实场景存在。
如果要求了故事板,请在渲染前按照第5步中的“故事板”进行操作。
第5步:构建
- 替换
film/film.js,保留引擎文件。从starter影片中的模式开始。 - 在最繁忙的时刻检查静帧,并查看图像:
python3 SKILL/scripts/stills.py film sheet.jpg 1 4.5 9 ...。通常需要两轮。 - 故事板(如果要求)。 运行
python3 SKILL/scripts/storyboard.py film。它会生成film/storyboard.jpg,每个镜头一个编号的预览,由与最终影片相同的代码绘制。向用户展示一个表格,每行一个镜头(镜头、时间、发生了什么、摄像机、声音),并展示或发送图像。如果无法在此处显示图像,请发送文件,或者仅提供表格并说明。然后停止并等待。根据用户要求修改影片,如果改动较大则重新运行故事板,并且只有在用户批准后才渲染。 - 编辑
film/audio_mix.py中标记的代码块以匹配声音简报。 - 使用一个命令渲染、混音、合并并进行审计:
python3 SKILL/scripts/build.py film --out my-film.mp4
如果环境限制命令时间,则在后台运行此命令并进行轮询。再次运行相同的命令会继续,因为每个镜头都是独立的文件。修复后,使用--shots 3 7仅重做这些镜头,或使用--audio-only仅重新混音。
第6步:检查,然后交付
build.py结束时进行审计。修复每个问题,或说明为什么某个被标记的时刻是有意为之。然后查看film/contact_sheet.jpg,它来自编码后的文件。人工检查以下内容,因为审计无法做到:
- 面部表情传达了预期的情感,眉毛没有意外地显得愤怒。
- 手触摸到所持物体,并且没有物体遮挡面部。
- 每次行走时手臂以正确的方式弯曲。
- 门先打开,然后角色走进去。
- 角色在镜头间与物体的距离保持一致。
- 没有任何装饰性圆形。
交付MP4并附上简短说明。坦率地说你无法听到混音效果:你进行了测量,因此用户应该自己听。不要声称执行了未运行的检查。如果用户要求了标题和缩略图,则添加来自包装手册的配对。
如果渲染不可行
如果没有可用的代码执行环境或浏览器,请在可能时运行python3 SKILL/scripts/bundle_player.py film,它会生成一个包含式HTML文件,用于播放影片并录制实时WebM。如果你什么都不能运行,请说明缺少什么,并提供脚本、标题和缩略图提示(这些不需要渲染)。切勿将WebM重命名为MP4。
原创性规则
用户分享的参考视频、标题、缩略图或文字稿仅用于一般模式:长度、措辞、结构、节奏。切勿复制或保存他人作品的任何具体内容,也切勿重复使用任何一个前提、角色、情节、台词或外观。每部影片都必须有自己的故事。