一键导入
powerpoint-builder
PowerPoint, PPTX, presentation, slides, deck, python-pptx, create presentation, build deck
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
PowerPoint, PPTX, presentation, slides, deck, python-pptx, create presentation, build deck
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
brief, summary, daily, weekly, end of day, EOD, digest, morning, recap, meeting prep, what's due, status update, review
Interactive web tasks, browser login, click, scroll, form interaction, authenticated sessions, Playwright MCP (project)
Query and summarize Claude Code terminal session history
Email, inbox, Outlook, Microsoft 365, mail, messages, fetch emails, search emails, draft, reply, email processing (project)
fact, decision, architecture, knowledge, permanent, remember forever, always know, decisions, outcomes, lessons learned
GitHub CLI, docker commands, git operations, curl, native CLI tools, gh issue, gh pr, container, repository, API calls (project)
| name | powerpoint-builder |
| description | PowerPoint, PPTX, presentation, slides, deck, python-pptx, create presentation, build deck |
| triggers | ["powerpoint","pptx","presentation","slides","deck","slide deck"] |
| requires | {"bins":[],"env":[],"pip":["python-pptx","Pillow","pyyaml"],"scripts":["build_deck.py","theme.py","layouts.py","geometry.py"]} |
| os | ["linux","darwin"] |
Build polished, human-looking PowerPoint decks with python-pptx. No PowerPoint installation required.
# Install dependency (if not present)
pip install python-pptx
# Build a deck from a plan
python build_deck.py --plan deck_plan.yaml --output presentation.pptx
# With custom template
python build_deck.py --plan deck_plan.yaml --template brand_template.pptx --output deck.pptx
| User Says | Action |
|---|---|
| "Create a presentation about X" | 1. Create deck_plan.yaml with outline, 2. Gather assets, 3. Run build_deck.py |
| "Make slides for my meeting" | Ask for key points, create plan, build deck |
| "Turn this into a PowerPoint" | Extract assertions from content, create plan, build |
| "I need a deck for [topic]" | Create assertion-based outline first, then build |
| "Add a slide about X" | Use layouts.py functions directly |
Generate .pptx files that look like a thoughtful human made them:
deck_plan.yaml)title: "Q1 Product Review"
subtitle: "January 2026"
author: "User"
slides:
- type: title
title: "Q1 Product Review"
subtitle: "Performance & Roadmap"
- type: section
title: "Performance Metrics"
- type: key_number
title: "Revenue exceeded target by 23%"
number: "$4.2M"
qualifier: "vs $3.4M target"
note: "Driven by enterprise expansion"
- type: figure
title: "Monthly revenue trend shows sustained growth"
image: "assets/figures/revenue_chart.png"
caption: "Source: Finance dashboard"
- type: bullets
title: "Three factors drove Q1 success"
bullets:
- "Enterprise deals closed 2 weeks faster"
- "Churn reduced to 2.1% (from 3.4%)"
- "New pricing increased ARPU 15%"
note: "Speaker note: Emphasize the churn improvement"
- type: comparison
title: "New approach outperformed legacy system"
left:
header: "Legacy"
points: ["Manual process", "3-day turnaround", "40% error rate"]
right:
header: "New System"
points: ["Automated", "Real-time", "2% error rate"]
verdict: "Migration complete by EOQ"
- type: figure_with_text
title: "Architecture scales horizontally"
image: "assets/figures/architecture.png"
bullets:
- "Redis caching layer"
- "Auto-scaling workers"
- "Multi-region failover"
side: "right"
assets/
├── figures/ # Charts, diagrams (PNG preferred)
│ ├── revenue_chart.png
│ └── architecture.png
├── tables/ # CSV or pre-rendered images
│ └── metrics.csv
└── icons/ # Optional, curated style only
└── logo.png
template.pptx)Using a real template is strongly preferred:
| File | Purpose |
|---|---|
deck.pptx | Final presentation |
assets_manifest.json | Slide# to assets mapping |
build_log.txt | Warnings: missing assets, overflow risks |
| Problem | Fix |
|---|---|
| Same layout every slide | Vary: figure-first, split, comparison, key-number |
| Default Office template | Use custom template or explicit theme tokens |
| Vague headers: "Introduction", "Benefits" | Assertion titles: "X improves Y by Z" |
| Essay-like bullets | Short, parallel statements |
| Decorative icons with no info value | Real figures only, or nothing |
| Overcrowded slides, tiny fonts | Split slides, move detail to speaker notes |
| Bad (Generic) | Good (Assertion) |
|---|---|
| "Performance" | "Response time improved 40% after Redis migration" |
| "Problem" | "Current system fails under 1000+ concurrent users" |
| "Solution" | "Horizontal scaling eliminates single-point bottleneck" |
| "Next Steps" | "Three actions required before March launch" |
The builder supports these layout types:
| Type | Function | Use For |
|---|---|---|
title | add_title_slide() | Opening slide |
section | add_section_divider() | Section breaks |
bullets | add_bullets_slide() | Key points (max 5 bullets) |
figure | add_figure_slide() | Full image with caption |
figure_with_text | add_figure_with_text_slide() | Image + bullets side by side |
comparison | add_comparison_slide() | Before/after, A vs B |
table | add_table_slide() | Data tables |
key_number | add_key_number_slide() | Hero metric with context |
process | add_process_slide() | Step-by-step flow |
from build_deck import DeckBuilder
# Create deck from plan
builder = DeckBuilder(template="template.pptx")
builder.load_plan("deck_plan.yaml")
builder.build()
builder.save("output/deck.pptx")
from pptx import Presentation
from layouts import (
add_title_slide,
add_bullets_slide,
add_figure_slide,
add_key_number_slide
)
from theme import PCPTheme
prs = Presentation()
theme = PCPTheme()
add_title_slide(prs, theme, "Q1 Review", "January 2026")
add_key_number_slide(
prs, theme,
title="Revenue exceeded expectations",
number="$4.2M",
qualifier="23% above target"
)
add_bullets_slide(
prs, theme,
title="Three key drivers",
bullets=[
"Enterprise deals closed faster",
"Churn reduced to 2.1%",
"ARPU increased 15%"
]
)
add_figure_slide(
prs, theme,
title="Revenue trend shows sustained growth",
image_path="assets/figures/revenue.png"
)
prs.save("deck.pptx")
# Build from plan (recommended)
python build_deck.py --plan deck_plan.yaml --output deck.pptx
# With template
python build_deck.py --plan deck_plan.yaml --template brand.pptx --output deck.pptx
# Dry run (validate only)
python build_deck.py --plan deck_plan.yaml --dry-run
# List available layouts
python build_deck.py --list-layouts
# Validate plan file
python build_deck.py --validate deck_plan.yaml
The builder automatically checks:
| Check | Action if Failed |
|---|---|
| Missing asset | Log warning, leave placeholder |
| Text overflow risk | Log warning with slide number |
| Font not available | Fall back to system font, log |
| Image distortion | Refuse to distort, fit with letterbox |
| Inconsistent title position | Log warning |
from vault_v2 import get_project_context
from build_deck import create_project_deck
# Generate deck from project context
context = get_project_context(project_id=1)
create_project_deck(
context,
output="project_review.pptx",
slide_types=["status", "metrics", "timeline", "risks"]
)
from brief import generate_brief
from build_deck import create_brief_deck
# Turn a weekly brief into slides
brief_data = generate_brief("weekly")
create_brief_deck(brief_data, output="weekly_review.pptx")
1. Define outline (deck_plan.yaml)
- Assertion titles
- Slide types
- Asset paths
2. Gather assets
- Charts as PNG
- Tables as CSV or images
- No decorative icons
3. Build deck
python build_deck.py --plan deck_plan.yaml --output deck.pptx
4. Review build_log.txt
- Fix any warnings
- Rebuild if needed
5. Final manual check
- Open in PowerPoint/Slides
- Verify alignment, readability
project/
├── deck_plan.yaml # Slide outline
├── template.pptx # Brand template (optional)
├── assets/
│ ├── figures/
│ ├── tables/
│ └── icons/
└── output/
├── deck.pptx
├── assets_manifest.json
└── build_log.txt
pip install python-pptx Pillow pyyaml
| Package | Purpose |
|---|---|
python-pptx | PowerPoint generation |
Pillow | Image handling |
pyyaml | Plan file parsing |