2026年8月17日
ai-daily-workflow-cover-16x9-1

我把 AI 日报做成了一条流水线:只换一个 JSON,自动生成口播、数字人和竖屏成片

本文按当前工作区 ai_daily_news_video_template v2.2.0 整理。目标不是展示一个概念 Demo,而是讲清楚这套流程哪些部分已经自动化、怎么在同一工作区复刻,以及迁移到另一台机器时还要补什么。

开场

每天做 AI 日报,最费时间的通常不是剪辑,而是重复劳动:找新闻、筛选、写稿、拆镜头、配音、做数字人、排版、合成,然后第二天全部再来一遍。

我现在的做法,是把不变的部分做成模板,把每天变化的内容压缩进一个文件:daily_news_input.json

这个 JSON 写好以后,脚本会自动创建项目。三条新闻的标准版是 13 镜,四条新闻的标准版是 16 镜;紧凑版按新闻数生成 9 镜或 11 镜。之后调用 IndexTTS 生成逐镜口播,再按真实音频时长切分 LTX 数字人任务,最后用 HyperFrames 渲染成 1080×1920、30 帧的竖屏视频。

最终要拿到的文件只有一个:

renders/output.mp4

但先说清楚一件事:当前真正跑通的是“内容结构化之后的生产流水线”。新闻采集、事实核查和选题排序仍然是上游环节,可以由人完成,也可以再接搜索或 Agent;它们还不是这个模板里的一键能力。

一张图看懂整条链路

新闻采集与核验
        ↓
daily_news_input.json
        ↓
输入校验 + 项目脚手架
        ↓
9/11/13/16 镜脚本、分镜、卡片数据
        ↓
IndexTTS 逐镜口播
        ↓
按真实音频时长生成 LTX 数字人片段
        ↓
数字人质检、分段合并、移除重复音轨
        ↓
HyperFrames 信息卡与动画合成
        ↓
renders/output.mp4

这套方法最关键的设计,不是用了多少模型,而是把“每日变量”和“固定生产系统”分开。

每天会变的是日期、标题、三到四条新闻、解读、落地建议、关键词和 CTA;不应该每天重做的是画布尺寸、视觉风格、镜头结构、数字人位置、配音参数、动画方式和渲染命令。

第一步:准备运行环境

当前工作区的编排端运行在 macOS,至少需要:

  • Python 3
  • FFmpeg
  • Node.js 和 npx
  • HyperFrames 0.6.40
  • 可用的 IndexTTS 服务
  • 可运行 LTX-2.3 工作流的 ComfyUI 服务

本机负责项目生成、调度和最终渲染;远程 GPU 机器负责 TTS 与数字人生成。当前配置使用:

IndexTTS: http://192.168.0.110:7860
ComfyUI:  http://192.168.0.110:8188
ComfyUI:  http://192.168.0.110:8189

这里有一条硬规则:同一张显卡不能同时加载 IndexTTS 和 ComfyUI 大模型。当前工作区通过服务生命周期管理,让同一 GPU 上的模型串行切换;双 GPU 的两个 ComfyUI 实例则可以各自处理独立任务。

密码不要写进项目 JSON,使用环境变量:

export AI_REMOTE_PASSWORD='你的远程机器密码'

如果要迁移到另一台机器,先改 studio.config.json 里的主机、端点和远程启停脚本。模板目录里仍有不少工作区绝对路径,所以它目前更像“工作区内可复用的生产模板”,还不是复制到任意目录就能运行的独立软件包。

第二步:准备固定资产

一套稳定的 AI 日报至少要固定三项资产:

  1. 数字人参考图
  2. IndexTTS 音色参考音频
  3. 背景音乐

当前工作区使用:

assets/audio/AI日报美女主播.png
assets/audio/性感美女主持人.wav
assets/audio/动感科技.wav

创建项目时,数字人参考图会被复制到项目自己的 assets/source/images/avatar_host.png。这样不同栏目不会因为共用一张全局头像而互相污染。

如果要换主播,可以在创建项目时传入:

--avatar /你的路径/新主播.png

第三步:把当天内容写进一个 JSON

不要先改模板,也不要直接改十几个分镜文件。每天只维护 daily_news_input.json

最少要写这些内容:

{
  "date": "2026-08-11",
  "topic_slug": "ai_daily_demo",
  "video_title": "今日 AI 日报",
  "opening_hook": "今天挑三条真正值得关注的 AI 新闻。",
  "overview_keywords": ["模型", "Agent", "应用"],
  "news": [
    {
      "title": "新闻一",
      "one_sentence_summary": "第一条事实摘要",
      "narration": "第一条主播播报内容",
      "keywords": ["模型", "发布", "能力"]
    },
    {
      "title": "新闻二",
      "one_sentence_summary": "第二条事实摘要",
      "narration": "第二条主播播报内容",
      "keywords": ["Agent", "工具", "安全"]
    },
    {
      "title": "新闻三",
      "one_sentence_summary": "第三条事实摘要",
      "narration": "第三条主播播报内容",
      "keywords": ["应用", "开源", "落地"]
    }
  ],
  "summary_narration": "只总结趋势,不要把 CTA 混进来。",
  "closing_cta": "你最关心哪一条?",
  "platform_title": "发布标题",
  "platform_description": "发布简介",
  "sources": ["当天核验过的原始来源链接"]
}

