Skip to content

kdnsna/pptlint

Repository files navigation

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

PPTLint — PowerPoint 交付前质量检查

CI Pages PyPI License local

🏠

产品首页

30 秒看懂 PPTLint 在交付前帮你挡住什么,以及它为什么“只读不改”。

立即访问 →
🔬

案例实验室

12 个一眼能懂的前后对比,覆盖投屏翻车、换电脑变样、隐私外发与可编辑交接。

立即访问 →
📈

真实 Proof Loop

同一份 PPT 按当前规则从 83 分到 100 分,修改前后文件、完整报告和机器可读数据全部公开。

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

同一份可编辑 PPT 修改前后对比:83 分到 100 分

同一份可编辑 PPT,交付修复前(左)与修复后(右)——按当前规则从 83 到 100。点击查看 12 个前后对比案例 →

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

一份 PPT 在自己电脑上看着正常,并不代表已经适合交付:

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

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

一分钟开始

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

请安装 PPTLint,检查这份 PowerPoint 是否适合发给客户。
按“必须修、建议看、可以忽略”告诉我先处理哪几页,
并给出在 PowerPoint 里的具体操作。不要修改原文件。

或者直接运行:

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

希望检查完成后直接打开本地报告,可以使用:

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

排查安装、Python 或真实渲染器问题时运行 uvx pptlint doctor;反馈问题时优先附上该诊断结果,不要上传原 PPT。

不想看命令:打开本地拖放版

uvx --refresh pptlint app

它会在本机随机端口打开中文页面。你可以拖入原 PPT、勾选允许清理的隐私内容、复制完整 Agent 任务,再拖入修改后副本导出 Proof Pack。页面只绑定 127.0.0.1,每次启动都有新令牌;关闭后临时文件自动删除,也不会请求外部字体、统计、模型或接口。

默认 present 代表会议室投屏。屏幕阅读或文档型 PPT 可改用:

uvx pptlint check output.pptx --scenario screen --lang zh-CN
uvx pptlint check output.pptx --scenario document --lang zh-CN

每次检查都会生成:

  • pptlint-report.html:给人看的离线报告,先说后果,再说处理方法;
  • pptlint-report.json:给 Agent、CI 和其他工具读取的稳定数据。

完整报告可能包含页面预览、文字和文档属性,应与原 PPT 同级保护。如需提交问题或发给外部协作者,先生成安全分享版:

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

安全分享版会隐藏文件名、页面标题、预览和对象级证据,但保留规则、结论和处理步骤。

先看证据,再决定要不要用

真实 Proof Loop 使用同一份 9 页可编辑 PPT。报告中的 103 项问题和提醒得到处理,修改后没有新增高置信问题。100 分只是规则检查结果,不是审美满分,也不是绝对零风险。

报告直接给出三种结论

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

同一条规则在 200 个对象上重复出现时,HTML 会合并成一个问题组;完整对象级证据仍保留在 JSON 中。PPTLint 不会用几百条重复提醒制造焦虑。

修改后生成完整对比证据

始终保留原文件,只修改独立副本:

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

它会生成修改前、修改后和对比报告,明确列出:已经处理、仍然存在、修改后新增的问题。

如果要把修复工作交给 Agent:

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 plan pptlint-report.json --adapter ultimate-ppt-master --lang zh-CN --output ultimate-brief.md
uvx pptlint plan pptlint-report.json --adapter powerpoint-copilot --lang zh-CN --output copilot-prompt.md

修复计划会覆盖报告中的全部问题,而不是只取前三项。每项都说清位置、实际后果、谁适合处理以及复检条件;未知规则一律要求人工判断,不会擅自编造修改指令。

明确授权后清理隐私副本

PPTLint 只能自动处理三类低风险内容,而且每一项都必须单独写 --apply

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

源文件不会被覆盖,已存在的输出也不会被覆盖。成功后会同时生成清理回执、修改前后报告和对比证据。隐藏页、外部链接、字号、位置、遮挡、整页图片和品牌字体都不会被自动修改。

团队交付规范

生成一份安全的 YAML 模板:

uvx pptlint policy init pptlint-policy.yml
uvx pptlint check output.pptx --policy pptlint-policy.yml --lang zh-CN

策略可以约束批准字体、品牌色、最小字号、外部链接、备注、隐藏页和图片说明。未知字段会直接报错,不会悄悄忽略。

确有业务原因需要保留例外时,在策略中记录规则、页面、原因和到期日:

exceptions:
  - ruleId: readability.small-font
    slides: [12]
    reason: 法律免责声明已经材料责任人确认
    expires: 2026-12-31

生效和过期的例外都会记录在报告中;没有理由的例外会被拒绝。

检查范围与边界

你真正关心的问题 PPTLint 检查什么
文件能否正常打开 PPTX 包结构、关系、内容类型、媒体、页面列表和真实渲染
会议室里是否看得清 越界、实质重叠、裁切风险、字号、对比度和页面比例
换电脑后是否稳定 字体、外部文件、动画、转场、音视频和备注关系
别人能否继续编辑 原生文字、表格、图表、形状,以及整页图片覆盖
是否把内部内容带出去 备注、批注、隐藏页、作者信息、本地文件和外部链接
文件是否便于交接 文件体积、重复媒体、嵌入字体和动态内容事实

PPTLint 不判断审美、论点、事实正确性或说服力;低置信提醒不会阻断交付。如果要先生成或人工修复 PPT,可以使用 Ultimate PPT Master,再由 PPTLint 独立复检。

GitHub Actions

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

即使检查没有通过,HTML 和 JSON 报告仍会上传。Action 默认生成 shareable 安全分享版;仅在受控仓库确需页面预览时设置 report-mode: full

稳定接口与开发

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

decklint 作为兼容别名继续保留;所有新用户文档和命令统一使用 pptlint


MIT · 本地 · 默认只读 · 永不改原文件 · 不上传 · 不调用模型 · 不收集遥测

About

Open-source PPT/PPTX checker for AI-generated PowerPoint files. Find delivery-breaking issues before you present or share.

Topics

Resources

License

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors