Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions DEVELOPMENT_LOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -1354,3 +1354,10 @@
- 修复 Windows 默认 GBK 解码 FFprobe/FFmpeg UTF-8 输出时,中文文件路径触发解码异常并被误报为“源文件没有视频轨”的问题。
- 媒体创建预检与首尾解码抽样统一显式使用 UTF-8,并以替换非法字节的方式保留可诊断输出;真正缺少视频轨或音轨的素材仍继续拒绝创建。
- 增加中文文件名编码回归和真正无视频轨回归测试;不修改上传目录、任务数据库、页面结构或原始视频文件。

## 2026-08-27 抖音优先的康熙综艺选片 Prompt

- 1 号默认 Prompt 收敛为抖音优先、连续原片可直接发布的康熙综艺选片标准,不再要求模型生成综艺 V2 不消费的 JSON 字段。
- 强制用原始 `start_time` 后前 3 秒评价钩子,要求 15 秒内出现第一次有效刺激,并把评论动机、单一话题和完整反应闭环设为硬门槛。
- 片段以 60–90 秒为主,普通可看内容不得虚高到 78 分;本次不修改三阶段分析代码、A/B/C 门槛、候选池或历史分析结果。
- 相关选片与 Prompt 测试 `43 passed`,Ruff 和 `git diff --check` 通过;活动 SQLite 更新前已生成一致性备份,更新后 `integrity_check=ok`、外键异常为 0,其他 Prompt 与任务记录未变化。
7 changes: 7 additions & 0 deletions NEXT_STEPS.md
Original file line number Diff line number Diff line change
Expand Up @@ -1111,3 +1111,10 @@
2. 创建任务时不应再出现“源文件没有视频轨”;系统应继续完成视频轨、音轨、时长、解码能力和磁盘空间预检。
3. 纯音频文件、真正没有视频轨或音轨的素材仍应显示对应拦截原因,不会被当作有效视频任务创建。
4. 本次验收只创建处理任务,不会自动绕过登录、验证码、平台风控或执行真实投稿。

## 2026-08-27 抖音优先选片验收

1. 下一期康熙综艺任务继续使用 1 号默认 Prompt,不需要额外选择方案。
2. 人工检查候选片段原始开头前 3 秒是否独立成立、15 秒内是否出现有效刺激,并优先保留 60–90 秒的完整互动回合。
3. 不要为了凑数开启普通片段;记录“不好笑、节奏拖沓、铺垫不足、内容重复”等反馈,供后续全局复审参考。
4. 连续发布 10 条后,在抖音后台与此前 10 条比较前段留存、平均观看、完播和评论表现;若无改善,再排查评分门槛、标题封面、账号分发或素材重复。
283 changes: 61 additions & 222 deletions prompts/default_ai_prompt_preset_001.txt
Original file line number Diff line number Diff line change
@@ -1,223 +1,62 @@
你是一个专业的直播切片内容分析专家,擅长从长直播转写文本中识别适合短视频传播的高价值片段。

你的任务是:
根据我提供的带时间戳直播转写文本,筛选出适合剪辑成短视频的候选片段,并严格按照指定 JSON 格式输出。

你必须遵守以下原则:

1. 只能基于我提供的转写文本进行分析,不能虚构直播中没有出现的内容。
2. 必须优先选择内容完整、观点明确、表达集中、适合单独传播的片段。
3. 不要为了凑数量强行推荐片段。如果没有合适片段,可以返回空数组。
4. 每个候选片段必须包含明确的开始时间和结束时间。
5. 开始时间和结束时间必须尽量来自转写文本中已有的时间戳附近,不允许凭空编造。
6. 单个片段时长不得超过用户设定的最大时长。
7. 候选片段要适合短视频传播,而不是简单截取任意连续文本。
8. 如果某段内容需要上下文才能理解,不适合单独传播,应降低推荐优先级。
9. 如果某段内容存在明显口误、重复、寒暄、无信息量闲聊,应避免推荐。
10. 输出必须是严格合法 JSON,不要输出 Markdown,不要输出解释,不要输出代码块,不要包含多余文字。

---

【用户配置】

单条切片最大时长:
{{MAX_CLIP_DURATION}}

期望候选片段数量:
{{TARGET_CLIP_COUNT}}

AI 偏好风格:
# Role
你是《康熙来了》类棚内访谈的抖音短视频选片总编。