实际生产默认放三条新闻。每条新闻最好继续补齐三层内容:

  • narration:事实播报
  • explain_narration:这件事怎么理解
  • landing_narration:它对普通用户、开发者或创作者有什么用

每个画面还可以配置三行信息卡,例如 report_rowsexplain_rowslanding_rows。三行描述必须各讲一个要点,不能复制同一句话凑数。

四条新闻也支持。如果仍想控制在约 100 秒,设置:

"duration_profile": "compact_100s"

一条可靠的写稿原则是:先写事实,再写解释,最后写行动建议。来源不确定的内容不要为了赶日报直接进入生产。

第四步:先校验,再创建项目

从工作区根目录执行:

python3 skills/ai_daily_news_video_template/scripts/validate_daily_news_input.py \
  /你的路径/daily_news_input.json

校验器会检查必填字段、新闻数量、固定资产、口播时长风险、字幕长度,以及分镜与 TTS 的映射关系。

通过后创建项目:

python3 skills/ai_daily_news_video_template/scripts/create_project_from_template.py \
  --input /你的路径/daily_news_input.json

项目默认生成在:

projects/active/news/ai_daily_YYYY_MM_DD_<topic_slug>/

它不只创建一个空文件夹,还会生成 project.jsonconfig.json、脚本、分镜、TTS 列表、镜头表、时间线、LTX 任务配置和 HyperFrames 配置。

第五步:一条命令生成完整视频

日常生产直接运行:

python3 skills/ai_daily_news_video_template/scripts/run_production_phase.py \
  projects/active/news/ai_daily_YYYY_MM_DD_<topic_slug>

默认 --phase all,内部会依次完成:

  1. 校验输入
  2. 调用 pipeline.py --stage media 生成逐镜 TTS
  3. 根据真实 WAV 时长准备 LTX 数字人任务
  4. 生成数字人片段和接触表
  5. 质检并合并分段视频
  6. 去掉数字人视频自带音轨,避免口播叠加两遍
  7. 重建最终 HTML 动效页面
  8. 执行 HyperFrames 的 lint、validate、inspect 和 render
  9. 输出 renders/output.mp4

数字人镜头超过 10 秒时,系统不会定格最后一帧硬撑时长,而是拆成多个不超过 8 秒的真实生成片段,再用 FFmpeg 合并。这会增加生成时间,但画面不会在长口播中突然静止。

第六步:第一次复刻,建议先看预览

虽然日常默认是一键全量生产,但第一次换风格、换音色或改卡片结构时,建议分两阶段:

# 只生成口播、文字动画和静态主播占位预览
python3 skills/ai_daily_news_video_template/scripts/run_production_phase.py \
  <项目目录> --phase 1

# 审核预览后生成数字人和最终视频
python3 skills/ai_daily_news_video_template/scripts/run_production_phase.py \
  <项目目录> --phase 2 --approve

第一阶段检查文案、语速、字幕长度和动画节奏;第二阶段才消耗更多 GPU 时间生成数字人。

正式发布前,建议加上人工数字人质检:

python3 skills/ai_daily_news_video_template/scripts/run_production_phase.py \
  <项目目录> --require-avatar-qc

重点检查是否只有一个主播、有没有生成乱码、身份是否稳定、嘴和脸是否完整、构图有没有被裁成大头。

文案改了,哪些东西需要重跑

更新项目内的 daily_news_input.json 后,重新生成项目配置:

python3 skills/ai_daily_news_video_template/scripts/create_project_from_template.py \
  --input <项目目录>/daily_news_input.json \
  --project-dir <项目目录> \
  --force

然后重新跑生产命令。

如果只改了画面样式、口播和数字人素材都没变,可以按情况使用 --skip-tts--skip-ltx 复用已有资产。但只要文案、语速、参考音色或 TTS 参数变了,就不要复用旧口播。

口播时长不足时,优先扩写内容或接受自然片长。只允许使用 atempo 做 0.9–1.1 范围内的小幅微调,不要用 1.5 倍速或大幅减速强行凑时长。

真正值得复刻的,不是某一个模型

很多人看到这套流程,会先问数字人用了什么模型、TTS 用了什么模型。但真正值得复刻的是四层结构:

第一层是内容合同。每天所有变化都进入一个 JSON。

第二层是固定模板。镜头结构、视觉风格、音色、数字人和渲染参数不随当天新闻漂移。

第三层是媒体流水线。TTS、数字人、合成各自有明确输入和输出,失败时可以只重跑一个阶段。

第四层是质量门。输入校验、真实音频驱动时长、数字人质检、HyperFrames 检查和最终报告,保证流水线不是“跑完就算成功”。

如果你只想复刻一个最小版本,可以先去掉数字人,保留“结构化输入 → TTS → HTML 信息卡 → FFmpeg/HyperFrames 合成”。等内容和节奏稳定,再接 LTX 数字人。这样更容易跑通,也更便宜。

结尾

这套 AI 日报工作流已经把每天最重复的生产步骤压缩成了两件事:准备一个经过核验的 JSON,然后运行一条生产命令。

它还不是完全无人值守的新闻工厂。新闻源、事实核查、选题判断和最终审片,仍然需要人负责。但从脚本定稿之后开始,项目创建、口播、数字人、动效和成片已经可以稳定复用。

复刻时,先复制“固定与变量分离”的方法,再复制模型和参数。前者决定这套系统能不能每天工作,后者只决定它长什么样。

About The Author

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注