Skip to main content

PPTLint

PPT 做完以后,别急着发。 你电脑上看不出来的问题,往往会在领导、客户或会议室的电脑上暴露。

产品首页 · 案例实验室 · 真实 Proof Loop · English

PPTLint:PowerPoint 交付前质量检查

CI Pages PyPI License

30 秒看懂 12 个案例 真实前后对比
产品首页 案例实验室 83 → 100 Proof Loop

它解决的不是“好不好看”,而是“能不能放心发”

  • 会上出丑:字体替换后标题换行,最后一行被截掉,两个文本框压在一起。
  • 换电脑变样:特殊字体、外部 Excel、音视频或动画离开原电脑后失效。
  • 别人无法接手:整页其实是一张图,对方想改一个数字也选不中。
  • 内部内容被带出去:讲者备注、隐藏页、批注、作者信息或本地链接仍留在文件里。
  • 文件本身不稳:包内对象缺失、重复媒体过多,打开时弹出修复或等待很久。

PPTLint 默认在本机只读检查 .pptx,生成离线 HTML 与 JSON 报告。它不上传文件、不调用模型、不收集遥测数据,也不修改源文件。只有你逐项授权清理时,它才会写入一份新的副本。

一分钟开始

把这句话发给 Codex、Claude Code 或其他 Coding Agent:

请安装 PPTLint,检查这份 PowerPoint 是否适合发给客户。
按“必须处理、需要确认、建议查看”告诉我先改哪几页,
再生成完整修复任务。不要覆盖原文件,修改后重新检查。

或者直接运行:

uvx pptlint check output.pptx --scenario present --lang zh-CN

uvx 是什么?没安装怎么办?

uvx 不是协议,也不是 PPTLint 自带的命令。它是 Astral uv 提供的 Python 工具运行器:第一次运行时联网下载 PPTLint,并放在临时、隔离的环境中执行,避免污染你现有的 Python 环境。没有安装 uv 的电脑也不会有 uvx

你可以先运行 uvx --version 检查。没有这个命令时,任选一种方式:

方式 A:安装 uv 后使用 uvx(推荐,后续无需单独管理 PPTLint 环境)

# macOS(已安装 Homebrew)
brew install uv

Windows、Linux 或没有 Homebrew 的 macOS,请按 uv 官方安装说明 安装。完成后重新打开终端,再运行上面的 uvx pptlint ...

方式 B:不安装 uv,使用已有的 Python 3.10+

macOS / Linux:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pptlint
pptlint check output.pptx --scenario present --lang zh-CN

Windows PowerShell:

py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pptlint
pptlint check output.pptx --scenario present --lang zh-CN

采用方式 B 后,本文后续命令中的 uvx pptlint 直接替换为 pptlintuvx --refresh pptlint app 则替换为 pptlint app

不想看命令,可以启动只在本机运行的拖放页面:

uvx --refresh pptlint app

它会在随机的 127.0.0.1 端口打开中文页面。检查后,任务会按风险和页面整理,每项问题同时给出 PowerPoint 桌面版人工步骤;WPS 的菜单名称和入口位置可能不同,应按同一对象和目标操作。真实旧稿的视觉修改目前坚持人工优先:在原生、保真的对象级编辑链路完成前,不再把整份 PPT 导入后重新导出来冒充“一键局部优化”,避免母版、透明背景、组合对象、链接和未选页被破坏。

文件只进入本机临时目录,关闭后删除;页面不会请求外部字体、统计或云端模型。你仍可复制完整任务交给助手分析,但视觉修改不会自动重导出源文件;PPTLint 只自动生成不改变页面布局的安全清理副本。

修改后的文件复检时,规则通过只是辅助证据。页面会要求先在 PowerPoint/WPS 中确认修改页没有黑底、缺字、丢链接、错位或异常换行;没有这一步,不生成 Verified 凭证。

从发现问题到复检通过

PPTLint 已有的完整流程是:

  1. 检查:告诉你现在能不能交付,以及问题在哪一页。
  2. 生成修复任务:把全部问题分给 PPTLint、PowerPoint、人工或 Agent。
  3. 授权清理副本:只清理你明确勾选的作者信息、批注或讲者备注。
  4. 修改复杂问题:版式、隐藏页、外部链接和整页图片仍由人或 Agent 判断。
  5. 重新检查:对比哪些已处理、哪些仍存在、哪些是修改后新出现的。
  6. 验证交付:只有全部修复任务通过验证,才生成 PPTLint Verified 凭证。

