PPT 电影感动画页
把一页静态的 PPT 做成放映时"有戏"的一页:每点一下进入一幕,幕内几拍自动连播,画面是实拍质感的场景,光在讲事,字只留关键词。成品是可编辑的 .pptx,持续的运动用循环动图,转场、出字、画线和一次性的大动作用原生动画。
依赖:Windows + 微软 PowerPoint(COM)、Python(numpy、opencv-python-headless、python-pptx、Pillow,抓网页界面时要 playwright)、ffmpeg、一个能"以图改图"的生图工具(实测用 Codex CLI 的内置生图)。
这份 skill 怎么用
它由三样东西组成:
- 审美与协作原则(
references/taste.md)。开工前通读。每一条都对应过一次整体返工,是默认的审美底线;用户当下说的话永远优先。 - 做过的手法和流程(
style-library.md、pipeline.md、pitfalls.md、scripts/)。这是资产:省力,避坑,知道什么效果好、什么被否过。 - 你自己的想法。手法库是起点和参照,不是模板。新题目请先从内容出发自己想(
references/ideation.md),参考一切可能的电影、设计、摄影和展陈,库里没有的画面才最值得做。
| 什么时候 | 读哪份 |
|---|---|
| 开工前,以及拿不准某个画面好不好时 | references/taste.md |
| 要出创意方向、写提案时 | references/ideation.md |
| 选字体、排字,尤其是中文题材(画、历史、文化) | references/typography.md |
| 想看做过什么、哪些被否过 | references/style-library.md |
| 开始生图、合成、组装时 | references/pipeline.md |
| 动手写脚本前,以及出了怪问题时 | references/pitfalls.md |
| 想先看一个完整跑通的例子 | examples/lighthouse/ |
审美底线(最短的版本)
- 内容第一。 动画不能脱离这一页要讲的事;这一页只讲两件事,就围着这两件事做,再好的镜头不相干也删。字只留关键词。
- 要真。 生成图的"AI 感"是最常见的返工原因。要新闻实拍的质感,再加一点电影的光影和气氛;至少一半画面是真实场景,抽象的数据空间和科技风不要。
- 要有戏。 一幕里要有几种不同的动作,有明确的光;一张图加一个循环动作会显得平。但不要震动、闪白、冲击模糊,那是廉价的冲击。
- 要点是主体。 承载要点的屏幕、设备、曲线、细节要大、要在主位。
- 字要有题材的气质。 暗底金线、宽字距宋体、细体数字年份那一套一眼像 AI 模板。中文题材去下载书法、仿宋、篆书字体,用竖排、乌丝栏、印章,先出样张让对方挑字,见
typography.md。 - 不加没要的东西。 没要求的字、进度条、装饰组件不要加;字要清楚、好看、不乱。
- 不重复。 同一份稿里不要两次用同一种画面,页与页不复用素材。
- PPT 负责让人看懂和相信,不负责举证。对照可以是示意的,但交付时说清哪些是示意。
怎么合作
返工几乎都来自理解偏差,不来自技术。所以顺序是固定的,除非用户明说"直接改":
- 问清。 先纠错、复述需求。问题编号,每个附上你的建议,让对方能一句话回答。
- 把手头的材料用一遍。 原 PPT、界面、照片、数据,先看完、点完。最有用的画面常常藏在材料里。
- 发散,提方向。 三到四个类型不同的方向,各写画面、参考、代价,给出你的推荐。写法见
ideation.md。 - 讲清每一拍。 选定方向后,把每一幕依次发生什么、点几下、多长时间讲出来,等确认。
- 先出样张。 新的画风、新的题材先出几张图看效果,通过了再全量做。
- 制作,导出,抽帧核对。 不要凭脚本推断"应该对了"。
- 如实汇报。 见最后一节。
每一版的素材和成品都按版本另存,方便换回旧版或几个方向并排比较,做法见 pipeline.md 第 7 节。
硬约束:动图从进入这一页就开始走
PowerPoint 里的动图不等点击,也不等它"出现"。整套分工由此而来:
| 内容 | 用什么做 |
|---|---|
| 持续的氛围(雨、雪、雾、灯的脉动、车灯流动、光束扫动) | 无缝循环的短动图,从哪一帧开始都一样 |
| 进页第一幕的过程 | 动图可以,还可以只放一遍停在最后一帧 |
| 点击之后才发生、有先后顺序的过程 | 每个状态一张透明图层,原生淡入或擦除按顺序切。不要做成一整条动图 |
| 状态之间的推进(干到湿、亮到灭、夜到晨) | 几个循环动图之间用原生叠化或雾转场 |
| 一次性的大动作(崩落、尘云、文件滑入、镜头推拉) | 透明图层 + 原生路径、缩放、淡出 |
| 画线、逐行出字、界面逐步变化 | 同一位置叠几张只差一点的图,用擦除依次露出 |
| 跨页的镜头推进(从全景推到细节) | 平滑切换(Morph),两页放同名形状,见 pitfalls.md |
| 所有文字 | 原生文本框,方便之后改措辞;中文竖排用方向 4(列从右往左) |
| 画面里的手迹、题字、印章 | 扫描件转墨迹透明度、按列或按字切成图层,擦除"写"出来;印章用 typo.seal 画 |
流程一览
- 取出目标页。 用 python-pptx 抽成只有这一页的小文件当底稿,不要用 COM 打开几百 MB 的总稿。
- 生图。 一次任务出一整套同构图(基准图、它的编辑变体、分割蒙版、留白的屏幕或桌面)。写实的写法在
prompts/real_photo_head.txt,例子在prompts/real_photo_examples.md。 - 合成。
scripts/render_tools.py提供循环动图、透明图层、画线、光束与光照揭示、屏幕合成、抽帧这些通用函数;scripts/scene_tools.py是讲画、讲历史常用的(无缝的雪、光从一点铺开、灰到彩色晕开、墨晕式转场、放大镜、老照片、局部上色、去水印);scripts/typo.py画印章、手迹图层和乌丝栏;每一幕具体怎么合成按内容自己写。有真实界面的 HTML 时用scripts/capture_page.py把它跑起来逐帧截。 - 组装。
scripts/ppt_tools.ps1是 COM 工具函数,scripts/build_page_example.ps1是一页两幕的最小例子(配scripts/demo_assets.py不靠生图工具也能跑通);examples/lighthouse/是从生图到成品的完整例子。整份多页稿用scripts/pptkit.py(同一套写法的 Python 版,带中文竖排、配乐、讲稿备注),流程见pipeline.md第 8、9 节。 - 核对。 导出放映视频,抽帧拼联系表,逐幕看顺序、时机、遮挡和字(
scripts/export_slides.py check)。scripts/cap_show.py可以在真实放映时后台截屏。
找真实素材用 scripts/fetch_images.py(图片搜索、Wikimedia Commons),比字体用 scripts/specimen.py。
交付时要说的
- 成品文件在哪、几页、多大,预览视频在哪。
- 每页点几下,每一下发生什么。
- 上一轮的意见逐条对应到改了什么。
- 核对是怎么做的:哪些是从导出视频的抽帧看到的,哪些没有在真实放映里点过。
- 哪些内容是示意、是你拟的词,哪些取自用户的材料。
- 需要用户定的事,编号列出,附你的建议。
- 换电脑放映需要装哪些字体,附上字体文件。
- 整份稿另交讲稿(写进备注栏,再出一份 docx,标明谁讲哪几页、每页几秒、哪里点击)。


