中文 | English
一句话: LandPPT 是基于大语言模型的智能演示文稿平台——输入主题或上传文档,自动生成可编辑的专业 PPT,并支持讲稿、讲解视频与多格式导出。
核心能力:
| 能力 | 说明 |
|---|---|
| 一键生成 | 主题到完整 PPT,支持并行生成 |
| 智能配图 | 本地图库 / 网络图库 / AI 生成三源融合 |
| 深度研究 | Tavily + SearXNG,实时抓取并摘要网络信息 |
| 讲稿与视频 | 演讲稿 + Edge-TTS 逐页讲解,可导出 1080p 视频 |
| 多格式导出 | PDF / HTML / PPTX / 图片 / DOCX / Markdown |
| 自动化 | OpenAI 兼容 API + REST API,支持 API Key 鉴权 |
文档指南 · Docker Hub · Issues
LandPPT 将「写大纲 → 做版式 → 配图 → 写讲稿 → 导出」整合成一条 AI 工作流:
- 输入:主题描述,或 PDF / Word / Markdown / Excel / PPT 等文档
- 规划:生成可编辑大纲,可选深度研究补充最新信息
- 生成:并行产出 HTML 幻灯片,支持模板与 AI 自适应布局
- 打磨:侧边栏 AI 对话编辑、换图、视觉参考
- 交付:导出多格式,或生成公开分享链接(含讲解音频与字幕)
本地默认: SQLite + 内存缓存,一条命令即可试用,无需 PostgreSQL / Valkey。
生产推荐: docker compose 编排 Web + Worker + PostgreSQL + Valkey + MinIO。
- OpenAI GPT、Anthropic Claude、Google Gemini、Azure OpenAI
- 兼容 DeepSeek、Moonshot、Qwen 等 OpenAI 协议接口
- 支持 Ollama 本地模型;按角色(大纲 / 幻灯片 / 编辑 / 模板 / 讲稿)路由模型,便于控成本
- 多格式:PDF / Word / Markdown / TXT / Excel / PowerPoint
- MinerU + MarkItDown 高质量解析
- Tavily + SearXNG 多引擎检索与网页摘要
- 三源:本地图库 / Pixabay、Unsplash / DALL·E、SiliconFlow、Pollinations、OpenAI、Gemini
- AI 自动匹配;尺寸、格式与质量自动处理
- 图像服务默认关闭,按需开启(
ENABLE_IMAGE_SERVICE)
- 全局主模板 + 场景模板(通用 / 旅游 / 教育等)
- 上传参考 PPTX 抽取版式;项目级 AI 自适应模板
- 四阶段工作流:需求确认 → 大纲 → 任务追踪 → PPT 生成
- 阶段重跑与恢复;可视化大纲;一键公开分享
- Docker 单容器 / Compose 多服务;后台任务(PDF / PPTX / 讲解视频)异步执行
- 本地账号、GitHub / Linux Do OAuth、邮件验证、注册限流
- 可选积分系统、SMTP / Resend、Cloudflare Turnstile
请先分清「最小可跑」和「完整能力」,避免跑通后才发现缺 Key。
| 能力 | 依赖 | 说明 |
|---|---|---|
| 基础生成(大纲 / HTML PPT) | 至少一个 AI Provider Key | 必需 |
| 本地模型 | Ollama 等 | 可选,可完全离线推理 |
| 深度研究 | TAVILY_API_KEY 或 SearXNG |
可选 |
| 网络 / AI 配图 | 对应图库或生图 Key + ENABLE_IMAGE_SERVICE=true |
可选,默认关闭 |
| 标准可编辑 PPTX | APRYSE_LICENSE_KEY(商业许可) |
可选但导出可编辑 PPTX 时必需 |
| 图片型 PPTX | 无 Apryse | 保真高,页内元素通常不可再编辑 |
| 讲解视频 | ffmpeg;可选 ComfyUI TTS |
可选 |
| 生产多用户 / 后台任务 | PostgreSQL + Valkey + MinIO + Worker | 推荐 Compose 一键起 |
安全提示(生产必读)
- 修改
SECRET_KEY、管理员密码,勿使用默认admin/admin123- 生产编排默认关闭管理员自动初始化;首次部署再显式打开
LANDPPT_BOOTSTRAP_ADMIN_ENABLED- 配置强随机
LANDPPT_API_KEY/LANDPPT_API_KEYS- 勿将真实密钥提交到 Git
- Python 3.11+
- SQLite 3(本地默认)
- ffmpeg(讲解视频导出需要)
- Docker(可选)
- 默认启动时自动检测并执行迁移;可用
LANDPPT_AUTO_MIGRATE_ON_STARTUP=false关闭 - 本地默认 SQLite;仅在设置
DATABASE_URL时切换到 PostgreSQL 等 - 多节点共享同一数据库时,建议关闭自动迁移,改为单独跑一次迁移作业
git clone https://github.com/sligter/LandPPT.git
cd LandPPT
# 安装 uv(如未安装)
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync --extra dev
cp .env.example .env
# 编辑 .env,至少配置一个 AI API Key
# 默认 :8000,SQLite + 内存缓存
uv run python run.pygit clone https://github.com/sligter/LandPPT.git
cd LandPPT
python -m venv venv
# Windows: venv\Scripts\activate
# macOS / Linux: source venv/bin/activate
pip install -e .
cp .env.example .env
# 编辑 .env,配置 AI API Key
python run.pydocker pull bradleylzh/landppt:latest
docker run -d \
--name landppt \
-p 8000:8000 \
-v $(pwd)/.env:/app/.env \
-v landppt_data:/app/data \
-v landppt_uploads:/app/uploads \
-v landppt_reports:/app/research_reports \
-v landppt_cache:/app/temp \
-v landppt_lib:/app/lib \
bradleylzh/landppt:latest
docker logs -f landppt运行前请先创建并配置
.env(至少包含 AI API Key)。
仓库内 docker-compose.yml 会启动 landppt(Web)+ worker + PostgreSQL + Valkey + MinIO(minio-init 自动建桶),适合多用户与后台任务。本地轻量体验仍推荐直接 python run.py。
cp .env.example .env
# 至少配置:AI Key、SECRET_KEY、POSTGRES_PASSWORD
docker compose up -d
docker compose logs -f landppt- 访问:
http://localhost:8000(可用LANDPPT_PORT修改) - MinIO 控制台:
http://localhost:9001 - 生产默认关闭管理员自动初始化;首次部署请设置
LANDPPT_BOOTSTRAP_ADMIN_ENABLED=true及对应账号密码 - 镜像默认
bradleylzh/landppt:latest,可用LANDPPT_IMAGE覆盖
cp .env.example .env
docker compose -f docker-compose-dev.yaml up -d --build
docker compose -f docker-compose-dev.yaml logs -f landppt开发编排基于本地 Dockerfile 构建,挂载源码并热重载;默认初始化管理员 admin / admin123。
启动后:
| 入口 | 地址 |
|---|---|
| Web 界面 | http://localhost:8000 |
| API 文档 | http://localhost:8000/docs |
| 健康检查 | http://localhost:8000/health |
本地 / 开发环境常会自动初始化管理员(admin / admin123),由 LANDPPT_BOOTSTRAP_ADMIN_* 控制。生产请务必改密或关闭自动初始化。
在设置页或 .env 中配置:
- OpenAI API Key(兼容 DeepSeek、Moonshot、Qwen 等 OpenAI 协议接口)
- Anthropic / Google API Key
- 或本地 Ollama
- 需求确认:主题、受众、页数、场景模板
- 大纲生成:结构化大纲 + 可视化编辑
- 内容研究(可选):深度研究补充最新信息
- 图像配置(可选):本地 / 网络 / AI 生成
- PPT 生成:基于大纲生成 HTML 演示文稿
- 侧边栏 AI 对话改内容与样式,可上传图像作视觉参考
- 生成演讲稿(DOCX / Markdown / PPT 备注)
- 逐页讲解音频:Edge-TTS 或 ComfyUI Qwen3-TD(可上传参考音频)
- 导出讲解视频(MP4,1080p,30/60fps,可选字幕)
- 导出 PDF、HTML、标准 PPTX、图片型 PPTX、讲稿等
- 一键公开分享(分享页支持讲解音频与字幕)
- API Key 鉴权,便于接入 CI、脚本、n8n 等
- OpenAI 兼容:
/v1/chat/completions、/v1/completions、/v1/models - 项目级导出 / 分享 / 讲稿接口,适合非浏览器工作流
完整变量见 .env.example,高级项见 src/landppt/core/config.py。下面只列最小可跑与生产必改。
# 至少一个 AI 提供商
DEFAULT_AI_PROVIDER=openai
OPENAI_API_KEY=your_openai_api_key_here
# 或 ANTHROPIC_API_KEY / GOOGLE_API_KEY / 本地 Ollama
HOST=0.0.0.0
PORT=8000
# 本地默认(可省略)
# DATABASE_URL=sqlite:///./landppt.db
# CACHE_BACKEND=memorySECRET_KEY=replace-with-long-random-string
POSTGRES_PASSWORD=replace-with-strong-password # Compose 生产栈
LANDPPT_BOOTSTRAP_ADMIN_ENABLED=false # 或 true + 自定义账号密码
# LANDPPT_BOOTSTRAP_ADMIN_USERNAME=...
# LANDPPT_BOOTSTRAP_ADMIN_PASSWORD=...
LANDPPT_API_KEY=replace-with-strong-random-key
# 或多密钥:LANDPPT_API_KEYS=admin:prod-key,robot:n8n-key
# 生产存储示例
# DATABASE_URL=postgresql://landppt:password@localhost:5432/landppt
# CACHE_BACKEND=valkey
# VALKEY_URL=valkey://localhost:6379# 角色级模型路由(控成本)
OUTLINE_MODEL_NAME=gpt-4o-mini
SLIDE_GENERATION_MODEL_NAME=gpt-4o
SPEECH_SCRIPT_MODEL_NAME=gpt-4o-mini
# 深度研究
TAVILY_API_KEY=...
# SEARXNG_HOST=http://localhost:8888
# RESEARCH_PROVIDER=tavily # tavily | searxng | both
# 图像服务(默认关闭)
ENABLE_IMAGE_SERVICE=true
PIXABAY_API_KEY=...
UNSPLASH_ACCESS_KEY=...
SILICONFLOW_API_KEY=...
# 标准可编辑 PPTX(商业许可)
APRYSE_LICENSE_KEY=...
# 讲解 TTS(可选 ComfyUI)
# COMFYUI_BASE_URL=http://127.0.0.1:8188
# COMFYUI_TTS_WORKFLOW_PATH=tests/Qwen3-TD-TTS.json
# 注册 / OAuth / 邮件 / 积分 / Turnstile
# ENABLE_USER_REGISTRATION=true
# GITHUB_OAUTH_ENABLED=false
# ENABLE_CREDITS_SYSTEM=false补充说明:
- 标准 PPTX 依赖
APRYSE_LICENSE_KEY;图片型 PPTX(/api/projects/{project_id}/export/pptx-images)不依赖 Apryse,更适合复杂 CSS/图标保真。 - 反向代理后图片仍指向
localhost时,请在 Web「应用配置」中设置正确的 BASE_URL,详见 docs/base_url_configuration.md。 - 讲解视频需要本机 / 容器内可用的
ffmpeg。
OpenAI GPT(及兼容接口)、Anthropic Claude、Google Gemini、Azure OpenAI、Ollama 本地模型等,可在配置页切换提供商。
在 .env 中开启 ENABLE_IMAGE_SERVICE=true,并配置:
- Pixabay:
PIXABAY_API_KEY - Unsplash:
UNSPLASH_ACCESS_KEY - AI 生成:
SILICONFLOW_API_KEY或POLLINATIONS_API_KEY等
未配置 BASE_URL 时,链接可能仍是 localhost:8000。
- 打开
https://your-domain.com/ai-config - 「应用配置」→「基础 URL (BASE_URL)」填入对外域名
- 保存
配置 TAVILY_API_KEY 或部署 SearXNG,创建 PPT 时启用研究即可。
支持。可用 Docker 或源码安装;推理侧可接 Ollama,无需外部大模型 API(研究 / 网络配图等能力仍可能需要外网)。
| 类型 | 依赖 | 特点 |
|---|---|---|
| 标准 PPTX | APRYSE_LICENSE_KEY |
适合继续在 PowerPoint 中编辑 |
| 图片型 PPTX | 无 Apryse | 复杂版式保真更好,页内元素通常不可编辑 |
项目编辑页点击分享,或调用 POST /api/projects/{project_id}/share/generate。地址形如 /share/{share_token};停用调用 share/disable。
- 生产:
docker compose up -d(预构建镜像 + Web/Worker/Postgres/Valkey/MinIO) - 开发:
docker compose -f docker-compose-dev.yaml up -d --build(本地构建 + 热重载)
默认 Edge-TTS;也可配置 ComfyUI Qwen3-TD,并在编辑页上传参考音频。
不会。并行只改变调度顺序,单页生成逻辑与质量不变。多数提供商支持并发,但受各自限流约束。
欢迎 Issue、PR 与文档改进。
- Fork 本仓库
- 创建分支:
git checkout -b feature/AmazingFeature - 提交:
git commit -m 'Add some AmazingFeature' - 推送并开启 Pull Request
问题反馈:Issues
本项目采用 Apache License 2.0。
导出标准 PPTX 所依赖的 Apryse 等第三方组件,遵循其各自许可条款;使用前请自行确认合规。
- 项目主页:https://github.com/sligter/LandPPT
- 问题反馈:https://github.com/sligter/LandPPT/issues
- 讨论区:https://github.com/sligter/LandPPT/discussions
- 邮件: ai@yydsapp.com
如果这个项目对你有帮助,请点一个 ⭐!
Made with ❤️ by the LandPPT Team












