diff --git a/DEVELOPMENT_LOG.md b/DEVELOPMENT_LOG.md index a9b4173..6880bd4 100644 --- a/DEVELOPMENT_LOG.md +++ b/DEVELOPMENT_LOG.md @@ -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 与任务记录未变化。 diff --git a/NEXT_STEPS.md b/NEXT_STEPS.md index c85a254..fa114af 100644 --- a/NEXT_STEPS.md +++ b/NEXT_STEPS.md @@ -1111,3 +1111,10 @@ 2. 创建任务时不应再出现“源文件没有视频轨”;系统应继续完成视频轨、音轨、时长、解码能力和磁盘空间预检。 3. 纯音频文件、真正没有视频轨或音轨的素材仍应显示对应拦截原因,不会被当作有效视频任务创建。 4. 本次验收只创建处理任务,不会自动绕过登录、验证码、平台风控或执行真实投稿。 + +## 2026-08-27 抖音优先选片验收 + +1. 下一期康熙综艺任务继续使用 1 号默认 Prompt,不需要额外选择方案。 +2. 人工检查候选片段原始开头前 3 秒是否独立成立、15 秒内是否出现有效刺激,并优先保留 60–90 秒的完整互动回合。 +3. 不要为了凑数开启普通片段;记录“不好笑、节奏拖沓、铺垫不足、内容重复”等反馈,供后续全局复审参考。 +4. 连续发布 10 条后,在抖音后台与此前 10 条比较前段留存、平均观看、完播和评论表现;若无改善,再排查评分门槛、标题封面、账号分发或素材重复。 diff --git a/prompts/default_ai_prompt_preset_001.txt b/prompts/default_ai_prompt_preset_001.txt index 923f923..fe398ca 100644 --- a/prompts/default_ai_prompt_preset_001.txt +++ b/prompts/default_ai_prompt_preset_001.txt @@ -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. 不要包含 或任何 XML/HTML 标签。 -6. clips 数量不要超过用户设置的期望候选片段数量。 -7. 如果没有合适片段,请输出: - -{ - "analysis_summary": "本场直播内容未发现适合独立切片传播的高价值片段。", - "clips": [] -} - -现在请开始分析。