MCPcopy
hub / github.com/Anionex/banana-slides

github.com/Anionex/banana-slides @v0.4.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.4.0 ↗
1,081 symbols 3,731 edges 165 files 611 documented · 57%
README

Vibe your PPT like vibing code.

中文 | English

GitHub Stars GitHub Forks GitHub Watchers

Version Docker GitHub issues GitHub pull requests

A native AI PPT generation application based on nano banana pro🍌, supporting the generation of complete PPT presentations from ideas/outlines/page descriptions.

Automatically extract charts from attachments, upload any materials, and propose modifications verbally, moving towards true "Vibe PPT".

🎯 Lower the barrier to PPT creation, enabling everyone to quickly create beautiful and professional presentations.

If this project is helpful to you, please star🌟 & fork🍴

✨ Project Origin

Have you ever found yourself in this predicament: your presentation is due tomorrow, but the slides are still blank; your head is full of brilliant ideas, yet your enthusiasm is drained by tedious layout and design?

We all aspire to quickly create professional and well-designed presentations. While traditional AI PPT generation apps generally meet the need for "speed," they still face the following issues:

  • 1️⃣ Limited to preset templates, with no flexibility to adjust styles.
  • 2️⃣ Low freedom, making multi-round revisions difficult.
  • 3️⃣ Highly similar outcomes with severe homogenization.
  • 4️⃣ Low-quality assets that lack relevance.
  • 5️⃣ Disjointed text and image layouts with poor design sense.

These shortcomings prevent traditional AI PPT generators from simultaneously meeting our two major requirements: "speed" and "aesthetics." Even those claiming to be "Vibe PPT" are, in my view, far from being truly "Vibe."

However, the emergence of the nano banana🍌 model has changed everything. I tried using 🍌pro to generate PPT slides and found the results to be exceptional in quality, aesthetics, and consistency. It accurately renders almost all text required by the prompts and faithfully follows the style of reference images. So, why not build a native "Vibe PPT" application based on 🍌pro?

👨‍💻 Applicable Scenarios

  1. Beginners: Generate beautiful PPTs quickly with zero entry barrier and no design experience required, reducing the hassle of choosing templates.
  2. PPT Professionals: Reference AI-generated layouts and combinations of graphics and text to spark design inspiration quickly.
  3. Educators: Quickly convert teaching content into illustrated PPT lesson plans to enhance classroom effectiveness.
  4. Students: Complete presentation assignments fast, allowing them to focus on content rather than layout and aesthetics.
  5. Professionals: Rapidly visualize business proposals and product introductions with quick adaptation to various scenarios.

🎨 Example Results

案例3 案例2
Software Development Best Practices DeepSeek-V3.2 Technology Showcase
案例4 案例1
R&D and Industrialization of Intelligent Production Line Equipment for Prepared Dishes The Evolution of Money: A Journey from Shells to Banknotes

See more at Use Cases

🎯 Features

1. Flexible and Diverse Creative Paths

Supports three starting methods—Ideas, Outlines, and Page Descriptions—to cater to different creative habits. - One-sentence Generation: Enter a topic, and the AI automatically generates a well-structured outline and page-by-page content descriptions. - Natural Language Editing: Supports modifying outlines or descriptions via natural language "Vibes" (e.g., "Change page three to a case study"), with the AI responding and adjusting in real-time. - Outline/Description Mode: Supports both one-click batch generation and manual adjustment of details.

image

2. Powerful Asset Parsing Capabilities

  • Multi-format Support: Upload PDF, Docx, MD, Txt, and other files for automatic background content parsing.
  • Intelligent Extraction: Automatically identify key points, image links, and chart information within the text, providing rich materials for generation.
  • Style Reference: Support uploading reference images or templates to customize PPT styles.

File Parsing and Material Processing

3. "Vibe"-style Natural Language Modification

No longer limited by complex menu buttons, issue modification commands directly through natural language. - Inpainting/Partial Redrawing: Make conversational edits to areas you are not satisfied with (e.g., "Change this chart to a pie chart"). - Full-page Optimization: Generate high-definition, stylistically consistent pages based on nano banana pro🍌.

image

