宣讲 / 汇报 PPT 工作流
v1 · 2026-09-20 定稿 | 从「一句话方向」到「能讲、能点开、能核」的一套 PPT | 本页挂在「能力工具箱」下
一句话:五步走,每步都有"过关标准";改版不重新发明轮子 —— 版式库、体检脚本、发布脚本都在本页底部,可直接下载复用。
一、五步流程
① 骨架 —— 先把观点排成结构
不是"目录",是
观点打头的章节:每一幕第一个字就是论点(如五幕剧:序幕 → 政策新词 → 实践新词 → 技术新词 → 我们在押的新词 → 尾声)。
产出:逻辑骨架_v0.md|过关:每节都能一句话说出"这节在论证什么"
② 演讲稿 —— 母本先行,PPT 跟稿
母本就是他的原稿,一字不动、另存版本;我做的每一处并入/改写都列出清单给他核。
体例:政策要点
写完整句(不砍成几个词)+ 出处四要素(发文单位/文号/条款/原文金句/时间线)+ 把原稿的
设问保留下来。
产出:母本 v1/v2/v3 + 飞书云文档(可编辑,带版本历史)|过关:随机抽 30 个关键片段都能在母本里找到出处
③ 生成 —— 版式库 + 内容脚本
版式库(ppt_kit2.py)管"长什么样",
内容脚本(build_v2.py)管"说什么" —— 两者解耦,改文案不动版式、换版式不动文案。
产出:xxx.pptx|过关:页数对、页码=真实页序、内容无占位符残留
④ 体检 —— 先机器筛,再人眼抽查
机器六项(溢出/压字/重叠/超小字号/页码/图片拉伸)跑
ppt_layout_audit.py;
人眼渲染 2×3 拼图,重点看封面、内容页、表格页、扉页四类。
产出:体检报告(问题页 / 分类计数)|过关:除封面外 0 问题(LO 光栅化造成的"图片拉伸"假阳性可人工判定)
⑤ 发布 —— 三件套 + 可点链接
pptx(可编辑)+ pdf(手机翻页)+ 全览图(一眼看全);文件名用 ASCII,复制后
chmod 664,逐个
curl 校验
状态码和字节数。
产出:三个公网链接|过关:字节数与本地一致;他点得开
二、十二条铁律(这轮修出来的,直接当 checklist)
| # | 坑 | 做法 |
| 1 | 样板精致、全量"减配" | 全量脚本里 grep 一遍样板用过的资产名(底纹/竖条/金句底/概念图)+ 版式函数(数据卡/观点页)——凡没出现的,就是被漏掉的装饰层 |
| 2 | 页面"平" | 内容页统一铺宣纸淡墨底(bg-content.jpg);表格页另加左侧水墨竖边;卡片一律加投影 |
| 3 | 水墨竖边压住表格第一列 | 竖边右缘 ≤ 0.54in(表格左界 0.62in 留 0.08 冗余);写进 assert,别靠记忆 |
| 4 | 重要观点被埋进卡片 | 观点独占页:整页淡墨底 + 朱红竖线 + 40pt 大字 + 小标(一页一句,给每节最狠的那句) |
| 5 | 数字塞在表格里没人记住 | 数据大字报:40pt 朱红数字 + 标签 + 一句说明(最多 4 个数字一页) |
| 6 | 原稿的设问丢了 | 标题下加「问」条:head(ask="…"),把原稿的设问原样放回页面第一句(各节 Q1·来源/Q2·内涵/Q3·工具) |
| 7 | 新词没有统一突出 | 维护一张 新词表(KW),正文里自动朱红加粗;只收"新词"不收章节名(章节名满篇都是,全染等于没染) |
| 8 | 数字是灰的看不清 | 文本里的数字自动单独上色(numcolor)—— 卡片说明、文号日期、表下口径提示、金句条全部适用 |
| 9 | 政策要点只剩几个词 | 政策来源页(p_policy):正文就是政策原文完整句,一字不删,关键词变色,文号跟句尾 |
| 10 | 表格丢列(如上海文件表少了中央一号文件列) | 表格页逐列回原文核;年份类表格默认结构:年份 | 当年中央一号文件 | 上海对应文件 | 阶段特征 |
| 11 | 插页后页码错位 | 构建末尾做一次页码重排后处理:凡右下角(left≥12.0in、top≥6.9in)的文本框,改文本为真实序号(封面跳过)。页码≠物理页序的稿子不能打印 |
| 12 | 引用的文号/文件名是编出来的 | 「文号+书名号文件名」成对出现时,先核存在性、再核归属;查不到就写"查无此文",不许推定(本轮回溯:虚构的《上海市乡村数智化建设实施方案》) |
三、版式池(16 种,按内容挑,别一路用同一种)
| 版式 | 用在什么内容上 |
| 封面 / 目录 | 全屏水墨 + 左遮罩;目录竖排编号 |
| 章节扉页 | 全屏水墨 + 编号 + 54pt 大字 + 一句导语 |
政策来源页 p_policy | 原文完整句 + 关键词变色(2–3 条一页) |
文件卡页 p_files | N 条文件卡(编号/标题/文号时间) |
大表格 p_table | ≤9 行 12.5pt;≤12 行 11.8pt;超了拆页或改数据卡 |
双栏对比 p_compare | 左右同宽、中线对齐 |
三卡 / 四卡 / 五卡 p_cards | 并列要点;卡片高度按内容行数自适应 |
左文右图 p_imgright | 一条条说 + 一张示意("太空的页"靠它救) |
数据大字报 p_data | 2–4 个关键数字(40pt 朱红) |
观点独占页 p_claim | 全篇最狠的 8 句观点,一页一句 |
汇总页 p_summary | 收尾倒数第二页:总目标 → 六条路径×新词 → 落脚点 |
大图占位 p_placeholder | 等他插图的页:虚线画框 + 图名 +"该页要表达什么" |
上图下注 p_bigimg | 实景照 + 标题 + 一句金句 |
整页图 p_fullimg | 信息图/示意图占满页 |
产品三卡 p_prodcards | 截图 + 名称 + 说明 |
收尾 p_end | 全屏图 + 深遮罩 + 大字金句 |
四、脚本(可直接下载复用)
ppt_kit2.py · 版式库
build_v2.py · 内容脚本示例
ppt_layout_audit.py · 六项体检
publish.sh · 一键发布
# ① 生成
/usr/bin/python3.12 /home/ubuntu/speech_assets/ppt_build/build_v2.py
# ② 体检(非 0 退出码就别发布)
/usr/bin/python3.12 scripts/ppt_layout_audit.py 片子.pptx --json /tmp/audit.json
# ③ 发布:pptx → pdf + 全览图 + 公网字节校验
bash scripts/publish.sh /home/ubuntu/speech_assets/片子.pptx 2.9
两条硬约定:① 一律 /usr/bin/python3.12(系统默认 3.11,混用会出 f-string 之类的怪问题);② 发布文件名一律 ASCII(中文名 URL 在部分客户端会断),权限 664(600 会 403)。
五、产物地图(这套 PPT 的文件都在哪)
六、常见事故与处置
| 症状 | 处置 |
| 同一句话在页面上出现两次 | 八成是 rich() 里的 for…else 结构:for-else 在循环正常结束时也会执行——检查改过的分支,渲染必看(体检脚本查不出"文字重复") |
| 关键词加粗后压字/溢出 | 加粗让行变宽 → 多出一行。p_cards(..., size=11.5) 缩字号(per_line 按 11.6/size 换算),再不行删一句 |
| 体检报一堆「图片拉伸」 | 覆盖在整页图片上的自动图形会被 LibreOffice 光栅化 → 假阳性。先渲图肉眼确认没变形,再判定噪声;小 rect 拼虚线框要改成 dash_style 单形状(能消掉上千条) |
| 改了模板不生效 | Flask 缓存模板/构建脚本写的是旧输出名 —— 改完 grep OUT= 确认输出路径,再 systemctl restart work-xxx |
| 链接点开 404 / 打不开 | ① 写完整绝对地址(相对路径在飞书点不动);② 目录链接要指到 index.html(nginx 已加 301 兜底,但显式写最稳);③ 文件权限 664 |