Py学习  »  Git

Vibe PPT?这个开源AI PPT项目,Github 6.3K Star了!

刘聪NLP • 5 月前 • 239 次点击  

大家好,我是刘聪NLP。

前面一阵子,Google的NoteLLM做PPT火了一阵子,直接生成精美PPT,

而现在AI PPT的工具也是层出不穷,当然各种大模型直出PPT也是越来越好看了

目前来说,AI PPT的大方向有三种,

  • 原生填空派:借助模板,将内容填入到预设的模板中,指明在坐标(x,y)出放一个文本框,内容是A,颜色是B,通过脚本调用 PowerPoint 自身的接口来创建元素。优势是原始对象操作,劣势就是死板,依靠模板。

  • 代码渲染派:LLM写HTML,然后渲染出来,各种样式也可以预置,也可以针对性修改,会显得灵活一点,有样式创新性,但没那么高。

  • 图像生成派:把PPT当作画画,把每页内容直接画出来,因为Nano Banana Pro的出现,上限无比高,但不易修改,成本也过高,每次修改都是重新生成图片,当然也有可以图层操作。

不过,啥时候,像Qwen-Image、Z-Image等开源模型,在文字渲染、美感、内容理解的效果,能达到banana时,

那么AI PPT的成本就会被极大的打下来。

说回这个banana-slides项目,

Github: https://github.com/Anionex/banana-slides

看名字,就能知道,是属于第三种,基于nano banana pro来实现PPT制作

用一段想法|大纲|详细描述 + 参考资料(可有可无),自动生成一套带图的 PPT,并且可以在浏览器里继续编辑、微调、导出 PPTX、PDF。

整体的流程细节如下,

在首页输入创意、或自己写好的大纲、或一段长描述 ;调用文本模型生成大纲、再为每页生成详细描述;

这里的大纲和详细描述内容支持修改,可以自己手动修改,也可以vibe修改。

当然,还可上传模板图(定制PPT风格)、参考文件(PDF、PPT等),系统通过 MinerU + 大模型先把文件解析成 Markdown,再作为知识库(包含图片链接和图表信息等)喂给模型;

因为暂时没有联网搜索,你要是不传参考资料,那就是模型本身生成内容了,会产生幻觉。

PS:检索功能项目正在开发ing,可以等一等。

然后是调用图片模型为每一页生成图片;

对不满意的区域,也可以进行口头式修改,例如:修改文案、图像变换等。

最后支持导出为PPTX 或 PDF,默认16:9比例,排版无需二次调整。

部署也是比较简单,官方教程比较细致了,

# 克隆代码
git clone https://github.com/Anionex/banana-slides
cd banana-slides
# 配置api,记得改.env里的配置
cp .env.example .env
# 启动服务
docker compose up -d

再来看看,banana-slides的核心Prompt内容,其实生成大纲、改写、生图、改图,都依赖提示词,

生成PPT大纲的Prompt,

You are a helpful assistant that generates an outline for a ppt.
You can organize the content in two ways:
1. Simple format (for short PPTs without major sections):
[{{"title""title1""points": ["point1""point2"]}}, {{"title""title2""points": ["point1""point2"]}}]
2. Part-based format (for longer PPTs with major sections):
[
    {{
    "part""Part 1: Introduction",
    "pages": [
        {{"title""Welcome""points": ["point1""point2"]}},
        {{"title""Overview""points": ["point1""point2"]}}
    ]
    }},
    {{
    "part""Part 2: Main Content",
    "pages": [
        {{"title""Topic 1""points": ["point1""point2"]}},
        {{"title""Topic 2""points": ["point1""point2"]}}
    ]
    }}
]
Choose the format that best fits the content. Use parts when the PPT has clear major sections.
The user's request: {idea_prompt}. Now generate the outline, don't include any other text.
{get_language_instruction(language)}

生成单个页面描述的Prompt,

我们正在为PPT的每一页生成内容描述。
用户的原始需求是:\n{original_input}\n
我们已经有了完整的大纲:\n{outline}\n{part_info}
现在请为第 {page_index} 页生成描述:
{page_outline}
【重要提示】生成的"页面文字"部分会直接渲染到PPT页面上,因此请务必注意:
1. 文字内容要简洁精炼,每条要点控制在15-25字以内
2. 条理清晰,使用列表形式组织内容
3. 避免冗长的句子和复杂的表述
4. 确保内容可读性强,适合在演示时展示
5. 不要包含任何额外的说明性文字或注释
输出格式示例:
页面标题:原始社会:与自然共生
页面文字:
- 狩猎采集文明:人类活动规模小,对环境影响有限
- 依赖性强:生活完全依赖自然资源的直接供给
- 适应而非改造:通过观察学习自然,发展生存技能
- 影响特点:局部、短期、低强度,生态可自我恢复
其他页面素材(如果有请积极添加,包括markdown图片链接、公式、表格等)
【关于图片】如果参考文件中包含以 /files/ 开头的本地文件URL图片(例如 /files/mineru/xxx/image.png),请将这些图片以markdown格式输出,例如:![图片描述](/files/mineru/xxx/image.png)。这些图片会被包含在PPT页面中。
{get_language_instruction(language)}

图片生成Prompt,

你是一位专家级UI UX演示设计师,专注于生成设计良好的PPT页面。
当前PPT页面的页面描述如下:

{page_desc}


整个PPT的大纲为:
{outline_text}
当前位于章节:{current_section}


- 要求文字清晰锐利, 画面为4K分辨率,16:9比例。
- 配色和设计语言和模板图片严格相似。
- 根据内容自动设计最完美的构图,不重不漏地渲染"页面描述"中的文本。
- 如非必要,禁止出现 markdown 格式符号(如 # 和 * 等)。
- 只参考风格设计,禁止出现模板中的文字。
- 使用大小恰当的装饰性图形或插画对空缺位置进行填补。

{get_ppt_language_instruction(language)}
{material_images_note}{extra_req_text}

图片编辑Prompt,

该PPT页面的原始页面描述为:
{original_description}
现在,根据以下指令修改这张PPT页面:{edit_instruction}
要求维持原有的文字内容和设计风格,只按照指令进行修改。提供的参考图中既有新素材,也有用户手动框选出的区域,请你根据原图和参考图的关系智能判断用户意图。

最后想说,

我最大的感触就是nano banana pro好强,直接把AI PPT的审美拉到了很高的位置,

现在感觉对于很多人来说,难度不在于如何部署这个项目了,

是如何能找到能调用nano banana的api。

现在AI PPT的整体效果都挺好的,

不过还是要注意,无论是Vibe Code,还是Vibe PPT,

内核还是你自己。

你可以专注于核心内容,

其他的就交给AI。。。

PS:都看到这里,来个点赞在看关注吧。 您的支持是我坚持的最大动力!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/190983