4. Out-of-the-box Format Export

  • Multi-format Support: One-click export to standard PPTX or PDF files.
  • Perfect Fit: Default 16:9 aspect ratio, no manual layout adjustment required, ready for direct presentation.

image PPT and PDF Export

5. Editable PPTX export (Beta in progress)

  • Export images as high-fidelity PPT pages with clean backgrounds and freely editable images and text
  • For relevant updates, see https://github.com/Anionex/banana-slides/issues/121
  • If the editable PPT results are suboptimal (e.g., text overlap, unstyled text), it is generally caused by configuration issues. Please refer to Common Issues and Troubleshooting Solutions for Editable PPTX Export for investigation. image

🌟 Comparison with NotebookLM Slide Deck | Feature | NotebookLM | This Project | | --- | --- | --- | | Page Limit | 15 pages | Unlimited | | Further Editing | Not supported | Selection-based editing + Prompt-based editing | | Adding Assets | Cannot add after generation | Freely add after generation | | Export Formats | Only supports PDF export | Export as PDF, (Editable) pptx | | Watermark | Watermark in free version | No watermark, freely add/remove elements |

Note: This comparison may become outdated as new features are added.

🔥 Recent Updates

  • 【2-9】:
  • New Features
    • Support pasting images on the home page, outline, and description cards with immediate recognition and an improved interaction experience.
    • Manual Outline Section Editing: Support for manually adjusting the section (part) a page belongs to.
    • Docker Multi-architecture: Image support for amd64 / arm64 builds.
    • Internationalization + Dark Mode: Added Chinese/English switching; supports light/dark/system theme; full component adaptation for dark mode.
  • Fixes & Experience Optimizations

    • Fixed export-related 500 errors, reference file association timing, outline/page data misalignment, task polling errors for specific projects, infinite polling in description generation, image preview memory leaks, and error handling for partial batch deletion failures.
    • Optimized format example hints, HTTP error message copy, Modal closing experience, cleaned up old project localStorage, and removed redundant prompts for first-time project creation.
    • Several other optimizations and fixes.
  • 【1-4】 : v0.3.0 Release: Major upgrade for editable pptx export:

  • Supports maximum restoration of font size, color, bolding, and other styles from text in images;
  • Added support for recognizing text content within tables;
  • More precise logic for font size and text position restoration;
  • Optimized export workflow, significantly reducing residual text on background images after export;
  • Supported multi-select logic for pages, allowing flexible selection of specific pages to generate and export.
  • See https://github.com/Anionex/banana-slides/issues/121 for detailed effects and usage instructions.

  • 【12-27】: Added support for a "no-image template" mode and high-quality text presets. Now, PPT page styles can be controlled via text descriptions alone.

🔧 Frequently Asked Questions

  1. Garbled text or blurry text on generated pages

    • You can choose a higher output resolution (the OpenAI format may not support increasing resolution; the Gemini format is recommended). According to tests, adjusting the resolution from 1k to 2k before generating the page significantly improves text rendering quality.
    • Please ensure that the page description includes the specific text content you want to render.
  2. Poor results when exporting editable PPTs, such as overlapping text or missing styles

    • In 90% of cases, this is due to an API configuration issue. Please refer to the troubleshooting and solutions in issue 121.
  3. Is the free tier Gemini API Key supported?

    • The free tier only supports text generation and does not support image generation.
  4. 503 Error or Retry Error when generating content

    • You can check the Docker backend logs using the commands provided in the README to locate the detailed error for the 503 issue. This is generally caused by incorrect model configuration.
  5. Why is the API Key set in .env not taking effect?

    • After editing the .env file during runtime, you must restart the Docker container to apply the changes.
    • If you have previously configured parameters on the web settings page, they will override the parameters in the .env file. You can revert to the .env settings by clicking "Restore Default Settings."

🗺️ Roadmap

Status Milestone
✅ Completed Create PPT via three paths: ideas, outlines, and page descriptions
✅ Completed Parse Markdown-formatted images in text
✅ Completed Add more assets to a single PPT slide
✅ Completed Area selection and Vibe voice editing for single slides
✅ Completed Asset Module: Asset generation, upload, etc.
✅ Completed Support uploading and parsing of multiple file formats
✅ Completed Support Vibe voice adjustments for outlines and descriptions
✅ Completed Preliminary support for exporting editable .pptx files
🔄 In Progress Support editable .pptx export with multi-layering and precise background removal
🔄 In Progress Web search
🔄 In Progress Agent mode
🧭 Planned Optimize front-end loading speed
🧭 Planned Online presentation feature
🧭 Planned Simple animations and slide transition effects
🚍 Partially Supported Multi-language support
🏢 Business Feature User system

📦 Usage

Using Docker Compose 🐳 (Recommended)

This is the simplest deployment method, allowing you to start both front-end and back-end services with one click.

📒Windows User Instructions

If you are using Windows, please install Windows Docker Desktop first. Check the Docker icon in the system tray to ensure Docker is running, then follow the same steps.

Tip: If you encounter issues, ensure that the WSL 2 backend is enabled in Docker Desktop settings (recommended) and that ports 3000 and 5000 are not occupied.

  1. Clone the Repository
git clone https://github.com/Anionex/banana-slides
cd banana-slides
  1. Configure Environment Variables

Create a .env file (refer to .env.example):

cp .env.example .env

Edit the .env file and configure the necessary environment variables:

The LLM interface in this project follows the AIHubMix platform format standard. It is recommended to use AIHubMix to obtain an API key to reduce migration costs.

Friendly tip: The interface fees for the Google nano banana pro models are high; please be mindful of the invocation costs. ```env

AI Provider Configuration Format (gemini / openai / vertex)

AI_PROVIDER_FORMAT=gemini

Gemini Format Configuration (Used when AI_PROVIDER_FORMAT=gemini)

GOOGLE_API_KEY=your-api-key-here GOOGLE_API_BASE=ht

Extension points exported contracts — how you extend this code

ImportMetaEnv (Interface)
(no doc)
frontend/src/vite-env.d.ts
ImportMeta (Interface)
(no doc)
frontend/src/vite-env.d.ts
OutlineContent (Interface)
(no doc)
frontend/src/types/index.ts
ImageVersion (Interface)
(no doc)
frontend/src/types/index.ts
Page (Interface)
(no doc)
frontend/src/types/index.ts

Core symbols most depended-on inside this repo

show
called by 126
frontend/src/components/shared/Toast.tsx
error_response
called by 66
backend/utils/response.py
bad_request
called by 62
backend/utils/response.py
success_response
called by 54
backend/utils/response.py
not_found
called by 54
backend/utils/response.py
save
called by 43
backend/utils/pptx_builder.py
useT
called by 32
frontend/src/hooks/useT.ts
to_dict
called by 27
backend/models/task.py

Shape

Function 550
Method 331
Class 75
Route 66
Interface 59

Languages

Python68%
TypeScript32%

Modules by API surface

frontend/src/api/endpoints.ts62 symbols
backend/services/image_editability/extractors.py35 symbols
backend/services/export_service.py32 symbols
backend/services/image_editability/text_attribute_extractors.py31 symbols
backend/services/file_service.py26 symbols
backend/services/ai_service.py26 symbols
backend/controllers/project_controller.py26 symbols
backend/controllers/settings_controller.py24 symbols
backend/utils/pptx_builder.py23 symbols
backend/services/image_editability/inpaint_providers.py23 symbols
backend/controllers/material_controller.py22 symbols
frontend/src/pages/SlidePreview.tsx21 symbols

Dependencies from manifests, versioned

@dnd-kit/core6.1.0 · 1×
@dnd-kit/sortable8.0.0 · 1×
@dnd-kit/utilities3.2.2 · 1×
@playwright/test1.40.1 · 1×
@testing-library/jest-dom6.1.5 · 1×
@testing-library/react14.1.2 · 1×
@testing-library/user-event14.5.1 · 1×
@types/node25.0.1 · 1×
@types/react18.2.43 · 1×
@types/react-dom18.2.17 · 1×
@typescript-eslint/eslint-plugin6.14.0 · 1×
@typescript-eslint/parser6.14.0 · 1×

For agents

$ claude mcp add banana-slides \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact