douyin-speaking-daily-p1-optimization-spec.md 10 KB

douyin-speaking-daily P1 优化 Spec

日期:2026-05-10
对象:douyin-speaking-daily 抖音口播每日稿件日报技能包
状态:In Progress,P1.1-P1.6 已进入可测闭环,准备进行 OpenClaw 教学视频全流程测试。

1. P1 定义

P0 已经证明“能跑通”:建档、关键词/账号采集、评论采集、可选逐字稿、日报输出、套件打包部署都已形成闭环。

P1 的目标不是继续堆数据,而是把它优化成面向真实用户交付的“每日选题 + 脚本共创”系统:

  1. 日报阶段只展示热点选题、趋势信号、证据强弱和下一步,不把完整长稿堆给用户。
  2. 用户选择某条选题后,进入脚本共创,会产出可拍摄口播稿,而不是只给拆解框架。
  3. 脚本可以多轮修改、确认定稿,并把偏好沉淀到记忆里。
  4. 后续运行要能读取历史偏好,使成稿越来越贴合用户,而不是每次从零开始。
  5. 任何低证据内容都必须显示风险和质量门禁,不把猜测包装成结论。

一句话验收标准:

用户每天启动一次后,先拿到可选择的热点选题;选择选题后,OpenClaw 能继续多轮共创并给出最终可拍摄稿件,同时把用户偏好写入记忆,影响下一次选题和成稿。

2. 交付场景

场景 A:每日选题雷达

用户启动 douyin-speaking-daily-runner 后,系统采集样本并直接在对话里输出:

  • 今日一句话判断
  • 样本量、评论量、逐字稿数
  • 质量门禁
  • Top 5 热点选题
  • 每条选题的来源、互动数据、置信度、是否有逐字稿
  • 下一步口令,例如“选题 2,进入脚本共创”

完整文件仍保存在本地,但对话优先展示 assistantMessage 正文,不能只告诉用户文件路径。

场景 B:选题后脚本共创

用户回复“选题 2,进入脚本共创”后:

  1. 如果该选题已有逐字稿,直接生成 v0 完整脚本。
  2. 如果没有逐字稿,也要生成“结构推断稿” v0,并明确风险。
  3. 如果视频超出网关能力,不上传导致 413;返回“需分段/换短视频/换 provider”的原因。
  4. 用户继续反馈“开头更狠、老板视角、少讲概念、多给案例”后,生成 v1/v2。
  5. 用户确认定稿后,写入脚本记忆。

场景 C:单条爆款视频改写

用户给一个抖音爆款视频链接,系统解析/下载/转写后,输出:

  • 逐字稿路径和摘要
  • 爆款结构拆解
  • 可迁移打法
  • 面向用户账号方向的初稿
  • 可继续修改的校准问题

3. 当前实现进度

P1.1 稳定性与成本控制:已完成第一阶段

已实现:

  • runner 支持 --transcript-cache
  • 支持 --transcript-reuse-cache
  • 支持 --transcript-daily-budget
  • 输出 transcript-queue.json
  • summary/audit.json 标注 cached/generated/queue 计数
  • iflytek-gateway 增加默认 8 分钟时长保护,超长视频先返回 needs_media_processing,避免上传后 413

仍待优化:

  • 超长视频自动分段转写
  • 更细的 ASR 成本预估
  • 更稳定的跨天 transcript cache 清理策略

P1.2 脚本共创交付闭环:已完成第一阶段

已实现:

  • daily-report 支持 selectedTopicIndex
  • runner 透传 selectedTopicIndex/scriptSession/feedback/finalize/scriptMemory
  • 选题后生成 script-session.json
  • 生成 selected-topic-<n>-script.md/json
  • 支持 v0 初稿、feedback 多轮改稿、finalize 定稿
  • 定稿后写入 memory/douyin-speaking-script-memory.json
  • OpenClaw 对话优先返回 assistantMessage 正文
  • 没有逐字稿时仍生成“结构推断稿”,并标注低置信风险
  • 定稿后生成动态发布辅助,包括标题备选、拍摄提示、评论区引导、30 秒压缩版和 60 秒提词器版
  • 脚本生成已抽象账号交付语境,按 profile 自动适配 B2B、电商、教育、本地生活或通用账号,避免默认绑定 voc.market 或固定 VOC 话术
  • 支持 message=<用户原话> 自然话术入口,例如“选题2”“改稿:开头更狠”“定稿”
  • 未显式传 input/scriptSession 时,会自动续接最近一次 runner-raw-input.jsonscript-session.json
  • 定稿前输出脚本自检,检查测试项目词泄漏、过泛、缺少场景、缺少互动或转化动作

仍待优化:

  • 90 秒展开版和镜头分镜版
  • 增加镜头提示、字幕钩子、口播提词器版本
  • 更细的行业模板,例如医疗健康、金融、招聘、本地门店等

P1.3 历史记忆与反馈权重:已完成第一阶段

已实现:

  • 定稿写入脚本记忆
  • 下一次脚本共创会读取 scriptMemory
  • 历史偏好可影响 v0 初稿,例如老板视角、强开头、产品转化、禁用泛泛表达
  • assistantMessage 会显示“历史偏好”提示
  • 返回结果包含 scriptMemorySignals
  • 每次日报/共创运行写入 memory/douyin-speaking-history.json
  • history 记录 Top 选题、样本概况、质量门禁、是否进入共创、脚本版本和是否定稿
  • runner 透传 historyMemory/writeHistory,便于 OpenClaw 部署后统一沉淀跨次运行
  • 用户说“保留1、2”“不要某方向”时写入选题偏好记忆
  • 日报排序会读取 topicPreferences.keepPhrases/dropPhrases,对保留方向加权、对禁区方向降权
  • 已定稿过的同一 awemeId 会降权,避免反复推荐同一条素材

