D140: restore EP01 3D V2 prompt chain
Some checks failed
自动更新代码和重启 / update-and-restart (push) Has been cancelled
CI检查 + 自动部署 / check (push) Has been cancelled
CI检查 + 自动部署 / deploy (push) Has been cancelled

This commit is contained in:
冰朔 2026-06-22 20:34:23 +08:00
parent ca470c11c4
commit b924782ef7
7 changed files with 344 additions and 47 deletions

View File

@ -87,11 +87,13 @@ JZAO外置盘: 产物存放地,不是状态主控。
| 剧本MD | ✅ 已入仓 | `动态漫:《付费才能修仙?我的宗门全免费》.md` | | 剧本MD | ✅ 已入仓 | `动态漫:《付费才能修仙?我的宗门全免费》.md` |
| 第1集分镜 | ✅ 21镜/69秒 | `video-ai-system/data/ep01-storyboard.json` | | 第1集分镜 | ✅ 21镜/69秒 | `video-ai-system/data/ep01-storyboard.json` |
| 第1集审核 | ✅ 21绿 | `video-ai-system/data/ep01-audit.json` | | 第1集审核 | ✅ 21绿 | `video-ai-system/data/ep01-audit.json` |
| 导演编码 | 🟡 仅3镜 | `video-ai-system/outputs/付费修仙-ep01-director-encoding.json` | | V2导演编码 | ✅ 4镜/15秒 | `video-ai-system/outputs/ep01-director-encoding-3d-v2.json` |
| V2 3D提示词 | ✅ 4镜/15秒 | `video-ai-system/outputs/ep01-prompts-3d-v2.json` |
| 旧导演编码 | ⚫ D136三镜遗留 | `video-ai-system/outputs/付费修仙-ep01-director-encoding.json` |
| 旧提示词 | ⚫ 真人线遗留 | `video-ai-system/data/ep01-prompts.json` | | 旧提示词 | ⚫ 真人线遗留 | `video-ai-system/data/ep01-prompts.json` |
| 旧3D产物 | ⚫ 废弃 | `/Volumes/JZAO/.../ep01-3D/` · 仅作反例 | | 旧3D产物 | ⚫ 废弃 | `/Volumes/JZAO/.../ep01-3D/` · 仅作反例 |
| 旧15秒预览 | ⚫ 废弃 | `/Volumes/JZAO/.../D136-付费才能修仙-ep01-15s.mp4` · 不再沿用 | | 旧15秒预览 | ⚫ 废弃 | `/Volumes/JZAO/.../D136-付费才能修仙-ep01-15s.mp4` · 不再沿用 |
| 体检报告 | ✅ D140 | `video-ai-system/outputs/system-audit-latest.md` | | 体检报告 | ✅ D140·无红黄 | `video-ai-system/outputs/system-audit-latest.md` |
| V2管线 | ✅ 已建立 | `video-ai-system/PIPELINE-3D-MANJU.hdlp` | | V2管线 | ✅ 已建立 | `video-ai-system/PIPELINE-3D-MANJU.hdlp` |
当前正式任务: 当前正式任务:
@ -99,7 +101,7 @@ JZAO外置盘: 产物存放地,不是状态主控。
``` ```
EP01-15S-V2: EP01-15S-V2:
从剧本MD重新建立第1集开头15秒3D漫剧小样。 从剧本MD重新建立第1集开头15秒3D漫剧小样。
先重建导演编码和3D提示词再生成2~3镜剪辑成可看15秒。 导演编码和3D提示词已重建。下一步生成/确认视觉锚点跑生成前体检再生成2~3镜并剪辑成可看15秒。
``` ```
--- ---
@ -140,8 +142,8 @@ video-ai-system/PROTOCOL-ASSESSMENT.hdlp
1. 运行无成本体检 1. 运行无成本体检
2. 读取 PIPELINE-3D-MANJU.hdlp 2. 读取 PIPELINE-3D-MANJU.hdlp
3. 选第1集开头15秒范围 3. 选第1集开头15秒范围
4. 重建 EP01-15S-V2 导演编码 4. EP01-15S-V2 导演编码 ✅ `outputs/ep01-director-encoding-3d-v2.json`
5. 重建 EP01-15S-V2 3D提示词 5. EP01-15S-V2 3D提示词 ✅ `outputs/ep01-prompts-3d-v2.json`
6. 生成/确认角色、环境、道具视觉锚点 6. 生成/确认角色、环境、道具视觉锚点
7. 生成前检查PASS后才调用Seedance/Kling 7. 生成前检查PASS后才调用Seedance/Kling
8. 先跑2~3镜 8. 先跑2~3镜

View File

@ -56,11 +56,13 @@
| 剧本MD | ✅ | `动态漫:《付费才能修仙?我的宗门全免费》.md` | | 剧本MD | ✅ | `动态漫:《付费才能修仙?我的宗门全免费》.md` |
| 第1集分镜 | ✅ | `ep01-storyboard.json` · 21镜 · 69秒 | | 第1集分镜 | ✅ | `ep01-storyboard.json` · 21镜 · 69秒 |
| 第1集审核 | ✅ | `ep01-audit.json` · 21绿 | | 第1集审核 | ✅ | `ep01-audit.json` · 21绿 |
| 导演编码 | 🟡 | 当前只有3镜D136编码需要扩展到21镜3D主线 | | V2导演编码 | ✅ | `ep01-director-encoding-3d-v2.json` · EP01-15S-V2 · 4镜/15秒 |
| V2 3D提示词 | ✅ | `ep01-prompts-3d-v2.json` · 4镜 · 可进入生成前体检 |
| 旧导演编码 | ⚫ | `付费修仙-ep01-director-encoding.json` · D136三镜遗留仅作经验 |
| 旧提示词 | ⚫ | `ep01-prompts.json` 为真人线遗留,不再使用 | | 旧提示词 | ⚫ | `ep01-prompts.json` 为真人线遗留,不再使用 |
| 旧3D产物 | ⚫ | 全部废弃,只保留为反例经验 | | 旧3D产物 | ⚫ | 全部废弃,只保留为反例经验 |
| 旧15秒预览 | ⚫ | 不符合要求,不再沿用 | | 旧15秒预览 | ⚫ | 不符合要求,不再沿用 |
| V2小样 | 🔴 | 尚未开始目标是15秒连续可看3D漫剧 | | V2小样 | 🟡 | 导演编码/3D提示词已完成等待视觉锚点与生成前体检 |
### D136+ 连续性修复 ### D136+ 连续性修复
@ -91,10 +93,10 @@
### 待解决 ### 待解决
- [ ] 按 `PIPELINE-3D-MANJU.hdlp` 建立 EP01-15S-V2 - [x] 按 `PIPELINE-3D-MANJU.hdlp` 建立 EP01-15S-V2
- [ ] 选择第1集开头15秒范围绑定剧本原文 - [x] 选择第1集开头15秒范围绑定剧本原文
- [ ] 重建 EP01-15S-V2 导演编码 - [x] 重建 EP01-15S-V2 导演编码 → `outputs/ep01-director-encoding-3d-v2.json`
- [ ] 重建 EP01-15S-V2 3D提示词旧真人提示词作废 - [x] 重建 EP01-15S-V2 3D提示词旧真人提示词作废 → `outputs/ep01-prompts-3d-v2.json`
- [ ] 生成/确认角色、环境、道具视觉锚点 - [ ] 生成/确认角色、环境、道具视觉锚点
- [ ] 建立无成本生成前检查: 剧本→分镜→导演编码→参考图/锁定项→提示词→预校验 - [ ] 建立无成本生成前检查: 剧本→分镜→导演编码→参考图/锁定项→提示词→预校验
- [ ] 体检通过后再调用视频API避免继续抽卡烧钱 - [ ] 体检通过后再调用视频API避免继续抽卡烧钱
@ -122,6 +124,7 @@
- 体检发现: 资产不缺,卡点是状态/产物/提示词/注册表未闭环。 - 体检发现: 资产不缺,卡点是状态/产物/提示词/注册表未闭环。
- 当前下一步: 铸渊之眼质检现有产物 → 3D主线21镜导演编码 → 3D提示词重建 → 生成前预校验 → 再花钱生成。 - 当前下一步: 铸渊之眼质检现有产物 → 3D主线21镜导演编码 → 3D提示词重建 → 生成前预校验 → 再花钱生成。
- D140追加裁决: 旧JZAO视频产物全废弃不再作为可用素材重建 `PIPELINE-3D-MANJU.hdlp`,第一目标改为 EP01-15S-V2。 - D140追加裁决: 旧JZAO视频产物全废弃不再作为可用素材重建 `PIPELINE-3D-MANJU.hdlp`,第一目标改为 EP01-15S-V2。
- Codex恢复后补齐 EP01-15S-V2: 新增4镜/15秒 `ep01-director-encoding-3d-v2.json` 与 `ep01-prompts-3d-v2.json`体检脚本升级为识别V2文件当前无红黄问题。
### D136+ · 2026-06-21 ### D136+ · 2026-06-21
- 冰朔检视3镜预览→发现3个连续性断裂 - 冰朔检视3镜预览→发现3个连续性断裂

View File