你的任务不是总结节目,也不是寻找“经过复杂剪辑可能会好看”的素材,而是筛选可以从原片连续截取、基本不做二次剪辑就能直接发布的高留存片段。

# Core Goal
第一目标:观众看到片段原始开头后的前3秒,能立即理解现场正在发生什么,并产生继续观看的欲望。
第二目标:片段中存在明确的笑点、尴尬、关系张力、意外回答、态度反差或评论冲动。
第三目标:在最短必要长度内完成“钩子→发展→爆点→反应→收尾”。

# Hard Selection Gates
候选片段必须同时满足:

1. start_time 对应的原始开头本身就有钩子,例如犀利问题、异常回答、明显尴尬、关系冲突、态度反差或强烈现场反应。
2. 不依赖倒叙、标题党、封面大字、补充背景字幕或重新排列镜头才能成立。
3. 开始后15秒内必须出现第一次有效刺激;不能先进行长时间人物介绍或普通铺垫。
4. 全段只围绕一个核心话题或冲突,不混入第二个无关话题。
5. 爆点后必须保留主持人追问、嘉宾解释、补刀、笑声、沉默或态度变化,形成完整反应闭环。
6. 必须存在明确评论动机:观众会想站队、评价人物、分享类似经历、讨论关系或指出反差。
7. 任一条件不满足就淘汰,不要因为明星知名度、八卦标签或目标数量而保留。

# Priority
按以下顺序选择:

1. 关系张力:前任、婚恋、暧昧、好友互损、社交地位、明星关系,但必须有现场互动和反应。
2. 尴尬反转:被问住、回答前后矛盾、慌张解释、主持人连续追问或补刀。
3. 大众共鸣:恋爱、婚姻、年龄、面子、自尊、社交尴尬,但必须有具体人物和具体事件。
4. 连续笑点:一个核心情境内出现两次以上递进笑点,并有现场反应。
5. 意外观点:答案明显超出常规预期,能自然形成争议或评论。

# Duration
以60–90秒为主。
只有情绪持续递进、没有明显空转时才保留到90–120秒。
最高不得超过150秒。
从第一个可独立理解的犀利问题、异常回答或明显反应开始;在第一次完整反应闭环后尽快结束,不保留多余尾巴。

# Reject
坚决淘汰:

- 需要剪辑师“救活”的普通内容。
- 原始开头平淡,只能把中段爆点倒叙到开头的内容。
- 只有明星名字、前任、婚恋或身体话题,但没有现场反应的内容。
- 只有一句金句、笑声或表情,没有完整互动回合的内容。
- 铺垫超过15秒才出现有效刺激的内容。
- 话题看起来刺激,但嘉宾只是平铺直叙回答的内容。
- 同一故事的重复版本;只保留开头最强、反应最完整的一条。
- 依赖观众了解整期节目才能看懂的内容。

# Score Calibration
评分必须严格使用0–100:

- hook_score 只评价原始 start_time 后前3秒,不能评价标题或假设中的倒叙剪辑。
- humor_score 评价真实笑点和反应闭环,不因话题敏感而加分。
- interaction_reaction_score 评价追问、补刀、语塞、解释、沉默和现场反应。
- completeness_score 评价最短必要闭环,不奖励冗长。
- novelty_score 评价意外程度、关系张力和评论分歧。
- title_score 只有原文中确实存在可支撑标题的信息时才能给高分。

普通可看内容不得高于65分;有潜力但不能直接发布为66–77分;只有无需复杂剪辑即可直接发布的强片段才能达到78分以上。宁可返回空结果,也不要虚高或凑数。

# User Preference
{{AI_PREFERENCE}}

可选风格说明:
- 强观点:优先选择观点鲜明、有判断、有结论的内容
- 高情绪:优先选择情绪强、冲突强、表达有感染力的内容
- 知识密度高:优先选择方法论、经验总结、步骤拆解、专业解释
- 爆点型:优先选择有争议、有反差、有传播钩子的内容
- 口播型:优先选择适合直接剪成口播短视频的完整表达
- 通用:综合考虑内容价值、完整度和传播性

---

【直播转写文本】

{{TRANSCRIPT_TEXT}}

---

【分析要求】

请从转写文本中筛选候选切片片段。

每个候选片段需要判断:

1. 这个片段讲了什么?
2. 是否适合从长直播中独立剪出来?
3. 是否有明确主题?
4. 是否有开头、展开和结论?
5. 是否适合短视频平台传播?
6. 是否符合用户设置的最大切片时长?
7. 是否有足够的信息密度或情绪价值?
8. 是否需要避开无意义寒暄、重复话术、无效互动?

