优化脚本

This commit is contained in:
Azmat@qq.com
2026-08-31 11:57:34 +08:00
parent f59e9d0418
commit cbd4f362d9
20 changed files with 261 additions and 74 deletions
+32 -4
View File
@@ -872,14 +872,42 @@ class VideoSubmissionStateUnknown(ProviderOutcomeUnknownError):
"""视频提交可能已到达供应商但未拿到可靠任务 ID;禁止自动重提。"""
# 本系统出的任何视频都不带字幕。这条是最高优先级的成片硬性禁令,写得穷尽一点 ——
# 实测只写「不要字幕」时,模型仍会自作主张加花字 / 价格贴片 / 购物浮层。
NO_EMBEDDED_CAPTIONS_REQUIREMENT = (
"成片硬性规则】画面不得出现字幕、台词字幕、花字、标题、价格贴片、UI 文字或其他后期文字叠加;"
"只保留商品包装上参考图中原有的真实物理文字与标识。旁白和环境音可以保留,但不要把声音转成画面文字。"
"字幕硬性禁令 · 最高优先级】本片是**无字幕成片**。画面中绝对不能出现任何后期文字或图形叠加,包括但不限于:"
"字幕、台词字幕、双语字幕、注音、标题、片头、片尾、花字、艺术字、水印、角标、台标、"
"logo 贴片、价格贴片、优惠券、促销标签、倒计时、弹幕、对话气泡、贴纸、表情包文字、"
"参数表、成分表、对比图表、评分条、UI 界面、按钮、购物车 / 购买浮层 / 商品卡、进度条、时间码。"
"口播、台词、旁白、音效只以**声音**存在,绝不转写成画面上的文字。"
"画面里唯一允许出现的文字,是参考图中商品包装 / 标签上原本就有的真实物理文字与品牌标识,"
"且必须与参考图完全一致,不得放大、重排或新增。"
"即使本提示词别处提到了「字幕」「花字」「标注」等字样,也一律以本条为准:不生成任何文字叠加。"
)
# 提示词正文里残留的「字幕:…」「花字:…」会和上面的禁令打架 —— 模型看到具体字幕内容就会画出来。
# 来源:脚本【声音】栏、视频提炼稿逐字照抄的画面花字、用户自己写的提示词。这里在送出前统一抹掉。
_CAPTION_FIELD_LINE_RE = re.compile(r"^\s*[-•*]?\s*(?:字幕|花字|艺术字|贴片|水印|角标|标题栏)\s*[:].*$")
_CAPTION_FIELD_INLINE_RE = re.compile(r"[,;、]?\s*(?:字幕|花字|艺术字|贴片|水印|角标)\s*[:][^;。\n]*")
def strip_caption_directives(prompt: str) -> str:
"""抹掉提示词里「字幕:xxx / 花字:xxx」这类会诱使模型画文字的栏位(整行或行内片段)。
只删这类字段,不动其余正文;删空的行直接丢掉。"""
out: list[str] = []
for line in (prompt or "").split("\n"):
if _CAPTION_FIELD_LINE_RE.match(line):
continue
cleaned = _CAPTION_FIELD_INLINE_RE.sub("", line)
if cleaned.strip() or not line.strip():
out.append(cleaned)
return "\n".join(out)
def enforce_no_embedded_captions(prompt: str) -> str:
"""所有视频入口最终汇入这里,避免某个入口漏传“无字幕”导致模型自行加花字。"""
base = (prompt or "").strip()
"""所有视频入口(专业创作 / 一键成片 / 自由创作 / 视频复刻 / 提炼改写)最终汇入这里:
先洗掉正文里的字幕字段,再追加最高优先级的无字幕禁令。少一个入口都不行。"""
base = strip_caption_directives(prompt or "").strip()
if NO_EMBEDDED_CAPTIONS_REQUIREMENT in base:
return base
return f"{base}\n{NO_EMBEDDED_CAPTIONS_REQUIREMENT}".strip()