@ -0,0 +1,153 @@
{
"_meta": {
"type": "EP01-15S-V2_DIRECTOR_ENCODING",
"created": "D140 · 2026-06-22",
"by": "铸渊 ICE-GL-ZY001 · Codex恢复",
"source": [
"动态漫:《付费才能修仙?我的宗门全免费》.md",
"video-ai-system/data/ep01-storyboard.json",
"video-ai-system/PIPELINE-3D-MANJU.hdlp",
"video-ai-system/data/characters-v2.hdlp",
"video-ai-system/data/environments.hdlp",
"video-ai-system/data/付费修仙-ep01-props.hdlp"
],
"status": "ready_for_prompt_build",
"rule": "剧本怎么写就怎么拍旧JZAO产物不继承先做15秒连续可看3D漫剧小样。"
},
"project": "付费才能修仙",
"episode": "ep01",
"sample_id": "EP01-15S-V2",
"product_line": "3d",
"tempo": "slow_build",
"emotion_main": "悬→燃→冷",
"target_duration": 15,
"episode_summary": "百宗会招新。镜头从修仙者飞入广场,推到最偏僻的天道宗角落。苏白站在破旧竖式牌匾下,自信喊出天下第一宗的宣言;广告牌寒酸到可笑,围观者嘲笑后散去,留下苏白和风里的落叶。",
"range": {
"start": "第1集1-1开头",
"end": "围观者嘲笑完散去,苏白叹气前后",
"source_shots": ["E1-SHOT01", "E1-SHOT02", "E1-SHOT03", "E1-SHOT04", "E1-SHOT05", "E1-SHOT06"]
},
"emotion_curve": [
{ "pos": "0-4s", "intensity": 3, "type": "悬", "role": "世界建立" },
{ "pos": "4-8s", "intensity": 4, "type": "冷", "role": "寒酸反差" },
{ "pos": "8-12s", "intensity": 6, "type": "燃", "role": "苏白登场宣言" },
{ "pos": "12-15s", "intensity": 4, "type": "冷", "role": "群嘲后留钩子" }
],
"visual_locks": {
"style": "3D渲染风格中国风仙侠电影级光影暖金色主调高质感动态漫",
"negative_global": "真人写实,现代服装,现代广告牌,科幻界面,欧美面孔,恐怖风,血腥,赛博朋克,文字乱码,横式天道宗牌匾,改变苏白服装,改变牌匾材质,建筑死角,空旷无人广场",
"char_refs": {
"CHAR-003": "18岁亚洲少年五官俊秀剑眉明亮大眼自信灿烂笑容露齿身形挺拔肩膀开阔白色长衫腰间束带袖口挽起黑色长发半束半披开朗自信略带痞气穷但不自卑3D动画渲染中国风仙侠"
},
"env_refs": {
"ENV-002": "修仙世界开阔百宗会广场,云海环绕远处山峰,白天阳光明媚,金色光芒仙气弥漫,广场上人山人海宗门招牌林立,天道宗位于人群边缘角落,不是建筑死角"
},
"prop_refs": {
"PROP-天道宗牌匾": "破旧深棕色木质竖式悬挂牌匾,自上而下垂直悬挂,正面竖写【天道宗】三个毛笔大字,黑色墨迹斑驳模糊,边缘磨损开裂",
"PROP-天道宗广告牌": "横式破旧木板招生广告牌,立于天道宗竖式牌匾下方旁边地面,略向后倾斜,六行手写招生文字"
}
},
"shots": [
{
"shot_id": "EP01-15S-V2-S01",
"source_shot": "E1-SHOT01",
"source_text": "修仙界高空云层,云层下俯瞰视角,巨大广场人山人海。",
"framing": "远景俯瞰转全景",
"subject": "云层上的修仙者飞入百宗会广场,广场前排宗门热闹,远处逐渐露出最偏僻的天道宗角落",
"action": "镜头从云层上方缓慢下降,穿过御剑飞行的修仙者,落到百宗会广场。前排宗门鎏金招牌和长队一闪而过,镜头继续推向人群边缘角落。",
"camera": "俯瞰下降,缓慢前推,终点停在人群边缘角落的天道宗位置",
"duration": 4,
"subtitle": "百宗会开场,万修齐聚。",
"voice_line": "百宗会招新这天,修仙者从四面八方赶来。",
"char_refs": [],
"env_refs": ["ENV-002"],
"prop_refs": ["PROP-天道宗牌匾"],
"visual_refs": {
"required": ["ENV-002-3d-reference", "PROP-天道宗牌匾-reference"],
"status": "pending"
},
"spatial_anchor": "云层上方 → 广场上空 → 人群边缘角落",
"text_elements": "【天道宗】只在镜头终点出现,可小但方向必须为竖式",
"prop_state": "破旧的·竖式悬挂·木质牌匾",
"negative": "空旷广场,建筑死角,现代城市,真人写实,横式天道宗牌匾,文字乱码"
},
{
"shot_id": "EP01-15S-V2-S02",
"source_shot": "E1-SHOT02",
"source_text": "特写:角落里写着【天道宗】的破旧牌匾。",
"framing": "特写",
"subject": "天道宗破旧竖式木质牌匾",
"action": "镜头推近天道宗牌匾,竖写的【天道宗】三个字斑驳模糊。周围热闹宗门形成强烈对比,天道宗无人排队。",
"camera": "特写慢推,轻微摇晃,停在牌匾文字和开裂木纹",
"duration": 3,
"subtitle": "角落里,天道宗无人问津。",
"voice_line": "可最偏的角落里,只有一块快掉漆的天道宗牌匾。",
"char_refs": [],
"env_refs": ["ENV-002"],
"prop_refs": ["PROP-天道宗牌匾"],
"visual_refs": {
"required": ["PROP-天道宗牌匾-reference"],
"status": "pending"
},
"spatial_anchor": "人群边缘角落离地约2米的竖式悬挂牌匾",
"text_elements": "【天道宗】",
"prop_state": "破旧深棕色木质·竖式·自上而下悬挂·边缘磨损开裂",
"negative": "横式牌匾,崭新牌匾,现代招牌,金属霓虹,文字变成其他宗门,真人写实"
},
{
"shot_id": "EP01-15S-V2-S03",
"source_shot": "E1-SHOT03",
"source_text": "苏白站在天道宗破旧牌匾下双手叉腰,大声喊话。",
"framing": "中景转近景",
"subject": "苏白站在竖式牌匾下方,双手叉腰,自信喊话",
"action": "苏白穿白色长衫站在天道宗竖式牌匾下方,双手叉腰,笑得自信灿烂。他朝人群大声吆喝:未来的天下第一宗,天道宗开门收徒啦!",
"camera": "中景正面,苏白居中,轻微推进到上半身和笑容",
"duration": 4,
"subtitle": "未来的天下第一宗!天道宗开门收徒啦!",
"voice_line": "未来的天下第一宗!天道宗开门收徒啦!",
"char_refs": ["CHAR-003"],
"env_refs": ["ENV-002"],
"prop_refs": ["PROP-天道宗牌匾"],
"visual_refs": {
"required": ["CHAR-003-3d-reference", "PROP-天道宗牌匾-reference"],
"status": "pending"
},
"spatial_anchor": "苏白站在竖式悬挂牌匾下方",
"text_elements": "【天道宗】",
"prop_state": "悬挂的·破旧·竖式·木质牌匾",
"negative": "苏白换衣服,苏白变老,黑衣,跪姿,丧气表情,牌匾消失,牌匾横放,真人写实"
},
{
"shot_id": "EP01-15S-V2-S04",
"source_shot": "E1-SHOT04/E1-SHOT05/E1-SHOT06",
"source_text": "天道宗广告牌展示,围观的人指指点点,讽刺完散去,风吹起落叶。",
"framing": "广告牌特写转中景",
"subject": "天道宗招生广告牌、围观者、苏白",
"action": "镜头先切到天道宗旁边的横式招生广告牌,能看出包吃包住、每月三十两、入宗学仙法。围观者聚拢指指点点,随后嘲笑散去。风吹起苏白脚下落叶,苏白仍站在牌匾旁边。",
"camera": "广告牌特写,切中景,围观者从画面两侧靠近又散开,最后停在苏白和落叶",
"duration": 4,
"subtitle": "包吃包住,每月三十两。围观者笑完,又散了。",
"voice_line": "众人看清牌子,笑了几声便散开,只剩风卷着落叶。",
"char_refs": ["CHAR-003"],
"env_refs": ["ENV-002"],
"prop_refs": ["PROP-天道宗牌匾", "PROP-天道宗广告牌"],
"visual_refs": {
"required": ["CHAR-003-3d-reference", "PROP-天道宗牌匾-reference", "PROP-天道宗广告牌-reference"],
"status": "pending"
},
"spatial_anchor": "横式广告牌立于竖式牌匾下方旁边地面,苏白站在旁边,落叶在脚下",
"text_elements": "【天道宗】【未来第一宗】【名额:一位】【包吃包住】【每月基础银子:三十两】【入宗即可学习仙法】",
"prop_state": "横式破旧木板广告牌立地,竖式天道宗牌匾仍在画面侧后方",
"negative": "广告牌变成现代海报,文字全乱码,围观者挡住苏白,牌匾消失,苏白服装改变,真人写实"
}
],
"hooks": {
"opening": "这么寒酸的宗门,凭什么敢称天下第一?",
"closing": "第一个弟子,会不会真的来?"
},
"next": {
"prompt_file": "video-ai-system/outputs/ep01-prompts-3d-v2.json",
"preflight": "检查visual_refs、activeLine、negative、source_text、duration后才允许调用视频API",
"api_policy": "先跑2~3镜不连续抽卡。"
}
}

