Skip to main content

Open-source PPT/PPTX preflight checks for AI-generated PowerPoint files.

Project description

PPTLint

Check an AI-generated PowerPoint before you send or present it.

简体中文 · Live example · Before/after report

CI Pages License: MIT

AI tools can make a PowerPoint quickly. They can also leave behind missing files, clipped text, overlapping text boxes, unreadable type, flattened slides, speaker notes, comments, and personal information.

PPTLint checks the .pptx on your computer and answers three questions:

  • Ready to send — no high-confidence delivery problem was found.
  • Check before sending — open the named slides and confirm the highlighted items.
  • Fix before sending — fix the listed problem before sending the file.

PPTLint does not upload the presentation, call an AI model, or change the source file.

Ask your coding agent

Copy this into Codex, Claude Code, or another coding agent:

Install PPTLint and check whether this AI-generated PowerPoint is ready to send.
Show me the slides I must fix first and the exact PowerPoint steps for each one.

Run it yourself

Until the first PyPI release is verified, run the release wheel:

uvx --from https://github.com/kdnsna/pptlint/releases/download/v0.3.1/pptlint-0.3.1-py3-none-any.whl \
  pptlint check output.pptx --profile ai-generated

PPTLint writes two files:

  • pptlint-report.html — an offline report for people;
  • pptlint-report.json — the same result for agents and automation.

The first screen shows whether the file is ready and the three most important actions. The numerical score is secondary and is intended only for comparing the same presentation before and after changes.

See real examples

Check changes

Keep the original file, check a separate edited copy, and compare the two reports:

pptlint check before.pptx --output before
pptlint check after.pptx --output after
pptlint compare before.json after.json --output comparison

The comparison separates problems that were fixed, problems that remain, and problems introduced by the edit.

Use it in GitHub Actions

- uses: kdnsna/pptlint@v0
  with:
    path: output.pptx
    profile: ai-generated
    renderer: wireframe

The reports are uploaded even when the check fails.

What PPTLint checks

User concern Checks
Will it open correctly? PPTX package, relationships, content types, media, slide list, real rendering
Will it fail on screen? Off-slide text, substantial text overlap, explicit clipping risk, small type, low contrast, unusual page size
Can someone edit it later? Full-slide images and native text, table, chart, shape coverage
Is it safe to send? Notes, comments, hidden slides, author information, external files and links

Low-confidence hints never block delivery. PPTLint does not judge whether a presentation is beautiful, persuasive, or factually correct.

Stable interfaces

The previous decklint command remains available through v0.4. Existing v1 reports can still be compared.

Development

uv venv --python 3.13
uv pip install -e '.[dev]'
PYTHONPATH=src .venv/bin/python -m pytest
.venv/bin/ruff check src tests tools

PPTLint is local, read-only, model-free, telemetry-free, and MIT licensed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pptlint-0.3.1.tar.gz (4.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pptlint-0.3.1-py3-none-any.whl (40.4 kB view details)

Uploaded Python 3

File details

Details for the file pptlint-0.3.1.tar.gz.

File metadata

  • Download URL: pptlint-0.3.1.tar.gz
  • Upload date:
  • Size: 4.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pptlint-0.3.1.tar.gz
Algorithm Hash digest
SHA256 4d5f462dcd7a74721724a639aa604787c60299a99cc19d3acab16eb114ddf697
MD5 7a3778fbd9aebeb88f7ecb8da1df089a
BLAKE2b-256 30ff743248e8b04d011bcde3903f9a920f8bb068cc0453c9dad9600093b70773

See more details on using hashes here.

Provenance

The following attestation bundles were made for pptlint-0.3.1.tar.gz:

Publisher: publish-pypi.yml on kdnsna/pptlint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pptlint-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: pptlint-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 40.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pptlint-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 36d89c8b6b7edc9a8ac15cfb3058706ba4ecb05ac585d6626f6fb9ead3bc6c22
MD5 0a635b02435dd3b804816e135627c5df
BLAKE2b-256 6882aaace3acfa823f78777e02dac2f70562692202215d084cdfe64e8f87e5c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pptlint-0.3.1-py3-none-any.whl:

Publisher: publish-pypi.yml on kdnsna/pptlint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page