⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 mp.weixin.qq.com/s?__biz=MzU2MTI4MjI0MQ==&mid=2247542866&idx=1&sn=5cf262f89cd5275a00c6c964958d692b&poc_token=HJ5M4mmj4sbrtGXc-EL-0RWR8SKxJa1j71qE2ZbN 「null」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

上周我在 GitHub 上看到一个项目叫 banana-slides,短短几个月收获了大量 Star。我去翻了一下,发现它解决的其实是一个很常见的问题:做 PPT 太麻烦。

这篇文章就来聊聊这个项目,说说它的思路、功能和上手方式。

做 PPT 这件事,真的很花时间

不管是做汇报、写方案还是交学校作业,PPT 都是逃不开的东西。内容想好了,但排版要花大量时间。字体、对齐、颜色、图文布局,每一步都要手动调整。

现在有不少 AI 生成 PPT 的工具,确实能省事一些,但用下来总有几个问题让人不太满意:

模板是固定的,风格没法怎么调。生成完了也不太好改,多轮修改很麻烦。出来的 PPT 大多看着差不多,没什么个性。图片质量也参差不齐,有时候和内容根本对不上。

简单说,这类工具做出来的东西,快是快,但很难又快又好看。

bana-slides 的作者也有同样的感受,于是他决定自己做一个。

banana-slides 是什么

bana-slides(完整名字 banana-slides)是一个基于 Google Gemini nano banana pro 模型的 PPT 生成应用。它完全开源,代码放在 GitHub 上,支持自部署。

作者在 README 里解释了为什么要做这个工具。他试过用 Gemini nano banana pro(也就是项目名字里的 🍌)来直接生成 PPT 页面,发现效果出乎意料地好:图文布局自然、风格统一、文字精确。于是他就以此为核心,搭了这套 PPT 生成系统。

和其他 AI PPT 工具最不一样的地方在于:这个项目把图片生成能力直接用在了每一张幻灯片上,而不是先生成内容再套模板。每一页都是一张图,风格天然统一。

主要功能

三种起步方式

你可以用三种方式来开始做 PPT:

  1. \1. 一句话:说个主题,AI 自动出大纲和每页内容
  2. \2. 大纲:先写大纲,再逐步填充页面内容
  3. \3. 页面描述:直接写每页要放什么,控制粒度更细

三种方式都支持自然语言修改。比如你想改某页,可以直接说”把第三页换成案例分析”,AI 会根据你的指令重新生成。

素材上传与智能解析

你可以上传文件,系统会自动读取内容。支持 PDF、Word(.docx)、Markdown、纯文本这几种格式。

上传后,系统会提取文件里的关键信息、图片链接和图表说明,作为生成 PPT 的参考材料。

另外,你也可以上传一张参考图片,告诉系统你想要什么风格。比如上传一个你喜欢的 PPT 截图,AI 就会按照这个风格来出页面。

口头修改指定区域

这是这个项目比较有意思的地方。生成好页面之后,如果你对某个区域不满意,可以框选那个部分,然后直接用文字描述要怎么改。比如”这里换成饼图”或者”文字改大一点”。

整个修改流程不需要点复杂的菜单,直接说话就行。作者把这种交互方式叫做”Vibe 式编辑”。

导出为 PPTX 和 PDF

生成好之后,可以直接导出为标准的 PPTX 文件或 PDF 文件。默认是 16:9 的比例,不需要再手动调整尺寸。

值得一提的是,项目还在做一个”可自由编辑的 PPTX 导出”功能(目前是 Beta 阶段)。这个功能会把生成的每张幻灯片图片里的文字和布局还原成可以在 PowerPoint 里直接编辑的格式,字体大小、颜色、加粗等样式也会尽量保留。

和 notebooklm 比一比

Google 的 notebooklm 也有幻灯片生成功能,下面是两个工具的简单对比:

功能 notebooklm banana-slides
页数上限 15 页 无限制
二次编辑 提示词修改 框选编辑 + 口头编辑
素材添加 生成后不能再加 生成后可以继续加
导出格式 PDF、不可编辑的 PPTX PDF、可编辑或图片版 PPTX
水印 免费版有水印 无水印,元素可以自由增减

两者定位不完全一样,notebooklm 更侧重于知识整理,banana-slides 则专门为 PPT 生成设计。如果你只是需要从一个长文档快速生成几页幻灯片,notebooklm 够用。但如果你要做有风格感的 PPT,想要更多控制权,banana-slides 更合适。

技术架构

项目分前端和后端两部分。

前端用 React 18 + TypeScript 写的,构建工具是 Vite,样式用 Tailwind CSS,状态管理用 Zustand。整体来说是比较标准的现代前端技术栈。

后端是 Python + Flask,AI 调用走的是 Google Gemini API,PPT 文件处理用 python-pptx,图片处理用 Pillow。数据存在 SQLite 里,页面生成是并发执行的,用了 ThreadPoolExecutor 来加速。

代码仓库结构比较清晰,前端在 frontend/ 目录,后端在 backend/ 目录,各自独立。

怎么部署

有三种部署方式,按照难度从低到高排列:

方式一:一键部署(最简单)

项目支持通过雨云平台一键部署,不需要自己装 Docker 或配置服务器。新用户有 15 天免费试用。进去之后直接创建应用,跟着引导操作就行。

方式二:Docker Compose

如果你有服务器,用 Docker 部署是最推荐的方式。官方提供了预构建镜像,直接拉下来就能用:

docker compose -f docker-compose.prod.yml up -d

主要步骤是:克隆仓库、创建 .env 文件填写 API Key,然后执行上面的命令。前端跑在 3000 端口,后端在 5000 端口。

配置 API Key 推荐用 AIHubMix 这个平台,项目本身是以 Gemini 接口格式为标准的,用这个平台可以减少一些迁移成本。

需要注意:Gemini nano banana pro 模型的 API 调用费用比较高,在正式大量使用之前,最好先估算一下成本。

方式三:源码部署

如果你想改代码或者做二次开发,可以从源码部署。环境要求是 Python 3.10 以上、Node.js 16 以上,还有 uv 这个 Python 包管理器。

后端启动命令:

cd backend
uv run alembic upgrade head && uv run python app.py

前端另起一个终端,进入 frontend/ 目录安装依赖后启动即可。

还在开发中的功能

看了一下项目的开发计划,还有几个功能在做:

  • 更完整的可编辑 PPTX 导出(支持多层次抠图)
  • 网络搜索能力(生成 PPT 时可以联网查资料)
  • Agent 模式
  • 在线播放功能
  • 页面切换动画

目前版本已经有不少可用的功能,并且更新频率不低。仓库的 Star 增长曲线也比较稳。

小结

bana-slides 这个项目的核心思路是:直接用图片生成模型来做每一张幻灯片,不套模板,风格自然统一。这个方向和传统 AI PPT 工具差别还挺大的。

当然也有一些限制要提一下:Gemini nano banana pro 模型的 API 费用不低,免费额度用完就需要付费了。另外,可编辑 PPTX 导出功能现在还在迭代,效果不完全稳定。

如果你愿意自己折腾一下,这个工具是值得试试的。代码是开源的,部署方式也挺多,文档也有中英文版本。

GitHub 地址:https://github.com/Anionex/banana-slides

在线 Demo:https://bananaslides.online/

文章目录
  1. 1. 做 PPT 这件事,真的很花时间
  2. 2. banana-slides 是什么
  3. 3. 主要功能
    1. 3.0.1. 三种起步方式
    2. 3.0.2. 素材上传与智能解析
    3. 3.0.3. 口头修改指定区域
    4. 3.0.4. 导出为 PPTX 和 PDF
  • 4. 和 notebooklm 比一比
  • 5. 技术架构
  • 6. 怎么部署
    1. 6.0.1. 方式一:一键部署(最简单)
    2. 6.0.2. 方式二:Docker Compose
    3. 6.0.3. 方式三:源码部署
  • 7. 还在开发中的功能
  • 8. 小结