Oh My PPT - Local-first AI Slide Deck Generator & Editor
中文 | Why • Features • Workflow • Changelog • Reference • Usage Notes
Describe what you need — a presentation, lesson, or story —
and let the AI build clean, beautiful HTML slides for you.
Local-first · Works offline, works for you.
- Why I Built This
- What It Can Do
- Workflow
- Animation Support
- Font Management
- Local Ollama Support
- Usage Notes
- Opening Unsigned Apps
- Feedback & Requests
- Reference
- Contributors
- License
Making AI-powered HTML presentations possible.
Every time I needed to prepare a talk, report, pitch, or defense, most of the time went into layout tweaks.
There are many AI PPT tools, but most output fixed-format files. Fine-tuning styles or adding custom animation demos is still painful.
So I built my own HTML-based PPT generator, originally as a personal tool (and it turns out it also works well for resume templates).
Output is pure HTML slides: instant browser preview, no extra software, easy to tweak styles, add motion, embed code, and export to PDF / PNG / editable PPTX.
- 💬 One-prompt generation — Enter topic + requirements, AI plans outline + palette + layout, then generates a complete deck
- 📄 Document-based creation — Upload txt, md, csv, or docx files to prepare topic, page count, and description automatically, then keep using the source document during generation
- 📥 Import PPTX for editing — Convert local PPTX files into in-app HTML pages, then continue previewing, adjusting positions, and chat-based editing
- 🖼️ Image-based style and outline generation — Upload a screenshot or design mockup, then automatically extract a distinctive visual style and generate an outline
- 🔒 Local-first — Runs on your machine, no signup, no upload anxiety
- 🔤 Font management — 14 curated Google Fonts built-in (including CJK), upload local fonts, pick title and body fonts separately or let AI auto-match
- 🎨 30+ built-in style skills — Minimal White, Cyber Neon, Bauhaus, Japanese Minimal, Xiaohongshu White, and more, plus custom styles
- ✏️ Chat-based editing — Tell it “change title color” or “add a data chart” on a specific page, without rebuilding everything
- 🖱️ Visual editing — Every visible element can be dragged and resized, and every element can be picked and modified with AI
- 📸 Image and video insertion — Upload images and videos directly in edit mode, from the asset library or local files
- 📋 Element duplication — One-click copy of any element (text, images, videos, etc.), auto-offset and independently editable
- ↩️ Undo and redo — Undo and redo edits freely before committing, then save as a version history entry
- 🗑️ Element deletion — Delete any element with a click or keyboard shortcut
- 🖥️ Presentation mode — Enter fullscreen presentation with one click, navigate slides with arrow keys or clicks
- 🎬 Animation support — Page transitions plus basic Anime.js v4-powered whole-element motion
- 🧮 Math formula rendering — Display common LaTeX formulas for classes, teaching decks, and technical talks
- 📄 Multi-format export — Export to PDF, batch PNG, or editable PPTX with embedded fonts (still being improved)
- 🏷️ Session management — Session list distinguishes AI-created decks from imported PPTX decks, and deck names can be renamed
- 🧩 More reliable slide layout — Generation follows a fixed 16:9 canvas and content-height budget to reduce overflow
- 🔄 Version history rollback — Every edit is automatically saved, roll back to any previous version with one click, never worry about mistakes
- 📦 One-click packaging — Bundle your HTML deck into a single executable file, double-click to open and present anywhere, no installation needed (just a browser)
💡 Input your intent or upload a document → AI plans outline → generates visual direction → renders page by page → preview & chat edits → export PDF / PNG / PPTX
On the home page, you can use “Upload Document” to let the app extract the topic, page count, and detailed description first. It works well for product plans, requirement docs, meeting materials, and CSV-based notes that you want to turn into an editable deck.
Document parsing also checks whether the outline and page count match. For example, if the outline clearly contains five pages, the creation form will try to use five pages too. Your documents stay in the local workspace; the app only prepares them as AI-readable text.
If you already have an existing PPTX file, click “Import PPTX” on the home page to convert it into editable in-app pages. This import flow is independent from AI generation and does not affect document parsing or the normal generation workflow.
If you do not have a document, you can still enter a topic and description directly, and the app will generate the deck creatively from your request.
Oh My PPT generates HTML slides and includes a local Anime.js v4 runtime. During generation or chat-based editing, the AI can add basic presentation motion to whole slide elements such as titles, metric cards, images, chart containers, and step blocks.
Whole-element animation is preferred over splitting text into many tiny moving fragments. It keeps slides readable, stable, and better suited for reports, pitches, classes, and live demos.
The most reliable whole-element animations today are:
- Fade in: lightweight transitions when modules appear.
- Subtle slide-in motion: short movement from top, bottom, left, or right for titles, cards, and lists.
- Scale emphasis: gently enlarge key numbers or conclusion cards, then settle back.
- Simple stagger: reveal cards or bullets one after another.
Animations are meant to guide attention and show hierarchy. Avoid complex timelines, high-frequency flashing, infinite loops, or large shaking motion. Slides should remain readable even if animation is disabled.
14 curated Google Fonts are built-in (including CJK families). You can also upload local .woff2 fonts with custom names, categories (sans-serif, serif, display, handwriting, monospace), roles (title / body), and script types (Latin / CJK).
When creating a deck, pick title and body fonts separately — or let the AI auto-match the best pair based on your topic and style. Fonts used in your slides are automatically embedded when exporting to PPTX, so they display correctly on any machine.
This project supports local Ollama through the OpenAI-compatible API.
Fill the Settings page like this:
provider:openaibase_url:http://127.0.0.1:11434/v1model: your local model tag (for exampleqwen2.5-coder:14b), recommended 14B+ (or a strong cloud model)api_key: any non-empty string (for exampleollama)
Notes:
- Ollama does not validate API keys by default, but this app enforces a non-empty check, so
api_keycannot be blank. - 14B+ local models (or strong cloud models) are recommended for stable generation quality.
- The app does not use thinking / reasoning mode by default. When a custom OpenAI-compatible
base_urlis configured, the app asks the provider to disable thinking so document parsing, tool calls, and retry generation avoidreasoning_contentcompatibility issues.
Images and assets are copied into your local session directory. They are not uploaded to a cloud service by this app.
Supports keyboard navigation (Left/Right), presentation mode, fullscreen presentation mode, and ESC to exit presentation mode.
Oh My PPT currently supports three export modes:
- PDF: best for sharing, archiving, and printing.
- PNG: batch-export every slide as an image for docs, Notion, articles, or social posts.
- PPTX: export an editable file for PowerPoint / Keynote. Text, images, colors, formulas, and basic layout are preserved where possible, while text overlap, mixed-language layout, complex HTML, animation, and some charts are still being improved.
Export uses a static slide state where possible, so entrance animations are less likely to affect PDF or image output.
Release builds may not be code-signed yet, so macOS or Windows can show security warnings on first launch. This usually does not mean the app is broken; it is the operating system blocking unsigned or unnotarized software by default.
If macOS says the app cannot be opened, is damaged, or cannot verify the developer, use either option below.
Option 1: Right-click Open
- Open Finder or the Applications folder.
- Find
OhMyPPT.app. - Right-click the app and choose Open.
- Click Open again in the confirmation dialog.
This usually only needs to be done once.
Option 2: Clear the quarantine attribute
If right-click Open still does not work, run:
xattr -cr /Applications/OhMyPPT.appThen open the app again.
If you placed the app somewhere else, replace the path with the actual location, for example:
xattr -cr ~/Downloads/OhMyPPT.appUnsigned installers may trigger Windows SmartScreen, such as “Windows protected your PC”. This is expected for unsigned apps.
Steps:
- Click More info.
- Confirm the app name is
OhMyPPT. - Click Run anyway.
If your browser or antivirus blocks the file, first confirm the installer came from this project’s GitHub Releases page, then choose to keep or allow the file.
Download builds only from the official Releases page when possible.
If you have new requirements, feature ideas, or bug reports, feel free to open an Issue in this repository.
I will keep following up and improving the experience.Thanks to all contributors!
This project is licensed under the MIT License © 2026 arcsin1 <zy19931129@gmail.com>.