仍待实现:

  • 7/30 天趋势信号
  • 更精细的 liked/disliked 权重,例如按主题、作者、钩子类型拆开加权

P1.4 质量门禁与审计:已完成第一阶段

已实现:

  • daily-report.json 增加 qualityGate
  • audit.json 增加 qualityGate
  • runner/result 返回 qualityGate
  • 对 profile 缺字段、样本不足、评论不足、逐字稿不足给出 warn/fail/pass
  • 日报和脚本共创顶部显示质量门禁
  • qualityGate.level=fail 时阻断正式脚本生成,只返回补数据建议;即使传入 finalize=true 也不会写入脚本记忆
  • 脚本定稿前增加 finalQualityGate,检查项目词泄漏、过泛、缺少场景、缺少互动/转化动作
  • finalQualityGate.level=fail 时阻断定稿记忆写入,避免坏稿污染后续偏好

仍待实现:

  • 更细的重复主题风险、风险词、证据引用覆盖率
  • 基于业务配置的门禁阈值

P1.5 套件发布与自动化:已完成第一阶段

已实现:

  • 套件 manifest 记录 P1 spec
  • 本地 zip/build/deploy 流程可用
  • 新增 scripts/tools/douyin-speaking-daily-p1-smoke.js
  • smoke 覆盖:
    • 语法检查
    • 有历史记忆时生成 v0
    • feedback 生成 v1
    • finalize 写入记忆
    • runner 选题透传
    • 自然话术“选题 N”自动续接最近 raw input
    • 自然话术“定稿”自动续接最近 script-session
    • 自然话术“保留/不要”写入选题偏好并影响排序
    • 无逐字稿结构推断稿
    • 定稿自检、30 秒压缩版、60 秒提词器版
    • 网关超长音频保护

仍待实现:

  • 上传前自动读取 zip 内容确认 P1 文件完整
  • 线上安装后自动 smoke
  • 发布清单按版本生成 changelog

4. 数据产物约定

一次完整运行应产生:

outputs/<run>/
  daily-report.md
  daily-report.json
  audit.json
  runner-raw-input.json
  transcript-queue.json
  script-session.json                 # 进入共创后产生
  selected-topic-<n>-script.md         # 进入共创后产生
  selected-topic-<n>-script.json       # 进入共创后产生
  transcripts/<aweme_id>/transcript.json
  transcripts/<aweme_id>/transcript.txt

长期记忆:

memory/
  douyin-speaking-profile.json
  douyin-speaking-transcript-cache.json
  douyin-speaking-script-memory.json
  douyin-speaking-history.json         # 已用于跨次运行沉淀,下一阶段接入排序降权

5. CLI 验收口令

日报 + 自动转写:

node scripts/tools/douyin-speaking-daily-runner.js `
  --profile memory/douyin-speaking-profile.json `
  --auto-transcript-top-n 1 `
  --auto-transcript-provider iflytek-gateway `
  --auto-transcript-max-duration-ms 480000 `
  --output outputs/douyin-speaking-daily-live

选题进入脚本共创:

node scripts/tools/douyin-speaking-daily-runner.js `
  --profile memory/douyin-speaking-profile.json `
  --input outputs/douyin-speaking-daily-live/runner-raw-input.json `
  --selected-topic-index 2 `
  --script-memory memory/douyin-speaking-script-memory.json `
  --output outputs/douyin-speaking-daily-script-v0

反馈改稿:

node scripts/tools/douyin-speaking-daily-runner.js `
  --profile memory/douyin-speaking-profile.json `
  --input outputs/douyin-speaking-daily-live/runner-raw-input.json `
  --script-session outputs/douyin-speaking-daily-script-v0/script-session.json `
  --feedback "开头更狠,老板视角,减少概念,多给具体场景" `
  --script-memory memory/douyin-speaking-script-memory.json `
  --output outputs/douyin-speaking-daily-script-v1

定稿沉淀:

node scripts/tools/douyin-speaking-daily-runner.js `
  --profile memory/douyin-speaking-profile.json `
  --input outputs/douyin-speaking-daily-live/runner-raw-input.json `
  --script-session outputs/douyin-speaking-daily-script-v1/script-session.json `
  --finalize true `
  --script-memory memory/douyin-speaking-script-memory.json `
  --output outputs/douyin-speaking-daily-script-final

自动化自审:

node scripts/tools/douyin-speaking-daily-p1-smoke.js

6. 自审标准

每次优化后必须检查:

  1. 是否仍然以“日报选题展示 + 用户选择后共创脚本”为主流程。
  2. 是否直接在 OpenClaw 对话展示 assistantMessage 正文。
  3. 是否避免把单一项目名硬编码到通用逻辑。
  4. 是否保留证据链、置信度、风险说明和质量门禁。
  5. 是否没有伪造视频、评论、逐字稿、互动数据。
  6. 是否对超长视频、接口失败、缺少 token 做降级。
  7. 是否通过 douyin-speaking-daily-p1-smoke.js

7. 下一阶段优先级

  1. 增加“用户选择选题后自动补转写”的分段策略。
  2. 增加 90 秒展开版、镜头分镜版和字幕钩子。
  3. 基于 douyin-speaking-history.json 做 7/30 天趋势与更细的重复选题降权。
  4. 发布包 smoke 化:build、deploy、install 后都能一键验证并可用于教学视频录制。
  5. 增加真实 OpenClaw UI 回归清单,覆盖“日报 -> 选题 -> 改稿 -> 定稿 -> 偏好复用”全流程。