Explorar o código

refactor: 去除强制 logo_3d 生成门店内景的约束,门店场景改由门店空间索引实景图按动线 zone 选取

- config.json 移除 logo_3d 固定素材条目(品牌资产由 4 项变 3 项)
- SKILL/asset-collection/wan3-workflow/script-template/elements/README/docs/flowchart 同步:
  删除「生成含 LOGO 门店内景照片」步骤,改为从 assets/store-spatial-index/ 按动线 zone 选取实景图作 Image 2
- LOGO 随品牌墙/发光字展柜实景自然呈现,不再单独合成
- 清理 SKILL.md 残留 TEST_MARKER_123 测试行
zhengqi hai 1 semana
pai
achega
2c35394899

+ 11 - 11
README.md

@@ -4,14 +4,14 @@
 
 ## 适用场景
 
-- 用户上传/指定人物五视角图、制服细节图、品牌立体 LOGO、指定音色,或要求生成可直出 wan3 的视频脚本与物料。
+- 用户上传/指定人物五视角图、制服细节图、指定音色,或要求生成可直出 wan3 的视频脚本与物料(门店场景直接采用门店空间索引实景图)。
 - 典型触发:「帮我做一条美业口播视频(给 wan3 / 百炼)」「出个护肤科普短视频脚本并生成」。
 
 ## 八大硬约束(贯穿全程)
 
 1. **人物**必须用指定人物五视角图(固定锁定,全片不变脸)。
 2. **制服**参考指定细节图(可换款式/颜色,**胸牌样式绝对不可变**)。
-3. **门店内景**必须有指定立体 LOGO(合成进参考图,落位随动线规划主场景,不限定前台)。
+3. **门店场景**必须采用门店空间索引实景图(按动线规划从资源包选取对应 zone 照片),怡呵美 LOGO 随实景自然呈现。
 4. **音色**必须用指定文件作 `reference_audio`。
 5. 口播文案由用户内容**转口语化**适合口播。
 6. 整段视频**一个片段、≤30 秒**(超了反馈精简,循环直到满足;绝不拆片段)。
@@ -20,7 +20,7 @@
 
 ## 首次配置(必做,只需一步)
 
-> 本技能为「暨北内部 - 朵朵」专用锁定版:人物五视角图、制服细节图、怡呵美立体 LOGO、朵朵音色、百炼工作空间与 base_url **均已固定在 `scripts/config.json` 中**,使用者无需修改。
+> 本技能为「暨北内部 - 朵朵」专用锁定版:人物五视角图、制服细节图、朵朵音色、百炼工作空间与 base_url **均已固定在 `scripts/config.json` 中**,使用者无需修改(门店场景直接采用技能内置门店空间索引实景图,怡呵美 LOGO 随实景自然呈现)。
 
 1. **API Key(唯一需要你提供的)**:登录百炼 / DashScope 控制台 → 切换到 **北京(cn-beijing)** 地域 → 创建 API Key(`sk-` 开头,只显示一次)。复制 `scripts/.env.example` 为 `scripts/.env`,填入 `DASHSCOPE_API_KEY=sk-...` 即可。
    > ⚠️ `.env` 含你的密钥,**严禁提交 git 或随技能 zip 分发**;重新打包技能前请删除本地 `.env`。
@@ -30,7 +30,7 @@
 
 对 WorkBuddy 说:「用美业口播科普视频脚本技能,做一条关于 *[选题]* 的口播视频」。技能按 `SKILL.md` 的 11 步流程执行:
 
-> 收集输入 → 文字风格问卷 → 锁定固定素材 → 生成并确认物料(人物形象照 / 门店内景含 LOGO / 插画)→ 处理口播文案(口语化 + 30 秒硬卡)→ **确认口播 + 敏感词/合规检测(必跑,用户按建议改或自改后复检)** → 确定插画插入点 → 组装编导分镜 Prompt → 逐步确认 → 调 wan3 生成 → 成片交付 → 修改即整段重发。
+> 收集输入 → 文字风格问卷 → 锁定固定素材 → 生成并确认物料(人物形象照 / 门店空间实景图 / 插画)→ 处理口播文案(口语化 + 30 秒硬卡)→ **确认口播 + 敏感词/合规检测(必跑,用户按建议改或自改后复检)** → 确定插画插入点 → 组装编导分镜 Prompt → 逐步确认 → 调 wan3 生成 → 成片交付 → 修改即整段重发。
 
 也可手动驱动生成脚本:`python scripts/generate_video.py --help`。
 
@@ -41,8 +41,8 @@
 ```mermaid
 graph TD
     A[用户触发<br/>选题 / 选题+素材] --> B[收集基础输入<br/>+ 文字风格问卷]
-    B --> C[锁定固定素材<br/>4项OSS URL 已写死]
-    C --> D[生成并确认物料<br/>人物形象照 / 门店内景含LOGO / 插画]
+    B --> C[锁定固定素材<br/>3项OSS URL 已写死]
+    C --> D[生成并确认物料<br/>人物形象照 / 门店空间实景图 / 插画]
     D --> E[处理口播文案<br/>转口语化 + 30秒硬卡 ≤110字]
     E --> E2[确认口播 + 敏感词/合规检测<br/>必跑 · 机器初筛+人工复核]
     E2 --> F[确定插画插入点<br/>指定从哪句开始融入]
@@ -89,7 +89,7 @@ graph TD
 
 - `references/elements.md` — 全部可参数化元素与可选项(门店风格 / 插画风格 / 整体色调等)。
 - `references/wan3-workflow.md` — 百炼 wan3 端点 / 鉴权 / 参考映射 / 编导分镜 prompt 范式 / 实战坑位(背景漂移、口播加词、单字发音、插画禁人物、生成超时续轮询等)。
-- `references/asset-collection.md` — 固定 4 项素材包清单 + 自动生成物料确认 + LOGO 合成 + 物料登记 + wan3 映射。
+- `references/asset-collection.md` — 固定 3 项素材包清单 + 自动生成物料确认 + 门店空间实景图选取 + 物料登记 + wan3 映射。
 - `references/compliance-check.md` — 敏感词 / 合规检测方法论与报告模板(Step 6 必跑)。
 - `references/store-spatial-index.md` — 门店空间索引与空间锚定硬规则(Z01–Z09 可用 / U01–U03 禁用 / 常用映射 / V4 开放公共区关系 / 6 条硬规则)。
 - `assets/script-template.md` — 单段结构化 Markdown 脚本骨架(含物料清单与 wan3 请求段),填充后即为交付物。
@@ -107,7 +107,7 @@ beauty-talk-science-video-script/
 ├── references/
 │   ├── elements.md                # 全部可参数化元素与可选项
 │   ├── wan3-workflow.md           # 百炼 wan3 端点/鉴权/参考映射/编导分镜/实战坑位
-│   ├── asset-collection.md        # 固定 4 项素材 + 自动生成物料确认 + 物料登记
+│   ├── asset-collection.md        # 固定 3 项素材 + 自动生成物料确认 + 门店实景图选取 + 物料登记
 │   ├── compliance-check.md        # 敏感词/合规检测方法与报告模板(Step 6 必跑)
 │   └── store-spatial-index.md     # 门店空间索引与空间锚定硬规则(Z01–Z09/U01–U03)
 ├── assets/
@@ -138,20 +138,20 @@ beauty-talk-science-video-script/
 
 - **基础目录**:工作区内 `beauty-video-materials/`
 - **任务文件夹**:`beauty-video-materials/<任务短名>/`(`<任务短名>` 由选题/主题派生,如 `敏感肌功效型护肤品`、`贵产品无效`,去除特殊字符与空格)
-- **自包含**:本任务实际用到的参考图(人物完整形象照 / 门店内景 / 插画)也复制进该文件夹,使文件夹独立可交付、可归档(复用上次素材则复制一份进来)
+- **自包含**:本任务实际用到的参考图(人物完整形象照 / 门店空间实景图 / 插画)也复制进该文件夹,使文件夹独立可交付、可归档(复用上次素材则复制一份进来)
 
 ```
 beauty-video-materials/
 ├── _shared/                       # 共享素材库(跨任务复用,可选)
 │   ├── 人物_完整形象照.png
-│   ├── 门店_内景_1.png ~ 门店_内景_3.png
+│   ├── 门店_实景_Z0X.png(按动线 zone 选取,1~N 张)
 │   └── 插画_参考1.png / 插画_参考2.png
 └── <任务短名>/                    # 单个视频任务(自包含)
     ├── 脚本_<主题>.md             # 结构化交付脚本(Step 8/9)
     ├── prompt.txt                 # 提交 wan3 的纯文本 prompt(Step 8 写出)
     ├── 成片_<主题>.mp4            # 下载的视频成片(Step 10)
     ├── 人物_完整形象照.png         # Image 1(本任务生成或复用复制)
-    ├── 门店_内景_采用.png          # Image 2(含 LOGO)
+    ├── 门店_实景_Z0X.png          # 门店空间实景图(按动线规划从 store-spatial-index 选取,1~N 张)
     └── 插画/
         ├── 插画_参考1.png          # Image 3
         └── 插画_参考2.png          # Image 4

+ 22 - 22
SKILL.md

@@ -1,6 +1,6 @@
 ---
 name: beauty-talk-science-video-script
-description: 生成「美业口播科普视频脚本」并直出视频的通用技能。面向阿里云百炼 wan3(万相3.0)文生/参考生视频,把选题/人设/画幅/时长/场景/服装/造型/画质/穿插/字幕/配乐等元素参数化;人物五视角图、制服细节图、立体LOGO、音色四项固定素材来自技能素材包(assets/brand/)或公网URL(config.brand_assets)并锁定作生成输入;据其生成人物完整形象照、门店内景(含LOGO)、插画供用户确认,确认后的物料作为参考图提交 wan3;口播转为口语化;整段视频一个片段、≤30秒;确认后调用 scripts/generate_video.py 提交 wan3 异步任务、轮询、下载本地;修改即整段重发(不支持二次创作)。
+description: 生成「美业口播科普视频脚本」并直出视频的通用技能。面向阿里云百炼 wan3(万相3.0)文生/参考生视频,把选题/人设/画幅/时长/场景/服装/造型/画质/穿插/字幕/配乐等元素参数化;人物五视角图、制服细节图、音色三项固定素材来自技能素材包(assets/brand/)或公网URL(config.brand_assets)并锁定作生成输入;据其生成人物完整形象照、插画供用户确认,门店场景直接采用门店空间索引实景图(按动线 zone 选取),确认后的物料作为参考图提交 wan3;口播转为口语化;整段视频一个片段、≤30秒;确认后调用 scripts/generate_video.py 提交 wan3 异步任务、轮询、下载本地;修改即整段重发(不支持二次创作)。
 agent_created: true
 ---
 
@@ -12,7 +12,7 @@ agent_created: true
 
 1. **人物**必须用指定的(素材包 `assets/brand/character_5view.*` 或公网 URL `config.brand_assets.character_5view.url`)人物五视角图(固定锁定)。
 2. **制服**必须参考指定的(素材包或 URL)制服细节图(可换款式/颜色,**胸牌绝对不变**)。
-3. **门店内景**前台或某场景必须有指定的(素材包或 URL)怡呵美立体 LOGO(合成进参考图)。
+3. **门店场景**必须采用门店空间索引实景图(按动线规划从 `assets/store-spatial-index/` 选取对应 zone 照片作参考图),怡呵美 LOGO 随实景图(品牌墙/发光字展柜)自然呈现,不另行生成含 LOGO 的门店图。
 4. **音色**必须用指定的(素材包或 URL)音色文件作 reference_audio。
 5. 口播文案由用户内容**转换为口语化适合口播**的文案。
 6. 整段视频**一个片段、≤30 秒**;超 30 秒则反馈用户精简、循环直到满足。
@@ -39,13 +39,13 @@ agent_created: true
 ## 何时使用
 
 - "帮我做一条美业口播视频(给 wan3/百炼)" / "出个护肤科普短视频脚本并生成"
-- 用户上传/指定人物五视角图、制服细节图、LOGO、音色,或要求生成可直出的视频脚本与物料
+- 用户上传/指定人物五视角图、制服细节图、音色,或要求生成可直出的视频脚本与物料(门店场景直接采用门店空间索引实景图)
 
 ## 资源引用
 
 - `references/elements.md` — 全部可参数化元素与可选项(含门店风格/插画风格/整体色调)。
 - `references/wan3-workflow.md` — 百炼 wan3 端点/鉴权/参考映射/单段 prompt 范式/LOGO 合成/不二次创作。
-- `references/asset-collection.md` — 固定 4 项素材包清单 + 自动生成门店3/插画2确认 + LOGO 合成 + 物料登记 + wan3 映射。
+- `references/asset-collection.md` — 固定 3 项素材包清单 + 自动生成人物/插画确认 + 门店空间实景图选取 + 物料登记 + wan3 映射。
 - `references/store-spatial-index.md` — 门店空间索引与空间锚定硬规则(Z01–Z09 可用区 / U01–U03 禁用区 / 常用映射 / V4 开放公共区关系 / 6 条空间锚定硬规则);配套实景图在 `assets/store-spatial-index/`。
 - `assets/script-template.md` — 单段结构化 Markdown 脚本骨架(含物料清单与 wan3 请求段),填充后即为交付物。
 - `scripts/generate_video.py` — 解析素材(公网URL直传 / 本地图base64直传)→建任务→轮询→下载本地。
@@ -59,7 +59,7 @@ agent_created: true
 
 - **基础目录**:工作区内 `beauty-video-materials/`(与技能目录分离,纯产物区)。
 - **任务文件夹**:`beauty-video-materials/<任务短名>/`,`<任务短名>` 由选题/主题派生(如 `敏感肌功效型护肤品`、`贵产品无效`),去除特殊字符与空格。