PPTLint 不会把“发现问题”伪装成“已经修好”,也不会为了得到高分擅自改动内容。

真实证据:83 → 100,但不是“零问题”

公开 Proof Loop 使用同一份 9 页可编辑 PPT,按当前版本重新检查:

指标 结果
检查分数 83 → 100
已处理的高置信问题 103 项
仍需人工确认的低置信提醒 21 项
修改后新增的低置信提示 3 项
修改后新增的高置信问题 0 项

因此,修改后虽然是 100 分,结论仍是建议确认,报告中仍有 24 项低置信提醒。100 分只是当前规则下没有高置信扣分项,不是审美满分,也不是绝对零风险。

案例实验室还持续验证 33 份来自 4 个公开项目族的 PPTX,共 383 页;当前固定样本全部运行成功,修复任务覆盖率为 100%。这些是兼容性样本,不是审美排名,也不代表 PPTLint 能自动修复全部问题。

常用命令

检查并打开报告:

uvx pptlint start output.pptx --scenario present --lang zh-CN

生成完整修复计划:

uvx pptlint plan pptlint-report.json --format json --output repair-plan.json
uvx pptlint plan pptlint-report.json --adapter generic-agent --lang zh-CN --output repair-brief.md

明确授权清理一份独立副本:

uvx pptlint fix input.pptx \
  --output input.delivery.pptx \
  --apply clear-personal-metadata \
  --apply remove-comments \
  --apply remove-speaker-notes

比较修改前后:

uvx pptlint proof before.pptx after.pptx \
  --scenario present --lang zh-CN --output comparison

安全分享报告(隐藏文件名、页面标题、预览和对象级证据):

uvx pptlint check output.pptx --lang zh-CN \
  --report-mode shareable --output pptlint-safe

排查安装与渲染环境:

uvx pptlint doctor

结果怎么理解

结论 该做什么
可以交付 没发现高置信交付问题,仍应做最终人工预览
建议确认 打开报告点名的页面,确认低置信或需要业务判断的内容
暂勿交付 先处理阻断问题,另存副本并复检

检查场景默认为会议室投屏。屏幕阅读或文档型 PPT 可改为 --scenario screen--scenario document

安全边界

  • 只支持 .pptx,不声称支持旧 .ppt 格式。
  • 默认只读;自动清理必须逐项授权,且永不覆盖源文件。
  • 不自动删除隐藏页或外部链接,不自动重排版式,不重建整页图片。
  • 不判断内容事实、审美好坏或业务结论。
  • 完整报告可能包含页面预览、文字和文档属性,应与原 PPT 同级保护。

GitHub Action

- uses: kdnsna/pptlint@v1
  with:
    path: output.pptx
    scenario: present
    lang: zh-CN
    policy: pptlint-policy.yml
    artifact-name: pptlint-report

Action 会上传 HTML、JSON 和修复计划。固定生产环境也可以锁定完整版本标签,例如 kdnsna/pptlint@v1.3.2

参与项目

旧的 decklint 命令仍作为兼容别名存在,但不建议新项目继续使用;新用法统一采用 pptlint

MIT License

Download files

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

Source Distribution

pptlint-1.3.2.tar.gz (3.9 MB view details)

Uploaded Source

Built Distribution

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

pptlint-1.3.2-py3-none-any.whl (101.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pptlint-1.3.2.tar.gz
Algorithm Hash digest
SHA256 708c67ded1372121c6b7fb0c3716a0e32751cc2e42b46150fce19fa3083ecbd8
MD5 3e74d3f5545f747b2d5ce5b4b2af3738
BLAKE2b-256 ac7c208ebf4397ab2231b831ce3e018baf80209facfc11bc490e0db2a4ad7a8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pptlint-1.3.2.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-1.3.2-py3-none-any.whl.

File metadata

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

File hashes

Hashes for pptlint-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e5195d468f98efe6fd5864e09620d5a4570ca8d7f4777e6ab8c0cf6ef4c5a8e5
MD5 11609ed5f385ce4bf743ac2625fc0b9b
BLAKE2b-256 9f94338ef1ae4e459c35f1a13bfbd5af941bdabb4f164677e3ffbf88ac34db56

See more details on using hashes here.

Provenance

The following attestation bundles were made for pptlint-1.3.2-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.

Release history Release notifications | RSS feed

This release

1.3.2 This release

2 files

1.3.1

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.1

2 files

0.7.1

2 files

0.3.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page