# 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--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.json` 和 `script-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. 数据产物约定 一次完整运行应产生: ```text outputs// daily-report.md daily-report.json audit.json runner-raw-input.json transcript-queue.json script-session.json # 进入共创后产生 selected-topic--script.md # 进入共创后产生 selected-topic--script.json # 进入共创后产生 transcripts//transcript.json transcripts//transcript.txt ``` 长期记忆: ```text memory/ douyin-speaking-profile.json douyin-speaking-transcript-cache.json douyin-speaking-script-memory.json douyin-speaking-history.json # 已用于跨次运行沉淀,下一阶段接入排序降权 ``` ## 5. CLI 验收口令 日报 + 自动转写: ```powershell 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 ``` 选题进入脚本共创: ```powershell 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 ``` 反馈改稿: ```powershell 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 ``` 定稿沉淀: ```powershell 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 ``` 自动化自审: ```powershell 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 回归清单,覆盖“日报 -> 选题 -> 改稿 -> 定稿 -> 偏好复用”全流程。