将 Markdown 笔记转换为 AI 生成的视频。
Raw to Render 是一个将日常学习笔记转换为高质量视频内容的工具。通过结合 AI 技术,显著降低内容创作的成本和时间,让创作者能够专注于知识的产出而非繁琐的后期制作。
- 降低创作成本:将零散的 Markdown 笔记自动转换为结构化的视频内容
- 提升内容质量:通过 AI 导演和文案生成,确保内容的深度和趣味性
- 提高创作效率:自动化媒体渲染和视频合成,单视频制作时间小于 3 小时
项目采用模块化设计,将视频制作流程分解为以下阶段:
- 笔记解析:读取 Markdown 文件,提取核心概念和结构
- AI 导演:使用 AI 分析内容,生成 YAML 格式的视频剧本(章节结构、时长、风格)
- 手动调整:创作者根据需要调整剧本,确保内容深度和节奏
- 文案生成:AI 根据剧本生成详细的对话脚本和视觉描述
- 媒体渲染:并行生成音频(TTS)和视觉内容(流文字/图片)
- 视频合成:使用 FFmpeg 合并媒体文件,生成最终视频
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone <repository-url>
cd raw-to-render
# Install dependencies
make install- 复制环境模板:
cp .env.example .env- 编辑
.env文件,添加 AI API 凭据:
# AI API 配置
AI_API_KEY=your_actual_api_key
AI_BASE_URL=https://your-api-endpoint.com/v1Raw to Render 支持全局安装,这样你就可以在任意目录中使用命令,而不需要切换到项目目录。
# 从项目目录安装
cd /path/to/raw-to-render
uv tool install .
# 验证安装
raw-to-render --help# 当代码有更新时,强制重新安装
cd /path/to/raw-to-render
uv tool install . --force安装完成后,你可以在任何目录使用 raw-to-render 命令:
# 在任意目录创建新项目
cd ~/Documents/my-notes
raw-to-render init my-video --input notes.md
# 查看帮助
raw-to-render --help这样你就可以在任何地方快速启动视频制作项目了!
Raw to Render 提供完整的命令行工具链,支持从 Markdown 文件到最终视频的完整工作流程:
| 命令 | 功能描述 |
|---|---|
init |
初始化新项目,从 Markdown 文件创建项目结构 |
script |
生成和验证 script.yaml 文件 |
chapters |
根据剧本生成章节文件 |
chat |
生成 chat.md 文件,包含所有对话内容 |
media |
渲染音频和视觉媒体文件 |
video |
合成最终视频文件 |
clean |
清理生成的文件 |
raw-to-render init <project_name> --input <markdown_file> [--prompt "自定义提示"]- 创建新的项目目录和工作空间
- 自动解析 Markdown 文件生成初始剧本
- 支持可选的自定义 AI 提示词
raw-to-render script <project_name> [--prompt <text_or_file>]- 验证现有的 script.yaml 文件
- 支持可选的自定义 AI 提示词(可以是文本或文件路径)
- 如果提供文件路径,将读取文件内容作为提示词
raw-to-render chapters <project_name>- 根据剧本 YAML 文件生成章节详情
- 为每个章节创建独立的处理文件
raw-to-render media <project_name>- 并行生成音频文件(使用系统 TTS)
- 渲染视觉内容(流文字动画或静态图片)
raw-to-render video <project_name> [--platform b站|youtube]- 使用 FFmpeg 合并音频和视频轨道
- 根据目标平台优化视频格式和分辨率
- 支持 B站(竖屏)和 YouTube(横屏)格式
raw-to-render chat <project_name>- 从项目的script.yaml和chapters文件中提取所有对话内容
- 生成结构化的markdown文档,包含章节标题和对话内容
- 输出文件名为 chat.md,保存在项目目录中
raw-to-render clean <project_name> [--type audio|images|chapters|all]- 清理指定类型的生成文件
- 支持按类型清理或全部清理
假设你有一个名为 example.md 的 Markdown 文件,内容是关于 Python 异步编程的笔记。
创建 example.md 文件:
# Python 异步编程入门
## 什么是异步编程?
异步编程是一种编程范式,允许程序在等待某些操作(如I/O操作)完成时继续执行其他任务,而不是阻塞等待。
### 核心概念
1. **协程 (Coroutine)**: 可以使用 `async def` 定义的函数
2. **事件循环 (Event Loop)**: 管理协程执行的调度器
3. **await**: 用于等待异步操作完成的关键字
### 基本语法
```python
import asyncio
async def hello():
print("Hello")
await asyncio.sleep(1)
print("World")
# 运行协程
asyncio.run(hello())- 网络请求处理
- 文件I/O操作
- 数据库查询
- API调用
异步编程可以显著提高程序的性能和响应性。
#### 2. 初始化项目
```bash
raw-to-render init python-async --input example.md
这会创建 python-async 项目目录,并自动生成初始的 script.yaml 剧本文件。
raw-to-render chapters python-async根据剧本生成各个章节的详细内容文件。
raw-to-render media python-async并行生成音频文件和视觉内容。音频使用系统 TTS,视觉内容包括流文字动画。
raw-to-render video python-async --platform b站合成最终的视频文件,针对 B站平台优化格式(竖屏 720p)。
完成后的项目目录结构如下:
workspace/
└── {project_name}/ # 项目目录(如 python-async)
├── script.yaml # 视频剧本(AI生成,可手动修改)
├── chat.md # 聊天对话文档
├── metadata.yaml # 文件映射和项目状态
├── chapters/ # 章节文件
│ ├── chapter.{id}.yaml # 各章节详细内容
│ └── ...
├── audio/ # 音频文件
│ └── *.aiff
├── images/ # 图片文件
│ └── *.png
└── final/ # 最终输出
├── {project_name}_b站.mp4 # B站格式视频
└── {project_name}_youtube.mp4 # YouTube格式视频
raw-to-render init my-project --input notes.md --prompt "请用更轻松的语气讲解"raw-to-render video my-project --platform youtuberaw-to-render clean my-project --type audio# Setup development environment
make dev
# Run tests
make test
# Build package
make build
# Clean artifacts
make cleanraw-to-render/
├── raw_to_render/ # Main package
│ ├── __init__.py
│ └── config.py # Configuration management
├── tests/ # Test suite
│ └── unit/
├── docs/ # Documentation
├── pyproject.toml # Project configuration
├── uv.lock # Dependency lock file
├── Makefile # Build tasks
└── README.md