View File

@ -0,0 +1,102 @@
{
"_meta": {
"type": "EP01-15S-V2_3D_PROMPTS",
"created": "D140 · 2026-06-22",
"by": "铸渊 ICE-GL-ZY001 · Codex恢复",
"source": "video-ai-system/outputs/ep01-director-encoding-3d-v2.json",
"product_line": "3d",
"status": "ready_for_preflight",
"note": "本文件替代旧真人线 ep01-prompts.json 作为EP01-15S-V2主线提示词。"
},
"global": {
"style": "3D渲染风格中国风仙侠电影级光影暖金色主调高质感动态漫适合短剧漫剧连续镜头",
"negative": "真人写实,现代服装,现代广告牌,科幻界面,欧美面孔,恐怖风,血腥,赛博朋克,文字乱码,横式天道宗牌匾,改变苏白服装,改变牌匾材质,建筑死角,空旷无人广场,低清晰度,过度模糊"
},
"shots": [
{
"shot_id": "EP01-15S-V2-S01",
"duration": 4,
"source_text": "修仙界高空云层,云层下俯瞰视角,巨大广场人山人海。",
"prompt": {
"Style": "3D渲染风格中国风仙侠电影级光影暖金色主调高质感动态漫。",
"Subject": "修仙世界开阔百宗会广场,云海环绕远处山峰,白天阳光明媚,广场上人山人海,宗门招牌林立。",
"Action": "许多修仙者御剑从云层飞向广场,镜头穿过云层下降,掠过前排热闹宗门和长队,继续推到人群边缘角落的天道宗位置。",
"Camera": "远景俯瞰,缓慢下降,稳定前推,终点停在人群边缘角落。",
"Spatial": "云层上方到广场上空,再到人群边缘角落。天道宗不是建筑死角,是热闹广场里被忽略的边缘位置。",
"Visual_locks": "角落里可见一块破旧深棕色木质竖式悬挂牌匾,自上而下垂直悬挂,正面竖写【天道宗】三个毛笔大字,边缘磨损开裂。",
"Text": "模型如无法稳定写字,牌匾文字后期字幕/贴图处理;构图仍保留竖式牌匾位置。",
"Negative": "真人写实,现代城市,空旷广场,建筑死角,横式天道宗牌匾,文字乱码,科幻界面。"
},
"subtitle": "百宗会开场,万修齐聚。",
"voice_line": "百宗会招新这天,修仙者从四面八方赶来。",
"required_refs": ["ENV-002-3d-reference", "PROP-天道宗牌匾-reference"]
},
{
"shot_id": "EP01-15S-V2-S02",
"duration": 3,
"source_text": "特写:角落里写着【天道宗】的破旧牌匾。",
"prompt": {
"Style": "3D渲染风格中国风仙侠电影级光影暖金色阳光细节清晰。",
"Subject": "一块破旧深棕色木质竖式悬挂牌匾,自上而下垂直悬挂,正面竖写【天道宗】三个毛笔大字。",
"Action": "镜头慢慢推近牌匾,斑驳黑色墨迹和开裂木纹逐渐清晰,背景里能感到百宗会广场仍然热闹,但此处无人排队。",
"Camera": "特写慢推,轻微自然摇晃,停在牌匾文字和木纹裂缝。",
"Spatial": "牌匾悬挂在人群边缘角落离地约2米周围寒酸但不倒塌。",
"Visual_locks": "必须是竖式悬挂,不是横式;必须是旧木牌,不是金属牌;文字内容只允许【天道宗】。",
"Text": "牌匾文字可后期贴图;画面必须给文字留出清晰区域。",
"Negative": "横式牌匾,崭新鎏金牌匾,现代广告牌,文字变成其他宗门,真人写实。"
},
"subtitle": "角落里,天道宗无人问津。",
"voice_line": "可最偏的角落里,只有一块快掉漆的天道宗牌匾。",
"required_refs": ["PROP-天道宗牌匾-reference"]
},
{
"shot_id": "EP01-15S-V2-S03",
"duration": 4,
"source_text": "苏白站在天道宗破旧牌匾下双手叉腰,大声喊话。",
"prompt": {
"Style": "3D渲染风格中国风仙侠电影级光影暖金色主调高质感动态漫。",
"Subject": "苏白18岁亚洲少年五官俊秀剑眉明亮大眼自信灿烂露齿笑容身形挺拔白色长衫腰间束带袖口挽起黑色长发半束半披。",
"Action": "苏白站在天道宗破旧竖式木质牌匾下方,双手叉腰,面向人群大声吆喝,表情不是绝望,而是看见未来的笃定。",
"Camera": "中景正面,苏白居中,轻微推进到上半身和笑容,最后停在双手叉腰的自信姿态。",
"Spatial": "苏白站在竖式悬挂牌匾下方,牌匾位于他身后上方或侧后方,不能消失。",
"Visual_locks": "苏白服装必须为白色长衫腰间束带;牌匾必须仍是竖式木质【天道宗】;广场仍是人群边缘角落。",
"Text": "台词由字幕/配音处理:未来的天下第一宗!天道宗开门收徒啦!",
"Negative": "苏白换成黑衣,苏白变老,丧气表情,跪姿,牌匾横放,牌匾消失,真人写实。"
},
"subtitle": "未来的天下第一宗!天道宗开门收徒啦!",
"voice_line": "未来的天下第一宗!天道宗开门收徒啦!",
"required_refs": ["CHAR-003-3d-reference", "PROP-天道宗牌匾-reference"]
},
{
"shot_id": "EP01-15S-V2-S04",
"duration": 4,
"source_text": "广告牌展示,围观者嘲笑后散去,风吹起落叶。",
"prompt": {
"Style": "3D渲染风格中国风仙侠电影级光影暖金色逐渐转冷短剧漫剧节奏。",
"Subject": "天道宗横式破旧木板招生广告牌、苏白、围观者、脚下落叶。",
"Action": "镜头先给横式招生广告牌特写,能看出包吃包住、每月三十两、入宗学仙法等信息。围观者聚拢指指点点,嘲笑后散去。风吹起苏白脚下落叶,苏白仍站在牌匾旁边。",
"Camera": "广告牌特写切中景,围观者从画面两侧靠近又散开,最后停在苏白和脚下落叶。",
"Spatial": "横式广告牌立于竖式天道宗牌匾下方旁边地面,苏白站在旁边,落叶在脚下,竖式牌匾仍在画面侧后方。",
"Visual_locks": "广告牌为横式破旧木板,竖式天道宗牌匾仍存在;苏白仍穿白色长衫;围观者不能挡住主要道具。",
"Text": "广告牌文字复杂,优先后期贴图/字幕处理;模型只需保留六行手写招生广告的版面。",
"Negative": "现代海报,霓虹广告牌,文字全乱码,围观者完全挡住苏白,牌匾消失,苏白服装改变,真人写实。"
},
"subtitle": "包吃包住,每月三十两。围观者笑完,又散了。",
"voice_line": "众人看清牌子,笑了几声便散开,只剩风卷着落叶。",
"required_refs": ["CHAR-003-3d-reference", "PROP-天道宗牌匾-reference", "PROP-天道宗广告牌-reference"]
}
],
"preflight": {
"must_pass": [
"activeLine == 3d",
"每镜有source_text",
"每镜有duration且总时长约15秒",
"每镜有Negative",
"无真人写实主线词",
"CHAR/ENV/PROP引用存在",
"视觉锚点存在或明确标记pending",
"复杂文字走字幕/贴图,不强迫视频模型稳定写字"
],
"api_policy": "体检不过不调用API先跑2~3镜不连续抽卡。"
}
}

