auto-save 2026-05-13 21:46 (~3)

This commit is contained in:
2026-05-13 21:46:40 +08:00
parent 97d6104c28
commit 3c564e1233
3 changed files with 28 additions and 4 deletions

View File

@@ -2454,6 +2454,13 @@
"type": "session-heartbeat", "type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 6 项未提交变更 · 最近提交auto-save 2026-05-13 21:35 (~6)", "message": "Codex 会话活跃 · 最近命令codex · 6 项未提交变更 · 最近提交auto-save 2026-05-13 21:35 (~6)",
"files_changed": 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
} }
] ]
} }

View File

@@ -830,6 +830,18 @@ api/main.py
<h2>变更记录</h2> <h2>变更记录</h2>
<p>这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。</p> <p>这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。</p>
<div class="changelog"> <div class="changelog">
<article class="change">
<header>
<h3>2026-05-13 · 生视频提示词改为产品图优先</h3>
<span class="tag blue">Prompt</span>
<span class="tag violet">StoryboardWorkbench</span>
</header>
<div class="body">
<p><strong>问题:</strong>已经有真实 SKG 产品图后,提示词还偏“借鉴原视频”,容易让模型保留竞品或改变产品形态。</p>
<p><strong>改动:</strong>生成视频 prompt 明确“上传的 SKG 产品图是唯一产品真源”,首尾帧只控制起止构图、场景和动作,原视频链接只参考节奏和镜头调度;增加产品一致性、产品呈现、禁止非 SKG 产品/竞品包装/随机新增结构等约束。</p>
<p><strong>影响:</strong><code>web/app/page.tsx</code></p>
</div>
</article>
<article class="change"> <article class="change">
<header> <header>
<h3>2026-05-13 · 产品参考支持本地上传和拖拽</h3> <h3>2026-05-13 · 产品参考支持本地上传和拖拽</h3>

View File

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