The core is a pipeline: read a topic, document or transcript, ask an LLM for an outline and slide text as JSON, and write the result into a PPTX with a handful of layouts. An agent builds that in one sitting with pptxgenjs and an API key, and the file opens in PowerPoint, Keynote or Google Slides. What you give up is range: MagicSlides ships hundreds of templates and design presets, and a home build looks plain unless you feed it your own colors and fonts. If you mostly want quick decks from notes, the open-source Presenton already does the same job and can be self-hosted.
Before you buildMagicSlides lets you start free, though the allowance isn't published. A few decks a month may not justify paying or building.
Build me a deck generator to replace MagicSlides. Requirements: - Node.js 22 + TypeScript. A CLI: `deck "topic"`, `deck notes.md`, `deck paper.pdf`, `deck <web-url>`, `deck <youtube-url>`, each writing ./out/<title>.pptx. A small Hono page on http://localhost:4890 offers the same inputs and a download link. - Input readers: plain text and Markdown, PDF (`pdf-parse`), web pages (`jsdom` + `@mozilla/readability`) and YouTube captions (`youtube-transcript`). Cut long input to a size the model accepts and say so. - Outline: an OpenAI-compatible endpoint from .env (LLM_BASE_URL, LLM_API_KEY, LLM_MODEL) must return strict JSON, validated with `zod`: deck title, then slides, each with a layout (title, bullets, two-column, image-left, quote, big-number, closing), a title of at most 8 words, at most 5 bullets of at most 14 words, speaker notes and an image search query. Retry once on invalid JSON. - Flags: --slides 10, --tone formal|casual, --lang en, --template brand.json (colors, fonts, logo path). - Images: Unsplash or Pexels search with a key from .env, downloaded to ./cache with the credit written into the speaker notes. With no key, use plain colored layouts. - Rendering: `pptxgenjs`, 16:9, one theme file with colors, fonts and positions, at least six layouts. Text must fit its box: shrink down to 18 pt, otherwise split the slide in two. - Storage: ./cache holds image downloads and LLM answers keyed by a hash of the request, so re-running a deck costs nothing. - Single user. No accounts, no telemetry, local-first. Outbound calls: your LLM, the image API, and the URL or video you asked for. - Out of scope: a Google Slides add-on, an in-browser slide editor, charts, cloning slides from images. - README: keys, the .pptx opens in PowerPoint, Keynote or by import into Google Slides, and a note that stock photos need attribution.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own MagicSlides.
Add slide-level editing to the deck generator in this folder. Requirements: - Save each generated deck's JSON in ./data/decks/<id>.json along with the .pptx. - A command `deck edit <id> --slide 4 "make this a two-column comparison"` that sends only that slide plus the deck title and neighbors to the LLM and replaces it with validated JSON. - Re-render the whole file from the JSON, keeping cached images. - Print a text diff of the slide before and after, and keep the previous .pptx as <id>.prev.pptx. - Update the README.
Add chart slides to the deck generator in this folder. Requirements: - Accept a CSV or XLSX file next to the topic; read it with `papaparse` or `exceljs`. - The LLM may choose a `chart` layout with type (bar, line, pie), the columns to use and a one-line takeaway title; validate column names against the file and reject anything invented. - Draw native, editable PowerPoint charts with `pptxgenjs`, not pictures. - Limit a chart to 12 categories and 4 series; summarize the rest as "Other". - Update the README with an example CSV.
Add PDF export to the deck generator in this folder. Requirements: - After writing the .pptx, convert it with LibreOffice (`soffice --headless --convert-to pdf`) if it is installed; otherwise skip with one warning line. - Check the PDF page count equals the slide count and print any slide whose text overflowed. - A `--pdf-only` flag that deletes the .pptx afterwards. - Update the README with the LibreOffice install step and the fonts the theme needs.
Students, teachers and consultants pay a few dollars to go from a document or video to an editable deck in Google Slides without choosing layouts. The saving is the layout work, and the Essential plan covers ten decks a month for eight dollars.
Estimate · Runs on your machine. LLM calls for a ten-slide deck cost a few cents; photo APIs have free tiers. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Essential | $8 | $6.67 | 10 presentations a month, up to 10 slides each, no watermark, export to PDF, PowerPoint and Google Slides, 10 slide clones a month. |
| Pro | $16 | $12.42 | 50 presentations a month, up to 15 slides each, 50 slide clones a month, same exports as Essential. |
| Premium | $29 | $23.25 | 50 presentations a month with 50+ slides, 200+ premium templates, 150+ design presets, premium AI models, export to PPTX, PDF, PNG, JPG and HTML, password-protected sharing with view analytics, WhatsApp support. |
The pricing page lists no free plan, but the homepage invites you to start free and the refund policy mentions a Free plan. The allowance isn't published.
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $8 a month on the Essential plan per seat, $96 a year (checked 2026-10-19).
The Google Slides add-on, Chrome extension, Figma plugin and ChatGPT, Zapier and Telegram integrations; 200+ premium templates and 150+ design presets (Premium); Cloning a slide from an image into an editable one; The iOS and Android apps; Chatting with a finished deck to edit it. If any of those matter to you, keep paying.
Yes: Presenton (open source), Slidev (open source), Marp CLI (open source).