Pptx Author
使用 python-pptx 无头构建 PowerPoint 演示文稿。可与 excel-author 配合,用于模型驱动的演示文稿,其中每个数字都可追溯到一个工作簿单元格。适用于融资提案演示文稿、投委会备忘录、财报说明。
技能元数据
| 源码 | 可选 — 通过 hermes skills install official/finance/pptx-author 安装 |
| 路径 | optional-skills/finance/pptx-author |
| 版本 | 1.0.0 |
| 作者 | Anthropic (adapted by Nous Research) |
| 许可证 | Apache-2.0 |
| 平台 | linux, macos, windows |
| 标签 | powerpoint, pptx, python-pptx, presentation, finance |
| 相关技能 | excel-author, powerpoint |
参考:完整的 SKILL.md
以下是 Hermes 在触发此技能时加载的完整技能定义。这是智能体在技能激活时看到的指令。
pptx-author
使用 python-pptx 在磁盘上生成一个 .pptx 文件。当你需要将演示文稿作为文件产物交付,而非驱动一个实时 PowerPoint 会话时使用。
改编自 anthropics/financial-services 中 Anthropic 的 pptx-author 和 pitch-deck 技能。原版中的 MCP / Office-JS 分支已被移除——本技能假定使用无头 Python 环境。
关于更广泛、已发布的 PowerPoint 创作技能(幻灯片、演讲者备注、嵌入、媒体),请参阅内置的 powerpoint 技能。本技能是为模型驱动的演示文稿(融资提案演示文稿、投委会备忘录、财报说明)优化的更轻量级模式,其中每个数字都必须可追溯到一个源工作簿。
输出约定
- 写入
./out/<name>.pptx。如果./out/不存在,则创建它。 - 在你的最终消息中返回相对路径。
设置
pip install "python-pptx>=0.6"
核心规范
一张幻灯片一个观点
标题陈述核心要点;正文支撑它。标题为“Q3 营收”的幻灯片是弱的;“Q3 营收同比增长加速至 14%”是强的。
每个数字都可追溯到模型
如果幻灯片上的某个数字来自 ./out/model.xlsx,请标注工作表和单元格作为来源。
营收: $1,250M (来源: model.xlsx, Inputs!C3)
切勿凭记忆或从摘要中抄录数字——打开工作簿,读取命名范围,并在可能时以编程方式将演示文稿的值与其绑定。
使用已挂载的公司模板
如果存在 ./templates/firm-template.pptx,请加载它,以便演示文稿继承品牌颜色、字体和母版布局。
from pptx import Presentation
from pathlib import Path
template = Path("./templates/firm-template.pptx")
prs = Presentation(str(template)) if template.exists() else Presentation()
图表:来自模型的 PNG 优于原生 pptx 图表
当保真度至关重要(模型的图表样式必须与演示文稿完全匹配)时,从源工作簿将图表渲染为 PNG 并嵌入图片。原生 pptx.chart 图表很脆弱,且通常不符合公司规范。
from pptx.util import Inches
slide.shapes.add_picture("./out/charts/football_field.png",
Inches(1), Inches(2),
width=Inches(8))
无外部发送
此技能写入文件。它从不发送邮件、上传或发布。编排层负责处理交付。
骨架
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pathlib import Path
template = Path("./templates/firm-template.pptx")
prs = Presentation(str(template)) if template.exists() else Presentation()
# 封面幻灯片
slide = prs.slides.add_slide(prs.slide_layouts[0])
slide.shapes.title.text = "Project Aurora — 战略选择"
slide.placeholders[1].text = "初步讨论材料"
# 估值摘要幻灯片(仅标题布局)
slide = prs.slides.add_slide(prs.slide_layouts[5])
slide.shapes.title.text = "各方法论下的估值区间为每股 $38–$52"
# 添加一个绑定到模型输出的表格
rows, cols = 5, 4
tbl_shape = slide.shapes.add_table(rows, cols,
Inches(0.5), Inches(1.5),
Inches(9), Inches(3))
tbl = tbl_shape.table
headers = ["方法论", "低 ($)", "中 ($)", "高 ($)"]
for c, h in enumerate(headers):
tbl.cell(0, c).text = h
# 在实际演示文稿中,使用 openpyxl 从模型工作簿读取这些数据
data = [
("可比公司分析", "35", "41", "48"),
("可比并购交易", "39", "45", "52"),
("现金流折现 (基准)", "36", "43", "51"),
("杠杆收购 (10% IRR)", "33", "38", "44"),
]
for r, row in enumerate(data, start=1):
for c, val in enumerate(row):
tbl.cell(r, c).text = val
# 嵌入从模型渲染的图表
slide = prs.slides.add_slide(prs.slide_layouts[5])
slide.shapes.title.text = "估值区间图 — 当前价格 $42"
slide.shapes.add_picture("./out/charts/football_field.png",
Inches(1), Inches(1.8), width=Inches(8))
Path("./out").mkdir(exist_ok=True)
prs.save("./out/pitch-aurora.pptx")
将演示文稿数字绑定到源工作簿
从你的 Excel 模型中读取命名范围或特定单元格,以便演示文稿数字永不漂移。
from openpyxl import load_workbook
wb = load_workbook("./out/model.xlsx", data_only=True)
def nr(name):
"""将命名范围解析为其当前计算值。"""
rng = wb.defined_names[name]
sheet, coord = next(rng.destinations)
return wb[sheet][coord].value
revenue_fy24 = nr("RevenueFY24")
implied_mid = nr("ImpliedSharePriceBase")
然后使用这些值构建演示文稿内容:
slide.shapes.title.text = f"隐含股价为 ${implied_mid:.2f} (基准情况)"
记得在读取前重新计算工作簿——openpyxl 只能看到已计算的值(如果某物已计算过该工作表)。首先运行 excel-author 技能中的重计算助手,或通过真实的 Excel 会话打开/保存。
融资提案演示文稿的幻灯片类型清单
典型的银行融资提案演示文稿遵循以下结构。并非强制规定,但可作为起始骨架的有用参考:
- 封面 / 标题
- 免责声明
- 目录
- 情况概述
- 公司概况(目标公司)
- 市场 / 行业背景
- 估值摘要(估值区间图)— 关键幻灯片
- 可比公司分析详情
- 可比并购交易详情
- 现金流折现摘要
- 示范性杠杆收购 / 赞助商案例
- 流程考量
- 附录
何时不使用此技能
- 用户在拥有可用 Office MCP 的实时 PowerPoint 会话中——应驱动他们的实时文档。
- 非金融幻灯片(季度全体会议、营销演示文稿)——使用更广泛的
powerpoint技能。 - 包含大量动画、过渡或演讲者备注的演示文稿——使用更广泛的
powerpoint技能。
署名
规范改编自 Anthropic 的 Claude for Financial Services 插件套件,采用 Apache-2.0 许可。原始版本:https://github.com/anthropics/financial-services/tree/main/plugins/agent-plugins/pitch-agent/skills/pptx-author