-- **自包含**:本任务实际用到的参考图(人物完整形象照、门店内景、插画)也复制进该文件夹,使文件夹独立可交付、可归档(复用上次的素材则复制一份进来)。
+- **自包含**:本任务实际用到的参考图(人物完整形象照、门店空间实景图、插画)也复制进该文件夹,使文件夹独立可交付、可归档(复用上次的素材则复制一份进来)。
 - **标准结构**:
   ```
   beauty-video-materials/<任务短名>/
@@ -67,7 +67,7 @@ agent_created: true
   ├── prompt.txt              # 提交 wan3 的纯文本 prompt(Step 8 写出)
   ├── 成片_<主题>.mp4         # Step 10 下载的视频成片
   ├── 人物_完整形象照.png      # Image 1(本任务生成或复用复制)
-  ├── 门店_内景_采用.png       # Image 2(含 LOGO)
+  ├── 门店_实景_Z0X.png       # Image 2(门店空间索引实景图,按动线 zone 选取,LOGO 随实景自然呈现)
   └── 插画/
       ├── 插画_参考1.png       # Image 3
       └── 插画_参考2.png       # Image 4
@@ -89,24 +89,24 @@ agent_created: true
 
 ### Step 3 — 锁定固定品牌素材(URL 优先,本地文件兜底,校验存在)
 
-按 `references/asset-collection.md` 第一节,逐项解析并校验 4 个固定素材(**它们在本流程中是"生成输入",用于生成最终确认物料,默认不直接提交 wan3**):
+按 `references/asset-collection.md` 第一节,逐项解析并校验 3 个固定素材(**它们在本流程中是"生成输入",用于生成最终确认物料,默认不直接提交 wan3**):
 - 每项优先读 `scripts/config.json` 的 `brand_assets.<key>.url`(公网 URL,调用 wan3 时固定素材可直接透传);若留空则回退读取 `assets/brand/` 本地文件。
-- 人物五视角(`character_5view`)、制服细节(`uniform_detail`)、立体 LOGO(`logo_3d`)、音色(`voice_ref`,≤15s)。
+- 人物五视角(`character_5view`)、制服细节(`uniform_detail`)、音色(`voice_ref`,≤15s)。
 - **每项都必须有来源(URL 或本地文件),二者皆无 → 主动提示用户填 URL 或放文件,不进入后续生成**。
-- 锁定后:人物五视角 + 制服细节用于生成「人物完整形象照」、LOGO 用于生成「门店内景照片」、音色直接作 Audio 1;胸牌样式在锁定时即标注"不可变更"。
+- 锁定后:人物五视角 + 制服细节用于生成「人物完整形象照」、音色直接作 Audio 1;门店场景直接采用门店空间索引实景图(按动线 zone 选取),不另行生成;胸牌样式在锁定时即标注"不可变更"。
 
-### Step 4 — 生成最终确认物料(人物形象照 + 门店内景 + 插画)并确认
+### Step 4 — 生成最终确认物料(人物形象照 + 插画)并选取门店实景图
 
-**产物落盘**:本步生成的三类物料保存到**本任务的 `<任务短名>/` 文件夹**——人物完整形象照、门店内景照片放根目录;插画放 `插画/` 子目录;便于后续统一引用与归档。若人物/门店沿用上次已确认物料,复制一份进本任务文件夹保持自包含。
+**产物落盘**:本步生成的两类物料保存到**本任务的 `<任务短名>/` 文件夹**——人物完整形象照放根目录;插画放 `插画/` 子目录;门店空间实景图(按动线 zone 从资源包选取)另存 `门店实景/` 子目录;便于后续统一引用与归档。若人物沿用上次已确认物料,复制一份进本任务文件夹保持自包含。
 
-> ⚠️ **动线规划须最先确定(本步生成物料的前置)**:在生成任何物料前,先依选题/口播主题与 `references/store-spatial-index.md`(Z01–Z09 可用区)规划本片动线——列出本片**出场/经过的 zone、开场 zone、走位 zone、插画所在 zone**;**人物出场场景由动线规划决定,不再固定前台**。随后生成的门店内景照片须覆盖动线涉及的 zone,LOGO 落位于动线主场景的墙面/可见处(不限定前台)。该动线规划在 Step 8 组装时填入脚本第五节【动线设计规划】表。
+> ⚠️ **动线规划须最先确定(本步选取实景图的前置)**:在选取门店实景图前,先依选题/口播主题与 `references/store-spatial-index.md`(Z01–Z09 可用区)规划本片动线——列出本片**出场/经过的 zone、开场 zone、走位 zone、插画所在 zone**;**人物出场场景由动线规划决定,不再固定前台**。随后按动线涉及的 zone 从 `assets/store-spatial-index/` 选取对应实景图(LOGO 随实景图自然呈现,不另行生成含 LOGO 门店图)。该动线规划在 Step 8 组装时填入脚本第五节【动线设计规划】表。
 
 按 `references/asset-collection.md` 第二节,用图像生成工具基于锁定素材生成并展示,请用户确认后才作为 wan3 参考图:
 1. **人物完整形象照 — 1 张(可生成 2–3 张供选)**:以 `character_5view` 为人物参考、`uniform_detail` 为制服参考,合成「人物身穿制服的完整形象照」;胸牌样式与 `uniform_detail` 完全一致、不可变更。→ 确认后作为 **Image 1**。
-2. **门店内景照片(含怡呵美 LOGO)— 按动线规划 zone 生成**:以 `logo_3d` 为 LOGO 参考,按动线规划涉及的 zone(如开场 zone = 产品陈列架 Z02 / 洽谈区 Z04 / 前台 Z03…)生成对应门店内景,LOGO 落位于动线主场景墙面/可见处(不再限定前台侧)。→ 用户确认采用哪张作为主场景,记为 `门店_内景_采用.jpg`,作为 **Image 2**。
+2. **门店空间实景图(按动线规划 zone 选取)**:从 `assets/store-spatial-index/` 按动线规划涉及的 zone(如开场 zone = 产品陈列架 Z02 / 洽谈区 Z04 / 前台 Z03…)选取对应门店实景照片,作为 **Image 2**(场景参考图);怡呵美 LOGO 随实景图(品牌墙 Z01 / 发光字展柜 Z02 等)自然呈现,无需单独生成。多 zone 动线可选取多张分别作为各段背景参考。
 3. **内容插入插画参考图 — 2 张**(抽象可视化风格启发,无真人皮肤/血液/文字)→ **Image 3 / Image 4**。
 
-展示后请用户**逐类挑选/确认**;若用户**未做任何选择** → 系统**自动随机指定**一组(记录"已自动随机指定")继续。确认后的物料登记进脚本「物料清单」。
+展示后请用户**逐类挑选/确认**;若用户**未做任何选择** → 系统**自动随机指定**一组(记录"已自动随机指定")继续。确认后的物料(人物形象照/插画)与选取的门店实景图登记进脚本「物料清单」。
 
 ### Step 5 — 处理口播文案(转口语化 + 30 秒硬卡)
 
@@ -152,18 +152,18 @@ agent_created: true
   4. **门店丰富元素**(元素 27):在门店场景里随机点缀 2–3 个道具 / 人物(前台 / 美容床 / 沙发 / 桌椅 / 其他店员虚化走过),增加景深与真实感。
   5. **背景逐段锚定**(元素 22 / 门店空间索引):每个 Shot 必须绑定对应 zone 参考图的元素清单(如门厅:品牌墙 + 吊灯 + 白门 + 圆几绿植 + 白沙发;产品区:怡呵美发光字展柜 + 灯带层板 + 绿植),并在硬规则写"人物未走位时背景禁止漂移成其他房间";人物真实经过的过渡空间(如走廊)**必须传对应实景图**,仅靠俯瞰图 + 文字会脑补"幽灵硬件"(见 `wan3-workflow.md` 坑4 与 `references/store-spatial-index.md`,实景图在 `assets/store-spatial-index/`)。
 - 口播台词用 `{}` 圈出、逐句写进各 Shot 的「分镜内容」;在讲对口白前**加入语气/节奏指令**(见 `wan3-workflow.md` 第四节:疑问/转折处语调上扬、核心点重音与停顿、整体松弛有起伏、禁止机械平读),缓解 wan3 原生 TTS 语气偏平的问题;在「插画插入点」指定句处明确写"讲到[第 N 句:原文]时,画面以[某展示方式]融入插画风格的抽象可视化";音色用自然语言描述"随附音频作音色参考",**不写 Audio 1**。**⚠️ prompt 文本里绝不出现 `Image N`/`Audio N`**(会被 wan3 当对白念出,详见 `wan3-workflow.md` 第一节/第七节)。
-- 引用的是**确认后的生成物料**(仅内部对应 media 数组顺序,prompt 中不写 Image N/Audio N):人物完整形象照、门店内景照片(含 LOGO)、插画;LOGO 已在 Step 4 生成门店内景时落位,无需单独合成。
+- 引用的是**确认后的生成物料**(仅内部对应 media 数组顺序,prompt 中不写 Image N/Audio N):人物完整形象照、门店空间实景图(按动线 zone 选取,LOGO 随实景自然呈现)、插画;门店场景直接取自资源包实景图,无需合成 LOGO。
 
 ### Step 9 — 逐步确认后交付(贴合"逐步确认"习惯)
 
-1. 呈现「已确定元素清单」+「口语化口播文案(含字数校验)」+「插画插入点:第 N 句」+「固定素材(URL/本地,生成输入)」+「生成并确认的最终物料(人物完整形象照 / 门店内景照片 / 插画,含自动随机指定的项)」+「单段 Prompt / wan3 请求」。请用户确认或修正。
+1. 呈现「已确定元素清单」+「口语化口播文案(含字数校验)」+「插画插入点:第 N 句」+「固定素材(URL/本地,生成输入)」+「确认的最终物料(人物完整形象照 / 门店空间实景图 / 插画)」+「单段 Prompt / wan3 请求」。请用户确认或修正。
 2. 用户确认后,将完整脚本写入**本任务文件夹** `脚本_<主题>.md`(路径如 `beauty-video-materials/<任务短名>/脚本_<主题>.md`)并 present;参考物料图(人物/门店/插画)已在本任务文件夹内,一并随交付提供。
 3. 确认无误后再进入 Step 10 实际调用 API(避免浪费生成额度)。
 
 ### Step 10 — 调用百炼 wan3 生成视频 + 下载 + 确认
 
 1. 确保 `DASHSCOPE_API_KEY` 环境变量(或同目录 `.env`)已设置;`scripts/config.json` 的 workspace_id / base_url / `brand_assets` URL 为固定预填(暨北内部朵朵专用),无需改动。
-2. 执行 `scripts/generate_video.py`(参数见脚本模板第八节):提交**确认后的生成物料**(人物完整形象照 / 门店内景照片 / 插画,本地图编码 base64 直传;音色 voice_ref 按 URL 直传或本地 base64 直传)→ 建任务 → 轮询 → 下载到**本任务文件夹** `成片_<主题>.mp4`;`--media` 引用本任务文件夹内的人物形象照/门店内景/插画,`--output` 指向该文件夹成片路径(脚本已自动创建父目录)。
+2. 执行 `scripts/generate_video.py`(参数见脚本模板第八节):提交**确认后的物料**(人物完整形象照 / 门店空间实景图 / 插画,本地图编码 base64 直传;音色 voice_ref 按 URL 直传或本地 base64 直传)→ 建任务 → 轮询 → 下载到**本任务文件夹** `成片_<主题>.mp4`;`--media` 引用本任务文件夹内的人物形象照/门店实景图/插画,`--output` 指向该文件夹成片路径(脚本已自动创建父目录)。
 3. 捕获脚本 stdout 的 `VIDEO_PATH=...`,把生成的视频 present 给用户确认。
 4. 若生成失败/不满意 → 回到 Step 8 修改脚本,整段重发(见 Step 11)。
 
@@ -174,12 +174,12 @@ agent_created: true
 
 ## 关键约束(贯穿全程)
 
-- **固定 4 项永远锁定(作生成输入)**:人物五视角/制服细节/LOGO/音色来自素材包(`assets/brand/`)或公网 URL(`config.brand_assets`),不可被自动生成覆盖;制服胸牌样式绝对不可变。
-- **提交的是确认后的生成物料**:wan3 实际接收 Image 1=人物完整形象照、Image 2=门店内景照片(含 LOGO)、Image 3/4=插画、Audio 1=音色;原始 4 项仅用于生成这些物料,不直接提交。
-- **风格先确认后出图**:发起任务先文字版问风格,再生成「人物完整形象照 + 门店内景(含 LOGO)+ 插画」示例图供确认。
+- **固定 3 项永远锁定(作生成输入)**:人物五视角/制服细节/音色来自素材包(`assets/brand/`)或公网 URL(`config.brand_assets`),不可被自动生成覆盖;制服胸牌样式绝对不可变。
+- **提交的是确认后的生成物料**:wan3 实际接收 Image 1=人物完整形象照、Image 2=门店空间实景图(按动线 zone 选取)、Image 3/4=插画、Audio 1=音色;原始 3 项固定素材仅用于生成人物完整形象照,不直接提交;门店实景图直接取自资源包。
+- **风格先确认后出图**:发起任务先文字版问风格,再生成「人物完整形象照 + 插画」示例图供确认;门店场景直接采用门店空间索引实景图,无需生成示例。
 - **单片段 ≤30 秒**:口播超 110 字必须反馈精简、循环直到满足;不拆分片段。
-- **LOGO 必现(落位随动线主场景)**:在生成门店内景照片时以 `logo_3d` 为参考落位(Image 2),确保成片**动线规划的主场景**有怡呵美立体 LOGO(不再限定前台);人物不在前台出场时,LOGO 须在开场/主场景墙面或可见处出现。
-- **动线规划最先确定**:人物出场场景由动线规划决定,不固定前台;动线规划须于 Step 4 生成物料前先行确定(见 Step 4 前置说明),并填入脚本第五节【动线设计规划】表(含场景 zone 列),物料生成据此覆盖对应 zone 内景。
+- **LOGO 随实景自然呈现**:门店 LOGO 不另行生成,随选取的门店空间实景图(品牌墙 Z01「YIHEMEI 你的水光肌肤管理师」/ 发光字展柜 Z02 等)自然出现在成片;动线主场景若途经含 LOGO 的 zone,LOGO 即在画面中。
+- **动线规划最先确定**:人物出场场景由动线规划决定,不固定前台;动线规划须于 Step 4 选取实景图前先行确定(见 Step 4 前置说明),并填入脚本第五节【动线设计规划】表(含场景 zone 列),门店实景图据此按对应 zone 选取。
 - **原生音视频**:口播写进 prompt 作对白,音色作 reference_audio,wan3 一次性生成画面+对白+口型+环境音。
 - **插画插入点确认**:插画与口播文案都确认后,必须请用户指定插画从口播哪一句开始融入,再组装 prompt(见 Step 7);不静默默认。
 - **编导分镜(不站桩)**:单段 Prompt 必须像专业编导覆盖五块——① 人物行为动线(按内容长短设计走动/坐/起/落座,不全程正对镜头)② 运镜组合(2–3 种随机穿插)③ 插画展示方式(圆形PiP/条状PiP/侧边PiP 随机混用不固化、禁全屏)④ 门店丰富元素(前台/美容床/沙发/其他人物虚化走过随机点缀)⑤ **背景逐段锚定**(每个 Shot 绑定对应 zone 参考图元素清单,详见 `wan3-workflow.md` 坑4 与 `references/store-spatial-index.md`);详见 `wan3-workflow.md` 第四节与 `elements.md` 元素 12/25/26/27。

+ 3 - 4
assets/brand/README.md

@@ -1,14 +1,13 @@
 # 固定品牌素材包(brand assets)
 
-把以下 4 个固定素材放入本目录,技能每次运行会**直接读取并锁定**(不会自动生成、不会随机替换):
+把以下 3 个固定素材放入本目录,技能每次运行会**直接读取并锁定**(不会自动生成、不会随机替换):
 
 | 文件名(可改名,改名后在提示词/配置声明) | 作用 | wan3 角色 | 硬约束 |
 |---|---|---|---|
 | `character_5view.*`(png/jpg) | 人物五视角图 | `reference_image` = Image 1 | 全片同一人,脸/发型/年龄感不变 |
 | `uniform_detail.*` | 制服细节图 | `reference_image` = Image 2 | 可换款式/颜色;**胸牌样式必须完全一致、绝对不可变** |
-| `logo_3d.*` | 怡呵美立体 LOGO 源文件 | 合成进门店内景参考图(Image 2) | 必须出现在门店前台/某场景墙面 |
 | `voice_ref.*`(mp3/wav,≤15s) | 指定音色 | `reference_audio` = Audio 1 | 作为口播音色参考;超 15s 先裁剪一段 |
 
-跨团队:替换这 4 个文件即可复用技能,无需改流程。
+跨团队:替换这 3 个文件即可复用技能,无需改流程。
 
-> 注意:技能启动时会校验这 4 个文件是否存在;缺失任一项会提示你补充,不会进入后续生成。
+> 注意:技能启动时会校验这 3 个文件是否存在;缺失任一项会提示你补充,不会进入后续生成。

+ 14 - 13
assets/script-template.md

@@ -1,7 +1,7 @@
 # 美业口播科普视频脚本(单段 · 百炼 wan3):【主题】
 
 > 本模板由 `beauty-talk-science-video-script` 技能填充。下方所有 `[ ]` 占位项按用户确定的元素与 wan3 工作流生成。整段视频**一个片段、≤30 秒**,不支持二次创作(每次修改整段重发 wan3)。
-> 关键链路:原始固定素材(人物五视角图/制服细节图/LOGO/音色)是**生成输入**;最终提交 wan3 的是**经用户确认的生成物料**(人物完整形象照 / 门店内景照片 / 插画 / 音色)。
+> 关键链路:原始固定素材(人物五视角图/制服细节图/音色)是**生成输入**;最终提交 wan3 的是**经用户确认的物料**(人物完整形象照 / 门店空间实景图 / 插画 / 音色)。
 
 ---
 
@@ -17,11 +17,10 @@
 
 ## 二、固定品牌素材(生成输入,素材包/URL 锁定,不可覆盖)
 
-> 以下 4 项用于**生成**第三节的最终物料,默认不直接提交 wan3(voice_ref 作音色直接提交)。
+> 以下 3 项用于**生成**第三节的最终物料,默认不直接提交 wan3(voice_ref 作音色直接提交)。
 
 - `character_5view.*`(URL 或本地)→ 生成「人物完整形象照」的人物参考
 - `uniform_detail.*`(URL 或本地)→ 生成「人物完整形象照」的制服参考(胸牌锁死)
-- `logo_3d.*`(URL 或本地)→ 生成「门店内景照片」的 LOGO 落位参考
 - `voice_ref.*`(URL 或本地)→ Audio 1(直接提交,≤15s)
 
 ---
@@ -32,9 +31,9 @@
 
 - **人物完整形象照(Image 1)**:由 character_5view + uniform_detail 生成,`人物_完整形象照.jpg`(胸牌与 uniform_detail 一致、不可变更)。
   - 确认状态:[用户挑选 / 已自动随机指定:人物_形象_X]
-- **门店内景照片(Image 2,含怡呵美 LOGO)**:由 logo_3d 生成含 LOGO,`门店_内景_采用.jpg`(确认采用的位置)。
-  - 候选:按动线规划涉及的 zone 生成(如 `_1.jpg` 开场 zone 内景 / `_2.jpg` 走位 zone 内景 / `_3.jpg` 插画所在 zone 内景),LOGO 落位于动线主场景墙面/可见处,不再限定前台侧。
-  - 确认状态:[用户挑选 / 已自动随机指定:门店_内景_X]
+- **门店空间实景图(Image 2)**:按动线 zone 从 `assets/store-spatial-index/` 选取的实景照片(如 `门店_实景_Z02.jpg`),怡呵美 LOGO 随实景自然呈现,不另行生成。
+  - 选取:按动线规划涉及的 zone 选取对应实景图(如 `_Z02` 开场 zone / `_Z05` 走位走廊 / `_Z04` 落点洽谈区),多 zone 可多张分别作各段背景参考;U01–U03 禁用。
+  - 确认状态:[按动线 zone 选取:门店_实景_Z0X]
 - **插画参考图(Image 3 / Image 4,抽象可视化风格启发)**:`插画_参考1.jpg` / `插画_参考2.jpg`,无真人皮肤/血液/文字。
   - 确认状态:[用户挑选 / 已自动随机指定:插画_参考_X]
 
@@ -82,9 +81,9 @@
 ```
 【总体描述】
 一位身穿[米白]美容师制服、[深栗色半扎长发 + 斜刘海]、胸牌样式与参考形象照一致的女美容师,
-在怡呵美门店内(墙面有怡呵美立体 LOGO,背景虚化,可见门店场景元素——依动线规划,如前台、美容床、沙发、产品陈列架等,
+在怡呵美门店内(依据随附门店实景参考图,背景虚化,可见门店场景元素——依动线规划,如前台、美容床、沙发、产品陈列架等,
 一名店员从画面边缘虚化走过)拍摄。画面中的女美容师、门店与插画均依据随附参考图生成,
-须保持人物脸型/发型/制服/胸牌一致,门店须含怡呵美立体 LOGO,插画为卡通动漫风抽象可视化(无真人、无文字)。
+须保持人物脸型/发型/制服/胸牌一致,门店场景须与随附实景参考图一致(怡呵美 LOGO 随实景自然呈现),插画为卡通动漫风抽象可视化(无真人、无文字)。
 
 整体动线:[开场端坐于面诊桌前自然引入主题,中段起身缓步走向产品陈列架、边走边说,
 结尾保持站立、抬手手势收束];说话间以自然手势比划、轻微点头等真实肢体动作呈现。
@@ -119,7 +118,7 @@
 | 6 | 26-30s | Z04 洽谈区 | 保持、抬手收束(至结尾不再变换) | 抬手手势收束 | — |
 
 > 动作切换计数:端坐 → 起身走动(1 次);走动后落座/站立至结尾(不二次起身、不反向)。满足 ≤2 个动作切换。
-> 场景清单:本片出场/经过 zone = Z02 → Z05 → Z04(据此生成对应门店内景照片,LOGO 落位于开场 zone Z02 墙面/可见处;不限定前台)。
+> 场景清单:本片出场/经过 zone = Z02 → Z05 → Z04(据此从 `assets/store-spatial-index/` 选取对应门店实景图,LOGO 随 Z02 发光字展柜等地区实景自然呈现;不限定前台)。
 
 【分镜脚本】
 Shot 1 [0-4s]:[开场中近景,女美容师端坐面诊桌前,手持微晃手机质感,镜头极轻微横摇];
@@ -143,7 +142,7 @@ Shot 6 [26-30s]:[结尾缓慢拉远收束,她保持站立、抬手手势收
 ## 六、保留分析(Retention,一致性)
 
 - **人物**:与 Image 1(确认的人物完整形象照)同脸 / 同发型 / 同年龄感 / 同制服(胸牌尤甚),全片不变。
-- **场景**:动线规划确定的主场景(含怡呵美 LOGO)与 Image 2 一致,光线方向一致。
+- **场景**:动线规划确定的主场景(门店空间实景图,LOGO 随实景自然呈现)与 Image 2 一致,光线方向一致。
 - **音色**:同一 Audio 1 音色。
 - **插画风格**:与 Image 3 / Image 4 一致(抽象可视化)。
 
@@ -175,7 +174,9 @@ python scripts/generate_video.py \
   --prompt "$(cat prompt.txt)" \
   --media \
     人物_完整形象照.png:reference_image \
-    门店_内景_采用.png:reference_image \
+    门店_实景_Z02.png:reference_image \
+    门店_实景_Z05.png:reference_image \
+    门店_实景_Z04.png:reference_image \
     插画/插画_参考1.png:reference_image \
     插画/插画_参考2.png:reference_image \
     "https://cdn.x/voice_ref.mp3:reference_audio" \
@@ -183,7 +184,7 @@ python scripts/generate_video.py \
   --output 成片_<主题>.mp4
 ```
 
-> 说明:`--prompt` 直接读本任务文件夹的 `prompt.txt`(Step 8 写出);`--media` 引用本任务文件夹内的人物形象照 / 门店内景 / 插画,`--output` 指向同文件夹成片路径(脚本已自动创建父目录,无需手动 mkdir)。音色 `voice_ref` 走 `config.brand_assets` 固定 URL 透传,不进文件夹。
+> 说明:`--prompt` 直接读本任务文件夹的 `prompt.txt`(Step 8 写出);`--media` 引用本任务文件夹内的人物形象照 / 门店实景图 / 插画,`--output` 指向同文件夹成片路径(脚本已自动创建父目录,无需手动 mkdir)。音色 `voice_ref` 走 `config.brand_assets` 固定 URL 透传,不进文件夹。
 
 **等价于请求体(JSON)**:
 ```json
@@ -193,7 +194,7 @@ python scripts/generate_video.py \
     "prompt": "[第五节整段 prompt]",
     "media": [
       {"type": "reference_image", "url": "<人物_完整形象照 上传URL>"},
-      {"type": "reference_image", "url": "<门店_内景_采用 上传URL>"},
+      {"type": "reference_image", "url": "<门店_实景_Z0X 上传URL>"},
       {"type": "reference_image", "url": "<插画_参考1 上传URL>"},
       {"type": "reference_image", "url": "<插画_参考2 上传URL>"},
       {"type": "reference_audio", "url": "<voice_ref URL 或 上传URL>"}

+ 2 - 2
docs/flowchart.svg

@@ -31,12 +31,12 @@
   </g>
   <g>
     <rect x="80" y="128" width="520" height="52" rx="8" fill="#E6F1FB" stroke="#185FA5" stroke-width="0.5"/>
-    <text x="340" y="154" text-anchor="middle" dominant-baseline="central" font-size="14" font-weight="500" fill="#042C53" font-family="-apple-system,Segoe UI,Roboto,sans-serif">文字风格问卷 + 锁定 4 项固定品牌素材</text>
+    <text x="340" y="154" text-anchor="middle" dominant-baseline="central" font-size="14" font-weight="500" fill="#042C53" font-family="-apple-system,Segoe UI,Roboto,sans-serif">文字风格问卷 + 锁定 3 项固定品牌素材</text>
   </g>
   <g>
     <rect x="80" y="200" width="520" height="64" rx="8" fill="#E6F1FB" stroke="#185FA5" stroke-width="0.5"/>
     <text x="340" y="222" text-anchor="middle" dominant-baseline="central" font-size="14" font-weight="500" fill="#042C53" font-family="-apple-system,Segoe UI,Roboto,sans-serif">生成并确认物料</text>
-    <text x="340" y="246" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#0C447C" font-family="-apple-system,Segoe UI,Roboto,sans-serif">人物形象照 · 门店内景(含LOGO) · 插画</text>
+    <text x="340" y="246" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#0C447C" font-family="-apple-system,Segoe UI,Roboto,sans-serif">人物形象照 · 门店空间实景图 · 插画</text>
   </g>
   <g>
     <rect x="80" y="284" width="520" height="64" rx="8" fill="#E6F1FB" stroke="#185FA5" stroke-width="0.5"/>

+ 7 - 7
docs/暨北内部-朵朵口播视频专用技能.md

@@ -1,7 +1,7 @@
 # 暨北内部 - 朵朵口播视频专用技能
 
 > 本技能是「暨北内部 - 朵朵」品牌口播短视频的**专用锁定版**,基于 WorkBuddy 的 `beauty-talk-science-video-script` 技能收口而成。
-> 它把人物、制服、门店 LOGO、朵朵音色、百炼工作空间与模型接口**全部固定**,使用者**只需填入自己的 API Key** 即可一键生成可直接用于抖音 / 视频号的美业科普口播成片。
+> 它把人物、制服、朵朵音色、百炼工作空间与模型接口**全部固定**,门店场景直接采用技能内置门店空间索引实景图(怡呵美 LOGO 随实景自然呈现),使用者**只需填入自己的 API Key** 即可一键生成可直接用于抖音 / 视频号的美业科普口播成片。
 >
 > 本质:把一条「美业口播科普短视频」从零散需求,沉淀为一份**带固定品牌素材、由 AI 像专业编导一样分镜、并直出阿里云百炼 wan3(万相 3.0)视频**的结构化脚本与成片。
 
@@ -11,14 +11,15 @@
 
 以下内容已写死在 `scripts/config.json` 与技能流程中,使用者无需也不会去改。
 
-### 1. 固定品牌素材(4 项,公网 OSS URL 已预填)
+### 1. 固定品牌素材(3 项,公网 OSS URL 已预填)
 | 素材 | 含义 | 固定 URL |
 | --- | --- | --- |
 | 人物五视角图 | 朵朵固定形象(全片不变脸) | `https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/duoduo-demo.jpg` |
 | 制服细节图 | 美容师制服(胸牌样式**绝对不可变**,仅可换款式/颜色) | `https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/zhifu-demo.png` |
-| 怡呵美立体 LOGO | 合成进门店内景,落位随动线规划主场景墙面/可见处**必现**(不限定前台) | `https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/yihemei-logo.jpeg` |
 | 朵朵音色 | 口播对白音色(`reference_audio`,Audio 1 引用) | `https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/voice-demo-sd.wav` |
 
+> 注:门店场景不属固定素材,直接采用技能内置 `assets/store-spatial-index/` 的 zone 实景图(怡呵美 LOGO 随品牌墙/发光字展柜实景自然呈现),无需固定 LOGO URL。
+
 ### 2. 固定工程配置(百炼 wan3)
 | 配置 | 固定值 |
 | --- | --- |
@@ -102,8 +103,8 @@ python scripts/generate_video.py --help   # 查看参数
 ```mermaid
 flowchart TD
     A[用户触发:用本技能做「选题」口播视频] --> B[Step1 文字风格问卷<br/>无要求则系统自动生成物料]
-    B --> C[Step2 锁定4项固定品牌素材<br/>朵朵人物 / 制服 / LOGO / 音色]
-    C --> D[Step3 生成确认物料<br/>人物形象照 / 门店内景含LOGO / 插画]
+    B --> C[Step2 锁定3项固定品牌素材<br/>朵朵人物 / 制服 / 音色]
+    C --> D[Step3 生成确认物料<br/>人物形象照 / 门店空间实景图 / 插画]
     D --> E[Step4 用户确认物料选材]
     E --> F[Step5 口播转口语化 + 30秒字数硬卡]
     F --> G[Step6 用户确认口播文案]
@@ -118,7 +119,7 @@ flowchart TD
 ```
 
 **流程要点**
-- **物料确认(Step4)**:系统先用固定素材生成「人物形象照 / 门店内景(含 LOGO)/ 插画」,你确认选材后才往下。
+- **物料确认(Step4)**:系统先用固定素材生成「人物形象照 / 插画」,并从门店空间索引按动线 zone 选取实景图作场景参考,你确认选材后才往下。
 - **口播 + 插画插入点(Step6–7)**:口播文案确认后,再确认插画从哪句开始融入。
 - **编导分镜(Step8)**:AI 像专业编导一样设计人物动线、运镜、插画展示、门店丰富元素,全部落在单段 Prompt 里。
 - **整段重发(Step11→Step8)**:不满意则整段重发,不做局部二次创作。
@@ -140,7 +141,6 @@ flowchart TD
   "brand_assets": {
     "character_5view": { "url": "https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/duoduo-demo.jpg", "name": "朵朵" },
     "uniform_detail":   { "url": "https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/zhifu-demo.png" },
-    "logo_3d":          { "url": "https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/yihemei-logo.jpeg" },
     "voice_ref":        { "url": "https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/voice-demo-sd.wav" }
   }
 }

+ 19 - 18
references/asset-collection.md

@@ -4,22 +4,21 @@
 
 ## 一、固定品牌素材(生成输入,永远锁定,不可被自动生成覆盖)
 
-以下 4 项是**生成输入**,由用户提前以「公网 URL(config.brand_assets,推荐)」或「本地文件(assets/brand/,兜底)」提供,技能每次运行直接读取并锁定:
+以下 3 项是**生成输入**,由用户提前以「公网 URL(config.brand_assets,推荐)」或「本地文件(assets/brand/,兜底)」提供,技能每次运行直接读取并锁定:
 
 | 素材 | config 字段(url) | 本地兜底文件名 | 角色 | 硬约束 |
 |---|---|---|---|---|
 | 人物五视角图 | `brand_assets.character_5view.url` | `character_5view.*`(png/jpg) | 生成「人物完整形象照」的输入 | 全片同一人:脸型/五官/发型/年龄感一致 |
 | 制服细节图 | `brand_assets.uniform_detail.url` | `uniform_detail.*` | 生成「人物完整形象照」的输入 | 可换款式/颜色;**胸牌样式必须完全一致、绝对不可变更** |
-| 立体 LOGO 源文件 | `brand_assets.logo_3d.url` | `logo_3d.*` | 生成「门店内景照片」的输入(LOGO 落位) | 必须出现在门店内景(落位随动线规划主场景)墙面/可见处,不限定前台 |
 | 音色文件 | `brand_assets.voice_ref.url` | `voice_ref.*`(mp3/wav,单段 ≤15s) | `reference_audio` = Audio 1(直接提交) | 作为口播音色参考;超 15s 先裁剪一段代表音色 |
 
-- 这 4 项**默认不直接提交 wan3**——它们是用来生成「第二节最终确认物料」的输入;只有 `voice_ref` 作为音色直接提交。
-- 技能启动时**校验这 4 项**:每项要么 `config.brand_assets.<key>.url` 非空,要么 `assets/brand/` 存在对应本地文件;**两项皆无 → 主动提示用户(填 URL 或放文件),不进入后续生成**。
-- 跨团队复用:给团队「URL 列表」或「4 个文件」其一即可,无需改流程。
+- 这 3 项**默认不直接提交 wan3**——它们是用来生成「第二节最终确认物料」的输入;只有 `voice_ref` 作为音色直接提交。
+- 技能启动时**校验这 3 项**:每项要么 `config.brand_assets.<key>.url` 非空,要么 `assets/brand/` 存在对应本地文件;**两项皆无 → 主动提示用户(填 URL 或放文件),不进入后续生成**。
+- 跨团队复用:给团队「URL 列表」或「3 个文件」其一即可,无需改流程。
 
 ## 二、生成最终确认物料(核心:先出图确认,再提交)
 
-固定 4 项之外/之上,按用户选题/知识点**生成以下最终物料**,展示给用户确认后,这些确认稿才作为 wan3 的 `reference_image` 提交:
+固定 3 项之外/之上,按用户选题/知识点**生成以下最终物料**,展示给用户确认后,这些确认稿才作为 wan3 的 `reference_image` 提交:
 
 ### 1. 人物完整形象照 — 1 张(可生成 2–3 张供选)
 - **来源**:以 `character_5view`(人物五官/发型/年龄感)为人物参考、以 `uniform_detail`(制服款式/颜色、胸牌样式)为服装参考,用图像生成能力**合成 1 张「人物身穿制服的完整形象照」**。
@@ -27,11 +26,11 @@
 - 文件名:`人物_完整形象照.jpg`(若多张候选:`人物_形象_1.jpg` …)。
 - 这是最终提交 wan3 的 **Image 1**(不再是原始五视角图本身)。
 
-### 2. 门店内景照片(含怡呵美 LOGO)— 3 张(多位置供选)
-- **来源**:以 `logo_3d` 作 LOGO 参考,按动线规划涉及的 zone 生成门店内景,确保动线主场景墙面/可见处出现怡呵美立体 LOGO(单靠文字描述不可靠,必须靠 LOGO 参考落位;落位随动线规划,不限定前台)。
-- 位置按动线规划 zone 生成(如开场 zone = 产品陈列架 Z02 / 洽谈区 Z04 / 前台 Z03…),LOGO 落位于开场/主场景墙面或可见处。
-- 文件名:`门店_内景_1.jpg` / `门店_内景_2.jpg` / `门店_内景_3.jpg`。
-- 用户确认采用哪张作为视频主场景 → 记为 `门店_内景_采用.jpg`,这是最终提交 wan3 的 **Image 2**。
+### 2. 门店空间实景图(按动线 zone 选取,不另行生成)— 1~N 张
+- **来源**:从技能内置 `assets/store-spatial-index/` 按动线规划涉及的 zone 直接选取对应实景照片(Z01–Z09 可用区),**不另行用 AI 生成门店内景**。怡呵美 LOGO 随实景图(品牌墙 Z01「YIHEMEI 你的水光肌肤管理师」/ 发光字展柜 Z02 等)自然呈现,无需单独合成。
+- 选取:按动线 zone 选图(如开场 zone = 产品陈列架 Z02 / 洽谈区 Z04 / 前台 Z03…),多 zone 动线可选取多张分别作为各段背景参考。
+- 文件名:`门店_实景_Z0X.jpg`(与 zone 编号对应,如 `门店_实景_Z02.jpg`)。
+- 此为最终提交 wan3 的 **Image 2**(场景参考图);U01–U03 禁用区严禁选取。
 
 ### 3. 内容插入插画参考图 — 2 张(抽象可视化风格启发)
 - 风格来自元素 25(插画风格);内容提炼自知识点(如"屏障受损示意""红血丝 vs 泛红对比")。
@@ -41,26 +40,28 @@
 
 ## 三、确认与自动随机指定
 
-- 展示:人物完整形象照(1–3 张)、门店内景(3 张)、插画(2 张),请用户**逐类挑选/确认**。
-- 用户**未做任何选择** → 系统**自动随机指定**一组(记录"已自动随机指定:人物_形象_X / 门店_内景_X / 插画_参考_X"),继续组装,不阻塞流程。
-- 固定 4 项不进入"随机",始终用用户提供的素材(作生成输入)。
+- 展示:人物完整形象照(1–3 张)、插画(2 张),请用户**逐类挑选/确认**;门店空间实景图按动线 zone 选取(非生成,无需逐张挑选,可直接按 zone 选取)。
+- 用户**未做任何选择** → 系统**自动随机指定**一组(记录"已自动随机指定:人物_形象_X / 插画_参考_X"),继续组装,不阻塞流程;门店实景图按动线 zone 默认选取。
+- 固定 3 项不进入"随机",始终用用户提供的素材(作生成输入)。
 
 ## 四、物料清单登记(写入脚本「物料清单」段)
 
 - 人物完整形象照:`人物_完整形象照.jpg`(由 character_5view + uniform_detail 生成、确认,Image 1)
-- 门店内景照片:`门店_内景_采用.jpg`(由 logo_3d 生成含 LOGO、确认,Image 2)
+- 门店空间实景图:`门店_实景_Z0X.jpg`(按动线 zone 从 `assets/store-spatial-index/` 选取,LOGO 随实景自然呈现,Image 2)
 - 插画参考图:`插画_参考1.jpg` / `插画_参考2.jpg`(自动生成,Image 3 / Image 4)
 - 音色文件:`voice_ref.*`(确认,Audio 1,≤15s)
-- 原始输入(不提交):`character_5view.*` / `uniform_detail.*` / `logo_3d.*`
+- 原始输入(不提交):`character_5view.*` / `uniform_detail.*`
 
 ## 五、映射为 wan3 参考素材(供 generate_video.py)
 
-media 数组顺序 = prompt 中 Image/Audio 编号。**提交的是确认后的生成物料,不是原始 4 项文件本身**:
+media 数组顺序 = prompt 中 Image/Audio 编号。**提交的是确认后的生成物料,不是原始 3 项文件本身**:
 
 ```
 --media \
   人物_完整形象照.jpg:reference_image \   # Image 1(由 character_5view + uniform_detail 生成、确认)
-  门店_内景_采用.jpg:reference_image \    # Image 2(由 logo_3d 生成含 LOGO、确认)
+  门店_实景_Z02.jpg:reference_image \     # 场景参考(按动线规划从 assets/store-spatial-index/ 选取的 zone 实景图,1~N 张,此处示例开场 zone Z02)
+  门店_实景_Z05.jpg:reference_image \     # 场景参考(走位经 Z05 走廊)
+  门店_实景_Z04.jpg:reference_image \     # 场景参考(落点 Z04 洽谈区)
   插画_参考1.jpg:reference_image \        # Image 3
   插画_参考2.jpg:reference_image \        # Image 4
   https://cdn.x/voice_ref.mp3:reference_audio   # Audio 1(config URL 透传,或 assets/brand 本地文件)

+ 6 - 6
references/elements.md

@@ -54,9 +54,9 @@
 - 硬约束:单段 ≤15s;超长先裁剪一段代表音色。作为口播音色参考,wan3 原生生成对白并对口型。
 
 ## 10. 场景(Scene)
-- 默认:依动线规划确定(如美容店产品陈列架 / 洽谈区 / 前台 / 面诊房间,均含怡呵美 LOGO)
-- 可选项:美容店前台(背景含品牌 LOGO 立体标识,虚化)|美容店面诊房间|美容店产品陈列区|等候洽谈区|居家梳妆台|专业护肤工作室|医美机构大厅|自定义(场景由动线规划决定,不固定前台)
-- 说明:门店外观由自动生成示例图确认(见 asset-collection.md),LOGO 由 `logo_3d` 合成进选定门店图。
+- 默认:依动线规划确定(如美容店产品陈列架 / 洽谈区 / 前台 / 面诊房间,采用门店空间索引实景图)
+- 可选项:美容店前台(品牌墙/发光字实景,虚化)|美容店面诊房间|美容店产品陈列区|等候洽谈区|居家梳妆台|专业护肤工作室|医美机构大厅|自定义(场景由动线规划决定,不固定前台,采用门店空间索引实景图)
+- 说明:门店场景直接采用门店空间索引实景图(按动线 zone 从 `assets/store-spatial-index/` 选取,见 asset-collection.md / store-spatial-index.md),怡呵美 LOGO 随实景图(品牌墙/发光字展柜)自然呈现,不另行生成含 LOGO 的门店图。
 
 ## 11. 机位(Camera Position)
 - 默认:主角正对面、隔桌相对
@@ -107,14 +107,14 @@
 - 可选项:专业可信 / 温暖亲和 / 犀利直接 / 轻松幽默 / 焦虑安抚 / 自定义
 
 ## 21. 品牌露出(Brand Exposure)【固定素材包】
-- 默认:怡呵美 LOGO(来自素材包 `logo_3d.*`,合成进门店参考图)
+- 默认:怡呵美品牌元素(品牌墙 / 发光字)自然呈现于门店空间实景图(store-spatial-index)
 - 可选项:指定品牌 logo 立体标识(动线主场景墙面,背景虚化)|全程无品牌词 / 店名(仅 LOGO 视觉)
 - 硬约束:除用户明确指定的品牌露出外,人物、服装、场景表面不得出现任何 Logo / 文字 / 水印。
 
 ## 22. 门店 / 场景风格(Store / Scene Style)【自动生成确认用】
 - 默认:现代简约轻奢(干净明亮、浅木 / 白调)
 - 可选项:现代简约轻奢 / 日式原木 / 科技感冷调 / 暖白诊所风 / 法式优雅 / 自定义
-- 说明:驱动"门店内景示例图"的生成风格(含品牌 LOGO)。品牌来自元素 21。
+- 说明:用于文字风格问卷的门店调性参考(含品牌 LOGO 风格倾向),门店场景本身直接采用门店空间索引实景图、不另行生成示例图;品牌来自元素 21。
 
 ## 23. 插画风格(Illustration Style)【自动生成确认用】
 - 默认:扁平插画(干净、专业)
@@ -166,4 +166,4 @@
   - 其他人物(店员 / 顾客)从画面边缘走过、虚化处理
   - 绿植 / 灯光氛围
 - **随机点缀**:除口播主角外,画面里适当出现上述道具 / 人物,增加真实门店的丰富度与景深;其他人物一律虚化、不抢主角、不出现清晰正脸文字。
-- 说明:这些元素在生成门店内景照片(Image 2)与单段 Prompt 描述中体现;与元素 10/22 场景风格一致。
+- 说明:这些元素在门店空间实景图(Image 2,按动线 zone 选取)与单段 Prompt 描述中体现;与元素 10/22 场景风格一致。

+ 1 - 1
references/store-spatial-index.md

@@ -67,7 +67,7 @@
 
 ## 5. 在 wan3 工作流中如何引用
 
-- 从 `assets/store-spatial-index/` 选取脚本各 Shot 对应 zone 的实景图,作为 `reference_image` 传入(与「生成门店内景照片」二选一、实景优先)。
+- 从 `assets/store-spatial-index/` 选取脚本各 Shot 对应 zone 的实景图,作为 `reference_image` 传入(作为场景参考图,不再生成门店内景照片)。
 - 每个 Shot 在 prompt 里**逐段锚定该 zone 的元素清单**(如门厅:品牌墙「YIHEMEI 你的水光肌肤管理师」+ 丝带吊灯 + 白门 + 圆几绿植 + 白沙发;产品区:怡呵美发光字展柜 + 灯带层板 + 绿植),并写「人物未走位时背景禁止漂移成其他房间」。
 - 人物真实经过的过渡空间(如走廊 Z05)**必须传对应实景图**,仅靠俯瞰图 + 文字会脑补「幽灵硬件」。
 - 详细工程要点与坑例见 `references/wan3-workflow.md` 第三节「门店空间实景图(zone 参考)」条目与第七节坑4。

+ 12 - 12
references/wan3-workflow.md

@@ -23,20 +23,20 @@
 - **地域一致**:模型、Endpoint、API Key 必须同地域,跨地域调用会失败(本片 workspace 在 cn-beijing,Key 也须为 cn-beijing 地域)。
 - **流程**:创建任务 → 拿 `task_id`(24h 有效)→ 轮询 `tasks/{task_id}` 至 `SUCCEEDED` → 取 `output.video_url` → 下载。
 
-## 三、素材 → wan3 参考映射(技能固定 4 项 + 自动 2 类)
+## 三、素材 → wan3 参考映射(技能固定 3 项 + 自动 2 类)
 
 | 素材 | 来源 | media type | prompt 引用 | 约束 |
 |---|---|---|---|---|
 | 人物完整形象照 | **生成物料**:以 `character_5view` + `uniform_detail`(固定素材)为参考生成并确认(见 `asset-collection.md` 第二节) | `reference_image` | `Image 1` | 全片同脸/同发型/同年龄感/同制服;**胸牌样式与确认稿一致、不可变更** |
-| 门店内景照片(含 LOGO) | **生成物料**:以 `logo_3d`(固定素材)为 LOGO 参考生成含 LOGO 并确认(见第二节) | `reference_image` | `Image 2` | 动线主场景墙面/可见处须出现怡呵美立体 LOGO(落位随动线规划,不限定前台) |
-| 门店空间实景图(zone 参考,技能内置) | **技能内置资源**:`assets/store-spatial-index/` 下的 `Z0X_0Y_*.png`(10 张 9:16 实景图,区域/机位/可用-禁用区见 `references/store-spatial-index.md`) | `reference_image` | 自然语言描述 | 按脚本各 Shot 所在 zone 选取对应实景图传入;与「门店内景照片」二选一、**实景优先**;U01–U03 禁用;人物真实经过的过渡空间(如走廊 Z05)必须传对应图,只靠俯瞰图+文字会脑补「幽灵硬件」 |
+| 门店空间实景图(按动线 zone 选取) | **技能内置资源**:从 `assets/store-spatial-index/` 按动线 zone 选取对应 zone 实景图(见第二节),LOGO 随实景自然呈现 | `reference_image` | `Image 2` | 按动线 zone 选图;U01–U03 禁用;多 zone 可多张;LOGO 随实景(品牌墙/发光字展柜)自然出现 |
+| 门店空间实景图(zone 参考,技能内置) | **技能内置资源**:`assets/store-spatial-index/` 下的 `Z0X_0Y_*.png`(10 张 9:16 实景图,区域/机位/可用-禁用区见 `references/store-spatial-index.md`) | `reference_image` | 自然语言描述 | 按脚本各 Shot 所在 zone 选取对应实景图传入(**本技能唯一场景来源**);U01–U03 禁用;人物真实经过的过渡空间(如走廊 Z05)必须传对应图,只靠俯瞰图+文字会脑补「幽灵硬件」 |
 | 插画参考图 1/2 | 自动生成(抽象可视化风格启发) | `reference_image` | `Image 3` / `Image 4` | 无真人皮肤/血液/文字 |
 | 音色文件 | 公网 URL `config.brand_assets.voice_ref.url`(优先)或本地 `assets/brand/voice_ref.*`(兜底) | `reference_audio` | `Audio 1` | 单段 ≤15s;超长则裁剪一段代表音色 |
-| (生成输入,不提交)人物五视角图 / 制服细节图 / 立体 LOGO | 固定素材,仅用于生成 Image 1 / Image 2,本身不提交 wan3 | — | — | 锁死、不可被自动生成覆盖 |
+| (生成输入,不提交)人物五视角图 / 制服细节图 | 固定素材,仅用于生成 Image 1,本身不提交 wan3 | — | — | 锁死、不可被自动生成覆盖 |
 
 > ⚠️ 表中"prompt 引用"列的 `Image 1`/`Image 2`/`Image 3`/`Image 4`/`Audio 1` **只是素材顺序的内部代号,绝不能原样写进 prompt 文本**(否则会被 wan3 当对白念出,见第一节)。prompt 里用自然语言描述画面与音色即可,素材靠 media 数组顺序间接对应。
 
-> 提交的是**确认后的生成物料**,不是原始 4 项文件本身。
+> 提交的是**确认的物料**,不是原始 3 项文件本身。
 
 ## 四、单段 30 秒 prompt 范式(编导分镜版)
 
@@ -97,11 +97,11 @@ Shot 6 [26-30s]:[结尾缓慢拉远收束,她保持站立、抬手手势收
 
 ## 五、LOGO 落位(保证成片一定出现 LOGO)
 
-只靠 prompt 文字描述"前台有 LOGO"不可靠,必须在**生成门店内景照片**时就把 LOGO 锚定:
+怡呵美 LOGO 不另行生成,随**门店空间实景图**自然呈现在成片:
 
-1. 在 `asset-collection.md` 第二节第 2 步生成门店内景照片时,把固定素材 `logo_3d.*`(立体 LOGO 源文件,来自 URL 或本地)作为**图像生成参考**,要求模型在**动线规划的主场景**墙面/可见处生成与参考一致的怡呵美立体 LOGO(落位随动线规划,不限定前台)。
-2. 若生成模型对 LOGO 还原仍不精确,可在生成后对采用稿做图像贴图精修(PIL 合成),确保 LOGO 清晰一致。
-3. 确认后的门店内景照片(含 LOGO)作为 **Image 2** 传入 wan3;原始 `logo_3d` 本身不单独提交。
+1. 门店场景直接采用 `assets/store-spatial-index/` 的 zone 实景图(品牌墙 Z01「YIHEMEI 你的水光肌肤管理师」/ 发光字展柜 Z02 等本身就含怡呵美 LOGO),动线主场景若途经含 LOGO 的 zone,LOGO 即在画面中。
+2. 若某 Shot 所在 zone 实景图不含 LOGO、但成片需要在该处露出品牌,应在动线规划时改选含 LOGO 的 zone(如 Z01 品牌墙 / Z02 发光字展柜),而非事后合成。
+3. 门店空间实景图直接作为 **Image 2** 传入 wan3;不单独提交任何 LOGO 源文件。
 
 ## 六、调用脚本
 
@@ -114,7 +114,7 @@ python scripts/generate_video.py \
   --prompt "<脚本模板第五节:整段 prompt>" \
   --media \
     /abs/人物_完整形象照.jpg:reference_image \   # Image 1(由 character_5view + uniform_detail 生成、确认)
-    /abs/门店_内景_采用.jpg:reference_image \     # Image 2(由 logo_3d 生成含 LOGO、确认)
+    /abs/门店_实景_Z02.jpg:reference_image \     # Image 2(按动线 zone 从 store-spatial-index 选取的实景图,LOGO 随实景自然呈现)
     /abs/插画_参考1.jpg:reference_image \        # Image 3
     /abs/插画_参考2.jpg:reference_image \        # Image 4
     "https://cdn.x/voice_ref.mp3:reference_audio" \  # Audio 1(config URL 透传,或本地路径)
@@ -122,12 +122,12 @@ python scripts/generate_video.py \
   --output /abs/成片.mp4
 ```
 
-脚本会自动:公网 URL 素材直接透传(config.reupload_external_urls=true 时先下载再编码 base64 直传)、本地生成素材(人物形象照/门店内景/插画)读取后编码 base64 直传→建任务→轮询→下载到 `output_dir`,并把结果打印到 stdout(`VIDEO_PATH=...`)。技能捕获后把视频 present 给用户确认。
+脚本会自动:公网 URL 素材直接透传(config.reupload_external_urls=true 时先下载再编码 base64 直传)、本地素材(人物形象照/门店实景图/插画)读取后编码 base64 直传→建任务→轮询→下载到 `output_dir`,并把结果打印到 stdout(`VIDEO_PATH=...`)。技能捕获后把视频 present 给用户确认。
 
 ## 七、常见坑
 
 - 模型/Endpoint/Key 跨地域 → 直接失败,务必同地域。本片 workspace 在 cn-beijing,Key 也须 cn-beijing 地域。
-- `media[].url` 支持**公网 URL 直传**,也支持**图像 base64 直传**(`data:{mime};base64,{b64}`)。固定 4 项若填了公网 URL(config.brand_assets),脚本默认直接透传;若 wan3 不接受站外 URL,把 `config.reupload_external_urls` 设为 `true`,脚本会先下载再编码 base64 直传。本地生成的图(人物形象照/门店内景/插画)一律编码 base64 直传,无需文件上传端点。
+- `media[].url` 支持**公网 URL 直传**,也支持**图像 base64 直传**(`data:{mime};base64,{b64}`)。固定 3 项若填了公网 URL(config.brand_assets),脚本默认直接透传;若 wan3 不接受站外 URL,把 `config.reupload_external_urls` 设为 `true`,脚本会先下载再编码 base64 直传。本地生成的图(人物形象照/门店内景/插画)一律编码 base64 直传,无需文件上传端点。
 - 用户所给 `llm-….maas.aliyuncs.com/compatible-mode/v1` 是 LLM 网关,**视频端点主机不带 `llm-` 前缀**。若视频调用报 404,确认 `config.workspace_id`/`region` 是否拼出 `https://{ws}.{region}.maas.aliyuncs.com`;可显式填 `config.api_base` 覆盖。
 - `reference_audio` 单段 ≤15s、≤15MB;音色样本过长先裁剪。
 - `duration` 必须 ≤30,超了先在技能侧精简口播(见 SKILL.md 第 5 步硬卡循环)。

+ 0 - 1
scripts/config.json

@@ -11,7 +11,6 @@
   "brand_assets": {
     "character_5view": { "url": "https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/duoduo-demo.jpg", "type": "reference_image", "name": "朵朵" },
     "uniform_detail":   { "url": "https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/zhifu-demo.png", "type": "reference_image" },
-    "logo_3d":          { "url": "https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/yihemei-logo.jpeg", "type": "reference_image" },
     "voice_ref":        { "url": "https://jibei-open-oss.oss-cn-hangzhou.aliyuncs.com/ai-video-assets/duoduo/voice-demo-sd.wav", "type": "reference_audio" }
   }
 }