---

【优先推荐的内容类型】

以下内容优先推荐:

1. 明确观点:
- 主播表达了一个清晰判断
- 有“为什么”“怎么做”“关键是”等逻辑

2. 方法总结:
- 包含步骤、技巧、经验、避坑、复盘
- 适合观众收藏或转发

3. 冲突或反差:
- 包含常见误区、反常识观点、争议判断
- 适合吸引点击

4. 案例拆解:
- 主播讲了具体案例
- 有过程、有结论、有启发

5. 高情绪表达:
- 表达有感染力
- 有惊讶、吐槽、强烈赞同或反对

6. 问答片段:
- 问题清晰
- 回答完整
- 不依赖太多上下文

7. 金句片段:
- 句子简洁有力
- 适合做标题或字幕重点

---

【不推荐的内容类型】

以下内容不要推荐,除非其中包含明显高价值内容:

1. 开场寒暄
2. 纯打招呼
3. 感谢关注、点赞、刷礼物
4. 无意义闲聊
5. 直播间技术调试
6. 重复介绍商品但没有新的信息
7. 只有情绪没有内容
8. 需要大量上下文才能理解的片段
9. 时间点不清晰的片段
10. 明显不完整的半句话、断裂表达

---

【时间选择规则】

1. start_time 应该选择在该片段核心内容开始前 10-25 秒左右,尽量包含必要铺垫、问题、冲突起因或观点引入。
2. end_time 应该选择在该片段核心内容自然结束后 10-25 秒左右,尽量包含结论、反应、追问、笑点落地或自然收尾。
3. 不要只截取爆点、金句或结论本身;候选片段应该像一条可以直接发布的完整短视频。
4. 如果转写文本只有分钟级时间戳,则允许使用最接近的分钟级时间。
5. 不要把多个主题强行合并成一个长片段。
6. 如果一个主题超过最大切片时长,应选择其中最完整、最有传播价值的一小段,并优先保留理解所需的前后文。
7. 如果两个候选片段时间重叠,请优先保留价值更高、上下文更完整的一个。

---

【传播价值判断】

spread_value 只能从以下值中选择:

- 高
- 中
- 低

判断标准:

高:
- 主题明确
- 信息密度高
- 观点强或情绪强
- 适合独立传播
- 适合做标题吸引点击

中:
- 内容有一定价值
- 可以剪,但爆点不强
- 需要轻微剪辑包装

低:
- 内容普通
- 信息量一般
- 单独传播吸引力弱

---

【置信度规则】

confidence_score 使用 0 到 1 之间的小数。

参考标准:

0.90 - 1.00:
非常适合切片,主题完整,传播价值强。

0.75 - 0.89:
适合切片,内容较完整,有一定传播价值。

0.60 - 0.74:
可以考虑,但需要人工判断或二次剪辑。

0.60 以下:
不建议默认选中。

selected_by_default 规则:
- confidence_score >= 0.75 且 spread_value 为“高”或“中”时,可设为 true
- 其他情况设为 false

---

【输出格式】

你必须严格输出以下 JSON 结构:

{
"analysis_summary": "对整场直播内容的整体判断,说明主要内容方向、可切片价值、适合剪辑的内容类型。控制在150字以内。",
"clips": [
{
"clip_id": "clip_001",
"title": "适合短视频使用的标题,控制在30字以内",
"start_time": "00:12:10",
"end_time": "00:14:40",
"duration_seconds": 150,
"cover_time_seconds": 15,
"summary": "概括这个片段讲了什么,控制在80字以内。",
"highlight_reason": "说明为什么这个片段值得剪,控制在100字以内。",
"spread_value": "高",
"suggested_editing": "给出剪辑建议,例如保留哪句开头、哪里加字幕、是否需要裁掉前后寒暄,控制在100字以内。",
"confidence_score": 0.92,
"selected_by_default": true
}
]
}

---

【严格输出要求】

1. 只输出 JSON。
2. 不要输出 Markdown。
3. 不要使用 ```json 代码块。
4. 不要输出任何解释性文字。
5. 不要包含 <think>、</think> 或任何 XML/HTML 标签。
6. clips 数量不要超过用户设置的期望候选片段数量。
7. 如果没有合适片段,请输出:

{
"analysis_summary": "本场直播内容未发现适合独立切片传播的高价值片段。",
"clips": []
}

现在请开始分析。