角色与圣经
所有内容在各项目间复用,因此值得一次性做好。
角色 (bible/characters/<id>/)
character.json 字段:id、name、species、look(一个密集的句子:身体、面部、头发/皮毛、衣橱、一件标志性配饰,以及每个显眼标记的名称:雀斑、痣、疤痕、眼镜、耳环。提示检查会拒绝任何遗漏了这些标记的视频提示,而身份评估会在每次拍摄中检查每一个标记)、traits、flaw、role(正经人 / 古怪角色 / ……)、voiceDesc、voice、sheets。
- 角色表: 一张 3:2、2K 的图像,在纯色背景上展示正面、四分之三侧面和全身。
node engine/gen.mjs still "<角色表提示>" bible/characters/<id>/sheet.png --ar 3:2 --size 2K模板:"Character reference sheet on a plain warm cream (#F2E5D5) studio backdrop, photoreal, 35mm film look, soft even key light. The same character shown three times side by side: (1) front view, (2) three-quarter view, (3) full body. Character: . Identical wardrobe and markings in all three views. No text, no labels." 自己查看结果。对于错误的解剖结构、不匹配的视图、文字,重新生成。当一个视图不好时,使用 ffmpeg 裁剪而不是花钱重新生成。 - 语音:
voice.id:一个由 Kie 提供的 ElevenLabs 预设(列表见engine/voices.txt,预览地址https://static.aiquickdraw.com/elevenlabs/voice/<id>.mp3)。可选的语言覆盖voice.en/voice.es。voice.eleven:用户自己 ElevenLabs 账户上的一个语音,当 Kie 的端点失败时使用。免费计划只能使用预制的语音:onwK4e9ZLuTAKqWW03F9(Daniel, British)、TX3LPaxmHKxFdv7VOQHJ(Liam, young)、JBFqnCBsd6RMkjVDRZzb(George, warm British)、EXAVITQu4vr4xnSDxMaL(Sarah)、pNInz6obpgDQGcFmaJgB(Adam)。voice.sampleText.{en,es}:约 8 秒的角色台词。node engine/gen.mjs sample <id> --lang en写入voice-en.mp3。Seedance 将其用作@audioN,因此语音在每个镜头中保持不变。
- 将一个动作或口头禅添加到
traits。 - 审批(流程 v5 角色门禁): 向创作者展示角色表、外观和语音样本;得到他们的同意后,运行
node engine/studio.mjs approve-character <id> --said "<他们的话>"(或cast.mjs approve用于风格内角色表)。使用continuity.mjs <slug> --identity <take> --lock-anchor从他们批准的拍摄中锁定面部锚点。
写实风格:原生参考(修复了“贴纸”外观的规则)
图像模型合成一张工作室参考照片到场景中,保留其姿势和光照,因此角色看起来像是粘贴进去的。对于任何写实风格:
- 首先制作空的场景底板。
- 在场景内仅通过文本生成每个角色(仅将场景底板作为参考),使用 Nano Banana Pro 以 2K 分辨率生成:"a frame grab ... a real, normal-sized <animal/person> ... lit by the same light as the room, soft shadow on the floor, same video texture ... not composited"。服装必须描述为契合不完美的真实服装("loose, bunches at the shoulders")。
- 从该帧中裁剪出角色 →
ref-native.png,设置"refs": ["ref-native.png"]。工作室sheet.png仅作为设计参考;切勿将其输入到镜头中。 - 使用写实的尺度词汇("normal-sized house cat, small next to the furniture")和自然的动物姿势。
写实角色除了风格内角色表外,最好还有一个原生参考(
bible/characters/<id>/ref-native.png)。
场景 (bible/sets/<id>/set.json)
look(一个密集的句子)、plates(至少一个宽幅 9:16 的空场景底板)、geography(物体位置,以及谁站在画框的哪一侧)。
node engine/gen.mjs still "<风格字符串> wide establishing shot, empty of characters. <look>. No text, no people." bible/sets/<id>/plate-wide.png --size 2K
风格内角色表(阶段 3,当前方法)
node engine/cast.mjs sheet <char> --style <style> --set <set> 以该风格创建一个 2x2 角色表(写实风格:在场景底板内拍摄),将其拆分为 front、threeQuarter、profile 和 full 视图,放在 bible/characters/<char>/<style>/ 下,并记录在 character.json → looks.<style> 中。审查并评分:cast.mjs approve <char> --style <style> consistency=N anatomy=N design=N style=N layout=N。被拒绝的角色表:使用 --note "<修复>" 重新生成。然后镜头只获取其构图所需的视图。
风格
风格表位于 bible/styles/<id>/style.json,使用 engine/style.mjs 管理(参见工作室技能和 studio/references/styles.md)。
克隆我 / AI 影响者
仅用于用户本人的肖像或虚构人物。切勿克隆真实的第三方。
- 要求用户提供 6-12 张自己的照片(正面、四分之三侧面、侧面、两套服装、光线良好),放入
bible/characters/<id>/photos/,以及 1-2 分钟清晰的语音,放入voice-source.mp3。 - 使用 Nano Banana 以照片为参考构建角色表(
--ref每张照片,最多 10 张):"Character reference sheet of this exact person…"。 - 语音:即时语音克隆需要 ElevenLabs 付费计划(Starter)。在 ElevenLabs UI 中克隆,然后将新的语音 ID 放入
voice.eleven中,设置"provider": "elevenlabs"。在此之前,选择最接近的预设。 - 对于说话头像内容,
node engine/gen.mjs talk <photo-or-keyframe> <line.mp3> out.mp4 --model infinitetalk($0.015/s,480p 分辨率)。对于场景,在正常的镜头列表中使用该角色。