我用 1 条 claude opus 提示词干掉了 the infographics show
现在又完全用代码做出了一部完整的 10 分钟故事视频
顺便说一句,AI 视频生成花了我 $0
我把它整理成了提示词,你可以免费使用,制作任何你想做的主题,玩得开心 ↓
<inputs>
询问我的主题和脚本。如果我没有脚本,就根据我的主题写一份。
询问我使用哪种图像模型:GPT Image 2,或任何支持参考图、能输出 2K-4K 图像、每张约 $0.03-0.05 的模型。
询问我使用哪种语音:ElevenLabs,或免费的 Kokoro。
在生成全部内容之前,先给我看一次视觉测试:一张 plate、一张已抠图并完成绑定的角色设定表,以及一个带有打字效果、标签和会说话、会指东西的角色的 10 s shot。等待我的 OK。
</inputs>
<look>
一部 1920x1080 动画解说片,风格参照大型扁平矢量信息图频道。
- 每一句旁白都由卡通人物在完整的插画场景中演出来。
- 所有运动都由代码实现。不使用 AI 视频生成,只用少量静态图,由代码切分、绑定并制作动画。
美术:
- 扁平色块,绝对不要描边,最多使用一种稍深的纯色阴影来表现形体,采用简单几何形状和清晰边缘。
- 低饱和配色:灰雾蓝、石板青、暖米色、海军蓝、柔紫色。鲑粉色皮肤、大圆脑袋、点状眼睛、小身体。
- 氛围来自 plate 自身的光线:日光、冷蓝色夜景、温暖的室内灯光。
代码配色:
- 墨色 #2b2d42、红色 #d62828、橙色 #f4a261、金色 #f6b93b、绿色 #2fb37a、海军蓝 #1f2a48
- 标题番茄红 #e2552f 和紫色 #5b3fa6
- 灰色标签 #8a8c9c、白色卡片 #ffffff
- 字体:Montserrat 800-900(Google Fonts),卡片和标牌上全部使用大写字母。
节奏:
- 每 3-4 s 换一个新场景,每分钟约 10 个场景。
- 每 2 s 出现一个新元素:标签、印章、走进来的人、数字。
- 静止画面绝不持续超过 1 s。任何角色都不能一动不动。
禁止:
- 描边、漂浮在画面上的亮面 UI 面板、emoji、烧录字幕
- 任何频道的标志或名称、真人照片
- 场景本身能承载的信息,却写在纯色卡片上
</look>
<art>
总计约 60 张图($2-3)。
每条提示词都必须逐字以这段风格核心开头:
“扁平矢量插画,与参考图采用完全相同的美术风格:任何地方都不要描边或线稿,每个形状都用扁平纯色填充,最多使用一种稍深的纯色阴影来表现形体,简单几何形状,干净清晰的边缘,无渐变、无纹理、无绘画式光照。低饱和现代配色:灰雾蓝、石板青、暖米色、海军蓝、柔紫色、鲑粉色皮肤。无文字、无字母、无数字、无标志。”
然后添加一行锁定场景设定(“场景设定为 [time, place]:[materials, light sources],除非另有要求,不得出现其他时代的事物”)。输入参考频道的 3-5 帧作为风格参考,并裁掉其标志。
1. Hero plates,约 24 张,每张都是完整的 16:9 图像,用于需要 zoom into 或反复回到的场景。
- EMPTY:“没有人、没有角色、没有动物”。
- Straight-on,中间留出供角色站立的开阔地面。
- 标牌、板子、屏幕和纸页留白,稍后由代码写入内容。
2. Quad plates,约 19 张,提供另外 76 个场景。把 4 个场景装进一张图:
“图像为 2x2 网格,包含四个完全独立的场景,每个场景恰好占据图像的四分之一(每个四分之一自身都是一张 16:9 图片),由笔直、纤细的纯白色间隔分开,一条垂直贯穿正中央,一条水平贯穿正中央。”
- 然后描述 TOP-LEFT、TOP-RIGHT、BOTTOM-LEFT 和 BOTTOM-RIGHT 场景。
- 沿中心附近最亮的白色行和列拆分每张四宫格,只要该行或列的白色占比仍超过 60%,就继续向外扩展,再多裁掉 6 px。
- 将每个小图裁为 16:9、1920x1080。
- 物体 close-ups 很适合做小图:桌子、屏幕、文件、一盘食物、金库。
3. 主要角色,2-3 个。为每个角色写一份固定描述(年龄、头发、面部、每件衣物及其颜色),并逐字粘贴到每张设定表中。
- 基础设定表:6 个视图。(1) 正面,中性表情,不画手臂,只在手臂连接处保留圆润光滑的肩部连接点;(2) 相同的无臂正面,换一种表情;(3) 向右行走的 side view;(4) 背面;(5) 和 (6) 脚本需要的两个姿势。
- 表情设定表:6 个无臂正面(充满希望、厌恶、惊恐、筋疲力尽、生病、震惊,或脚本所需的其他表情),以基础设定表为参考。
- 姿势设定表:6 个带道具的完整姿势(坐在桌前打字、睡觉、吃饭、奔跑、签字、跌倒),以基础设定表为参考。
4. 其他人物:每张角色表包含 4-6 人,每人都画成其 shot 所需的准确姿势;每张人群表包含 8-10 个小人物;另做道具表。
- 每张设定表:“使用纯色平涂 chroma green 背景(#00B140),人物之间留出大量空白绿地;彼此不接触,任何角色或物体上都不能有绿色,全身完整,边缘不得截断任何部分”。
5. 缩略图美术:使用相同角色,采用更浓郁饱和的卡通光照和极端情绪,顶部四分之一留空,无文字,以基础设定表为参考。
</art>
<rig>
抠图:
- 背景是所有与边界连通、G - max(R,B) 超过 40 且与绿色中位值相差不超过 110 的像素。只从边界开始抠色,否则深色衣服会被误抠。
- 添加 2 px 的柔和 alpha 过渡带,并在带内将 G 限制为 max(R,B) + 6,以消除绿边。
- 按人物分组各部件并去掉杂点。为每个 sprite 命名,并向我展示带名称的 contact sheet。
无臂正面人物变成木偶:
- 在颈部切分头部:取头部下方最窄的 alpha 行。
- 找到两个肩部连接点和眼睛区域。
- 用身体自身的颜色补绘头部下方的空洞,确保点头时不会露出缺口。
- 将所有信息写入 rig.js:尺寸、颈部、连接点、眼睛区域、皮肤 RGB、袖子 RGB。
- 手臂:上臂 L1 约为人物高度的 0.13,下臂 L2 约为 0.12,粗细约为 0.04。肘部以上使用袖子颜色,前臂使用肤色;手臂位于身体后方时,袖子颜色变暗为原来的 0.82x;端点和连接处采用圆角。
- 手:三种连指手套形状(连指、张开、握拳),另加一种伸出单指的指向手势。
- 手臂姿势:每种姿势都是相对肩部的手部目标位置,以 L = L1 + L2 为单位,通过 two-bone IK 求解(有两个符号时,第一个对应左臂)。
- down: (∓0.04, 0.97)
- rest: (±0.1, 0.9)
- hips: (∓0.42, 0.55),握拳
- point: 右手到 (0.86, -0.32)
- present: 右手到 (0.75, 0.25),张开
- shrug: (∓0.62, 0.12),张开
- up: (∓0.32, -0.9)
- 双手抱头
- chin: 拳头放在颈部
- hold: (±0.42, 0.45)
- wave: (0.5, -0.75)
- stop: (0.55, -0.1)
- cheer: (∓0.55, -0.75),握拳
- 姿势切换时,在 0.3-0.5 s 内以 ease-in-out 在两个目标之间混合过渡。
- 侧面、背面和姿势 sprite 保持完整图像。只有头部转动,绘画或打字的手抖动 ±6 px。
</rig>
<animation>
使用一个 HTML canvas,每一帧都是时间 t 的纯函数:window .seek(t)、READY、END,以及 EV,一个按名称记录声音事件的列表。
- 每个 shot 都与旁白绑定:S('exact words', fn) 在对应短语前 0.08 s 开始一个 shot。重复词语按出现次数查找。
- 每个 shot 一个函数,每章一个 shots 文件。
运动基础函数(Δ = t - start):
- pop: 0.3 s back-ease 超调,1 + 2.9(p-1)^3 + 1.9(p-1)^2。
- spring in: 1 - e^(-6.5Δ) cos(13Δ)。
- kick on impact: 1 + 0.1 e^(-10Δ) cos(22Δ)。
- shake: x = A e^(-8Δ) sin(61Δ), y = A e^(-8Δ) cos(47Δ)。
- 退场在 0.25 s 内以 ease-in 缩小。元素以弹簧、挤压或白色烟团效果入场,绝不用简单淡入。
Camera:
- camP(plate, zoom, fx, fy) 将视野保持在 plate 边界内。
- 每个 shot 都以 ease-in-out 从一个 [zoom, fx, fy] 移到另一个,采用 2-4% push 或缓慢 pan,让画面始终有运动。
- plate 及其上的所有元素都在同一个 camera transform 中绘制。
- 四宫格小图的 zoom 保持在 1.33x 以下。只有 hero plates 可以 zoom 得更深。
转场:
- Push: 旧 shot 向左滑出,新 shot 从右侧滑入,持续 0.24 s ease-in-out,并提前 0.02 s 播放 whoosh 音效。
- 章节泼溅:一个 #f4f1fb 色块在 0.2 s 内覆盖屏幕,再在 0.2 s 内清空。它由一个 1,250 px 圆、按黄金角间隔分布的 12 个大型卫星色块,以及更外围的 10 个小液滴组成,入场时向左偏移 120 px,退场时向右偏移 140 px。
角色,每一帧都鲜活:
- 呼吸:缩放 1 + 0.009 sin(2.3t)。
- 点头:0.025 sin(2.1t) rad;该角色说台词时,使用 0.025 sin(7t) + 0.02 sin(11.3t)。
- 眨眼:每 2.7-4.2 s 一次,每个人物使用独立随机种子。在 0.14 s 内,用肤色覆盖每个眼睛区域,并画上弯曲的睫毛线。
- 行走:
- 以 |sin| 上下起伏,幅度为人物高度的 2.2%,身体摇摆 ±0.035 rad。
- Side-view 行走 sprite 每个步态周期移动 1.5 倍腿长,避免脚底打滑。
- 以弹簧效果入场,有时伴随小跳。恐惧表现为快速抖动(sin 70t)。惊讶表现为跳起并弹出橙色“!”。
- 每个人物脚下都有柔和的椭圆接触阴影。Night shots 用 brightness(1 - k) 将人物调暗,使其与 plate 匹配。
- 屏幕上的每个角色都要配合自己的台词行动:指向被提及的东西、展示它、耸肩、欢呼、抱头。
</animation>
<graphics>
文字只出现在场景中的物体上,逐字打出:每秒 28 个字母(短标签为 34 个)。每个字母起始为 1.45x 大小、向右偏移 0.7 em,在 0.18 s 内以 ease-out 归位。
完整组件:
- 板子:白色圆角板(半径 20),以弹簧效果下落 420 px,并摆动 0.25 rad 到位;或立在木桩上,从 -1 rad 向上摆起。
- 柔和投影(模糊 22、y 8、22%),底边带一条略深的细带。
- 各行文字间隔 0.3 s 打出。
- 日期卡:左上角 (70, 70),白色,高 120 px,宽至少 330 px,圆角半径 18。橙色日历图标,26 px 灰色“DATE:”,日期以 44 px、字重 900 打出。在 0.32 s 内弹入。
- 地点卡:同样的卡片,搭配红色地图定位图标和“PLACE:”。
- 标签:一条 6 px 线,物体端带圆点,在 0.2 s 内画出,然后在线的末端弹出圆角胶囊标签(文字 40 px、字重 900)。胶囊采用墨色、红色、金色或橙色。
- 数字卡:白色卡片,带灰色小标签和红色大数字。长数字像计数器一样以 ease-out 滚动增长。
- 红叉:两条端点圆润的 30 px 笔画,每条用时 0.11 s,间隔 0.01 s,带柔和阴影。每个错误想法上都画一个。
- 印章:红色文字,双层圆角边框,倾斜 -0.12 rad。在 0.14 s 内从 2.1x 猛压到 1x,随后震弹。
- 横幅:全宽标题带,番茄红或紫色底、92 px 白色大写字母,旋转 -0.02 rad,在 0.22 s 内从左侧滑入。
- 对话气泡:白色,圆角半径 36,带尾巴。思考云:一个胶囊形加两个小圆。
- 困惑角色头顶上下浮动、左右摇摆的橙色“?”,以及弹出的橙色“!”。
- 白色烟团和噗散云、速度线、浅蓝色汗滴、硬币和纸钞、柔和 vignette,以及用于营造氛围的色调。
- 只要场景里有留白的板子、屏幕和纸页,就在 plate 自带的这些物体上写字。先在 plate 的网格叠加图上测量留白区域的矩形。
</graphics>
<voice>
- ElevenLabs:低沉、温暖的美式纪录片旁白,eleven_v4、stability 0.5、similarity 0.75、style 0、speaker boost,使用 timestamps endpoint。
- 每分钟约 170-180 词,使用语音自身的速度设置(1.0-1.1)。绝不要用 atempo 加速:会变成花栗鼠音。
- 长脚本在章节分界处拆成 3 段,传入前后文,让朗读保持连贯。
- 将超过 0.24 s 的停顿缩短为 0.16 s,章节之间保留 0.5 s,开头加 0.3 s 引入时间。
- 根据对齐结果重建单词时间,写入 words.js。
- 在制作画面之前,对结果运行 faster-whisper,并与脚本进行 diff 比对。
- 免费方案:Kokoro,然后用 faster-whisper 获取单词时间。
</voice>
<sound>
- 音乐:来自 Pixabay 的 2-3 首免费纪录片配乐,在重要节拍处用 3 s 交叉淡化衔接。
- 旁白出现时压低音乐(30 ms attack、0.3 s hold、0.45 s release),章节间让音乐重新渐强。
- SFX 来自 Mixkit,每个事件一个,按峰值对齐,在有说话声时降低 6 dB:打字时用打字机滴答声,push 和泼溅时用 whoosh,标签和卡片用 pop,印章用 thud,每个红叉用 hit,对勾用 ding,另加符合场景的声音。
- 验收门槛:说话期间,旁白比音乐加 SFX 高 15+ dB(以 100 ms 帧的中位数计算),背景比旁白更响的帧占比低于 1%。
- 两遍 loudnorm 处理到 -14 LUFS,true peak -1 dB。
</sound>
<build>
1. 工具:Python、搭配 Chromium 或 Edge 的 Playwright、FFmpeg、faster-whisper、OpenCV、Pillow、numpy。安装缺少的工具,并告诉我安装了什么。
2. 顺序:
- 视觉测试
- 分批制作美术,每批之后提供 contact sheet
- 抠图和绑定
- 语音和单词时间
- 逐章制作 shots
3. 任何完整渲染前都要检查:每章一张 contact sheet,每 2 s 取一帧。修复:
- 空白或文字溢出的标牌
- 文字遮脸
- plate 的黑色边缘
- 双脚悬空
- 连续两个 shots 位于同一场景
- 任何连续 4 s 没有新元素出现的片段
4. 以 30 fps 渲染,在半帧时间内使用 4 个 motion-blur 子帧,通过管道将帧送入 libx264 CRF 16-18。
- 将长视频分到 4-6 个并行浏览器页面中渲染,再拼接各部分。
- 扫描结果中的单帧跳变,检查每一次是否都是计划内的 cut。
</build>
<gotchas>
- 场景太少会显得敷衍。同一张 plate 停留 30 s,上面叠卡片,看起来很廉价。按每分钟约 10 个新场景安排。
- 有些图像模型会忽略“不要手臂”。GPT Image 2 会遵守。
- 将同一份角色描述粘贴到每张设定表,并重新输入基础设定表,否则面孔和服装会漂移。
- 四宫格小图宽度只有约 1920 px。push 超过 1.33x 会显得模糊。
- 已经画有人物的 plates 无法制作动画。要求 EMPTY,并在切图前检查。
- 漂浮在画面上方卡片里的文字看起来像幻灯片。把字写进场景里。
- 长时间渲染会崩溃。分成可重跑的部分渲染,每次大幅修改前都备份 shot 文件。
</gotchas>
<start>
询问我的主题、脚本、图像模型和语音,然后制作视觉测试。
</start>