{"id":50778545,"url":"https://github.com/zouchenzhen/thesis-defense-pptx-skill","last_synced_at":"2026-06-23T08:03:06.312Z","repository":{"id":354842779,"uuid":"1225527289","full_name":"zouchenzhen/thesis-defense-pptx-skill","owner":"zouchenzhen","description":"Codex / Claude Skill for editable thesis-defense PPTX from PDF or LaTeX while preserving a PowerPoint template. 从论文 PDF / LaTeX 生成可编辑答辩 PPTX，并保留指定 PPT 模板风格。","archived":false,"fork":false,"pushed_at":"2026-05-25T11:55:20.000Z","size":3487,"stargazers_count":115,"open_issues_count":0,"forks_count":7,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-25T13:33:36.112Z","etag":null,"topics":["agent-skill","chinese","claude-skill","codex-skill","latex","office-automation","pdf","powerpoint","pptx","presentation","python-pptx","template-matching","thesis-defense"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zouchenzhen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-30T11:20:25.000Z","updated_at":"2026-05-25T11:55:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zouchenzhen/thesis-defense-pptx-skill","commit_stats":null,"previous_names":["zouchenzhen/thesis-defense-pptx-skill"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zouchenzhen/thesis-defense-pptx-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zouchenzhen%2Fthesis-defense-pptx-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zouchenzhen%2Fthesis-defense-pptx-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zouchenzhen%2Fthesis-defense-pptx-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zouchenzhen%2Fthesis-defense-pptx-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zouchenzhen","download_url":"https://codeload.github.com/zouchenzhen/thesis-defense-pptx-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zouchenzhen%2Fthesis-defense-pptx-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34680621,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-skill","chinese","claude-skill","codex-skill","latex","office-automation","pdf","powerpoint","pptx","presentation","python-pptx","template-matching","thesis-defense"],"created_at":"2026-06-12T02:00:25.395Z","updated_at":"2026-06-23T08:03:06.295Z","avatar_url":"https://github.com/zouchenzhen.png","language":"Python","funding_links":[],"categories":["Review \u0026 Publish","🇨🇳 中文社区 Skills (Chinese Community)"],"sub_categories":["Submission, Formatting \u0026 Conversion","架构演进：代码优先 (Code-First)"],"readme":"# Thesis Defense PPTX Skill\n\n一个用于生成本科/研究生毕业论文答辩 PPT 的 Codex/Agent Skill。它面向需要严格复用本地 PowerPoint 模板的场景，能够从本地论文 PDF/LaTeX 项目和指定 `.pptx` 模板出发，生成可编辑的正式答辩 PPTX，并执行逐页导出、版式检查和文字溢出检查。\n\n[English README](README.en.md)\n\n![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)\n![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)\n![Python](https://img.shields.io/badge/python-3.10%2B-3776AB.svg)\n![Skill](https://img.shields.io/badge/skill-Codex%20%2F%20Agent-orange.svg)\n![Output](https://img.shields.io/badge/output-PPTX-D24726.svg)\n[![Available on CodeGuilds](https://img.shields.io/badge/Available_on-CodeGuilds-6366f1)](https://codeguilds.dev/packages/thesis-defense-pptx-skill)\n\n---\n\n## 一分钟看效果\n\n仓库自带最小可跑示例 [`examples/minimal_markdown/`](examples/minimal_markdown/)，在仓库根目录跑：\n\n```bash\npython examples/minimal_markdown/run_example.py\n```\n\n脚本会现场生成模板、可编辑 PPTX、dump 结构、scan 旧词，并输出 PPT 总览图。\n下面四张参考图来自一份**真实的郑州大学开题/答辩 PowerPoint 模板**，但画面不是\n模板原页截图，而是 `thesis.md` 示例内容被生成进模板后的 `final.pptx` 渲染结果：\n\n![生成示例 slides 1-4 总览](examples/minimal_markdown/expected/generated_overview_01.png)\n\n![生成示例 slides 5-8 总览](examples/minimal_markdown/expected/generated_overview_02.png)\n\n![封面细节](examples/minimal_markdown/expected/detail_slide_01.png)\n\n![方法页细节](examples/minimal_markdown/expected/detail_slide_06.png)\n\n\u003e 这些图通过 `--template` 指定本地真实模板生成：\n\u003e\n\u003e ```bash\n\u003e python examples/minimal_markdown/run_example.py \\\n\u003e     --template \u003c你的本地模板.pptx\u003e \\\n\u003e     --detail-slides \"1,6\"\n\u003e ```\n\u003e\n\u003e `--template` 模式会调用 `build_deck.py --real-template`：不清空真实模板里的\n\u003e 复杂 shape，而是在模板页面上覆盖 `thesis.md` 生成的示例内容，输出真正可编辑\n\u003e 的 `final.pptx`。README 图片来自 PowerPoint COM 对这个生成后 deck 的真实\n\u003e 渲染；每页右上角的 `Generated from thesis.md` 标记用于避免和模板原页截图混淆。\n\n\u003e 该示例不依赖 Microsoft PowerPoint，因此 macOS / Linux / Windows 都能跑通。\n\u003e 真实交付仍建议在 Windows + PowerPoint 下走 COM 导出和文字溢出检查。\n\n## 可下载模板\n\n仓库现在提供一个之前使用过的郑州大学中期答辩空白模板：\n\n- [zhengzhou-university-midterm-blank-template.pptx](examples/templates/zhengzhou-university-midterm-blank-template.pptx)\n\n这个文件适合作为 `--template` 输入测试模板保真流程。学校模板、校徽、字体和其他素材的使用授权仍需使用者自行确认；正式提交前建议优先使用所在学院或学校发布的最新版模板。\n\n## 功能\n\n- 从本地论文 PDF/LaTeX 项目中提取论文内容和候选图表。\n- 尽量保留已有 PowerPoint 模板的封面、字体、字号、配色、导航、卡片样式和页面比例。\n- 输出真实可编辑的 `.pptx` 文件，而不是图片型幻灯片。\n- 使用 PowerPoint COM 导出逐页 PNG，便于视觉检查。\n- 生成整套 PPT 的总览图，快速发现版式问题。\n- 使用真实 PowerPoint 渲染结果检查文字框溢出风险。\n- 检查旧模板文字、占位词、TODO 等残留内容。\n\n## 为什么需要这个 Skill\n\n很多 AI PPT 工具擅长从文档重新设计一套新风格 PPT。但毕业论文答辩经常有相反的需求：学校或学院已经给了 `.pptx` 模板，封面、校徽、郑大红配色、顶部导航、卡片式正文、字体大小都不希望被改掉，只需要把论文内容转成适合答辩展示的表达。\n\n本 Skill 针对的正是这种“严格套用现成模板”的工作流：\n\n- 把用户提供的 `.pptx` 模板作为视觉基准。\n- 优先复制模板中的原生页面，再替换内容。\n- 尽量保持封面、章节页、导航条、卡片样式、字体字号、颜色和页面比例。\n- 将论文段落转写为正式、简洁、适合答辩讲述的页面内容。\n- 使用真实 PowerPoint 导出结果做逐页检查，而不是只检查文件能否生成。\n\n## 与 `ppt-master` 的对比\n\n[`ppt-master`](https://github.com/hugohe3/ppt-master) 是一个优秀的开源项目，主打从 PDF、Word、Markdown、网页等资料生成原生可编辑 PPTX。它更适合从资料出发重新生成一套 AI 设计的可编辑 PPT。\n\n本 Skill 的目标更窄：生成毕业论文答辩 PPT，并尽量严格沿用用户已有的 PowerPoint 模板。\n\n| 维度 | `ppt-master` | `thesis-defense-pptx` |\n|---|---|---|\n| 核心目标 | 从资料生成原生可编辑 PPTX | 在保留现有模板的基础上生成答辩 PPTX |\n| 适用场景 | 新建 AI 设计风格 PPT、文档转 PPT、可编辑 SVG/DrawingML 流程 | 本科/研究生答辩、学院模板、实验室模板、品牌学术汇报 |\n| 模板处理 | 可以参考或创建模板，但整体偏生成式设计 | 直接复制用户原始 PPTX 模板页并在其上替换内容 |\n| 对既有模板的还原度 | 取决于模板导入和生成效果 | 作为最高优先级处理 |\n| 输出形态 | 可编辑 PPTX | 可编辑 PPTX |\n| 质量检查 | SVG/project 检查和导出流程 | PowerPoint 导出 PNG、总览图检查、文字溢出检查、旧模板词扫描 |\n\n如果你想从资料生成一套全新的可编辑 PPT，`ppt-master` 更合适；如果你已经有学校模板，并且要求“封面、配色、导航、卡片风格都别乱改”，本 Skill 更合适。\n\n## 工作原理\n\n本 Skill 采用保守的本地生成流程：\n\n1. 读取论文 PDF、LaTeX 项目和可选旧版答辩 PPT。\n2. 提取研究背景、问题定义、方法设计、实验设置、实验结果、结论和候选图表。\n3. 分析用户提供的 `.pptx` 模板，包括封面、目录、章节页、导航、字体、字号、颜色、卡片和间距。\n4. 在可用时使用 PowerPoint COM 复制模板原生页面，生成稳定的 PPT 骨架。\n5. 用可编辑的 PowerPoint 文本框、图片、表格和图形替换内容。\n6. 导出逐页 PNG，生成整套 PPT 的总览图。\n7. 检查文字溢出、旧模板词残留、图片缺失、导航错误和明显视觉问题。\n8. 根据检查结果继续修复，直到达到交付标准。\n\n## 版权与 `ppt-master` 关系说明\n\n本仓库不是 `ppt-master` 的 fork，不内置 `ppt-master`，也没有复制 `ppt-master` 的源代码。当前实现是围绕 PowerPoint COM、`python-pptx`、Pillow 和 PDF/文本提取工具编写的一组独立脚本。\n\nREADME 中引用 `ppt-master` 是为了说明相关开源项目和适用场景差异。若未来版本直接复用 `ppt-master` 的代码，应按照其 MIT License 明确保留对应源码文件和版权/许可声明。\n\n使用者需要自行确认其论文文本、实验图、学校模板、校徽、字体和第三方素材具备合法使用权限。仓库中的历史空白模板仅作为示例资源提供，不代表学校或学院官方发布版本。\n\n## 仓库结构\n\n```text\nskills/\n└── thesis-defense-pptx/\n    ├── SKILL.md\n    ├── agents/\n    │   └── openai.yaml\n    ├── references/\n    │   └── pptx_quality_gate.md\n    └── scripts/\n        ├── clone_template_deck.ps1\n        ├── dump_pptx_content.py\n        ├── export_pptx_png.ps1\n        ├── extract_thesis_context.py\n        ├── inspect_pptx_overflow.ps1\n        ├── make_contact_sheet.py\n        ├── pptx_template_tools.py\n        └── scan_pptx_text.py\n```\n\n## 环境要求\n\n- 推荐在 Windows 上使用。\n- 如果需要完整质量检查，需要安装 Microsoft PowerPoint。\n- Python 3.10 或更高版本。\n- Python 依赖：\n  - `python-pptx`\n  - `Pillow`\n  - `PyMuPDF` 或 `pypdf`\n\n安装依赖：\n\n```powershell\npython -m pip install python-pptx Pillow PyMuPDF pypdf\n```\n\n## 当前输入支持范围\n\n当前内置提取脚本主要支持 PDF 文本提取、LaTeX `.tex` 章节提取和候选图表扫描。Word `.docx` 提取尚未实现。Markdown 和纯文本文件可以由 Agent 在需要时手动读取参考，但 `extract_thesis_context.py` 目前还不会把它们解析成结构化论文上下文。\n\n## 本地安装\n\n将 Skill 复制到 Codex skills 目录：\n\n```powershell\nCopy-Item -Recurse -Force `\n  .\\skills\\thesis-defense-pptx `\n  \"$env:USERPROFILE\\.codex\\skills\\thesis-defense-pptx\"\n```\n\n然后新开一个 Codex 会话，直接提出生成答辩 PPT 的需求，或明确说明：\n\n```text\n使用 thesis-defense-pptx skill。\n```\n\n## 推荐流程\n\n1. 从论文 PDF/LaTeX 项目中提取研究背景、方法、实验和结论。\n2. 分析用户提供的 PowerPoint 模板。\n3. 使用 PowerPoint COM 复制模板原生页面，生成 PPT 骨架。\n4. 将论文内容转写为答辩口径，填入可编辑文本框、表格和图表。\n5. 导出每页 PNG。\n6. 生成总览图并进行视觉检查。\n7. 检查文字溢出和旧模板词残留。\n8. 根据检查结果反复修复，直到通过质量门槛。\n\n## 常用命令\n\n提取论文上下文：\n\n```powershell\npython .\\skills\\thesis-defense-pptx\\scripts\\extract_thesis_context.py `\n  --input \"D:\\path\\to\\thesis-project\" `\n  --output \"D:\\path\\to\\thesis_context.md\"\n```\n\n导出整套 PPT 的形状/文本/表格/图片清单（推荐在做任何内容替换前先跑一次，把精确字符串复制到替换字典里）：\n\n```powershell\npython .\\skills\\thesis-defense-pptx\\scripts\\dump_pptx_content.py `\n  --pptx \"D:\\path\\to\\skeleton.pptx\" `\n  --output \"D:\\path\\to\\dump.md\"\n```\n\n可以加 `--slide 4,8,9` 只 dump 指定页，便于迭代调试。\n\n导出 PPTX 为逐页 PNG：\n\n```powershell\npowershell -NoProfile -ExecutionPolicy Bypass `\n  -File .\\skills\\thesis-defense-pptx\\scripts\\export_pptx_png.ps1 `\n  -Pptx \"D:\\path\\to\\deck.pptx\" `\n  -OutDir \"D:\\path\\to\\visual_check\" `\n  -Width 1600 -Height 900\n```\n\n检查文字溢出：\n\n```powershell\npowershell -NoProfile -ExecutionPolicy Bypass `\n  -File .\\skills\\thesis-defense-pptx\\scripts\\inspect_pptx_overflow.ps1 `\n  -Pptx \"D:\\path\\to\\deck.pptx\" `\n  -Tolerance 40\n```\n\n生成总览图：\n\n```powershell\npython .\\skills\\thesis-defense-pptx\\scripts\\make_contact_sheet.py `\n  --input \"D:\\path\\to\\visual_check\" `\n  --output \"D:\\path\\to\\contact_sheet.png\"\n```\n\n## 说明\n\n除 `examples/templates/` 中提供的历史空白模板示例外，本 Skill 不内置固定 PPT 模板。它的目标是尽量复用用户提供的模板，而不是强行套用通用设计风格。\n\n## 许可证\n\n本项目采用 [Apache License 2.0](LICENSE) 开源许可。\n\nApache-2.0 允许使用、修改、分发、私有使用和商业使用，但需要遵守许可证条款。\n\n项目的商业化方向不是限制核心 skill 的使用，而是围绕服务、定制模板适配、托管流程、企业支持、模板包和自愿赞助来实现可持续发展。详见 [COMMERCIAL.md](COMMERCIAL.md)。\n\n## 社区\n\n[LINUX DO — 中文开发者社区](https://linux.do/)\n\n## Star History\n\n如果有用的话，给个 ⭐ 吧！\n\n[![Star History Chart](https://api.star-history.com/svg?repos=zouchenzhen/thesis-defense-pptx-skill\u0026type=Date)](https://star-history.com/#zouchenzhen/thesis-defense-pptx-skill\u0026Date)\n\n本项目认可并感谢 LINUX DO 社区在中文开发者开源交流、项目分享和技术讨论中的价值。除非社区另有明确说明，此处仅为社区致谢和链接，不代表官方背书。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzouchenzhen%2Fthesis-defense-pptx-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzouchenzhen%2Fthesis-defense-pptx-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzouchenzhen%2Fthesis-defense-pptx-skill/lists"}