View File

@ -1,5 +1,5 @@
{ {
"generatedAt": "2026-06-22T08:47:48.147Z", "generatedAt": "2026-06-22T12:34:07.362Z",
"activeLines": [ "activeLines": [
{ {
"key": "3d", "key": "3d",
@ -9,7 +9,7 @@
], ],
"script": { "script": {
"exists": true, "exists": true,
"file": "/Users/bingshuolingdianyuanhe/guanghulab/动态漫:《付费才能修仙?我的宗门全免费》.md", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/动态漫:《付费才能修仙?我的宗门全免费》.md",
"size": 275281 "size": 275281
}, },
"storyboard": { "storyboard": {
@ -23,9 +23,22 @@
"project": "付费才能修仙", "project": "付费才能修仙",
"episode": "ep01" "episode": "ep01"
}, },
"directorEncodingV2": {
"exists": true,
"file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/ep01-director-encoding-3d-v2.json",
"shots": 4,
"targetDuration": 15,
"status": "ready_for_prompt_build"
},
"promptsV2": {
"exists": true,
"file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/ep01-prompts-3d-v2.json",
"shots": 4,
"status": "ready_for_preflight"
},
"localFinals": [ "localFinals": [
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/final/test-compose.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/final/test-compose.mp4",
"name": "test-compose.mp4", "name": "test-compose.mp4",
"duration": 14.458333, "duration": 14.458333,
"size": 5210757, "size": 5210757,
@ -34,7 +47,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/final/test-compose.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/final/test-compose.mp4",
"name": "test-compose.mp4", "name": "test-compose.mp4",
"duration": 14.458333, "duration": 14.458333,
"size": 5210757, "size": 5210757,
@ -45,7 +58,7 @@
], ],
"localVideos": [ "localVideos": [
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/final/test-compose.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/final/test-compose.mp4",
"name": "test-compose.mp4", "name": "test-compose.mp4",
"duration": 14.458333, "duration": 14.458333,
"size": 5210757, "size": 5210757,
@ -54,7 +67,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/shots/ep01-shot01-v2.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/shots/ep01-shot01-v2.mp4",
"name": "ep01-shot01-v2.mp4", "name": "ep01-shot01-v2.mp4",
"duration": 5.085011, "duration": 5.085011,
"size": 4017104, "size": 4017104,
@ -63,7 +76,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/shots/ep01-shot01.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/shots/ep01-shot01.mp4",
"name": "ep01-shot01.mp4", "name": "ep01-shot01.mp4",
"duration": 5.06195, "duration": 5.06195,
"size": 2600205, "size": 2600205,
@ -72,7 +85,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/shots/ep01-shot02-v2.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/shots/ep01-shot02-v2.mp4",
"name": "ep01-shot02-v2.mp4", "name": "ep01-shot02-v2.mp4",
"duration": 5.085011, "duration": 5.085011,
"size": 2418450, "size": 2418450,
@ -81,7 +94,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/shots/ep01-shot02.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/shots/ep01-shot02.mp4",
"name": "ep01-shot02.mp4", "name": "ep01-shot02.mp4",
"duration": 5.085011, "duration": 5.085011,
"size": 2578013, "size": 2578013,
@ -90,7 +103,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/final/test-compose.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/final/test-compose.mp4",
"name": "test-compose.mp4", "name": "test-compose.mp4",
"duration": 14.458333, "duration": 14.458333,
"size": 5210757, "size": 5210757,
@ -99,7 +112,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/shots/ep01-shot01-v2.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/shots/ep01-shot01-v2.mp4",
"name": "ep01-shot01-v2.mp4", "name": "ep01-shot01-v2.mp4",
"duration": 5.085011, "duration": 5.085011,
"size": 4017104, "size": 4017104,
@ -108,7 +121,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/shots/ep01-shot01.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/shots/ep01-shot01.mp4",
"name": "ep01-shot01.mp4", "name": "ep01-shot01.mp4",
"duration": 5.06195, "duration": 5.06195,
"size": 2600205, "size": 2600205,
@ -117,7 +130,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/shots/ep01-shot02-v2.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/shots/ep01-shot02-v2.mp4",
"name": "ep01-shot02-v2.mp4", "name": "ep01-shot02-v2.mp4",
"duration": 5.085011, "duration": 5.085011,
"size": 2418450, "size": 2418450,
@ -126,7 +139,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/shots/ep01-shot02.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/shots/ep01-shot02.mp4",
"name": "ep01-shot02.mp4", "name": "ep01-shot02.mp4",
"duration": 5.085011, "duration": 5.085011,
"size": 2578013, "size": 2578013,
@ -135,7 +148,7 @@
"codec": "h264" "codec": "h264"
}, },
{ {
"file": "/Users/bingshuolingdianyuanhe/guanghulab/video-ai-system/outputs/test-10s.mp4", "file": "/Users/bingshuolingdianyuanhe/Documents/guanghulab/video-ai-system/outputs/test-10s.mp4",
"name": "test-10s.mp4", "name": "test-10s.mp4",
"duration": 5.06195, "duration": 5.06195,
"size": 2804153, "size": 2804153,
@ -459,11 +472,5 @@
"registryMissingExistingFiles": [], "registryMissingExistingFiles": [],
"statusClaimsInProgress": false, "statusClaimsInProgress": false,
"promptsStillRealistic": true, "promptsStillRealistic": true,
"issues": [ "issues": []
{
"level": "yellow",
"title": "旧提示词仍是真人写实",
"detail": "ep01-prompts.json属于旧线不能作为3D主线继续生成。"
}
]
} }

View File

@ -1,11 +1,12 @@
# 视频AI系统 · 无成本体检报告 # 视频AI系统 · 无成本体检报告
生成时间: 2026-06-22T08:47:48.147Z 生成时间: 2026-06-22T12:34:07.362Z
当前active制作线: 3d(3D漫剧) 当前active制作线: 3d(3D漫剧)
剧本MD: 存在 剧本MD: 存在
分镜: 21镜 / 69s 分镜: 21镜 / 69s
导演编码: 3镜 导演编码: 旧3镜 / V2 4镜
3D提示词V2: 4镜
本地产物: 11个mp4 本地产物: 11个mp4
JZAO ep01产物: 30个mp4 JZAO ep01产物: 30个mp4
JZAO ep01-3D产物: 4个mp4 JZAO ep01-3D产物: 4个mp4
@ -13,12 +14,12 @@ JZAO ep01-3D产物: 4个mp4
注册表: 7条 / 失效路径0条 注册表: 7条 / 失效路径0条
## 问题 ## 问题
- YELLOW · 旧提示词仍是真人写实: ep01-prompts.json属于旧线不能作为3D主线继续生成 - 无红黄问题
## 推荐下一步 ## 推荐下一步
1. 只保留3D漫剧为active制作线。 1. 只保留3D漫剧为active制作线。
2. 旧真人提示词不再继续生成重新生成3D主线提示词 2. 旧真人提示词不再继续生成;使用 ep01-prompts-3d-v2.json 作为主线
3. 旧JZAO视频不进入生产线只作为反例经验。 3. 旧JZAO视频不进入生产线只作为反例经验。
4. 按 PIPELINE-3D-MANJU.hdlp 重建 EP01-15S-V2 4. 下一步生成/确认CHAR-003、ENV-002、PROP牌匾/广告牌视觉锚点
5. 状态文件必须由体检报告回写,不再靠人工记忆。 5. 状态文件必须由体检报告回写,不再靠人工记忆。
6. 生成API只在体检通过后调用 6. 视觉锚点和生成前体检通过后才调用API

View File

@ -18,6 +18,8 @@ const SCRIPT_MD = path.join(ROOT, '动态漫:《付费才能修仙?我的宗
const PRODUCT_LINES = path.join(SYS, 'config/product-lines.json'); const PRODUCT_LINES = path.join(SYS, 'config/product-lines.json');
const STORYBOARD = path.join(SYS, 'data/ep01-storyboard.json'); const STORYBOARD = path.join(SYS, 'data/ep01-storyboard.json');
const DIRECTOR_ENCODING = path.join(OUT, '付费修仙-ep01-director-encoding.json'); const DIRECTOR_ENCODING = path.join(OUT, '付费修仙-ep01-director-encoding.json');
const DIRECTOR_ENCODING_V2 = path.join(OUT, 'ep01-director-encoding-3d-v2.json');
const PROMPTS_V2 = path.join(OUT, 'ep01-prompts-3d-v2.json');
const VIDEO_REGISTRY = path.join(OUT, 'video-registry.json'); const VIDEO_REGISTRY = path.join(OUT, 'video-registry.json');
const STATUS = path.join(SYS, 'memory/zai-fu-fei-xiu-xian/STATUS.hdlp'); const STATUS = path.join(SYS, 'memory/zai-fu-fei-xiu-xian/STATUS.hdlp');
const JZAO_EP01 = '/Volumes/JZAO/铸渊-ICE-GL-ZY001/OUT-输出/视频/zai-fu-fei-xiu-xian/ep01'; const JZAO_EP01 = '/Volumes/JZAO/铸渊-ICE-GL-ZY001/OUT-输出/视频/zai-fu-fei-xiu-xian/ep01';
@ -115,8 +117,8 @@ function detectIssues(data) {
if (!data.storyboard.exists) { if (!data.storyboard.exists) {
issues.push({ level: 'red', title: '分镜JSON缺失', detail: STORYBOARD }); issues.push({ level: 'red', title: '分镜JSON缺失', detail: STORYBOARD });
} }
if (!data.directorEncoding.exists) { if (!data.directorEncoding.exists && !data.directorEncodingV2.exists) {
issues.push({ level: 'red', title: '导演编码缺失', detail: DIRECTOR_ENCODING }); issues.push({ level: 'red', title: '导演编码缺失', detail: `${DIRECTOR_ENCODING} / ${DIRECTOR_ENCODING_V2}` });
} }
if (data.localFinals.length === 0 && data.jzaoVideos.length === 0 && data.jzao3dVideos.length === 0) { if (data.localFinals.length === 0 && data.jzaoVideos.length === 0 && data.jzao3dVideos.length === 0) {
issues.push({ level: 'red', title: '没有发现任何视频产物', detail: 'outputs和JZAO均为空。' }); issues.push({ level: 'red', title: '没有发现任何视频产物', detail: 'outputs和JZAO均为空。' });
@ -128,11 +130,18 @@ function detectIssues(data) {
detail: 'STATUS仍写生成中但JZAO已发现D136 15秒成品。', detail: 'STATUS仍写生成中但JZAO已发现D136 15秒成品。',
}); });
} }
if (data.promptsStillRealistic) { if (!data.promptsV2.exists) {
issues.push({
level: 'red',
title: '3D主线提示词缺失',
detail: PROMPTS_V2,
});
}
if (data.promptsStillRealistic && !data.promptsV2.exists) {
issues.push({ issues.push({
level: 'yellow', level: 'yellow',
title: '旧提示词仍是真人写实', title: '旧提示词仍是真人写实',
detail: 'ep01-prompts.json属于旧线不能作为3D主线继续生成。', detail: 'ep01-prompts.json属于旧线不能作为3D主线继续生成且尚未发现ep01-prompts-3d-v2.json。',
}); });
} }
if (data.registryMissingExistingFiles.length > 0) { if (data.registryMissingExistingFiles.length > 0) {
@ -149,6 +158,8 @@ function main() {
const product = readJson(PRODUCT_LINES, {}); const product = readJson(PRODUCT_LINES, {});
const storyboard = readJson(STORYBOARD, {}); const storyboard = readJson(STORYBOARD, {});
const encoding = readJson(DIRECTOR_ENCODING, {}); const encoding = readJson(DIRECTOR_ENCODING, {});
const encodingV2 = readJson(DIRECTOR_ENCODING_V2, {});
const promptsV2 = readJson(PROMPTS_V2, {});
const registry = readJson(VIDEO_REGISTRY, { shots: {} }); const registry = readJson(VIDEO_REGISTRY, { shots: {} });
const promptsText = exists(path.join(SYS, 'data/ep01-prompts.json')) const promptsText = exists(path.join(SYS, 'data/ep01-prompts.json'))
? fs.readFileSync(path.join(SYS, 'data/ep01-prompts.json'), 'utf8') ? fs.readFileSync(path.join(SYS, 'data/ep01-prompts.json'), 'utf8')
@ -187,6 +198,19 @@ function main() {
project: encoding.project, project: encoding.project,
episode: encoding.episode, episode: encoding.episode,
}, },
directorEncodingV2: {
exists: exists(DIRECTOR_ENCODING_V2),
file: DIRECTOR_ENCODING_V2,
shots: encodingV2.shots?.length || 0,
targetDuration: encodingV2.target_duration || null,
status: encodingV2._meta?.status || null,
},
promptsV2: {
exists: exists(PROMPTS_V2),
file: PROMPTS_V2,
shots: promptsV2.shots?.length || 0,
status: promptsV2._meta?.status || null,
},
localFinals: localVideos.filter(v => v.file.includes('/outputs/final/')), localFinals: localVideos.filter(v => v.file.includes('/outputs/final/')),
localVideos, localVideos,
jzaoVideos, jzaoVideos,
@ -215,7 +239,8 @@ function main() {
lines.push(`当前active制作线: ${data.activeLines.map(x => `${x.key}(${x.name})`).join(', ') || '无'}`); lines.push(`当前active制作线: ${data.activeLines.map(x => `${x.key}(${x.name})`).join(', ') || '无'}`);
lines.push(`剧本MD: ${data.script.exists ? '存在' : '缺失'}`); lines.push(`剧本MD: ${data.script.exists ? '存在' : '缺失'}`);
lines.push(`分镜: ${data.storyboard.shots}镜 / ${data.storyboard.totalDuration}s`); lines.push(`分镜: ${data.storyboard.shots}镜 / ${data.storyboard.totalDuration}s`);
lines.push(`导演编码: ${data.directorEncoding.shots}`); lines.push(`导演编码: 旧${data.directorEncoding.shots}镜 / V2 ${data.directorEncodingV2.shots}`);
lines.push(`3D提示词V2: ${data.promptsV2.exists ? `${data.promptsV2.shots}` : '缺失'}`);
lines.push(`本地产物: ${data.localVideos.length}个mp4`); lines.push(`本地产物: ${data.localVideos.length}个mp4`);
lines.push(`JZAO ep01产物: ${data.jzaoVideos.length}个mp4`); lines.push(`JZAO ep01产物: ${data.jzaoVideos.length}个mp4`);
lines.push(`JZAO ep01-3D产物: ${data.jzao3dVideos.length}个mp4`); lines.push(`JZAO ep01-3D产物: ${data.jzao3dVideos.length}个mp4`);
@ -233,11 +258,15 @@ function main() {
lines.push(''); lines.push('');
lines.push('## 推荐下一步'); lines.push('## 推荐下一步');
lines.push('1. 只保留3D漫剧为active制作线。'); lines.push('1. 只保留3D漫剧为active制作线。');
lines.push('2. 旧真人提示词不再继续生成重新生成3D主线提示词。'); lines.push(data.promptsV2.exists
? '2. 旧真人提示词不再继续生成;使用 ep01-prompts-3d-v2.json 作为主线。'
: '2. 旧真人提示词不再继续生成重新生成3D主线提示词。');
lines.push('3. 旧JZAO视频不进入生产线只作为反例经验。'); lines.push('3. 旧JZAO视频不进入生产线只作为反例经验。');
lines.push('4. 按 PIPELINE-3D-MANJU.hdlp 重建 EP01-15S-V2。'); lines.push(data.directorEncodingV2.exists && data.promptsV2.exists
? '4. 下一步生成/确认CHAR-003、ENV-002、PROP牌匾/广告牌视觉锚点。'
: '4. 按 PIPELINE-3D-MANJU.hdlp 重建 EP01-15S-V2。');
lines.push('5. 状态文件必须由体检报告回写,不再靠人工记忆。'); lines.push('5. 状态文件必须由体检报告回写,不再靠人工记忆。');
lines.push('6. 生成API只在体检通过后调用。'); lines.push('6. 视觉锚点和生成前体检通过后才调用API。');
lines.push(''); lines.push('');
const mdPath = path.join(OUT, 'system-audit-latest.md'); const mdPath = path.join(OUT, 'system-audit-latest.md');
fs.writeFileSync(mdPath, lines.join('\n'), 'utf8'); fs.writeFileSync(mdPath, lines.join('\n'), 'utf8');