# LandPPT
**Repository Path**: wellxy_admin/LandPPT
## Basic Information
- **Project Name**: LandPPT
- **Description**: AI驱动的PPT生成平台, https://github.com/sligter/LandPPT 原址, 方便大家使用
- **Primary Language**: Python
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://github.com/sligter/LandPPT
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 25
- **Created**: 2026-08-03
- **Last Updated**: 2026-08-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# LandPPT - AI驱动的PPT生成平台
[](https://github.com/sligter/LandPPT/stargazers)
[](https://github.com/sligter/LandPPT/network)
[](https://github.com/sligter/LandPPT/issues)
[](LICENSE)
[](https://www.python.org)
[](https://fastapi.tiangolo.com)
[](https://hub.docker.com/r/bradleylzh/landppt)
[](https://deepwiki.com/sligter/LandPPT)
---
如果你对我的项目感兴趣,欢迎联系我!
[](mailto:ai@yydsapp.com)
---
[English](README_EN.md) | **中文**
---
## 目录
- [项目简介](#-项目简介)
- [功能特性](#功能特性)
- [快速开始](#-快速开始)
- [使用指南](#-使用指南)
- [配置说明](#-配置说明)
- [常见问题](#-常见问题)
- [许可证](#-许可证)
基于大语言模型(LLM)的智能演示文稿生成平台
LandPPT 是一个基于大语言模型(LLM)的智能演示文稿生成平台,能够自动将文档内容转换为专业的PPT演示文稿。平台集成了多种AI模型、智能图像处理、深度研究功能和丰富的模板系统,提供一站式的AIPPT服务。
[文档指南](http://landppt-doc.52yyds.top/docs)
### 主界面


### 生成大纲

### 生成效果


### 在线编辑




### 讲稿生成

### 导出效果

### 模板生成

## 功能特性
**核心亮点:**
- **一键生成**:主题到完整 PPT 全程自动化,支持并行生成
- **智能配图**:图库 / 网络 / AI 生成三源融合,自动匹配
- **深度研究**:Tavily + SearXNG 双引擎,实时抓取并提取网络信息
- **讲稿与讲解视频**:生成演讲稿,Edge-TTS 逐页讲解,可导出 1080p 视频
- **多格式导出**:PDF / HTML / PPTX / 图片 / DOCX / Markdown
- **自动化就绪**:OpenAI 兼容 API + REST API,支持 API Key 鉴权
**详细能力:**
### 多 AI 提供商支持
- 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)/ AI 生成(DALL-E、SiliconFlow、Pollinations、OpenAI、Gemini)
- AI 自动匹配最合适图像,自动尺寸调整、格式转换、质量优化
### 模板系统
- 全局主模板 + 多样化 AI 布局,通用 / 旅游 / 教育等场景模板
- 上传参考 PPTX 抽取版式;项目级 AI 自适应模板;支持自定义模板
### 项目管理
- 四阶段工作流:需求确认 → 大纲生成 → TODO 追踪 → PPT 生成
- 阶段重跑与恢复;可视化大纲编辑与实时预览;批量处理
- 一键公开分享,分享页支持全屏放映、讲解音频与字幕联动
### Web 界面
- 响应式界面,侧边栏 AI 对话编辑,支持图像上传与视觉分析
- 演讲稿生成(DOCX / Markdown / PPT 备注),全屏放映与 16:9 实时预览
### 平台与运维
- Docker / Compose 单容器与多服务编排;PostgreSQL + Valkey 生产栈
- 后台任务系统(PDF / PPTX / 讲解视频)异步执行,多 Worker 容错
- 账号体系:本地账号、GitHub / Linux Do OAuth、邮件验证、注册限流
- 可选积分系统、SMTP / Resend、Cloudflare Turnstile;支持本地部署
## 快速开始
### 系统要求
- Python 3.11+
- SQLite 3
- ffmpeg(讲解视频导出需要)
- Docker (可选)
### 数据库迁移(自动)
- 默认启动时会自动检测并执行数据库迁移(与用户无关),可通过环境变量关闭:`LANDPPT_AUTO_MIGRATE_ON_STARTUP=false`
- 本地默认启动使用 SQLite;只有在显式设置 `DATABASE_URL` 时才切换到 PostgreSQL 等外部数据库
- 多容器/多节点共享同一个数据库时,建议关闭自动迁移,改为单独运行一次迁移作业
### 本地安装
#### 方法一:uv(推荐)
```bash
# 克隆项目
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 密钥
# 启动服务(默认监听 8000,使用 SQLite + 内存缓存,无需 PostgreSQL / Valkey)
uv run python run.py
```
#### 方法二:传统pip安装
```bash
# 克隆项目
git 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密钥
# 启动服务(默认监听 8000,默认使用 SQLite + memory cache,无需 PostgreSQL / Valkey)
python run.py
```
### Docker部署
#### 使用预构建镜像(推荐)
```bash
# 拉取最新镜像
docker pull bradleylzh/landppt:latest
# 运行容器
docker run -d \
--name landppt \
-p 8000:8000 \
-v $(pwd)/.env:/app/.env \
-v landppt_data:/app/data \
-v landppt_reports:/app/research_reports \
-v landppt_cache:/app/temp \
bradleylzh/landppt:latest
# 查看日志
docker logs -f landppt
```
> **注意**: 确保在运行前创建并配置好 `.env` 文件,包含必要的API密钥。
#### 使用 Docker Compose(推荐生产部署)
仓库内自带 `docker-compose.yml`,会同时启动 `landppt + PostgreSQL + Valkey`,适合多用户、后台任务和长期运行场景。若只是本地单机体验,直接运行 `python run.py` / `uv run python run.py` 即可,默认会使用 SQLite + memory cache,无需额外依赖。
```bash
# 准备配置
cp .env.example .env
# 至少补充 AI Key、SECRET_KEY、POSTGRES_PASSWORD
# 启动生产编排
docker compose up -d --build
# 查看日志
docker compose logs -f landppt
```
默认访问地址:`http://localhost:6003`
#### 开发模式(热重载)
开发编排使用 `docker-compose-dev.yaml`,挂载源码目录并启用热重载,适合本地调试。
```bash
cp .env.example .env
docker compose -f docker-compose-dev.yaml up -d --build
docker compose -f docker-compose-dev.yaml logs -f landppt-dev
```
默认访问地址:`http://localhost:8001`
## 使用指南
### 1. 访问Web界面
启动服务后,访问以下地址:
- **Web界面**: http://localhost:8000
- **API文档**: http://localhost:8000/docs
- **健康检查**: http://localhost:8000/health
默认会自动初始化管理员账号(账号 `admin` / 密码 `admin123`),由 `LANDPPT_BOOTSTRAP_ADMIN_*` 环境变量控制;生产部署请务必通过这些变量修改默认账号或关闭自动初始化。
### 2. 配置AI提供商
在设置页面配置你的AI API密钥:
- OpenAI API Key(支持openai 兼容model api,例如deepseek、moonshot、qwen等等)
- Anthropic API Key
- Google API Key
- 或配置本地Ollama服务
### 3. 创建PPT项目
1. **需求确认**:输入主题、选择受众、设置页数范围、选择场景模板
2. **大纲生成**:AI智能生成结构化大纲,支持可视化编辑
3. **内容研究**:可选择启用深度研究功能,获取最新相关信息
4. **图像配置**:配置图像获取方式(本地/网络/AI生成)
5. **PPT生成**:基于大纲生成完整的HTML演示文稿
### 4. 编辑和导出
- 使用AI聊天功能实时编辑内容和样式,支持图像上传进行视觉参考
- 支持图像替换和优化,AI模板生成可参考上传的图片
- 生成配套演讲稿,支持单页/多页/全部幻灯片模式
- 生成逐页讲解音频,支持 Edge-TTS 或 ComfyUI Qwen3-TD,并可上传参考音频
- 导出讲解视频(MP4),支持 1080p、30/60fps 与字幕嵌入
- 导出为PDF、HTML、标准 PPTX、图片型 PPTX、演讲稿 DOCX/Markdown 格式
- 支持一键生成公开分享链接,并在分享页中播放讲解音频与字幕
- 保存项目版本和历史记录
- 支持批量处理和模板复用
### 5. 自动化与开放接口
- 支持通过 API Key 将项目流程接入 CI、脚本和自定义后端
- 提供 OpenAI 兼容接口:`/v1/chat/completions`、`/v1/completions`、`/v1/models`
- 提供项目级导出/分享/讲稿接口,适合非浏览器自动化工作流
## 配置说明
### 环境变量配置
主要配置项(常用项见 `.env.example`,高级项可参考 `src/landppt/core/config.py`):
```bash
# AI提供商配置
DEFAULT_AI_PROVIDER=openai
OPENAI_API_KEY=your_openai_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
GOOGLE_API_KEY=your_google_api_key_here
GOOGLE_BASE_URL=https://generativelanguage.googleapis.com # 自定义Gemini端点
# 角色级模型路由(可选)
OUTLINE_MODEL_PROVIDER=openai
OUTLINE_MODEL_NAME=gpt-4o-mini
SLIDE_GENERATION_MODEL_PROVIDER=openai
SLIDE_GENERATION_MODEL_NAME=gpt-4o
EDITOR_ASSISTANT_MODEL_PROVIDER=openai
TEMPLATE_GENERATION_MODEL_PROVIDER=openai
SPEECH_SCRIPT_MODEL_PROVIDER=openai
SPEECH_SCRIPT_MODEL_NAME=gpt-4o-mini
# 服务器配置
HOST=0.0.0.0
PORT=8000
SECRET_KEY=your-secure-secret-key
WORKERS=2
RELOAD=false
# 研究功能配置
TAVILY_API_KEY=your_tavily_api_key_here # Tavily 搜索引擎
TAVILY_BASE_URL=https://gateway.example.com/tavily # 可选:自定义 Tavily 网关/代理地址
SEARXNG_HOST=http://localhost:8888 # SearXNG 实例地址
RESEARCH_PROVIDER=tavily # 研究提供商:tavily, searxng, both
# 图像服务配置
ENABLE_IMAGE_SERVICE=false # 启用图像服务(默认关闭,按需开启)
IMAGE_USER_STORAGE_QUOTA_MB=100 # 单用户图床存储上限(MB),<=0 表示不限制
PIXABAY_API_KEY=your_pixabay_api_key_here # Pixabay 图库
UNSPLASH_ACCESS_KEY=your_unsplash_key_here # Unsplash 图库
SILICONFLOW_API_KEY=your_siliconflow_key_here # AI图像生成
POLLINATIONS_API_KEY=your_pollinations_api_key_here # Pollinations AI (gen.pollinations.ai)
# 自动化鉴权
LANDPPT_API_KEY=replace-with-strong-random-key
LANDPPT_API_KEYS=admin:prod-key,robot:n8n-key
LANDPPT_BOOTSTRAP_ADMIN_ENABLED=true # 默认自动初始化 admin 账号,生产环境请修改默认密码或关闭
LANDPPT_ENABLE_API_DOCS=true
LANDPPT_ALLOW_HEADER_SESSION_AUTH=false
# 存储 / 缓存
DATABASE_URL=sqlite:///./landppt.db
CACHE_BACKEND=memory
VALKEY_URL=valkey://localhost:6379
# 生产部署示例:
# DATABASE_URL=postgresql://landppt:password@localhost:5432/landppt
# CACHE_BACKEND=valkey
# 导出功能配置
APRYSE_LICENSE_KEY=your_apryse_key_here # PPTX导出
COMFYUI_BASE_URL=http://127.0.0.1:8188 # ComfyUI TTS
COMFYUI_TTS_WORKFLOW_PATH=tests/Qwen3-TD-TTS.json
# 注册 / OAuth / 邮件
EMAIL_PROVIDER=smtp
ENABLE_USER_REGISTRATION=true
INVITE_CODE_REQUIRED_FOR_REGISTRATION=false
GITHUB_OAUTH_ENABLED=false
LINUXDO_OAUTH_ENABLED=false
ENABLE_CREDITS_SYSTEM=false
TURNSTILE_ENABLED=false
# 生成参数
MAX_TOKENS=8192
TEMPERATURE=0.7
```
## 贡献指南
欢迎所有形式的贡献!
### 如何贡献
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
详情请见 [贡献指南](CONTRIBUTING.md)。
### 报告问题
如果你发现了bug或有功能建议,请在 [Issues](https://github.com/sligter/LandPPT/issues) 页面创建新的issue。
## 常见问题
### Q: 支持哪些AI模型?
A: 支持 OpenAI GPT(兼容)、Anthropic Claude、Google Gemini、等模型。可以在配置页面切换不同的AI提供商。
### Q: 如何配置图像功能?
A: 在 `.env` 文件中配置相应的API密钥:
- Pixabay: `PIXABAY_API_KEY`
- Unsplash: `UNSPLASH_ACCESS_KEY`
- AI生成: `SILICONFLOW_API_KEY` 或 `POLLINATIONS_API_KEY`
### Q: 使用反向代理(如 Nginx、Apache)时图片链接异常怎么办?
未正确配置 `base_url` 可能导致:图片链接仍显示为 `localhost:8000`、前端无法加载图片、图片预览/下载等功能异常。
**解决方法(通过 Web 界面配置)**:
1. 访问系统配置页面:`https://your-domain.com/ai-config`
2. 切换到"应用配置"标签页
3. 在"基础URL (BASE_URL)"字段中输入您的代理域名,例如 `https://your-domain.com` 或 `http://your-domain.com:8080`
4. 点击"保存应用配置"
### Q: 研究功能如何使用?
A: 配置 `TAVILY_API_KEY` 或部署 SearXNG 实例,然后在创建PPT时启用研究功能即可自动获取相关信息。
### Q: 支持本地部署吗?
A: 完全支持本地部署,可以使用 Docker 或直接安装。支持 Ollama 本地模型,无需依赖外部API。
### Q: 如何导出PPTX格式?
A: 需要配置 `APRYSE_LICENSE_KEY`,然后在导出选项中选择PPTX格式。
### Q: 如何选择标准 PPTX 和图片型 PPTX?
A: 标准 PPTX 依赖 `APRYSE_LICENSE_KEY`,导出后更适合继续编辑;图片型 PPTX 通过截图嵌入页面,复杂 CSS、图标和特殊排版保真更高,但页内元素通常不可再编辑。
### Q: 如何生成公开分享链接?
A: 可在项目编辑页点击分享,或调用 `POST /api/projects/{project_id}/share/generate`。分享地址格式为 `/share/{share_token}`,需要停用时调用 `share/disable` 即可。
### Q: 如何启用开发模式或生产编排?
A: 生产环境推荐 `docker compose up -d --build` 使用仓库内的 `docker-compose.yml`;开发调试推荐 `docker compose -f docker-compose-dev.yaml up -d --build`,默认启用源码挂载和热重载。
### Q: 讲解音频支持哪些方式?
A: 默认支持 Edge-TTS;也可以配置 ComfyUI Qwen3-TD,并在项目编辑页上传参考音频做语音克隆。
### Q: 并行生成会影响PPT质量吗?
A: 不会。并行生成只是改变了生成顺序,每页的生成逻辑和质量保持不变。
### Q: 所有AI提供商都支持批量生成吗?
A: 大多数AI提供商支持并发请求,但可能有不同的限制。建议查看您使用的AI服务的API文档。
## 许可证
本项目采用 Apache License 2.0 许可证。详情请见 [LICENSE](LICENSE) 文件。
## Star History
[](https://www.star-history.com/#sligter/LandPPT&Date)
## 联系我们
- **项目主页**: https://github.com/sligter/LandPPT
- **问题反馈**: https://github.com/sligter/LandPPT/issues
- **讨论区**: https://github.com/sligter/LandPPT/discussions
---
**如果这个项目对你有帮助,请给我们一个 :star:!**
Made with :heart: by the LandPPT Team