人物生平8段经历(图文 + 视频)
把一个历史人物的一生,做成可直接剪辑发布的完整素材包。
输出目录约定
<工作区>/<人物名>_生平8段/
├── <人物名>_生平8段.md # 标题 + 8 条经历 + 8 条画面描述
├── image_prompts.json # 生图脚本的输入
├── 图片/
│ ├── 01_xxx.png … 08_xxx.png
├── 视频/
│ ├── 01_xxx-xxx.mp4 … 08_xxx.mp4 # 8 段独立首尾帧片段
│ ├── <人物名>_生平完整版_1x1.mp4
│ ├── <人物名>_生平完整版_16x9.mp4
│ └── <人物名>_生平完整版_9x16.mp4
└── 视频链接清单.md # 必写:所有路径 + 每段首帧/尾帧/提示词
执行流程(5 步,按顺序)
Step 1 · 写内容
生成 <人物名>_生平8段.md,含三部分:
- 标题:一句话概括一生,如「武则天从崛起到谢幕的一生」。语气贴合人物命运,不空泛。
- 8 条生平经历:严格按年龄顺序覆盖出生 → 逝世。
- 8 条画面描述:与经历一一对应,可直接当提示词用。
详细规范见 references/content-spec.md。
自检(缺一不可):人物为真实历史人物 / 经历正好 8 条 / 画面描述正好 8 条且一一对应 / 前半段含早年与崛起 / 最后一条落到逝世。
Step 2 · 生 8 张配图
- 把 8 条画面描述整理成
image_prompts.json(格式见下)。 - 调用
connect_cloud_service拿 token(每次执行都重新取,不复用)。 - 跑脚本:
export PATH="/usr/bin:/bin:/usr/local/bin:$PATH"
python scripts/gen_images.py "<项目目录绝对路径>" "<token>"
> 换成你本机的 python 即可(推荐隔离 venv)。脚本会自动探测 buddy-cloud.py 位置,
> 找不到时设环境变量 BUDDY_CLOUD_SCRIPT_DIR 指向其所在目录。
脚本自带重试(每条最多 3 轮)。仍失败时见 references/env-and-pitfalls.md §EngineError。
image_prompts.json 格式:
{
"outdir": "图片",
"scenes": [
{"name": "01_出生", "prompt": "……真实中国古代历史纪录片风格"},
{"name": "02_少年入宫", "prompt": "……"}
]
}
> 文件名按 01_ 02_ 排序,直接决定后续视频顺序,不要打乱。
Step 3 · 生 8 段首尾帧视频
必须用 VideoGen 工具(唯一支持首帧 + 尾帧的通道)。
image= 首帧(图 N),last_image= 尾帧(图 N+1),resolution=1080P,output_dir=视频/- 首尾帧链条:第 N 段尾帧 = 第 N+1 段首帧(01→02、02→03 … 07→08),串起来是一条连续生命线,接点天然对齐、几乎不用转场。
- 末段(第 8 段)无下一帧可衔接 → 首帧尾帧都用图 08,配「缓推 + 环境动效」收束镜头。
- 并行铁律:多次 VideoGen 调用必须放在同一条消息里才会真正并行;逐条发会串行,8 段要跑近 1 小时。
视频提示词模板(照抄结构,内容换成实际画面):
首帧中<画面主体>,<如何起步/转身/移动>,<形态·服饰·发式如何渐变>,
<最终落到什么姿态与场景>,一镜到底。真实中国古代历史纪录片风格
例:
> 首帧中站在红墙下的少女缓缓转身,沿着宫墙长道向深处走去,她的双环发髻渐渐剃落、露出光洁头顶,浅绛色短襦化作灰色粗麻僧衣,一路走到积雪的寺院庭院,双手合十立于佛前,神情沉静,一镜到底。真实中国古代历史纪录片风格
VideoGen 只返回 localPath(没有远程 URL)。用户要「链接」就给本地绝对路径,并写进清单文件。
Step 4 · 拼接成片
8 段参数一致(1440×1440 / 24fps / H.264 / AAC,各约 5s),可无损直拼:
export PATH="/usr/bin:/bin:/usr/local/bin:$PATH"
python scripts/concat_videos.py "<视频目录绝对路径>" "<人物名>_生平完整版"
产出三版(均约 40 秒):_1x1(无损原画质)、_16x9(1920×1080)、_9x16(1080×1920)。
16:9 / 9:16 用模糊背景填充(原画面居中不裁剪不变形),比黑边自然。
> 首次使用需装 ffmpeg:pip install imageio-ffmpeg
Step 5 · 写清单
视频链接清单.md 必须写,内容:三版成片路径 + 8 段独立片段路径 + 每段的首帧/尾帧/完整提示词 + 剪映时间码(每段 5.04s,第 N 段 = (N-1)*5.04 – N*5.04)。
交付纪律(本项目用户明确要求)
- 不在对话窗口展示任何配图/视频:不调用
present_files、不打开预览。 - 最终回复只报告文件路径,用表格列出。
- 需要人工确认产物质量时,用 Read 查看图片后自行判断,不要把图贴给用户。
环境坑位
本机有若干非标准限制,踩过的坑全部记录在
references/env-and-pitfalls.md,动手前先读,能省大量返工。
最关键的 4 条:
- Bash 工具 PATH 残缺 → 每条命令先
export PATH="/usr/bin:/bin:/usr/local/bin:$PATH" - PowerShell 工具 stdout 不回传 → 输出写文件再用 Read 读
- ImageGen 工具在本机报
No image data returned from API,不可用 → 走 Step 2 的脚本通道 - 云端
buddy-cloud.py video不支持首/尾帧(Images/ImageBase64全部 not recognized)→ 别再试,直接 VideoGen