English | 简体中文
Code2Video: 以代码为中心的教学视频生成新范式
您的浏览器不支持 video 标签。Yanzhe Chen, Kevin Qinghong Lin, Mike Zheng Shou
新加坡国立大学 Show Lab
📄 Arxiv 论文 | 🤗 Daily Paper | 🤗 数据集 | 🌐 项目主页 | 💬 推特 (X)

Code2Video 是一个基于智能体、以代码为中心的框架,能够根据知识点生成高质量的教学视频。 与基于像素空间的文生视频模型不同,我们的方法生成可执行的 Manim 代码来确保视频的清晰度、连贯性和可复现性。
核心特性: - 🎬 以代码为中心的范式 — 将可执行代码作为统一媒介,同时实现教学视频的时间序列和空间布局组织。 - 🤖 模块化三智能体设计 — 规划者 (Planner) 负责故事板扩展,编码员 (Coder) 负责可调试代码的合成,鉴赏家 (Critic) 负责通过视觉锚点(Visual Anchor)优化布局,三者协同完成结构化生成。 - 📚 MMMC 基准 — 用于代码驱动视频生成的基准数据集,涵盖了 117 个受 3Blue1Brown 启发的精选学习主题,横跨多个领域。 - 🧪 多维度评测 — 从效率、美学和端到端知识传递三个维度进行系统性评估。

cd src/
pip install -r requirements.txt
这里是 Manim Community v0.19.0 的官方安装指南,以帮助您正确设置环境。
请在 api_config.json 文件中填入您的 API key。
ICONFINDER_API_KEY。提供了两种 Shell 脚本,用于不同的生成模式:
脚本: run_agent_single.sh
从脚本中指定的单个知识点生成视频。
sh run_agent_single.sh --knowledge_point "Linear transformations and matrices"
run_agent_single.sh 内部重要参数:
API: 指定使用的 LLM。FOLDER_PREFIX: 输出文件夹的前缀 (例如, TEST-single)。KNOWLEDGE_POINT: 目标概念,例如 "Linear transformations and matrices"。脚本: run_agent.sh
运行 long_video_topics_list.json 中定义的所有(或部分)学习主题。
sh run_agent.sh
run_agent.sh 内部重要参数:
API: 指定使用的 LLM。FOLDER_PREFIX: 输出文件夹的前缀 (例如, TEST-LIST)。MAX_CONCEPTS: 要运行的概念数量 (-1 表示全部)。PARALLEL_GROUP_NUM: 并行运行的组数。建议的目录结构如下:
src/
│── agent.py
│── run_agent.sh
│── run_agent_single.sh
│── api_config.json
│── ...
│
├── assets/
│ ├── icons/ # 通过 IconFinder API 下载的视觉素材缓存
│ └── reference/ # 参考图像
│
├── json_files/ # 基于 JSON 的主题列表及元数据
├── prompts/ # 用于 LLM 调用的提示模板
├── CASES/ # 生成的案例,按 FOLDER_PREFIX 组织
│ └── TEST-LIST/ # 示例:多主题生成结果
│ └── TEST-single/ # 示例:单主题生成结果
从以下三个互补的维度进行评测:
知识传递 (TeachQuiz)
bash
python3 eval_TQ.py
美学质量 (AES)
bash
python3 eval_AES.py
效率指标 (EFF)
👉 更多数据和评测脚本请见: HuggingFace: MMMC 基准
如果我们的工作对您有帮助,欢迎引用我们的工作:
@misc{code2video,
title={Code2Video: A Code-centric Paradigm for Educational Video Generation},
author={Yanzhe Chen and Kevin Qinghong Lin and Mike Zheng Shou},
year={2025},
eprint={2510.01174},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={[https://arxiv.org/abs/2510.01174](https://arxiv.org/abs/2510.01174)},
}
$ claude mcp add Code2Video \
-- python -m otcore.mcp_server <graph>