This repository is an enhanced version of the original OpenMAIC project. It focuses on transforming OpenMAIC into an end-to-end automated course generation pipeline (自动做课流水线), while fundamentally improving the course recording experience, API stability, and overall reliability.
OpenMAIC (Open Multi-Agent Interactive Classroom) is an open-source AI platform that turns any topic or document into a rich, interactive classroom experience.
Key Highlights:
- One-click lesson generation from topics or materials.
- Multi-agent classroom with AI teachers and peers.
- Rich scene types including slides, quizzes, and HTML simulations.
- Whiteboard & TTS for real-time visual and vocal explanations.
- Export capabilities to
.pptxand.html.
此增强版本在原版基础上,引入了诸多面向“专业自动化课程生产”的关键特性:
这是本版本的核心亮点,彻底改变了手动单节课制作的低效流程:
- PDF 大纲智能语义拆分:不再依赖生硬的正则匹配(如查找“第一课”)。系统可直接读取上传的 PDF 课时大纲文本,调用大模型根据语义逻辑,自动、自然地将内容切分为多个独立的结构化课时。
- 无人值守连续生产:实现了“上传大纲 → 智能解析 → 生成第一课场景 → 全屏沉浸式播放与录制 → 自动返回主控台 → 自动开始第二课”的端到端闭环流水线。
- 跨页面状态持久化:采用
localStorage与sessionStorage相结合的持久化方案。确保在自动跳转录播页时,主控台的进度不会丢失,彻底解决内存状态重置的痛点。 - 状态机并发锁:优化了事件监听机制与渲染顺序,杜绝了 React 生命周期导致的“跳课”、“重复触发生成”或“死循环跳回第一页”的严重 Bug。
- 自动全屏纯净捕获:在开始录制时,系统会自动申请进入全屏模式,屏蔽浏览器与操作系统的多余 UI,确保导出的教学视频纯净专业。
- 音视频严格同步与防黑屏:通过前置预热(Pre-warm)浏览器的
AudioContext,彻底修复了原版偶发的“静音视频”问题。新增 Silent Track Fallback(静音轨道回退) 策略,即使 AI 教师尚未开口,录制引擎也能保持活跃,防止视频损坏。 - 大文件可靠分片保存:引入 1 秒级别的数据切片(Data Chunking)策略,配合 5 秒的文件导出生命周期缓冲,确保几百 MB 甚至 GB 级的长视频能稳定保存到本地。
- 智谱 GLM-TTS 深度优化:
- 修复了 GLM Provider 的 API Header 冲突及默认参数导致调用失败的问题。
- 将默认的讲师语音映射到智谱高音质的
tongtong(彤彤)模型。 - 改进了错误捕获解析,TTS 合成失败时会在控制台提供清晰的报错反馈。
- API 连通性测试套件 (
api_test.py):新增了独立的 Python 测试脚本,只需一行命令即可在启动项目前验证 LLM、搜索引擎、TTS 服务的 API Keys 配置是否正确。 - 修复 SSR & Hydration 异常:添加了 Hydration Guards,防止 Next.js 初始页面加载时因为客户端/服务端渲染不一致导致的崩溃。
- 修复 Windows 构建环境:解决了在 Windows 环境下由于内部包(
pptxgenjs)导致的EPERM权限拒绝和打包失败问题。
确保您的计算机已安装以下环境:
- Node.js (建议 v18 或更高版本)
- pnpm (包管理器)
- Python 3.x (仅用于执行
api_test.py检测脚本) - Git
git clone https://github.com/magiclab2233/OpenMAIC4course.git
cd OpenMAIC4course
pnpm install项目根目录下包含一个 .env.example 文件。请将其复制并重命名为 .env.local:
cp .env.example .env.local打开 .env.local 文件,配置您所需要的 API 密钥。例如(若您使用智谱和 MiniMax):
# 大语言模型配置 (推荐使用 MiniMax 或智谱)
MINIMAX_API_KEY=你的_MINIMAX_API_KEY
ZHIPU_API_KEY=你的_ZHIPU_API_KEY
# 语音 TTS 服务 (强烈推荐智谱 GLM-TTS)
TTS_PROVIDER=zhipu
ZHIPU_TTS_API_KEY=你的_ZHIPU_API_KEY在启动整个笨重的项目前,强烈建议先用提供的脚本测试一下配置是否生效:
python api_test.py注:该脚本会自动读取
.env.local,并依次测试基础对话、搜索引擎以及 TTS 语音合成接口。如果全部显示SUCCESS,则说明配置无误。
pnpm dev打开浏览器访问 http://localhost:3000 即可进入系统。
- 准备课程大纲:准备一份包含多个课时章节的 PDF 文件(例如:“第一节:XXX,第二节:YYY...”)。
- 进入自动做课面板:在系统主界面,点击左侧或首页的 "自动做课 (Auto Course)" 模块。
- 上传并解析:上传您的 PDF 大纲。系统会自动调用 AI 进行语义拆分,稍等片刻,您会看到页面列出了解析好的多个课时。
- 一键启动:点击底部的 "开始自动做课"。
- 挂机等待:
- 系统将自动请求 AI 为第一个课时生成剧本、幻灯片、测验等。
- 生成完毕后,浏览器将自动请求全屏并开始带语音的自动播放录制(请勿切换标签页以防录制中断)。
- 播放完毕后,录制的视频文件将自动下载到您的电脑。
- 系统自动跳回主面板,标记第一课为“已完成”,并自动触发第二课的生成。
- 循环直至所有课时制作完毕。
This project follows the original GNU Affero General Public License v3.0.
