Creates self-contained PPT template SKILLS (not presentations) from user-provided PowerPoint templates. Use ONLY when a user wants to create a reusable skill from their template. For creating actual presentations, use the pptx skill instead.
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "ppt-template-creator" 技能: 1. 下载 https://raw.githubusercontent.com/anthropics/financial-services/main/plugins/vertical-plugins/financial-analysis/skills/ppt-template-creator/SKILL.md 2. 保存为 ~/.claude/skills/ppt-template-creator/SKILL.md 3. 装好后重载技能,告诉我可以用了
This skill creates SKILLS, not presentations. Use this when a user wants to turn their PowerPoint template into a reusable skill that can generate presentations later. If the user just wants to create a presentation, use the pptx skill instead.
The generated skill includes:
assets/template.pptx - the template fileSKILL.md - complete instructions (no reference to this meta skill needed)For general skill-building best practices, refer to the skill-creator skill. This skill focuses on PPT-specific patterns.
skill-creator skill to set up the skill structureassets/template.pptxskill-creator skill to package into a .skill fileCRITICAL: Extract precise placeholder positions - this determines content area boundaries.
from pptx import Presentation
prs = Presentation(template_path)
print(f"Dimensions: {prs.slide_width/914400:.2f}\" x {prs.slide_height/914400:.2f}\"")
print(f"Layouts: {len(prs.slide_layouts)}")
for idx, layout in enumerate(prs.slide_layouts):
print(f"\n[{idx}] {layout.name}:")
for ph in layout.placeholders:
try:
ph_idx = ph.placeholder_format.idx
ph_type = ph.placeholder_format.type
# IMPORTANT: Extract exact positions in inches
left = ph.left / 914400
top = ph.top / 914400
width = ph.width / 914400
height = ph.height / 914400
print(f" idx={ph_idx}, type={ph_type}")
print(f" x={left:.2f}\", y={top:.2f}\", w={width:.2f}\", h={height:.2f}\"")
except:
pass
Key measurements to document:
CRITICAL: The content area does NOT always start immediately after the subtitle placeholder. Many templates have a visual border, line, or reserved space between the subtitle and content area.
Best approach: Look at Layout 2 or similar "content" layouts that have an OBJECT placeholder - this placeholder's y position indicates where content should actually start.
# Find the OBJECT placeholder to determine true content start
for idx, layout in enumerate(prs.slide_layouts):
for ph in layout.placeholders:
try:
if ph.placeholder_format.type == 7: # OBJECT type
top = ph.top / 914400
print(f"Layout [{idx}] {layout.name}: OBJECT starts at y={top:.2f}\"")
# This y value is where your content should start!
except:
pass
Example: A template might have:
Use the OBJECT placeholder's y position as your content start, not the subtitle's end position.
The generated skill should have this structure:
[company]-ppt-template/
├── SKILL.md
└── assets/
└── template.pptx
The generated SKILL.md must be self-contained with all instructions embedded. Use this template, filling in the bracketed values from your analysis:
---
name: [company]-ppt-template
```
…
快速筛选CIM、teaser等来件并生成一页筛选备忘录
结合远期曲线、波动率和历史数据评估外汇套息交易机会
分析投后公司月报/季报,生成偏差分析与董事会材料
用于搭建并购交易增厚摊薄模型,评估EPS影响、协同效应与交易结构敏感性
快速搭建PE交易IRR/MOIC敏感性测算表
帮你发现目标公司、核查历史关系并起草创始人外联邮件。