优化全能创作
Deploy dev / deploy (push) Successful in 39s

This commit is contained in:
Azmat@qq.com
2026-09-29 15:15:54 +08:00
parent 1130ecd4ba
commit c687ec4bbd
16 changed files with 632 additions and 258 deletions
+23 -15
View File
@@ -43,8 +43,11 @@ VIDEO_PRESETS: dict[str, str] = {
"剧情反转带货不是给商品套一个故事壳。商品必须作为解决困境、解除误会、证明事实、完成翻盘或回收伏笔的关键物,"
"并在最终 Prompt、镜头、动作、对白和反转结果中反复可见地承担这个作用。"
"不得在故事结束后突然停下来介绍商品,也不能只在最后两秒放商品图。"
"必须先确定故事深度,再按所选 15 秒、30 秒或 60 秒的结构写人物关系、冲突铺垫、商品介入时机、反转和情绪落点;"
"禁止把同一条 15 秒故事机械加长或缩短。"
"开场默认按 60 秒完整短剧结构写人物关系、持续冲突、商品介入时机、反转和情绪落点,不追问 15/30 秒故事深度;"
"方案和视频 Prompt 都必须从故事的起因讲到结果:人物有具体目标,行动遭遇阻碍,失败或选择使局面升级,"
"商品通过真实使用改变局势,反转后要交代人物关系或目标的最终结果。"
"前 3 秒可以闪前但必须回到起因,最后不能停在中途冲突、悬念或一句带货口号上;"
"若用户后续明确修改视频时长,再按新时长重写结构,不能机械拉长或缩短原方案。"
),
"商品拟人广告": (
"把商品当成有性格的角色,但默认采用无脸拟人:商品本体保持真实完整,不在瓶身、包装或机身上新增卡通五官。"
@@ -100,7 +103,7 @@ VIDEO_PRESETS: dict[str, str] = {
PLOT_TWIST_PRESET = "剧情反转带货"
# 值同时是会话记忆中的稳定标识;label 则是用户在对话里看到的短说明。
# 保留旧会话 15/30 秒的稳定标识以便回放;新会话不再展示故事深度选择卡。
PLOT_TWIST_STORY_DEPTH_OPTIONS = (
{
"value": "15s",
@@ -157,26 +160,33 @@ def plot_twist_story_contract(value: str) -> str:
depth = plot_twist_story_depth(value)
if depth is None:
return ""
if depth["value"] == "smart":
depth = _PLOT_TWIST_DEPTH_BY_VALUE["60s"]
if depth["value"] == "15s":
return (
"【剧情反转带货·15秒快节奏反转·强制执行】只保留一条主冲突,主角 1 人、最多 1 名辅助人物。"
"【剧情反转带货·15秒快节奏反转·强制执行】虽短也要有开端、冲突、反转和明确结局,不能只截取一场戏;"
"只保留一条主冲突,主角 1 人、最多 1 名辅助人物。"
"0-3 秒强冲突或意外,3-6 秒问题升级,6-11 秒商品以正常使用动作介入并证明一个核心卖点,"
"11-15 秒完成结果反转与自然行动引导。商品必须在中段前出现;对白短、直接、有记忆点;"
"禁止复杂背景、支线、重复卖点和与商品无关的镜头。"
)
if depth["value"] == "30s":
return (
"【剧情反转带货·30秒轻剧情带货·强制执行】必须交代人物处境,可设置两人互动。"
"【剧情反转带货·30秒轻剧情带货·强制执行】写完人物目标从开端、冲突、反转到结局的因果线,"
"不可只写故事中段;必须交代人物处境,可设置两人互动。"
"0-4 秒抛出结果预告或冲突钩子,4-10 秒建立处境,10-17 秒让矛盾升级或一次错误尝试,"
"17-24 秒商品在转折点以完整正常使用过程介入,24-28 秒回收反转与人物反应,28-30 秒自然收束。"
"商品承担改变局面的实际作用;反转既服务剧情也证明卖点,禁止为了凑时长重复同一卖点。"
)
if depth["value"] == "60s":
return (
"【剧情反转带货·60秒完整短剧带货·强制执行】必须有人物关系、持续发展的矛盾、一次铺垫和一次回收。"
"0-5 秒高强度钩子,5-15 秒交代关系和处境,15-28 秒矛盾逐步升级,28-38 秒主角面临选择或第一次失败,"
"38-48 秒商品作为关键线索、工具、证据或关系转折点推进剧情,48-56 秒完成主要反转和情绪释放,"
"56-60 秒回扣商品价值并自然转化。商品可前置为伏笔但必须在后半段真正改变结局;"
"【剧情反转带货·60秒完整短剧带货·强制执行】这是一集有开端和结局的独立短剧,不是一部长剧中截取的一段。"
"先写【完整故事线】,依次写清开端、冲突、升级、反转、结局;每一段都有前因后果,人物目标和关系最终有结果。"
"0-5 秒可以用结果闪前作钩子,但随后必须回到故事起因;5-15 秒交代关系、目标与处境;"
"15-28 秒发生具体阻碍并升级;28-38 秒主角尝试、失败或作出选择;"
"38-48 秒商品作为提前铺垫过的线索、工具或证据,通过正常使用真正改变局势;"
"48-56 秒完成反转并展示可见后果;56-60 秒回收伏笔和人物关系,给故事结局,再自然带出商品价值。"
"结尾不是故事刚要开始、冲突悬而未决或单独口号式 CTA;商品不能只在结尾突然出现。"
"禁止用重复对白、无意义空镜或硬插卖点填满时长。"
)
if depth["value"] == "180s":
@@ -191,10 +201,7 @@ def plot_twist_story_contract(value: str) -> str:
"每章都要推进新的因果关系;同一角色、服装、商品/SKU、场景空间和光线跨六个 30 秒分段连续,"
"禁止重复对白、重复卖点、空镜凑时长或在章节边界换人换商品。"
)
return (
"【剧情反转带货·智能推荐】先根据商品卖点、已有素材和剧情空间推荐 15、30 或 60 秒之一并说明理由;"
"随后必须让用户选择实际时长,未确认前不得写剧情方向、策略、方案或出片指令。"
)
return ""
def apply_plot_twist_story_contract(name: str, story_depth: str, prompt: str) -> str:
@@ -270,7 +277,7 @@ def apply_plot_twist_direction_contract(prompt: str, *, title: str = "", conflic
VIDEO_PRESET_WORKFLOWS: dict[str, str] = {
"痛点解决演示": "先确认商品真实解决的具体问题与正常用法;生成前核对痛点、过程和结果都有可见证据。",
"真实使用演示": "优先核对商品真实用途、关键步骤和可证实卖点;不为氛围而增加不合理测试。",
"剧情反转带货": "先让用户选故事深度(15秒快节奏反转、30秒轻剧情带货、60秒完整短剧带货或智能推荐;暂不开放更长时长),再给三个与时长匹配的剧情方向;商品必须成为解决问题、解除误会、证明事实、回收伏笔或完成翻盘的关键。",
"剧情反转带货": "默认按 60 秒完整短剧带货创作,不在开头追问或展示 15/30 秒故事深度选择;核对商品信息后给三个完整剧情方向。商品必须成为解决问题、解除误会、证明事实、回收伏笔或完成翻盘的关键。",
"商品拟人广告": "先确认商品外观和性格表达方式;默认无脸拟人,商品保持真实完整,台词用画外声。",
"达人口播种草": "优先确认人物、多人出镜关系、真实体验和主卖点;生成前核对口播字数能在时长内说完,每个卖点都有画面证明。",
"商品图一键成片": "优先从商品参考图锁定外观;自动补场景和动作,但不替换或改变用户商品图里的结构、颜色和包装。",
@@ -298,7 +305,8 @@ VIDEO_PRESET_DELIVERY_CONTRACTS: dict[str, str] = {
"用近景展示材质、动作或结果。商品全程保持正常完整;不以破损、漏液、渗水、超载或超出用途的测试制造戏剧性。"
),
"剧情反转带货": (
"【预设执行层·剧情反转带货】人物关系、冲突、情绪变化和反转必须在每个关键镜头连续推进。"
"【预设执行层·剧情反转带货】按同一条完整故事线连续推进开端、冲突、升级、反转和结局;"
"人物关系、目标与情绪在每个关键镜头都有因果变化,结尾回收开头问题而非停在故事中段。"
"商品不是摆拍道具:必须充当解决问题的工具、解除误会的证据、关系变化的礼物或回收伏笔的关键物;"
"商品出现、使用和结果必须直接改变剧情走向,禁止剧情结束后再硬插卖点。"
),