From 3c564e12333c655c2cbf2fb4c296b39c624955e6 Mon Sep 17 00:00:00 2001 From: kang Date: Wed, 13 May 2026 21:46:40 +0800 Subject: [PATCH] auto-save 2026-05-13 21:46 (~3) --- .memory/worklog.json | 7 +++++++ docs/source-analysis.html | 12 ++++++++++++ web/app/page.tsx | 13 +++++++++---- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/.memory/worklog.json b/.memory/worklog.json index eca05ac..fcd8e58 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -2454,6 +2454,13 @@ "type": "session-heartbeat", "message": "Codex 会话活跃 · 最近命令:codex · 6 项未提交变更 · 最近提交:auto-save 2026-05-13 21:35 (~6)", "files_changed": 6 + }, + { + "ts": "2026-05-13T21:41:08+08:00", + "type": "commit", + "message": "auto-save 2026-05-13 21:40 (~6)", + "hash": "97d6104", + "files_changed": 6 } ] } diff --git a/docs/source-analysis.html b/docs/source-analysis.html index f2c26ea..358547b 100644 --- a/docs/source-analysis.html +++ b/docs/source-analysis.html @@ -830,6 +830,18 @@ api/main.py

变更记录

这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。

+
+
+

2026-05-13 · 生视频提示词改为产品图优先

+ Prompt + StoryboardWorkbench +
+
+

问题:已经有真实 SKG 产品图后,提示词还偏“借鉴原视频”,容易让模型保留竞品或改变产品形态。

+

改动:生成视频 prompt 明确“上传的 SKG 产品图是唯一产品真源”,首尾帧只控制起止构图、场景和动作,原视频链接只参考节奏和镜头调度;增加产品一致性、产品呈现、禁止非 SKG 产品/竞品包装/随机新增结构等约束。

+

影响:web/app/page.tsx

+
+

2026-05-13 · 产品参考支持本地上传和拖拽

diff --git a/web/app/page.tsx b/web/app/page.tsx index 19f63bb..515b648 100644 --- a/web/app/page.tsx +++ b/web/app/page.tsx @@ -254,15 +254,19 @@ export default function Home() { ? `参考元素:${frame.description.objects.slice(0, 6).map((o) => o.name).join("、")}` : "" const subjectDirection = scene.subject?.trim() - || "保留参考里的主体位置和动作关系,但人物/主体改成干净可信的 SKG 产品演示语境;不要保留医疗骨架、竞品或原视频人物设定,除非用户明确写了要保留。" + || "保留首尾帧里的主体位置、手部动作关系和镜头调度,但人物/主体必须服务于 SKG 产品演示;不要保留医疗骨架、竞品或原视频人物设定,除非用户明确写了要保留。" const productDirection = scene.product?.trim() - || "让 SKG 产品成为清晰可见的视觉主角,产品轮廓稳定,位置连续,不要在镜头中变成其他物体。" + || "以已上传 SKG 产品图为唯一产品真源,把参考视频或首尾帧里的任何非 SKG 产品替换成该产品;产品轮廓、颜色、材质、按键/接口/包装比例必须稳定,不要变成其他物体。" const sceneDirection = scene.scene?.trim() || "借鉴参考画面的构图、可信感和空间层次,但改造成适合 SKG 产品广告的现代家居、办公或零售场景。" const actionDirection = scene.action?.trim() || "按首帧到尾帧做平滑过渡,动作连续自然,镜头运动稳定,最后准确停在尾帧意图。" const prompt = [ `竖屏 9:16,${duration.toFixed(1)} 秒,SKG 产品短视频广告。`, + productRefs.length + ? `已上传 ${productRefs.length} 张 SKG 真实产品参考图。产品参考图是唯一产品真源:视频中出现的产品必须严格匹配这些图的外观、颜色、材质、结构比例和关键细节。` + : "未上传产品图时,仍需生成一个干净高级的 SKG 产品广告画面,但不得保留原视频里的竞品包装或平台元素。", + "首帧和尾帧只用于控制画面起止、构图、场景和动作方向;如果首尾帧里有竞品、文字包装或非 SKG 产品,必须替换为上传的 SKG 产品参考。", "使用首帧和尾帧生成连续过渡视频:首帧必须严格作为视频开始画面,尾帧必须作为视频结束目标画面,中间只做自然运动补间。", "生成一段单镜头连续视频,一镜到底,从首帧平滑过渡到尾帧;不要跳切,不要突然换场景,不要突然换主体,不要蒙太奇,不要多镜头拼接。", "如果提供了原视频链接,把它只作为节奏、镜头运动、动作顺序和画面调度参考;不要照搬原视频里的品牌、文字、水印、竞品产品或具体人物。", @@ -274,13 +278,14 @@ export default function Home() { `首帧:${labelOf(firstRef, "当前分镜关键帧")}`, `尾帧:${labelOf(lastRef, "未指定,按首帧小幅自然运动收尾")}`, `SKG 产品参考:${productRefs.length ? productRefs.map((ref, i) => `${i + 1}. ${labelOf(ref, "SKG 产品角度")}`).join(";") : "SKG 产品视觉主角"}`, - `动作参考:${labelOf(scene.action_image, "自然拿取、佩戴、展示或靠近产品的动作")}`, sourceScene, sourceStyle, sourceObjects, + "产品一致性要求:整个视频只能出现同一个 SKG 产品或同一套产品包装;不要生成第二种产品,不要改变 logo/形状/颜色,不要凭空增加按钮、屏幕、线缆、文字标签或说明书。", + "产品呈现要求:至少一次让产品清晰占据画面视觉中心,边缘清楚、材质真实、比例可信;手部接触产品时不要遮挡关键外观,产品不能融化、扭曲、穿帮或漂移。", "运动要求:动作幅度小而连续,速度均匀,手部和产品位置前后一致,产品外形不变形,人物表情和姿态不漂移,背景只允许轻微景深和光影变化。", "商业质感:真实拍摄感,干净高级,柔和稳定打光,产品边缘清晰,材质真实,画面无抖动、无拉伸、无闪烁。", - "禁止:字幕、文字、平台 UI、TikTok 水印、logo 水印、免责声明、竞品包装、随机新物体、医学骨架、夸张病症画面、恐怖元素、画面撕裂、人物或产品突然变形。", + "禁止:字幕、文字、平台 UI、TikTok 水印、logo 水印、免责声明、竞品包装、随机新物体、非 SKG 产品、医学骨架、夸张病症画面、恐怖元素、画面撕裂、人物或产品突然变形。", ].join("\n") try {