[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72330":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":16,"starSnapshotCount":16,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},72330,"LandPPT","sligter\u002FLandPPT","sligter","一个基于LLM的演示文稿生成平台，能够自动将文档内容转换为专业的PPT演示文稿。平台支持多种AI模型，提供丰富的模板和样式选择，让用户能够创建高质量的演示文稿。","https:\u002F\u002Flandppt.com",null,"Python",3391,448,17,8,0,34,86,205,102,29.96,"Other",false,"master",[26,27,28],"ai","llm","ppt","2026-06-12 02:03:01","# LandPPT - AI驱动的PPT生成平台\n\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fsligter\u002FLandPPT?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fsligter\u002FLandPPT\u002Fstargazers)\n[![GitHub forks](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Fsligter\u002FLandPPT?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fsligter\u002FLandPPT\u002Fnetwork)\n[![GitHub issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002Fsligter\u002FLandPPT?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fsligter\u002FLandPPT\u002Fissues)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-blue.svg?style=flat-square)](LICENSE)\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.11+-blue.svg?style=flat-square)](https:\u002F\u002Fwww.python.org)\n[![FastAPI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-0.104+-green.svg?style=flat-square)](https:\u002F\u002Ffastapi.tiangolo.com)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocker-supported-blue.svg?style=flat-square)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fbradleylzh\u002Flandppt)\n[![Ask DeepWiki](https:\u002F\u002Fdeepwiki.com\u002Fbadge.svg)](https:\u002F\u002Fdeepwiki.com\u002Fsligter\u002FLandPPT)\n\n---\n\n如果你对我的项目感兴趣，欢迎联系我！\n\n[![Email](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F_Email-ai%40yydsapp.com-blue?style=for-the-badge)](mailto:ai@yydsapp.com)\n\n---\n\n\n[English](README_EN.md) | **中文**\n\n---\n\n##  目录\n\n- [项目简介](#-项目简介)\n- [功能亮点](#-功能亮点)\n- [核心功能](#-核心功能)\n- [快速开始](#-快速开始)\n- [使用指南](#-使用指南)\n- [配置说明](#-配置说明)\n- [API文档](#-api文档)\n- [技术栈](#-技术栈)\n- [常见问题](#-常见问题)\n- [许可证](#-许可证)\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.pub\u002Fp\u002Fe810c5680509b4f051a5.png\" width=\"180\" alt=\"LandPPT Logo\" \u002F>\n  \u003Cp>\n    \u003Cb>基于大语言模型（LLM）的智能演示文稿生成平台\u003C\u002Fb>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\nLandPPT 是一个基于大语言模型（LLM）的智能演示文稿生成平台，能够自动将文档内容转换为专业的PPT演示文稿。平台集成了多种AI模型、智能图像处理、深度研究功能和丰富的模板系统，提供一站式的AIPPT服务。\n\n[文档指南](http:\u002F\u002Flandppt-doc.52yyds.top\u002Fdocs)\n\n### 主界面\n\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002F3accad83a8b624d7cb19.png)\n\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002F7d5c3c1a4b625abeb4c1.png)\n\n### 生成大纲\n\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002Fa31e4f94c5d2bd577d8d.png)\n\n### 生成效果\n\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002Fe6cffa89a2b532a8514b.png)\n\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002F9a38b57c6f5f470ad59b.png)\n\n### 在线编辑\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002F6d357a847626f1a55c13.png)\n\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002F42f84b07850f5aa4aebb.png)\n\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002F8dccee74d0b85893bd38.png)\n\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002Faaf483b2507a57db8b35.png)\n\n### 讲稿生成\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002Fc53b752e0a6833c0ee87.png)\n\n### 导出效果\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002F62694101810bfa472db9.png)\n\n### 模板生成\n![image](https:\u002F\u002Fimg.pub\u002Fp\u002F892622b3f3cc0d6ad843.png)\n\n##  功能亮点\n\n- **一键生成**：从主题到完整PPT，全程AI自动化处理\n- **智能配图**：AI自动匹配最适合的图像，支持多源获取和参考图片生成\n- **TODO 任务板**：全新交互式任务管理界面，实时追踪生成进度，支持复杂动画反馈\n- **深度研究**：集成多个搜索引擎，获取最新最全面的信息\n- **并行生成**：支持幻灯片内容并行生成，配合增强型 AI 服务显著提升构建速度\n- **演讲稿生成**：智能生成配套演讲稿，支持多种导出格式\n- **语音讲解与视频导出**：基于 Edge-TTS 生成逐页讲解音频，支持与幻灯片同步播放，并可导出讲解视频（1080p 30\u002F60fps，字幕可嵌入）\n- **视觉参考**：AI编辑助手支持图像上传和视觉内容分析\n- **多文件上传**：支持同时上传多个文件，批量处理更高效\n- **模型自定义**：按功能自定义模型选择，精准控制成本\n- **公开分享与全屏播放**：一键生成分享链接，分享页支持公开浏览、全屏放映、讲解音频与字幕联动\n- **双路 PPTX 导出**：支持标准 PPTX 导出（Apryse）和图片型 PPTX 导出（复杂 HTML\u002FCSS 样式更高保真）\n- **自动化调用**：内置 OpenAI 兼容 API 与项目 REST API，支持 n8n、CI、脚本和 API Key 鉴权调用\n- **账号体系**：支持本地账号、GitHub OAuth、Linux Do OAuth、忘记密码、邮件验证码和注册限流\n- **备注导出**：支持将演讲稿导出至PPT备注栏\n- **图片导出**：支持以图片格式导出PPT页面\n- **企业级安全**：支持本地部署，数据安全可控\n\n##  核心功能\n\n###  多AI提供商支持\n- **OpenAI GPT系列**：GPT-5.5 等模型\n- **OpenAI兼容平台**：支持 DeepSeek、Moonshot、Qwen 等兼容 OpenAI 协议的模型与中转平台\n- **Anthropic Claude**：Claude-4 Sonnet、Claude-4 Haiku 系列模型\n- **Google Gemini**：Gemini-3.1 Flash、Gemini-3.0 Pro 系列模型，支持自定义端点配置\n- **Azure OpenAI**：企业级AI服务，支持自定义部署\n- **Ollama**：本地部署的开源模型，支持 Llama、Mistral 等\n\n###  强大的文件处理能力\n- **多格式支持**：PDF、Word、Markdown、TXT、Excel、PowerPoint 等多种格式\n- **智能解析**：使用 MinerU 和 MarkItDown 进行高质量内容提取\n- **深度研究**：集成 Tavily API 和 SearXNG 的多源研究功能\n- **内容增强**：自动网页内容提取和智能摘要生成\n\n###  智能图像处理系统\n- **多源图像获取**：本地图库、网络搜索、AI生成三合一\n- **网络图像搜索**：支持 Pixabay、Unsplash 等图库\n- **AI图像生成**：集成 DALL-E、SiliconFlow、Pollinations、 Openai、Gemini等服务\n- **智能图像选择**：AI自动匹配最适合的图像内容\n- **图像处理优化**：自动尺寸调整、格式转换、质量优化\n\n###  增强研究功能\n- **多引擎搜索**：Tavily 和 SearXNG 双引擎支持\n- **深度内容提取**：智能网页内容解析和结构化处理\n- **多语言支持**：支持中英文等多语言研究内容\n- **实时信息获取**：获取最新的网络信息和数据\n\n###  丰富的模板系统\n- **全局主模板**：统一的HTML模板系统，支持响应式设计\n- **多样化布局**：AI生成多种创意页面布局和设计风格\n- **场景化模板**：通用、旅游、教育等多种专业场景模板\n- **项目适配模板**：新增针对项目的适配模板生成\n- **参考PPTX提取**：支持上传参考 PPTX 抽取版式\u002F风格并生成模板\n- **自由模板模式**：项目级 AI 自适应模板，可结合参考图和主题自动生成专属模板\n- **自定义模板**：支持导入和创建个性化模板\n- **参考图片生成**：AI模板生成支持参考图片，智能匹配设计风格\n\n###  完整的项目管理\n- **四阶段工作流**：需求确认  大纲生成  TODO 进度追踪  PPT生成\n- **TODO 任务看板**：集成式任务管理，实时显示生成状态、日志与动画\n- **阶段重跑与恢复**：支持从指定阶段重新开始工作流，便于修订大纲或重生成内容\n- **公开分享管理**：项目支持生成、停用和查询分享链接，便于外部查看与演示\n- **可视化编辑**：直观的大纲编辑器和实时预览\n- **批量操作**：支持批量生成和处理多个项目\n\n###  现代化Web界面\n- **直观操作**：用户友好的响应式Web界面\n- **AI聊天编辑**：侧边栏AI编辑功能，支持实时对话和视觉参考\n- **演讲稿生成**：支持单页\u002F多页\u002F全部幻灯片的演讲稿生成，导出为DOCX\u002FMarkdown格式\n- **全屏放映模式**：支持讲解音频、字幕、自动翻页和分享页播放\n- **多格式导出**：PDF\u002FHTML\u002F标准 PPTX\u002F图片型 PPTX\u002F讲稿 DOCX\u002FMarkdown 多种格式导出支持\n- **实时预览**：16:9 标准比例的实时页面预览\n\n###  平台与运维能力\n- **Docker \u002F Docker Compose**：同时提供单容器运行和 `docker-compose.yml` \u002F `docker-compose-dev.yaml` 多服务编排\n- **PostgreSQL + Valkey**：生产编排内置数据库与缓存\u002F任务协调服务，适合多用户与后台任务场景\n- **后台任务系统**：PDF\u002FPPTX\u002F讲解视频等长任务异步执行，支持任务轮询与多 Worker 容错\n- **OpenAI 兼容接口**：提供 `\u002Fv1\u002Fchat\u002Fcompletions`、`\u002Fv1\u002Fcompletions`、`\u002Fv1\u002Fmodels`\n- **可选商业化模块**：支持积分系统、SMTP\u002FResend、注册限流与 Cloudflare Turnstile\n\n##  快速开始\n\n### 系统要求\n- Python 3.11+\n- SQLite 3\n- ffmpeg（讲解视频导出需要）\n- Docker (可选)\n\n### 数据库迁移（自动）\n- 默认启动时会自动检测并执行数据库迁移（与用户无关），可通过环境变量关闭：`LANDPPT_AUTO_MIGRATE_ON_STARTUP=false`\n- 本地默认启动使用 SQLite；只有在显式设置 `DATABASE_URL` 时才切换到 PostgreSQL 等外部数据库\n- 多容器\u002F多节点共享同一个数据库时，建议关闭自动迁移，改为单独运行一次迁移作业\n\n### 本地安装\n\n#### 方法一：uv（推荐）\n\n```bash\n# 克隆项目\ngit clone https:\u002F\u002Fgithub.com\u002Fsligter\u002FLandPPT.git\ncd LandPPT\n\n# 安装uv（如果尚未安装）\n# Windows (PowerShell)\npowershell -ExecutionPolicy ByPass -c \"irm https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.ps1 | iex\"\n# macOS\u002FLinux\ncurl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh\n\n# 使用uv同步开发\u002F测试环境\nuv sync --extra dev\n\n# 仅运行测试时，也可以只安装测试依赖\n# uv sync --extra test\n\n# 配置环境变量\ncp .env.example .env\n# 编辑 .env 文件，配置你的AI API密钥\n\n# 启动服务（默认监听 8000，默认使用 SQLite + memory cache，无需 PostgreSQL \u002F Valkey）\nuv run python run.py\n\n# 运行测试（示例）\nuv run --extra dev pytest tests\u002Ftest_creative_guidance_defaults.py\n\n# 如果是升级版本：启动后执行数据库迁移（包含讲解音频\u002F视频功能）\n# 方式一：直接在本机执行（无需HTTP认证）\n# python -c \"import asyncio; from landppt.database.migrations import migration_manager; asyncio.run(migration_manager.migrate_up())\"\n# 方式二：通过HTTP接口（需要登录后的 session_id Cookie）\n# 1) 获取 session_id: curl -X POST -d \"username=YOUR_USER&password=YOUR_PASS\" http:\u002F\u002Flocalhost:8000\u002Fapi\u002Fauth\u002Flogin\n# 2) 执行迁移: curl -X POST -H \"Cookie: session_id=YOUR_SESSION_ID\" http:\u002F\u002Flocalhost:8000\u002Fapi\u002Fdatabase\u002Fmigrations\u002Frun\n```\n\n#### 方法二：传统pip安装\n\n```bash\n# 克隆项目\ngit clone https:\u002F\u002Fgithub.com\u002Fsligter\u002FLandPPT.git\ncd LandPPT\n\n# 创建虚拟环境\npython -m venv venv\n# 激活虚拟环境\n# Windows\nvenv\\Scripts\\activate\n# macOS\u002FLinux\nsource venv\u002Fbin\u002Factivate\n\n# 安装依赖\npip install -e .\n\n# 配置环境变量\ncp .env.example .env\n# 编辑 .env 文件，配置你的AI API密钥\n\n# 启动服务（默认监听 8000，默认使用 SQLite + memory cache，无需 PostgreSQL \u002F Valkey）\npython run.py\n```\n\n### Docker部署\n\n#### 使用预构建镜像（推荐）\n\n```bash\n# 拉取最新镜像\ndocker pull bradleylzh\u002Flandppt:latest\n\n# 运行容器\ndocker run -d \\\n  --name landppt \\\n  -p 8000:8000 \\\n  -v $(pwd)\u002F.env:\u002Fapp\u002F.env \\\n  -v landppt_data:\u002Fapp\u002Fdata \\\n  -v landppt_reports:\u002Fapp\u002Fresearch_reports \\\n  -v landppt_cache:\u002Fapp\u002Ftemp \\\n  bradleylzh\u002Flandppt:latest\n\n# 查看日志\ndocker logs -f landppt\n```\n\n> **注意**: 确保在运行前创建并配置好 `.env` 文件，包含必要的API密钥。\n\n#### 使用 Docker Compose（推荐生产部署）\n\n仓库内自带 `docker-compose.yml`，会同时启动 `landppt + PostgreSQL + Valkey`，适合多用户、后台任务和长期运行场景。若只是本地单机体验，直接运行 `python run.py` \u002F `uv run python run.py` 即可，默认会使用 SQLite + memory cache，无需额外依赖。\n\n```bash\n# 准备配置\ncp .env.example .env\n# 至少补充 AI Key、SECRET_KEY、POSTGRES_PASSWORD\n\n# 启动生产编排\ndocker compose up -d --build\n\n# 查看日志\ndocker compose logs -f landppt\n```\n\n默认访问地址：`http:\u002F\u002Flocalhost:6003`\n\n#### 开发模式（热重载）\n\n开发编排使用 `docker-compose-dev.yaml`，挂载源码目录并启用热重载，适合本地调试。\n\n```bash\ncp .env.example .env\ndocker compose -f docker-compose-dev.yaml up -d --build\ndocker compose -f docker-compose-dev.yaml logs -f landppt-dev\n```\n\n默认访问地址：`http:\u002F\u002Flocalhost:8001`\n\n##  使用指南\n\n### 1. 访问Web界面\n启动服务后，访问以下地址：\n- **Web界面**: http:\u002F\u002Flocalhost:8000\n- **API文档**: http:\u002F\u002Flocalhost:8000\u002Fdocs\n- **健康检查**: http:\u002F\u002Flocalhost:8000\u002Fhealth\n\n默认不会自动创建管理员账号；如需初始化管理员，请显式配置 `LANDPPT_BOOTSTRAP_ADMIN_ENABLED=true`、`LANDPPT_BOOTSTRAP_ADMIN_USERNAME` 和 `LANDPPT_BOOTSTRAP_ADMIN_PASSWORD`。\n\n### 2. 配置AI提供商\n在设置页面配置你的AI API密钥：\n- OpenAI API Key(支持openai 兼容model api，例如deepseek、moonshot、qwen等等)\n- Anthropic API Key\n- Google API Key\n- 或配置本地Ollama服务\n\n### 3. 创建PPT项目\n1. **需求确认**：输入主题、选择受众、设置页数范围、选择场景模板\n2. **大纲生成**：AI智能生成结构化大纲，支持可视化编辑\n3. **内容研究**：可选择启用深度研究功能，获取最新相关信息\n4. **图像配置**：配置图像获取方式（本地\u002F网络\u002FAI生成）\n5. **PPT生成**：基于大纲生成完整的HTML演示文稿\n\n### 4. 编辑和导出\n- 使用AI聊天功能实时编辑内容和样式，支持图像上传进行视觉参考\n- 支持图像替换和优化，AI模板生成可参考上传的图片\n- 生成配套演讲稿，支持单页\u002F多页\u002F全部幻灯片模式\n- 生成逐页讲解音频，支持 Edge-TTS 或 ComfyUI Qwen3-TD，并可上传参考音频\n- 导出讲解视频（MP4），支持 1080p、30\u002F60fps 与字幕嵌入\n- 导出为PDF、HTML、标准 PPTX、图片型 PPTX、演讲稿 DOCX\u002FMarkdown 格式\n- 支持一键生成公开分享链接，并在分享页中播放讲解音频与字幕\n- 保存项目版本和历史记录\n- 支持批量处理和模板复用\n\n### 5. 自动化与开放接口\n- 支持通过 API Key 将项目流程接入 CI、脚本和自定义后端\n- 提供 OpenAI 兼容接口：`\u002Fv1\u002Fchat\u002Fcompletions`、`\u002Fv1\u002Fcompletions`、`\u002Fv1\u002Fmodels`\n- 提供项目级导出\u002F分享\u002F讲稿接口，适合非浏览器自动化工作流\n\n##  配置说明\n\n### 环境变量配置\n\n主要配置项（常用项见 `.env.example`，高级项可参考 `src\u002Flandppt\u002Fcore\u002Fconfig.py`）：\n\n```bash\n# AI提供商配置\nDEFAULT_AI_PROVIDER=openai\nOPENAI_API_KEY=your_openai_api_key_here\nANTHROPIC_API_KEY=your_anthropic_api_key_here\nGOOGLE_API_KEY=your_google_api_key_here\nGOOGLE_BASE_URL=https:\u002F\u002Fgenerativelanguage.googleapis.com  # 自定义Gemini端点\n\n# 角色级模型路由（可选）\nOUTLINE_MODEL_PROVIDER=openai\nOUTLINE_MODEL_NAME=gpt-4o-mini\nSLIDE_GENERATION_MODEL_PROVIDER=openai\nSLIDE_GENERATION_MODEL_NAME=gpt-4o\nEDITOR_ASSISTANT_MODEL_PROVIDER=openai\nTEMPLATE_GENERATION_MODEL_PROVIDER=openai\nSPEECH_SCRIPT_MODEL_PROVIDER=openai\nSPEECH_SCRIPT_MODEL_NAME=gpt-4o-mini\n\n# 服务器配置\nHOST=0.0.0.0\nPORT=8000\nSECRET_KEY=your-secure-secret-key\nWORKERS=2\nRELOAD=false\n\n# 研究功能配置\nTAVILY_API_KEY=your_tavily_api_key_here        # Tavily 搜索引擎\nTAVILY_BASE_URL=https:\u002F\u002Fgateway.example.com\u002Ftavily # 可选：自定义 Tavily 网关\u002F代理地址\nSEARXNG_HOST=http:\u002F\u002Flocalhost:8888             # SearXNG 实例地址\nRESEARCH_PROVIDER=tavily                       # 研究提供商：tavily, searxng, both\n\n# 图像服务配置\nENABLE_IMAGE_SERVICE=true                      # 启用图像服务\nIMAGE_USER_STORAGE_QUOTA_MB=100                # 单用户图床存储上限(MB)，\u003C=0 表示不限制\nPIXABAY_API_KEY=your_pixabay_api_key_here     # Pixabay 图库\nUNSPLASH_ACCESS_KEY=your_unsplash_key_here    # Unsplash 图库\nSILICONFLOW_API_KEY=your_siliconflow_key_here # AI图像生成\nPOLLINATIONS_API_KEY=your_pollinations_api_key_here # Pollinations AI (gen.pollinations.ai)\n\n# 自动化鉴权\nLANDPPT_API_KEY=replace-with-strong-random-key\nLANDPPT_API_KEYS=admin:prod-key,robot:n8n-key\nLANDPPT_BOOTSTRAP_ADMIN_ENABLED=false\nLANDPPT_ENABLE_API_DOCS=true\nLANDPPT_ALLOW_HEADER_SESSION_AUTH=false\n\n# 存储 \u002F 缓存\nDATABASE_URL=sqlite:\u002F\u002F\u002F.\u002Flandppt.db\nCACHE_BACKEND=memory\nVALKEY_URL=valkey:\u002F\u002Flocalhost:6379\n# 生产部署示例：\n# DATABASE_URL=postgresql:\u002F\u002Flandppt:password@localhost:5432\u002Flandppt\n# CACHE_BACKEND=valkey\n\n# 导出功能配置\nAPRYSE_LICENSE_KEY=your_apryse_key_here       # PPTX导出\nCOMFYUI_BASE_URL=http:\u002F\u002F127.0.0.1:8188        # ComfyUI TTS\nCOMFYUI_TTS_WORKFLOW_PATH=tests\u002FQwen3-TD-TTS.json\n\n# 注册 \u002F OAuth \u002F 邮件\nEMAIL_PROVIDER=smtp\nENABLE_USER_REGISTRATION=true\nGITHUB_OAUTH_ENABLED=false\nLINUXDO_OAUTH_ENABLED=false\nENABLE_CREDITS_SYSTEM=false\nTURNSTILE_ENABLED=false\n\n# 生成参数\nMAX_TOKENS=8192\nTEMPERATURE=0.7\n```\n\n##  API文档\n\n启动服务后访问：\n- **Swagger UI**: `http:\u002F\u002Flocalhost:8000\u002Fdocs`\n- **ReDoc**: `http:\u002F\u002Flocalhost:8000\u002Fredoc`\n\n### 自动化调用鉴权（推荐 API Key）\n\n非浏览器自动化（CI 任务）支持两种方式：\n1. 全局 `.env` API Key\n2. 用户自定义 API Key（推荐多用户场景）\n\n#### 方式 A：全局 `.env` API Key\n\n在 `.env` 中配置：\n\n```bash\nLANDPPT_API_KEY=replace-with-strong-random-key\nLANDPPT_API_KEY_USER=admin\n\n# 或者使用多 Key 绑定模式\nLANDPPT_API_KEYS=admin:prod-key,robot:workflow-key\n```\n\n请求头使用以下任一方式：\n\n- `Authorization: Bearer \u003CLANDPPT_API_KEY>`\n- `X-API-Key: \u003CLANDPPT_API_KEY>`\n\n示例：\n\n```bash\ncurl -X GET \"http:\u002F\u002Flocalhost:8000\u002Fapi\u002Fprojects\" \\\n  -H \"Authorization: Bearer replace-with-strong-random-key\"\n```\n\n#### 方式 B：用户自定义 API Key（后续调用无需登录）\n\n1. 先使用你的管理员账号登录一次获取 `session_id`（管理员可通过 `LANDPPT_BOOTSTRAP_ADMIN_*` 环境变量显式初始化，或在 Web 界面中自行创建）：\n\n```bash\ncurl -X POST \"http:\u002F\u002Flocalhost:8000\u002Fapi\u002Fauth\u002Flogin\" \\\n  -d \"username=\u003Cyour-admin-username>\" \\\n  -d \"password=\u003Cyour-admin-password>\"\n```\n\n2. 创建\u002F轮换当前用户 API Key（支持自定义 key）：\n\n```bash\ncurl -X POST \"http:\u002F\u002Flocalhost:8000\u002Fapi\u002Fauth\u002Fapi-keys\" \\\n  -H \"X-Session-Id: \u003Csession_id>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"name\\\":\\\"n8n\\\",\\\"api_key\\\":\\\"your-own-strong-api-key-123456\\\"}\"\n```\n\n3. 后续直接用该 key 调受保护接口（无需再登录）：\n\n```bash\ncurl -X GET \"http:\u002F\u002Flocalhost:8000\u002Fapi\u002Fprojects\" \\\n  -H \"Authorization: Bearer your-own-strong-api-key-123456\"\n```\n\n可用管理接口：\n- `GET \u002Fapi\u002Fauth\u002Fapi-keys`：查看当前用户 API Keys\n- `DELETE \u002Fapi\u002Fauth\u002Fapi-keys\u002F{key_id}`：删除指定 API Key\n\n补充说明：\n- `LANDPPT_ALLOW_HEADER_SESSION_AUTH` 默认关闭；只有显式设置为 `true` 时，才支持通过 `X-Session-Id` 头在非浏览器客户端传递会话。\n- 全局 Key 适合服务到服务调用；用户自定义 Key 更适合多租户或个人自动化流程。\n- `LANDPPT_ENABLE_API_DOCS=true` 时可访问 `\u002Fdocs`、`\u002Fredoc` 和 `\u002Fopenapi.json`；默认值已开启。\n\n### OpenAI 兼容接口\n\n- `POST \u002Fv1\u002Fchat\u002Fcompletions`\n- `POST \u002Fv1\u002Fcompletions`\n- `GET \u002Fv1\u002Fmodels`\n\n##  技术栈\n\n### 后端技术\n- **FastAPI**: 现代化的Python Web框架，支持异步处理\n- **SQLAlchemy**: ORM数据库操作，支持多种数据库\n- **Pydantic**: 数据验证和序列化，类型安全\n- **Uvicorn**: 高性能ASGI服务器\n- **PostgreSQL \u002F SQLite**: 兼顾生产部署与本地开发\n- **Valkey**: 缓存、任务协调与多 Worker 场景支持\n\n### AI集成\n- **OpenAI**: GPT-4o、GPT-4o-mini 等最新模型\n- **Anthropic**: Claude-4.5 系列模型\n- **Google AI**: Gemini-2.5 系列模型\n- **LangChain**: AI应用开发框架和工具链\n- **Ollama**: 本地模型部署和管理\n\n### 文件处理\n- **MinerU**: 高质量PDF智能解析和结构化提取\n- **MarkItDown**: 多格式文档转换（Word、Excel、PowerPoint等）\n- **BeautifulSoup4**: HTML\u002FXML解析和处理\n\n### 图像处理\n- **Pillow**: 图像处理和格式转换\n- **OpenAI DALL-E**: AI图像生成\n- **SiliconFlow**: 国产AI图像生成服务\n- **Pollinations**: 开源AI图像生成平台\n\n### 研究功能\n- **Tavily**: 专业搜索引擎API\n- **SearXNG**: 开源元搜索引擎\n- **Playwright**: 网页内容提取\n\n### 导出功能\n- **Playwright**: HTML转PDF高质量导出\n- **Apryse SDK**: 专业PPT生成和转换\n- **python-pptx \u002F dom-to-pptx**: 图片型 PPTX 导出与讲稿备注写入\n- **Edge-TTS \u002F ComfyUI \u002F FFmpeg**: 讲解音频、字幕与视频导出链路\n\n##  贡献指南\n\n欢迎所有形式的贡献！\n\n### 如何贡献\n1. Fork 本仓库\n2. 创建特性分支 (`git checkout -b feature\u002FAmazingFeature`)\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\n4. 推送到分支 (`git push origin feature\u002FAmazingFeature`)\n5. 开启 Pull Request\n\n详情请见 [贡献指南](CONTRIBUTING.md)。\n\n### 报告问题\n如果你发现了bug或有功能建议，请在 [Issues](https:\u002F\u002Fgithub.com\u002Fsligter\u002FLandPPT\u002Fissues) 页面创建新的issue。\n\n##  常见问题\n\n### Q: 支持哪些AI模型？\nA: 支持 OpenAI GPT(兼容)、Anthropic Claude、Google Gemini、等模型。可以在配置页面切换不同的AI提供商。\n\n### Q: 如何配置图像功能？\nA: 在 `.env` 文件中配置相应的API密钥：\n- Pixabay: `PIXABAY_API_KEY`\n- Unsplash: `UNSPLASH_ACCESS_KEY`\n- AI生成: `SILICONFLOW_API_KEY` 或 `POLLINATIONS_API_KEY`\n\n### Q:在使用反向代理（如Nginx、Apache等）时，如果没有正确配置`base_url`，会出现以下问题：\n- 图片链接仍然显示为`localhost:8000`\n- 前端无法正确加载图片\n- 图片预览、下载等功能异常\n\nA:  通过Web界面配置\n\n1. 访问系统配置页面：`https:\u002F\u002Fyour-domain.com\u002Fai-config`\n2. 切换到\"应用配置\"标签页\n3. 在\"基础URL (BASE_URL)\"字段中输入您的代理域名\n4. 例如：`https:\u002F\u002Fyour-domain.com` 或 `http:\u002F\u002Fyour-domain.com:8080`\n5. 点击\"保存应用配置\"\n\n### Q: 研究功能如何使用？\nA: 配置 `TAVILY_API_KEY` 或部署 SearXNG 实例，然后在创建PPT时启用研究功能即可自动获取相关信息。\n\n### Q: 支持本地部署吗？\nA: 完全支持本地部署，可以使用 Docker 或直接安装。支持 Ollama 本地模型，无需依赖外部API。\n\n### Q: 如何导出PPTX格式？\nA: 需要配置 `APRYSE_LICENSE_KEY`，然后在导出选项中选择PPTX格式。\n\n### Q: 如何选择标准 PPTX 和图片型 PPTX？\nA: 标准 PPTX 依赖 `APRYSE_LICENSE_KEY`，导出后更适合继续编辑；图片型 PPTX 通过截图嵌入页面，复杂 CSS、图标和特殊排版保真更高，但页内元素通常不可再编辑。\n\n### Q: 如何生成公开分享链接？\nA: 可在项目编辑页点击分享，或调用 `POST \u002Fapi\u002Fprojects\u002F{project_id}\u002Fshare\u002Fgenerate`。分享地址格式为 `\u002Fshare\u002F{share_token}`，需要停用时调用 `share\u002Fdisable` 即可。\n\n### Q: 如何启用开发模式或生产编排？\nA: 生产环境推荐 `docker compose up -d --build` 使用仓库内的 `docker-compose.yml`；开发调试推荐 `docker compose -f docker-compose-dev.yaml up -d --build`，默认启用源码挂载和热重载。\n\n### Q: 讲解音频支持哪些方式？\nA: 默认支持 Edge-TTS；也可以配置 ComfyUI Qwen3-TD，并在项目编辑页上传参考音频做语音克隆。\n\n### Q: 并行生成会影响PPT质量吗？\nA: 不会。并行生成只是改变了生成顺序，每页的生成逻辑和质量保持不变。\n\n### Q: 所有AI提供商都支持批量生成吗？\nA: 大多数AI提供商支持并发请求，但可能有不同的限制。建议查看您使用的AI服务的API文档。\n\n##  许可证\n\n本项目采用 Apache License 2.0 许可证。详情请见 [LICENSE](LICENSE) 文件。\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=sligter\u002FLandPPT&type=Date)](https:\u002F\u002Fwww.star-history.com\u002F#sligter\u002FLandPPT&Date)\n\n##  联系我们\n\n- **项目主页**: https:\u002F\u002Fgithub.com\u002Fsligter\u002FLandPPT\n- **问题反馈**: https:\u002F\u002Fgithub.com\u002Fsligter\u002FLandPPT\u002Fissues\n- **讨论区**: https:\u002F\u002Fgithub.com\u002Fsligter\u002FLandPPT\u002Fdiscussions\n\n\u003Ca href=\"https:\u002F\u002Fjsd.onmicrosoft.cn\u002Fgh\u002Fmydracula\u002Fimage@master\u002F20260515\u002F9c2bb1e3f67945f3b147181d6351eaf0.png\">LandPPT\u003C\u002Fa>\n---\n\n\u003Cdiv align=\"center\">\n\n**如果这个项目对你有帮助，请给我们一个  Star！**\n\nMade with  by the LandPPT Team\n\n\u003C\u002Fdiv>\n","LandPPT 是一个基于大语言模型（LLM）的智能演示文稿生成平台，能够自动将文档内容转换为专业的PPT演示文稿。其核心功能包括一键生成、智能配图、深度研究以及演讲稿生成等，支持多种AI模型和丰富的模板选择，提供一站式的AIPPT服务。该平台还具备并行生成、语音讲解与视频导出等功能，极大提升了工作效率。LandPPT 适用于需要快速创建高质量演示文稿的各种场景，如商务汇报、学术报告或教育培训等。",2,"2026-06-11 03:41:22","high_star"]