Skip to content

Alex-ai-future/raw-to-render

Repository files navigation

Raw to Render

将 Markdown 笔记转换为 AI 生成的视频。

项目背景

Raw to Render 是一个将日常学习笔记转换为高质量视频内容的工具。通过结合 AI 技术,显著降低内容创作的成本和时间,让创作者能够专注于知识的产出而非繁琐的后期制作。

核心价值

  • 降低创作成本:将零散的 Markdown 笔记自动转换为结构化的视频内容
  • 提升内容质量:通过 AI 导演和文案生成,确保内容的深度和趣味性
  • 提高创作效率:自动化媒体渲染和视频合成,单视频制作时间小于 3 小时

工作原理

项目采用模块化设计,将视频制作流程分解为以下阶段:

  1. 笔记解析:读取 Markdown 文件,提取核心概念和结构
  2. AI 导演:使用 AI 分析内容,生成 YAML 格式的视频剧本(章节结构、时长、风格)
  3. 手动调整:创作者根据需要调整剧本,确保内容深度和节奏
  4. 文案生成:AI 根据剧本生成详细的对话脚本和视觉描述
  5. 媒体渲染:并行生成音频(TTS)和视觉内容(流文字/图片)
  6. 视频合成:使用 FFmpeg 合并媒体文件,生成最终视频

Installation

# 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

配置

  1. 复制环境模板:
cp .env.example .env
  1. 编辑 .env 文件,添加 AI API 凭据:
# AI API 配置
AI_API_KEY=your_actual_api_key
AI_BASE_URL=https://your-api-endpoint.com/v1

全局安装(任意目录使用)

Raw 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 异步编程的笔记。

1. 准备 Markdown 文件

创建 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 剧本文件。

3. 生成章节文件

raw-to-render chapters python-async

根据剧本生成各个章节的详细内容文件。

4. 渲染媒体文件

raw-to-render media python-async

并行生成音频文件和视觉内容。音频使用系统 TTS,视觉内容包括流文字动画。

5. 合成最终视频

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格式视频

自定义选项

使用自定义 AI 提示词

raw-to-render init my-project --input notes.md --prompt "请用更轻松的语气讲解"

生成 YouTube 格式视频

raw-to-render video my-project --platform youtube

清理特定类型的文件

raw-to-render clean my-project --type audio

Development

# Setup development environment
make dev

# Run tests
make test

# Build package
make build

# Clean artifacts
make clean

Project Structure

raw-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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages