powerpoint-automation
npx skills add https://github.com/aktsmm/agent-skills --skill powerpoint-automation
Agent 安装分布
Skill 文档
PowerPoint Automation
AI-powered PPTX generation using Orchestrator-Workers pattern.
When to Use
- PowerPoint, PPTX, create presentation, slides
- Convert web articles/blog posts to presentations
- Translate English PPTX to Japanese
- Create presentations using custom templates
Quick Start
From Web Article:
Create a 15-slide presentation from: https://zenn.dev/example/article
From Existing PPTX:
Translate this presentation to Japanese: input/presentation.pptx
Workflow
TRIAGE â PLAN â PREPARE_TEMPLATE â EXTRACT â TRANSLATE â BUILD â REVIEW â DONE
| Phase | Script/Agent | Description |
|---|---|---|
| EXTRACT | extract_images.py |
Content â content.json |
| BUILD | create_from_template.py |
Generate PPTX |
| REVIEW | PPTX Reviewer | Quality check |
Key Scripts
â references/SCRIPTS.md for complete reference
| Script | Purpose |
|---|---|
create_from_template.py |
Generate PPTX from content.json (main) |
reconstruct_analyzer.py |
Convert PPTX â content.json |
extract_images.py |
Extract images from PPTX/web |
validate_content.py |
Validate content.json schema |
validate_pptx.py |
Detect text overflow |
content.json (IR)
All agents communicate via this intermediate format:
{
"slides": [
{ "type": "title", "title": "Title", "subtitle": "Sub" },
{ "type": "content", "title": "Topic", "items": ["Point 1"] }
]
}
â references/schemas/content.schema.json
Templates
| Template | Purpose | Layouts |
|---|---|---|
assets/template.pptx |
ããã©ã«ã (Japanese, 16:9) | 4 layouts |
template ã¬ã¤ã¢ã¦ã詳細
| Index | Name | Category | ç¨é |
|---|---|---|---|
| 0 | ã¿ã¤ãã« ã¹ã©ã¤ã | title | ãã¬ã¼ã³åé |
| 1 | ã¿ã¤ãã«ã¨ã³ã³ãã³ã | content | æ¨æºã³ã³ãã³ã |
| 2 | 1_ã¿ã¤ãã«ã¨ã³ã³ãã³ã | content | æ¨æºã³ã³ãã³ãï¼å¥çï¼ |
| 3 | ã»ã¯ã·ã§ã³è¦åºã | section | ã»ã¯ã·ã§ã³åºåã |
使ç¨ä¾:
python scripts/create_from_template.py assets/template.pptx content.json output.pptx --config assets/template_layouts.json
ãã³ãã¬ã¼ã管çã®ãã¹ããã©ã¯ãã£ã¹
è¤æ°ãã¶ã¤ã³ï¼ã¹ã©ã¤ããã¹ã¿ã¼ï¼ã®æ´ç
ãã³ãã¬ã¼ãPPTXã«è¤æ°ã®ã¹ã©ã¤ããã¹ã¿ã¼ãå«ã¾ãã¦ããå ´åãåºåãä¸å®å®ã«ãªããã¨ãããã¾ãã
ç¢ºèªæ¹æ³:
python scripts/create_from_template.py assets/template.pptx --list-layouts
坾妿³:
- PowerPointã§ãã³ãã¬ã¼ããéã
- [表示] â [ã¹ã©ã¤ããã¹ã¿ã¼] ã鏿
- ä¸è¦ãªã¹ã©ã¤ããã¹ã¿ã¼ãåé¤
- ä¿åå¾ã
template_layouts.jsonãåçæ
python scripts/analyze_template.py assets/template.pptx
content.json ã®é層æ§é
ç®æ¡æ¸ãã«é層æ§é ï¼ã¤ã³ãã³ãï¼ãæãããå ´å㯠items ã§ã¯ãªã bullets å½¢å¼ã使ç¨ï¼
// â ãã©ãããªè¡¨ç¤ºã«ãªã
{"type": "content", "items": ["é
ç®1", " 詳細1", "é
ç®2"]}
// â
é層æ§é ãå¹ã
{"type": "content", "bullets": [
{"text": "é
ç®1", "level": 0},
{"text": "詳細1", "level": 1},
{"text": "é
ç®2", "level": 0}
]}
Agents
â references/agents/ for definitions
| Agent | Purpose |
|---|---|
| Orchestrator | Pipeline coordination |
| Localizer | Translation (EN â JA) |
| PPTX Reviewer | Final quality check |
Design Principles
- SSOT: content.json is canonical
- SRP: Each agent/script has one purpose
- Fail Fast: Max 3 retries per phase
- Human in Loop: User confirms at PLAN phase
URL Format in Slides
Reference URLs must use “Title – URL” format for APPENDIX slides:
VPN Gateway ã®æ°æ©è½ - https://learn.microsoft.com/ja-jp/azure/vpn-gateway/whats-new
â references/content-guidelines.md for details
References
| File | Content |
|---|---|
| SCRIPTS.md | Script documentation |
| USE_CASES.md | Workflow examples |
| content-guidelines.md | URL format, bullets |
| agents/ | Agent definitions |
| schemas/ | JSON schemas |
Technical Content Addition (Azure/MS Topics)
When adding Azure/Microsoft technical content to slides, follow the same verification workflow as QA:
Workflow
[Content Request] â [Researcher] â [Reviewer] â [PPTX Update]
â â
Docs MCP æ¤ç´¢ å
容æ¤è¨¼
Required Steps
- Research Phase: Use
microsoft_docs_search/microsoft_docs_fetchto gather official information - Review Phase: Verify the accuracy of content before adding to slides
- Build Phase: Update content.json and regenerate PPTX
Forbidden
- â Adding technical content without MCP verification
- â Skipping review for “simple additions”
- â Generating PPTX while PowerPoint has the file open
File Lock Prevention
Before generating PPTX, check if the file is locked:
# Check if file is locked
$path = "path/to/file.pptx"
try { [IO.File]::OpenWrite($path).Close(); "File is writable" }
catch { "File is LOCKED - close PowerPoint first" }
Post-Processing (URL Linkification)
â ï¸
create_from_template.pydoes not processfooter_url. Post-processing required.
Items Requiring Post-Processing
| Item | Processing |
|---|---|
footer_url |
Add linked textbox at slide bottom |
| URLs in bullets | Convert to hyperlinks |
| Reference URLs | Linkify URLs in Appendix |
Save with Different Name (File Lock Workaround)
PowerPoint locks open files. Always save with a different name:
# â Fails if file is open
prs.save('file.pptx') # PermissionError
# â
Save with different name
prs.save('file_withURL.pptx')
| Processing | Suffix |
|---|---|
| URL added | _withURL |
| Final version | _final |
| Fixed version | _fixed |
Done Criteria
-
content.jsongenerated and validated - PPTX file created successfully
- No text overflow detected
- User confirmed output quality