Model or dataset
sligter/LandPPT avatar
sligter/LandPPT

LandPPT generates slides, and gates editable PowerPoint export behind a commercial key

An LLM-based presentation generation platform that automatically converts document content into professional PPT slide decks. Supports multiple AI models and offers a rich selection of templates and styles for creating high-quality presentations.

3,650 stars490 forksPythonNOASSERTION

At a glance

What is it?
sligter/LandPPT is a Python platform that turns a topic or an uploaded document into HTML slides, a narration script and a set of exports. The capability table is the most useful part of its documentation because it separates what runs with a single model key from what needs a commercial licence, and it does so in a table rather than a footnote.
Who is it for?
LandPPT suits someone who wants a full deck from a document quickly and is willing to work inside an HTML slide model rather than a native one. It does not suit anyone who needs an editable PowerPoint file without buying a licence.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • sligter/LandPPT3,650 ★ · +59
Star history
Repository2026-09-102026-11-14
sligter/LandPPT3.6k3.7k

59 Stars in the last 65 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Editable PowerPoint export needs a paid key

The capability table has one row in bold and it is the one that decides whether the project suits you. Basic generation, meaning an outline and HTML slides, needs nothing more than one model provider key. Exporting a standard editable PowerPoint file needs a commercial licence key, and the table marks that requirement explicitly. The row immediately below it is the consolation: a PowerPoint file that is essentially a picture of each slide needs no licence at all, at high fidelity, but the elements within a page usually cannot be edited again. So there are two output qualities and one of them costs money, and anyone planning a workflow where someone will later fix a typo in slide twelve needs to know which one they are getting.

The image service is switched off by default

The picture side of the generator has three sources and none of them is enabled out of the box. One is a local gallery you supply. One is a web gallery service, with two named providers. The third is generation, and the configuration names five different providers for it, which suggests the author expects people to have one of those already rather than to sign up for a new one. The service is gated behind a single boolean that defaults to off, and the capability table repeats that the flag has to be set before any of it works. That default is the right one, because image generation is the line item that turns a predictable bill into an unpredictable one, and the documentation also notes that size, format and quality are handled automatically once it is on.

Models are routed by role, not chosen globally

The provider section lists four named commercial providers and then says the system is also compatible with any endpoint speaking the same protocol, naming three Chinese providers as examples, plus local models. The interesting design is above that list: models are routed by role, and the roles are named. There is one for the outline, one for generating slides, one for editing, one for templates and one for the narration script. The example configuration file confirms it with a separate provider and model pair for each of seven roles, including creative, image prompt and polish. The stated reason is cost control, and it is the right reason: the slide generation role is called thousands of times per deck while the outline role is called once.

Five install paths and four compose files

Getting started offers five routes and they are ordered by how much they ask of you. The first is a package manager tool that syncs from the lockfile, which is the recommended local path. The second is a plain virtual environment and an editable install, for people who do not want that tool. The third is a single container, with six volume mounts spelled out and the logs command included. The fourth is compose, which the documentation recommends for production because it brings up six services. The fifth is a development compose file that mounts source and reloads. Four compose files sit at the repository root rather than one, and the difference between them is the renderer: a separate file exists for running the document renderer on its own, which you need for a source or single-container install.

bash
uv run python -m landppt.cli migrate
# 已运行的 Compose 部署:
# docker compose exec landppt python -m landppt.cli migrate

One migration cannot be skipped by creating tables

Startup migration is on by default, with three environment variables governing it: whether to run it, whether to fail fast, and two lock timeouts that prevent one node blocking another indefinitely. You are told to turn it off when several nodes share one database and run a single migration job instead. Then there is a specific warning about the release that introduced template packages, which requires a named migration, and a sentence that is the most useful line in the section: creating the tables alone cannot update the fields of tables that already exist. So an operator who upgrades by restoring a backup or by letting the app run once without noticing will get a half-migrated database, and the compose file's lock settings are the mechanism meant to stop that from happening on a rolling deploy.

The default administrator password is documented twice

The security note is four bullets long and each one is a default you have to change. Change the secret key and the administrator password, because the documented defaults are a known username and a known password. Note that the production orchestration disables administrator auto-creation by default, so you have to enable it deliberately for a first deployment and then turn it off again, which is an unusual default and a good one. Configure a strong random API key, of which there are two variables, one for a user and one for a list. And do not commit real keys. The development compose file then re-introduces the known default credentials for local convenience, which is the only reason the note exists.

Beta in the manifest, tags behind it, licence unreadable

Three small inconsistencies are worth knowing about. The manifest classifies the project as beta, the readme states a current version one patch above the newest tag, and the recorded last push is a few days before today's date, so the source is moving. The licence is written into the manifest as a permissive licence while the repository's own metadata field cannot classify it, which is what happens when a file exists but its header is not a standard identifier. And the root carries more infrastructure than a typical application would: four compose files, three shell scripts for entrypoint, health checking and permissions, a deployment directory, a Helm chart directory, a skills directory and a template examples directory. In other words the operational surface is part of the product, which is the honest shape of something meant to be deployed by more than one person.

Editorial conclusion

LandPPT suits someone who wants a full deck from a document quickly and is willing to work inside an HTML slide model rather than a native one. It does not suit anyone who needs an editable PowerPoint file without buying a licence. Before deploying, read the capability table rather than the feature list, set the secret and API keys the security note demands, and decide whether you want the single-process default with SQLite or the multi-service compose setup.

Frequently asked questions

Can I make PPT for free?

The generation path needs only one model provider key, and the platform is open source. What costs money is a specific export: producing a standard editable PowerPoint file requires a commercial licence key, while a picture-style PowerPoint export needs none.

Which AI can make a PPTx?

The project does not name a single model for this. It names four provider families and any endpoint speaking the same protocol, and it routes models by role, with separate ones for the outline, for slide generation, for editing, for templates and for the narration script, and the stated reason is cost control.

What is a PPT used for?

The project takes that as given. What it documents is the pipeline it automates, which is topic or document, then outline, then HTML slides, then a narration script, then export, with the narration step producing page-by-page speech audio and a video that can carry subtitles.

What is the 5 5 5 rule in presentations?

The repository does not discuss presentation advice of any kind. It is a generation pipeline: input, planning into an editable outline, parallel slide generation, editing through a sidebar conversation, and delivery as an export or a public share link.

Official sources

  1. Issues
  2. Project website
  3. README
  4. Releases
  5. sligter/LandPPT on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/sligter-landppt.svg)](https://hysenlabs.com/projects/sligter-landppt)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/sligter-landppt.svg)](https://hysenlabs.com/projects/sligter-landppt)

Was this useful?