Skip to content

Jas000n/daily_topic

Repository files navigation

今日话题 (v1.0.0)

从知乎话题自动生成短视频: 抓取热门回答 → 文案切句/串场 → 离线中文 TTS(Piper 小雅)→ 自动配图(US 区图片搜索)→ 字幕合成视频


目录


1. 功能概览

v1.0.0 当前能力:

  1. 使用浏览器自动化抓取知乎相关回答(模拟用户行为)
  2. 文案自动切句,并加入串场话术(开场/第X位/结尾)
  3. 使用 离线 Piper(小雅) 生成中文语音
  4. 自动搜索并下载配图(US 区图片搜索,避免黑图兜底)
  5. 图片 + 字幕 + 配音合成竖屏视频(1080x1920)

2. 运行环境要求

  • macOS(已在 Apple Silicon 环境验证)
  • Python 3.11
  • Conda / Miniforge
  • ffmpeg(视频合成依赖)
  • 可访问知乎(抓取)

3. 安装教程(Conda)

3.1 进入项目目录

cd /Users/jason/.openclaw/workspace/zhihu_video_bot

3.2 创建 Conda 环境

conda env create -f environment.yml
conda activate zhihu-video-bot

3.3 安装 Python 依赖(如有更新)

pip install -r requirements.txt

3.4 安装 Playwright 浏览器内核

python -m playwright install chromium

3.5 下载大模型文件(首次必做)

仓库默认不包含大模型(避免 GitHub 大文件限制)。请执行:

bash scripts/download_models.sh

若你只想下最小必需文件,至少需要:

  • g2pW/g2pw.onnx
  • models/piper/zh_CN-xiao_ya-medium.onnx
  • models/piper/zh_CN-xiao_ya-medium.onnx.json

4. 首次运行前准备(知乎登录态)

为了抓取知乎内容,建议先建立登录态:

  1. config.yaml 中保持:
    • browser.headless: false
    • browser.user_data_dir: ./.pw_profile
  2. 第一次运行时会弹出浏览器(或由脚本打开)
  3. 在该浏览器窗口内完成知乎登录/验证
  4. 登录成功后,后续会复用 ./.pw_profile 会话

注意:你日常 Chrome 的登录态不一定和 Playwright profile 共用。


5. 配置说明(config.yaml)

当前关键配置(节选):

run:
  topic_url: "https://www.zhihu.com/topic/19554298/hot"
  max_answers: 3
  output_name: "sample"

video:
  width: 1080
  height: 1920
  fps: 30
  min_sentence_duration_sec: 2.0

tts:
  piper_model: "./models/piper/zh_CN-xiao_ya-medium.onnx"
  piper_config: "./models/piper/zh_CN-xiao_ya-medium.onnx.json"

images:
  timeout_sec: 20
  fallback_color: "#101820"

常改参数

  • run.topic_url:知乎话题页 URL
  • run.max_answers:抓取回答数量(默认 3)
  • video.width/height:视频分辨率(默认竖屏 1080x1920)
  • tts.piper_model:Piper 语音模型路径

6. 一键运行

conda activate zhihu-video-bot
python main.py --config config.yaml

运行完成后会打印类似:

DONE /.../zhihu_video_bot/output/sample_YYYYMMDD_HHMMSS.mp4

7. 输出结果说明

  • 最终视频:
    • output/sample_*.mp4
  • 中间数据:
    • data/raw/answers.json(原始抓取)
    • data/clean/sentences.json(切句结果)
    • data/audio/*.mp3(TTS 音频)
    • data/images/*.jpg(配图)
    • data/clips/*.mp4(分段片段)
    • data/manifests/*.json(流程清单)

8. 常见问题与排查

Q1: 运行卡住 / 终端没输出

  • 长步骤(抓图、合成)可能耗时数分钟
  • 可开新终端查看输出目录是否在更新:
ls -lh output/
ls -lh data/images | head

Q2: 抓不到知乎回答

  • 通常是登录态无效或触发风控验证
  • 确认 browser.headless: false,在 .pw_profile 窗口重新登录知乎

Q3: 图片不相关或黑图

  • v1.0.0 已做非黑图兜底,但相关性仍可能受关键词影响
  • 可手动优化 src/image_fetcher.py_extract_query()
  • 可针对固定主题加关键词映射(建议作为 v1.1)

Q4: TTS 报错

  • 确认 Piper 模型文件存在:
    • models/piper/zh_CN-xiao_ya-medium.onnx
    • models/piper/zh_CN-xiao_ya-medium.onnx.json
  • 确认环境依赖安装完整(pip install -r requirements.txt

Q5: 想重跑但不想受断点缓存影响

rm -f data/manifests/*.json
find data/images data/clips output -mindepth 1 -delete
python main.py --config config.yaml

9. 项目结构

zhihu_video_bot/
├─ main.py
├─ config.yaml
├─ requirements.txt
├─ environment.yml
├─ README.md
├─ src/
│  ├─ crawler_zhihu.py
│  ├─ sentence_splitter.py
│  ├─ tts_local.py
│  ├─ image_fetcher.py
│  ├─ clip_builder.py
│  ├─ video_assembler.py
│  ├─ state_manager.py
│  └─ utils.py
├─ data/
│  ├─ raw/
│  ├─ clean/
│  ├─ audio/
│  ├─ images/
│  ├─ clips/
│  └─ manifests/
└─ output/

10. v1.0.0 版本说明

已完成

  • ✅ 话题回答抓取
  • ✅ 文案切句与串场
  • ✅ 离线中文 TTS(Piper 小雅)
  • ✅ 自动配图与视频合成
  • ✅ 可产出可播放 mp4

已知限制

  • 图片相关性在抽象句子上仍不稳定(后续可做“按句人工关键词映射”)
  • 依赖网页结构,目标网站改版会影响抓取稳定性

下一步建议(v1.1+)

  • 图片检索质量增强(句级关键词映射 + 多候选重排)
  • 背景音乐和节奏优化
  • 更强错误重试与统计报告

About

知乎今日话题

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors