一句话概括
video-transcript 是一条命令行优先的 Python 管道,输入任意视频 URL,输出带时间戳的双语讲稿、Word 文档、视觉截图摘要,以及可直接送入 Pixelle-Video 渲染的新闻短视频帧数据。
为什么需要它
市面上的转录工具要么只能提取字幕,要么只能输出一段平铺的文字。真正在制作内容的时候,你需要的是:
- 可以引用的时间戳:知道每一段说的是哪分钟
- 分章节的结构:直接变成文章大纲
- 配套截图:让文档不再枯燥
- 双语对照:中文读者友好版本同步产出
- 可以继续加工的格式:不只是一个 txt,而是可以接着用的数据包
video-transcript 把这五件事打包成一条流水线,优先复用字幕,Whisper 只在字幕缺失时才启动。
系统架构
下图展示了完整的数据流向:
四层结构:
| 层次 | 组件 | 说明 |
|---|---|---|
| Input | 视频 URL | YouTube / Bilibili / TikTok / Vimeo / 任何 yt-dlp 支持的平台 |
| Extraction | yt-dlp → Whisper(备用) | 优先字幕,无字幕时下载音频 → Whisper 转录,超 24MB 自动切片 |
| Processing | Section Splitter · Frame Capture · 双语翻译 | 停顿+过渡词启发式分段,ffmpeg 截帧,DALL-E 备用,中文信达雅翻译 |
| Output | Markdown · DOCX · Newsroom Cards | 带目录+时间戳的 md、Word 文档、Pixelle 短视频帧 JSON |
核心管道:五步走
Step 1 · 字幕提取(extract_transcript.py)
优先级顺序:
人工字幕 → 自动生成字幕 → 下载音频 → Whisper 本地/API 转录
输出物:
raw_transcript.txttimestamped_transcript.json(含每段起止时间)metadata.json(标题、时长、上传者、平台)
Step 2 · 章节分割(section_splitter.py)
以停顿时长(>3s)和过渡词(”接下来”、”然后讲”等)为切分信号,目标每节 300–600 词。产出 sections.json,每个节点包含:
- 标题(自动生成)
- 时间戳
- 词数统计
Step 3 · 视觉摘要(capture_frames.py)
- 用
ffmpeg在每节时间戳附近截帧 - 如果视频不可下载:调 OpenAI DALL-E 生成概念图
- 跳过:传入
--no-images标志
Step 4 · 格式化导出
Markdown(transcript_enhanced.md)
## 章节标题 `[00:04:32]`

正文内容……
Word 文档(generate_docx.py)
- 页边距 2.54cm,Calibri 12pt
- 嵌入图片,带封面元数据(标题、作者、来源、日期)
Step 5 · 新闻短片(可选)
newsroom_story_builder.py 把讲稿拆成新闻逻辑的帧结构(headline / body / angle / source),每帧对应一张 TikTok/竖屏字幕卡。pixelle_end_to_end.py 负责调用同目录的 Pixelle-Video 仓库渲染成 mp4。
双语输出策略
当检测到视频语言非中文时,自动同时产出:
- 原语言文档(原汁原味)
- 中文翻译文档(遵循”信达雅”原则,技术术语保留英文括注)
仅中文视频时,只输出中文版本。
快速上手
环境要求
python3 -m pip install yt-dlp python-docx openai
brew install ffmpeg
最简提取
python3 scripts/extract_transcript.py "https://youtu.be/VIDEO_ID" \
--output-dir ./output/demo \
--no-images
生成 Word 文档
python3 scripts/generate_docx.py \
--input ./output/demo/transcript_enhanced.md \
--output ./output/demo/transcript.docx \
--title "视频标题" \
--base-dir ./output/demo
端到端新闻短片
python3 scripts/pixelle_end_to_end.py \
"https://youtu.be/VIDEO_ID" \
--output-dir ./output/newsroom \
--story-mode newsroom
项目结构
video_transcript/
├── SKILL.md ← Claude 技能定义
├── README.md
├── scripts/
│ ├── extract_transcript.py ← 主入口:字幕/Whisper 转录
│ ├── section_splitter.py ← 章节分割
│ ├── capture_frames.py ← ffmpeg + DALL-E 截图
│ ├── generate_docx.py ← Markdown → Word
│ ├── newsroom_story_builder.py← 新闻帧结构生成
│ └── pixelle_end_to_end.py ← 端到端视频渲染
├── examples/
│ └── demo_player.html ← 在线预览示例
└── tests/
├── test_newsroom_story_builder.py
└── test_pixelle_end_to_end.py
输出文件清单
| 文件 | 说明 |
|---|---|
metadata.json | 视频元数据(标题、时长、平台) |
raw_transcript.txt | 原始转录文本 |
timestamped_transcript.json | 带时间戳的分段 JSON |
sections.json | 章节结构 |
transcript_enhanced.md | 带目录、时间戳、图片的 Markdown |
images/ | ffmpeg 截帧或 DALL-E 概念图 |
*.docx | Word 文档 |
pixelle_script.txt | 短视频解说词 |
pixelle_payload.json | Pixelle 渲染配置 |
安全说明
OPENAI_API_KEY仅通过环境变量传入,不要写死在代码里- 生成物(视频、转录文本)不应提交到版本库(已在 .gitignore 中排除)
- Pixelle-Video 是独立仓库,需单独安装
适合谁用
- 📹 内容创作者:把长视频自动切成带截图的图文笔记
- 🎓 学习者:把英文课程讲座转成中英双语版本
- 📰 媒体人:把财经/科技视频自动生成新闻卡片脚本
- 🤖 AI 工作流:作为 Claude 等 AI 工具的数据预处理前置管道
总结
video-transcript 解决的是”视频到可用文字”这一段往往被低估的苦活:字幕获取、时间戳保留、章节切分、配图、翻译、格式化——每一步都有对应的脚本,串起来就是一条可靠的内容生产线。
项目地址:https://github.com/ylouis83/video_transcript
本文基于对项目代码库的完整阅读整理,架构图由 Cocoon-AI/architecture-diagram-generator 风格生成。