ppt
npx skills add https://github.com/wayfind/origin-task --skill ppt
Agent 安装分布
Skill 文档
/ppt
ä¸é®çæä¸ä¸ PPT çç¼æå¨
ð 馿¬¡ä½¿ç¨åå§åï¼å¿ 读ï¼
å¨çæ PPT ä¹åï¼å¿ é¡»å ç¡®è®¤ç¨æ·çè´¦å·åå·¥å ·å¯ç¨æ§ã
Step 1: 确认账å·è½å
å¿ é¡»ä½¿ç¨ AskUserQuestion å·¥å ·è¯¢é®ç¨æ·ï¼
é®é¢1: æ¨æ¯å¦æ ChatGPT Plus/Pro è´¦å·ï¼
- æ¯ â å¯ä½¿ç¨ deep-research è¿è¡æ·±åº¦ç ç©¶
- å¦ â ä»
ä½¿ç¨ WebSearchï¼ç ç©¶è´¨éè¾ä½ï¼
é®é¢2: æ¨æ¯å¦æ Gemini API Keyï¼Pro æä»¥ä¸ï¼ï¼
- æ¯ â å¯ä½¿ç¨ nano-banana-image çæé
å¾
- å¦ â è·³è¿é
å¾çæ
Step 2: å®è£ ä¾èµ Skill
æ ¹æ®ç¨æ·ç¡®è®¤ï¼å®è£ 对åºç skillï¼
# 妿æ ChatGPT Plusï¼å®è£
deep-research
# ç¸å¯¹è·¯å¾: ../../../openai-deep-research (åä¸ä¸ª git åº)
SKILL_BASE="/home/david/prj/origin-task"
# deep-research skill
if [ ! -d "$SKILL_BASE/openai-deep-research" ]; then
echo "deep-research skill å·²å¨ $SKILL_BASE/openai-deep-research"
fi
# nano-banana-image skill
if [ ! -d "$SKILL_BASE/nano-banana-image" ]; then
echo "nano-banana-image skill å·²å¨ $SKILL_BASE/nano-banana-image"
fi
Step 3: é 置认è¯
ChatGPT Plus ç¨æ·ï¼
æç¤º: è¯·å¨æµè§å¨ä¸ç»å½ ChatGPT (chat.openai.com)
deep-research å°ä½¿ç¨ Playwright èªå¨å访é®
Gemini API ç¨æ·ï¼
æç¤º: 请设置ç¯å¢åé GEMINI_API_KEY
export GEMINI_API_KEY="your-api-key-here"
Step 4: è®°å½ç¨æ·é ç½®
å°ç¡®è®¤ç»æä¿åå° .pptrc.yamlï¼
# .pptrc.yaml (èªå¨çæ)
capabilities:
deep_research: true # æ ChatGPT Plus
image_generation: true # æ Gemini API
auth:
chatgpt_logged_in: true
gemini_api_key_set: true
â ï¸ åå§åæ£æ¥æ¸ å
æ¯æ¬¡æ§è¡ /ppt æ¶ï¼æ£æ¥ï¼
-
æ¯å¦åå¨
.pptrc.yamlï¼- å¦ â æ§è¡åå§åæµç¨
- æ¯ â 读åå·²ä¿åçé ç½®
-
deep-research æ¯å¦å¯ç¨ï¼
- æ£æ¥:
python -c "from research.deep_research import DeepResearch"
- æ£æ¥:
-
nano-banana-image æ¯å¦å¯ç¨ï¼
- æ£æ¥: skill ç®å½æ¯å¦åå¨ + GEMINI_API_KEY æ¯å¦è®¾ç½®
妿任使£æ¥å¤±è´¥ï¼æç¤ºç¨æ·éæ°é ç½®ï¼
ð 强å¶åæåè®®ï¼P1 å¿ è¯»ï¼
æ¯ä¸ªé¶æ®µå®æåï¼å¿ é¡»è¾åºåææ¥åï¼æ£æ¥æ¯å¦æéæ¼æé®é¢ã
为ä»ä¹éè¦åæï¼
AI 容æ”å£°ç§°å®æ”ä½å®é è·³è¿æ¥éª¤ã强å¶åææºå¶ï¼
- éªè¯ artifact æä»¶æ¯å¦ççåå¨
- æ£æ¥å 容质éï¼éç©ºãææ¥æºï¼
- åç°éæ¼å¹¶ç«å³ä¿®æ£
åæè¾åºæ ¼å¼
æ¯ä¸ª Stage 宿åï¼å¿ é¡»è¾åºï¼
ââââââââââââââââââââââââââââââââââââââââââââââââââ
ð STAGE REFLECTION: [STAGE_NAME]
ââââââââââââââââââââââââââââââââââââââââââââââââââ
â
[æ£æ¥é¡¹1]: éè¿
â
[æ£æ¥é¡¹2]: éè¿
â ï¸ [æ£æ¥é¡¹3]: è¦å - [åå ]
â [æ£æ¥é¡¹4]: 失败 - [åå ]
â ï¸ Warnings:
- [è¦å1]
- [è¦å2]
ð Next: [ä¸ä¸æ¥æä½]
ââââââââââââââââââââââââââââââââââââââââââââââââââ
åé¶æ®µæ£æ¥æ¸ å
Stage 0: Init åæ
æ£æ¥é¡¹:
- [ ] .pptrc.yaml å·²å建
- [ ] deep_research é
ç½®æ£ç¡®
- [ ] image_generation é
ç½®æ£ç¡®
Stage 1: Skeleton åæ
æ£æ¥é¡¹:
- [ ] skeleton.yaml å·²å建
- [ ] research_tasks å·²å®ä¹ï¼æ°é > 0ï¼
- [ ] structure å·²å®ä¹
Stage 2: Research åæ
æ£æ¥é¡¹:
- [ ] research_results/ ç®å½å·²å建
- [ ] ææ required ä»»å¡é½æå¯¹åºç .md æä»¶
- [ ] æ¯ä¸ªç»ææä»¶å
容 > 100 å符
- [ ] æ¯ä¸ªç»ææä»¶å
嫿¥æºå¼ç¨
Stage 2.5: Images åæï¼å¦æå¯ç¨ï¼
æ£æ¥é¡¹:
- [ ] images/ ç®å½å·²å建
- [ ] å°é¢å¾å·²çæ
- [ ] ç« èå¾å·²çæï¼å¯éï¼
Stage 3: Enrich åæ
æ£æ¥é¡¹:
- [ ] slides/ ç®å½å·²å建
- [ ] ææå¹»ç¯çæä»¶å·²çæ
- [ ] @RESEARCH æ è®°å
容已填å
ï¼éå ä½ç¬¦ï¼
Stage 4: Render åæ
æ£æ¥é¡¹:
- [ ] PPTX æä»¶å·²çæ
- [ ] æä»¶å¤§å°åçï¼> 10KBï¼
åæåè¡å¨
妿æ â é误:
â 忢ï¼ä¿®å¤é®é¢ï¼éæ°æ§è¡å½åé¶æ®µ
妿æ â ï¸ è¦å:
â è¾åºè¦åï¼è¯¢é®ç¨æ·æ¯å¦ç»§ç»
妿å
¨é¨ â
éè¿:
â ç»§ç»ä¸ä¸é¶æ®µ
ð¨ å¾ççæåè®®ï¼P1ï¼
å½ image_generation: true æ¶ï¼å¨ç ç©¶å®æåçæè£ 饰å¾çã
è§¦åæ¡ä»¶
# .pptrc.yaml ä¸
capabilities:
image_generation: true # â æ¤é¡¹ä¸º true æ¶è§¦å
æ§è¡æ¶æº
Stage 2: Research 宿
â
Stage 2.5: Images çæ â 卿¤æ§è¡
â
Stage 3: Enrich
å¾ççæä»»å¡
æ ¹æ® skeleton.yaml ä¸ç image_position åæ®µï¼
| ä½ç½® | ç¨é | Aspect Ratio |
|---|---|---|
cover |
å°é¢ä¸»è§è§ | 16:9 |
section |
ç« èæ é¢èæ¯ | 16:9 |
ending |
ç»å°¾æè°¢å¾ | 16:9 |
AI æ§è¡åè®®
å½çå° image_generation: true æ¶ï¼
Step 1: æ¾å¼è¾åºå¾çä»»å¡
ââââââââââââââââââââââââââââââââââââââââ
ð¨ IMAGE GENERATION TASK
ââââââââââââââââââââââââââââââââââââââââ
Skill: nano-banana-image
Images to generate:
- cover: å°é¢ä¸»è§è§
- section-01: ç« è1èæ¯
- ending: ç»å°¾æè°¢å¾
Status: â³ Generating...
ââââââââââââââââââââââââââââââââââââââââ
Step 2: è°ç¨å¾ççæ
# ä½¿ç¨ Task å·¥å
·è°ç¨ nano-banana-image
Task(
subagent_type="general-purpose",
prompt="""
ä½¿ç¨ nano-banana-image skill çæ PPT è£
饰å¾ç:
1. å°é¢å¾:
æè¿°: [PPTæ é¢ç¸å
³çè§è§æè¿°]
è¾åº: images/cover.png
æ¯ä¾: 16:9
2. ç»å°¾å¾:
æè¿°: Thank you, professional closing
è¾åº: images/ending.png
æ¯ä¾: 16:9
è¦æ±: ä½¿ç¨ nano-banana-pro è²å½©é£æ ¼ï¼æ·±è²èæ¯ãéè²/éè²ç¹ç¼ï¼
""",
description="Generate PPT images"
)
Step 3: ä¿åå° images/ ç®å½
output/project-name/
âââ images/ # ð å¾çç®å½
â âââ cover.png
â âââ section-01.png
â âââ ending.png
âââ research_results/
âââ slides/
âââ skeleton.yaml
Step 4: å¨ slide-md ä¸å¼ç¨
---
slide:
id: "01-01"
type: cover
layout: title-only
image: images/cover.png # ð å¼ç¨å¾ç
---
# PPT æ é¢
å¾ççæå¤±è´¥å¤ç
妿å¾ççæå¤±è´¥:
â è¾åºè¦åï¼ä½ç»§ç»åç»æµç¨
â å¹»ç¯çå°æ²¡æè£
饰å¾ï¼ä½å
容ä¸åå½±å
ð Research Directive è¯æ³ï¼å¿ 读ï¼
è¿æ¯ PPT çæçæ ¸å¿æºå¶ï¼æ¾å¼å£°æç ç©¶ä»»å¡ï¼å¼ºå¶æ§è¡è·åç»æã
è¯æ³å®ä¹
1. skeleton.yaml ä¸å£°æç ç©¶ä»»å¡
# å¨ skeleton.yaml é¡¶å±æç« èå
声æ
research_tasks:
- id: "r01" # å¯ä¸æ è¯ç¬¦
query: | # ç ç©¶æç¤ºè¯ï¼è¯¦ç»æè¿°ï¼
Tesla TSLA stock performance in 2025:
- Opening and closing prices
- Year-over-year change percentage
- Major events affecting stock price
- Analyst ratings summary
skill: "deep-research" # 使ç¨ç skill
required: true # true=å¿
é¡»æ§è¡, false=å¯é
output_format: | # ææçè¾åºæ ¼å¼
## 2025å¹´è¡ä»·è¡¨ç°
- å¹´åä»·æ ¼: $XXX
- å¹´æ«ä»·æ ¼: $XXX
- 涨è·å¹
: +/-XX%
### å
³é®äºä»¶
1. [äºä»¶1]
2. [äºä»¶2]
2. slide-md 䏿 è®°å¡«å ä½ç½®
---
slide:
id: "02-02"
layout: two-column
---
# 2025å¹´è¡ä»·å顾
::: left
<!-- @RESEARCH: r01 -->
æ¤åºåå°ç±ç ç©¶ç»æ r01 å¡«å
<!-- @/RESEARCH -->
:::
::: right
<!-- @RESEARCH: r02 -->
æ¤åºåå°ç±ç ç©¶ç»æ r02 å¡«å
<!-- @/RESEARCH -->
:::
â ï¸ AI æ§è¡åè®®ï¼å¼ºå¶ï¼
å½çå° research_tasks æ <!-- @RESEARCH: --> æ è®°æ¶ï¼å¿
é¡»æ§è¡ä»¥ä¸æ¥éª¤ï¼
Step 1: æ¾å¼è¾åºç ç©¶ä»»å¡
ââââââââââââââââââââââââââââââââââââââââ
ð RESEARCH TASK [r01]
ââââââââââââââââââââââââââââââââââââââââ
Skill: deep-research
Query:
Tesla TSLA stock performance in 2025:
- Opening and closing prices
- Year-over-year change percentage
...
Expected Output Format:
## 2025å¹´è¡ä»·è¡¨ç°
- å¹´åä»·æ ¼: $XXX
...
ââââââââââââââââââââââââââââââââââââââââ
Step 2: è°ç¨ Skill æ§è¡ç ç©¶
# å¿
é¡»ä½¿ç¨ Task å·¥å
·è°ç¨ deep-research
Task(
subagent_type="general-purpose",
prompt="""
æ§è¡ç ç©¶ä»»å¡ [r01]:
ä½¿ç¨ openai-deep-research skill ç 究以ä¸å
容ï¼
{query}
è¾åºæ ¼å¼è¦æ±ï¼
{output_format}
è¦æ±ï¼
1. æ°æ®å¿
é¡»ææ¥æºå¼ç¨
2. æ°æ®æ¶ææ§ï¼æè¿6个æ
3. å
å«å
·ä½æ°åï¼ä¸è¦æ¨¡ç³è¡¨è¿°
""",
description="Research: r01"
)
Step 3: ð ä¿åç ç©¶ç»æå°æä»¶ï¼P0 强å¶ï¼
â ï¸ å ³é®æ¹å¨: ç ç©¶ç»æå¿ é¡»æä¹ åå°æä»¶ï¼æ¸²æå¨ä¼éªè¯ï¼
# ç®å½ç»æ
output/project-name/
âââ skeleton.yaml
âââ research_results/ # ð å¿
é¡»åå¨
â âââ r01.md # ç ç©¶ç»æå
容
â âââ r01.meta.json # å
æ°æ®ï¼å¯é使¨èï¼
â âââ r02.md
â âââ ...
âââ slides/
âââ *.slide.md
ä¿å research_results/{task_id}.md:
# Research Result: r01
Generated: 2026-01-12T10:30:00Z
Skill: deep-research
---
## 2025å¹´è¡ä»·è¡¨ç°
- å¹´åä»·æ ¼: $248.42
- å¹´æ«ä»·æ ¼: $445.03
- 涨è·å¹
: +79.1%
### å
³é®äºä»¶
1. Q1: FSD V12 åå¸ï¼è¡ä»·ä¸æ¶¨ 15%
2. Q3: Robotaxi åå¸ä¼ï¼è¡ä»·åæ°é«
3. Q4: 马æ¯å
æ¿æ²»åä¸å¼åæ³¢å¨
---
*æ¥æº: Yahoo Finance, Reuters*
*ç ç©¶æ¶é´: 2026-01-12*
ä¿å research_results/{task_id}.meta.json (å¯é):
{
"task_id": "r01",
"skill": "deep-research",
"query_hash": "abc123...",
"executed_at": "2026-01-12T10:30:00Z",
"duration_seconds": 45,
"source_count": 5,
"content_length": 1234
}
Step 4: å¡«å ç»æå° slide-md
ä» research_results/{task_id}.md 读åå
容填å
ï¼
<!-- @RESEARCH: r01 -->
## 2025å¹´è¡ä»·è¡¨ç°
- å¹´åä»·æ ¼: $248.42
- å¹´æ«ä»·æ ¼: $445.03
- 涨è·å¹
: +79.1%
### å
³é®äºä»¶
1. Q1: FSD V12 åå¸ï¼è¡ä»·ä¸æ¶¨ 15%
2. Q3: Robotaxi åå¸ä¼ï¼è¡ä»·åæ°é«
3. Q4: 马æ¯å
æ¿æ²»åä¸å¼åæ³¢å¨
*æ¥æº: Yahoo Finance, Reuters*
<!-- @/RESEARCH -->
ð« æ¸²æé»ææºå¶ï¼P0ï¼
render.js ä¼å¨æ¸²æåéªè¯ research_results/ ç®å½ï¼
妿 skeleton.yaml å®ä¹äº research_tasks:
ä½ research_results/ ç®å½ä¸åå¨
æ å¿
éä»»å¡ (required: true) 没æå¯¹åºç .md æä»¶
忏²æå¨æç»æ§è¡å¹¶è¾åºï¼
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â ARTIFACT VALIDATION FAILED â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
ð« RENDER BLOCKED: research_results/ ç®å½ä¸åå¨
skeleton.yaml å®ä¹äº 5 个å¿
éç ç©¶ä»»å¡ï¼
- [r01] Tesla TSLA stock performance in 2025...
- [r02] Tesla 2026 bullish catalysts...
...
è§£å³æ¹æ³ï¼
1. ä½¿ç¨ /ppt-enrich æ§è¡ç ç©¶ä»»å¡
2. ç¡®ä¿æ¯ä¸ªä»»å¡é½è°ç¨ deep-research skill
3. å°ç»æä¿å为 research_results/{task_id}.md
ç»è¿æ¹æ³ï¼ä¸æ¨èï¼ï¼
node render.js ./slides/ --skip-artifact-check
ç ç©¶ä»»å¡ç±»å
| ç±»å | éç¨åºæ¯ | ç¤ºä¾ query |
|---|---|---|
market_data |
è¡ä»·ãè´¢å¡æ°æ® | “TSLA stock price 2025” |
news_events |
æ°é»äºä»¶åæ | “Tesla major news 2025” |
case_study |
æ¡ä¾ç ç©¶ | “AI manufacturing cases China 2025” |
statistics |
ç»è®¡æ°æ® | “Global EV market share 2025” |
comparison |
对æ¯åæ | “Tesla vs BYD sales comparison” |
forecast |
颿µåæ | “Tesla stock price forecast 2026” |
å·¥å ·ä¼å 级
| ä¼å 级 | å·¥å · | ä½¿ç¨æ¡ä»¶ |
|---|---|---|
| ð¥ 1st | deep-research |
required: true æ capabilities.deep_research=true |
| ð¥ 2nd | WebSearch |
ä» å½ deep-research ä¸å¯ç¨æ¶ç fallback |
â ç¦æ¢è¡ä¸º
â çå° research_tasks å´ä¸æ§è¡ç ç©¶
â ä½¿ç¨ WebSearch ä»£æ¿ deep-researchï¼å½å¯ç¨æ¶ï¼
â 䏿¾å¼è¾åºç ç©¶ä»»å¡å°±ç´æ¥å¡«å
å
容
â å¡«å
çå
å®¹æ²¡ææ¥æºå¼ç¨
â 使ç¨è¿æ¶æ°æ®ï¼è¶
è¿6个æï¼
â æ£ç¡®æµç¨ç¤ºä¾
1. 读å skeleton.yaml
2. åç° research_tasks: [r01, r02, r03]
3. è¾åº: "ð RESEARCH TASK [r01]..."
4. è°ç¨: Task(subagent_type="general-purpose", prompt="ä½¿ç¨ deep-research...")
5. çå¾
ç»æ
6. è¾åº: "ð RESEARCH TASK [r02]..."
7. è°ç¨: Task(...)
8. ...
9. çæ slide-mdï¼å¡«å
<!-- @RESEARCH: rXX --> æ è®°
æ¦è¿°
/ppt æ¯ PPT çæç主å
¥å£å½ä»¤ï¼å®ç¼æ outline â enrich â render ä¸é¶æ®µæµç¨ï¼å°ç¨æ·çåå§éæ±è½¬å为ä¸ä¸ç PPTX æä»¶ã
ð¨ è®¾è®¡å·¥å ·ç®± (Design Toolkit)
éè¦: çæ PPT æ¶ï¼è¯·å åå©ç¨ä»¥ä¸ä¸°å¯çè®¾è®¡å·¥å ·ï¼ç¡®ä¿è¾åºç¾è§å¤§æ¹ãä¸ä¸ç²¾è´ã
å¯ç¨å¸å±ç±»å
| å¸å± | ç±»å | éç¨åºæ¯ | ææ |
|---|---|---|---|
title-only |
å ¨å±æ é¢ | å°é¢ãç« è页ãç»å°¾ | è§è§å²å»å强 |
bullets |
è¦ç¹å表 | éç¨å 容ã3-5 个è¦ç¹ | æ¸ æ°æè¯» |
two-column |
ååå¯¹æ¯ | 对æ¯å 容ãå·¦å³åå | ç»æå¯¹ç§° |
three-cards |
ä¸åå¡ç | æ¡ä¾å±ç¤ºãç¹æ§å¯¹æ¯ | å¹¶åå±ç¤º |
table |
è¡¨æ ¼ | æ°æ®å¯éãå¤ç»´æ¯è¾ | ä¿¡æ¯æ´é½ |
quote |
å¼ç¨ | å人éå¥ãéç¹å¼ºè° | çªåºéç¹ |
chart |
å¾è¡¨ | æµç¨ãæ¶é´çº¿ãå±çº§ | å¯è§å强 |
å¯ç¨å¾è¡¨æ¨¡æ¿
ä½¿ç¨ ::: chart åæ ```mermaid 代ç åï¼
| æ¨¡æ¿ | è¯æ³ç¤ºä¾ | éç¨å 容 |
|---|---|---|
| æµç¨å¾ | template: process-flow |
æ¥éª¤ãé¶æ®µãæµç¨ |
| 对æ¯å¾ | template: comparison |
ä¼ ç» vs ç°ä»£ãä¼å£å¿ |
| æ¶é´çº¿ | template: timeline |
åå²ãè§åãè·¯çº¿å¾ |
| éåå¡ | template: pyramid |
å±çº§ãæ¶æãåç±» |
| èªå®ä¹ | ```mermaid 代ç å |
夿èªå®ä¹å¾è¡¨ |
å¾è¡¨è¯æ³ç¤ºä¾:
::: chart
template: process-flow
title: AI宿½ä¸é¶æ®µ
steps:
- å¿«èµ¢æ | 0-6æ
- 价弿¾å¤§ | 6-18æ
- å
¨é¢è½¬å | 18æ+
:::
è£ é¥°å¾çä½ç½®
ä½¿ç¨ nano-banana-image çæåè²ç³»è£ 饰å¾ï¼
| ä½ç½® | éç¨é¡µé¢ | ææ |
|---|---|---|
cover |
å°é¢é¡µ | å ¨å±ä¸»è§è§ï¼å¢å¼ºå²å»å |
section |
ç« èæ é¢é¡µ | èæ¯è£ é¥°ï¼çªåºä¸»é¢ |
side |
å 容页 | ä¾§è¾¹è£ é¥°ï¼å¢å ç¾æ |
ending |
ç»å°¾é¡µ | æè°¢è£ é¥°ï¼æ¸©é¦¨æ¶å°¾ |
设计å³çåå
- æ°æ® â å¾è¡¨: ææ°åå°±å¯è§åï¼ä¸å ç æ°å
- å¯¹æ¯ â åå/å¾è¡¨: 对æ¯å å®¹å¿ é¡»æ¸ æ°åºå
- æµç¨ â æµç¨å¾: æ¥éª¤å å®¹ç¨æµç¨å¾å±ç¤º
- æ¡ä¾ â å¡ç: 夿¡ä¾å¹¶åç¨å¡çå¸å±
- å¼ç¨ â Quote: éå¥åç¬çªåºå±ç¤º
- éè¦é¡µ â é å¾: å°é¢ãç« è页é è£ é¥°å¾
主é¢éæ©
| ä¸»é¢ | 飿 ¼ | éç¨åºæ¯ |
|---|---|---|
corporate-light |
æµ è²æ£å¼ | ä¼ä¸æ±æ¥ãæ£å¼åºå |
nano-banana-pro |
æ·±è²ç§æ | åæææ¡ãç§ææ¼è®² |
æ¶æ
/pptï¼ç¼æå¨ï¼
â
ââââââââââââââââââ¼âââââââââââââââââ
â¼ â¼ â¼
/ppt-outline /ppt-enrich /ppt-render
(骨æ¶çæ) (å
容填å
) (PPTX渲æ)
â â â
â¼ â¼ â¼
skeleton.yaml slide-md/*.md output.pptx
ç¨æ³
å¿«éå¼å§
/ppt # 交äºå¼çæ
/ppt ./docs/ # ä»ææ¡£ç®å½çæ
/ppt "åä¸ä¸ªAIå¹è®çPPTï¼30åé" # ä»èªç¶è¯è¨çæ
宿´åæ°
/ppt [input] [options]
Arguments:
[input] è¾å
¥æºï¼ç®å½/æä»¶/æè¿°ï¼
Options:
-o, --output <path> è¾åº PPTX è·¯å¾
-t, --theme <name> ä¸»é¢ (corporate-light | nano-banana-pro)
-d, --duration <min> ç®æ æ¶é¿ï¼åéï¼
--no-research è·³è¿ç ç©¶æ¥éª¤
--step <stage> åªæ§è¡å°æå®é¶æ®µ (outline | enrich | render)
--resume <state> ä»æç¹æ¢å¤
-v, --verbose 详ç»è¾åº
工使¨¡å¼
æ¨¡å¼ 1: 交äºå¼ï¼é»è®¤ï¼
/ppt
ð PPT çæå导
âââââââââââââââ
æ£æµå°ä¸ä¸æ:
- docs/ ç®å½: 7 ä¸ªææ¡£, 35,604 å
- å·²æéª¨æ¶: skeleton.yaml
è¯·éæ©æä½:
1. ä»ç°æææ¡£çæ PPT
2. ä»éª¨æ¶ç»§ç»ï¼è·³è¿ outlineï¼
3. éæ°å¼å§
éæ© [1]: _
æ¨¡å¼ 2: æ¹å¤ç
# ä»ææ¡£ç®å½ä¸é®çæ
/ppt ./docs/ -o presentation.pptx
# æå®ä¸»é¢åæ¶é¿
/ppt ./docs/ --theme nano-banana-pro -d 60 -o dark-theme.pptx
æ¨¡å¼ 3: èªç¶è¯è¨
/ppt "ç»ä¼ä¸é«ç®¡åä¸ä¸ªAI转åçå¹è®ï¼90åéï¼éè¦æ¡ä¾"
# ç³»ç»ä¼:
# 1. è§£ææå¾ â è¯å«ä¸º training, executives, 90min
# 2. çæéª¨æ¶ â skeleton.yaml
# 3. æ§è¡ç ç©¶ â è¡¥å
æ¡ä¾åæ°æ®
# 4. çæå
容 â slide-md æä»¶
# 5. 渲æè¾åº â presentation.pptx
æµç¨é¶æ®µ
Stage 1: Outlineï¼éª¨æ¶çæï¼
Input: ä¸ä¸æ / èªç¶è¯è¨æè¿°
Output: skeleton.yaml
Tool: /ppt-outline
çæç»æå骨æ¶ï¼å®ä¹ç« èãæ¶é¿ãç ç©¶éæ±ã
Stage 2: Enrichï¼å 容填å ï¼
Input: skeleton.yaml + ä¸ä¸æ
Output: slides/*.slide.md
Tool: /ppt-enrich
æ£æµå å®¹ç©ºç¼ºï¼æ§è¡ç ç©¶ï¼çææ¯é¡µå¹»ç¯çç Markdownã
Stage 3: Renderï¼æ¸²æè¾åºï¼
Input: slides/*.slide.md
Output: presentation.pptx
Tool: /ppt-render
å° slide-md æä»¶æ¸²æä¸ºæç» PPTXã
æç¹ç»ä¼
æ¯æä»ä»»æé¶æ®µæ¢å¤ï¼
# ä¿åç¶æ
/ppt ./docs/ --step enrich
# â çæ .ppt-state.json
# ä»æç¹æ¢å¤
/ppt --resume .ppt-state.json
# â ä» render é¶æ®µç»§ç»
ç¶ææä»¶ç»æï¼
{
"stage": "enrich",
"skeleton_path": "skeleton.yaml",
"slides_dir": "slides/",
"options": {...},
"timestamp": "2026-01-12T10:00:00Z"
}
é误æ¢å¤
| é误类å | å¤ççç¥ |
|---|---|
| 骨æ¶éªè¯å¤±è´¥ | æç¤ºä¿®å¤ï¼ä¸ç»§ç» |
| ç ç©¶è¶ æ¶ | è·³è¿è¯¥é¡¹ï¼ç»§ç»çæ |
| 渲æå¤±è´¥ | ä¿å slide-mdï¼æç¤ºæå¨æ¸²æ |
è¾åº
é»è®¤è¾åºç»æ
project/
âââ skeleton.yaml # éª¨æ¶æä»¶
âââ slides/ # slide-md æä»¶
â âââ 00-01-cover.slide.md
â âââ 01-01-section.slide.md
â âââ ...
âââ presentation.pptx # æç» PPT
âââ .ppt-state.json # ç¶ææä»¶ï¼å¯éï¼
æ¸ çé项
/ppt ./docs/ --clean # çæåå é¤ä¸é´æä»¶
é ç½®
项ç®é ç½® (.pptrc.yaml)
# .pptrc.yaml
defaults:
theme: corporate-light
duration: 30
audience: professionals
research:
mode: browser # browser | api | mock
cache: true
timeout: 300 # ç§
output:
dir: ./output
clean_intermediate: false
ç¯å¢åé
| åé | 说æ |
|---|---|
OPENAI_API_KEY |
OpenAI API å¯é¥ï¼api ç 究模å¼ï¼ |
PPT_THEME |
é»è®¤ä¸»é¢ |
PPT_OUTPUT_DIR |
é»è®¤è¾åºç®å½ |
æä»¶ç»æ
.claude/skills/ppt/
âââ SKILL.md # æ¬ææ¡£
âââ scripts/
â âââ orchestrator.py # ä¸»ç¼æèæ¬
â âââ intent_parser.py # æå¾è§£æå¨
â âââ state_manager.py # ç¶æç®¡çå¨
âââ templates/
âââ .pptrc.yaml # é
置模æ¿
ä¾èµç Skills
| Skill | ç¨é |
|---|---|
/ppt-outline |
çæéª¨æ¶ |
/ppt-enrich |
å 容填å |
/ppt-render |
PPTX 渲æ |
çæ¬åå²
| çæ¬ | æ¥æ | åæ´ |
|---|---|---|
| 1.0.0 | 2026-01-12 | åç |
| 1.1.0 | 2026-01-13 | P1: 强å¶åæåè®®ãå¾ççæåè®® |
| 1.2.0 | 2026-01-13 | P2: Intent Engine éæãå¸å±é¢å³ç |
ð§ è·¨ä¼è¯è¿½è¸ªåè®®ï¼P2ï¼
ä½¿ç¨ Intent Engine è®°å½ PPT çæçæ¯ä¸ªé¶æ®µï¼æ¯æè·¨ä¼è¯æ¢å¤åå³ç审计ã
为ä»ä¹éè¦è·¨ä¼è¯è¿½è¸ªï¼
- æç¹æ¢å¤: ä¼è¯ä¸æåï¼æ°ä¼è¯è½ç¥é䏿¬¡è¿åº¦
- å³ç审计: è®°å½ä¸ºä»ä¹éæ©æä¸ªå¸å±/主é¢
- è´¨é追踪: éç¨ç¢è®°å½ä¾¿äºå¤ç
éææ¹å¼
from ie_integration import IETracker
tracker = IETracker("ai-trends-brief", Path("./output"))
# å建任å¡ï¼ä¼è¯å¼å§æ¶ï¼
tracker.create_ppt_task("AIæªæ¥è¶å¿ç®æ¥", 30, "nano-banana-pro")
# æ¯ä¸ªé¶æ®µå®æåè®°å½éç¨ç¢
tracker.log_milestone("skeleton", "Generated 5 sections, 12 slides")
tracker.log_milestone("research", "Completed 3 research tasks with 15 sources")
tracker.log_milestone("layout", "Applied layout decisions: 3 cards, 2 bullets")
tracker.log_milestone("render", "Generated presentation.pptx (2.3MB)")
# è®°å½éè¦å³ç
tracker.log_decision(
topic="Section 02 Layout",
options=["bullets", "three-cards", "chart"],
chosen="three-cards",
rationale="Content has 3 AI trends, perfect for card layout"
)
# è®°å½é»å¡
tracker.log_blocker("images", "Gemini API rate limited", "Wait 60s and retry")
AI æ§è¡åè®®
æ¯ä¸ªé¶æ®µå®æåï¼å¿ é¡»è¾åºå¹¶è®°å½ï¼
ââââââââââââââââââââââââââââââââââââââââ
ð§ IE MILESTONE: [STAGE_NAME]
ââââââââââââââââââââââââââââââââââââââââ
Project: ai-trends-brief
Stage: skeleton
Summary: Generated skeleton.yaml with 2 sections
Artifacts:
â
skeleton.yaml (1.2KB)
â
research_tasks: 1
Logged to Intent Engine: â
ââââââââââââââââââââââââââââââââââââââââ
ä¼è¯æ¢å¤
æ°ä¼è¯å¼å§æ¶ï¼
# æ¥çå½åä»»å¡ç¶æ
ie status
# æç´¢æªå®æä»»å¡
ie search "PPT doing"
ð å¸å±é¢å³çåè®®ï¼P2ï¼
å¨çæ slide-md ä¹åï¼å¿ é¡»å è¿è¡ LayoutAdvisor åæå 容并å³å®å¸å±ã
为ä»ä¹éè¦é¢å³çï¼
- é¿å åè°å¸å±: 䏿¯ææå 容é½ç¨ bullets
- æºè½æ¨è: æ ¹æ®å 容ç¹å¾èªå¨æ¨èæä½³å¸å±
- 设计ä¸è´æ§: ç¡®ä¿è®¾è®¡å³çææ®å¯æ¥
工使µç¨
skeleton.yaml
â
â¼
âââââââââââââââââââ
â LayoutAdvisor â â åæå
容ç¹å¾
â (é¢å³ç) â
ââââââââââ¬âââââââââ
â
â¼
skeleton.yaml (enriched)
with _layout_decision
â
â¼
âââââââââââââââââââ
â SlideMDWriter â â 使ç¨å³ççæ
â (å
容çæ) â
ââââââââââ¬âââââââââ
â
â¼
slides/*.slide.md
å¸å±å³çåæ®µ
é¢å³çåï¼skeleton.yaml 䏿¯ä¸ª slide 伿·»å ï¼
structure:
- id: "02-trends"
title: "2026ä¸å¤§è¶å¿"
slides:
- id: "02-01"
type: content
layout: three-cards
_layout_decision: # ð é¢å³çç»æ
layout: three-cards
confidence: 0.9
chart_type: null
image_position: icon
design_hints:
- æ¯ä¸ªå¡çå±ç¤ºä¸ä¸ªè¶å¿
- çªåºå
³é®ææ
rationale: "å
容æ3个并åè¶å¿ï¼éåå¡çå¸å±"
AI æ§è¡åè®®
Enrich é¶æ®µå¿ é¡»å æ§è¡é¢å³çï¼
ââââââââââââââââââââââââââââââââââââââââ
ð LAYOUT PRE-DECISION
ââââââââââââââââââââââââââââââââââââââââ
Analyzing 5 sections...
[02-01] 2026ä¸å¤§è¶å¿
Layout: three-cards (confidence: 90%)
Rationale: å
容æ3个并åè¶å¿ï¼éåå¡çå¸å±
[03-01] 宿½è·¯çº¿å¾
Layout: chart (confidence: 85%)
Chart: timeline
Rationale: æ¶é´ç¸å
³å
容éåæ¶é´çº¿å¾è¡¨
Layout Distribution:
three-cards: 2
bullets: 2
chart: 1
ââââââââââââââââââââââââââââââââââââââââ
å¸å±æ¨èè§å
| å 容ç¹å¾ | æ¨èå¸å± | 置信度 |
|---|---|---|
| 3个并å项 | three-cards | 90% |
| 对æ¯å 容 | two-column / comparison chart | 80-85% |
| æ¥éª¤/æµç¨ | chart (process-flow) | 90% |
| æ¶é´çº¿ | chart (timeline) | 90% |
| å±çº§ç»æ | chart (pyramid) | 85% |
| å¼ç¨/éå¥ | quote | 90% |
| æ°æ®å¯é | table | 75% |
| é»è®¤ | bullets | 60% |
è°ç¨æ¹å¼
from layout_advisor import LayoutAdvisor
advisor = LayoutAdvisor(verbose=True)
# 为åä¸ªç« èæ¨èå¸å±
decision = advisor.recommend_layout(section)
print(f"æ¨è: {decision.layout.value}, 置信度: {decision.confidence}")
# æ¹éåºç¨å° skeleton
enriched_skeleton = advisor.apply_decisions_to_skeleton(skeleton)
# çæè®¾è®¡æ¥å
report = advisor.generate_design_report(skeleton)
print(report)
å¿«é示ä¾
# æç®åçç¨æ³
/ppt ./docs/ -o my-presentation.pptx
# 宿´æµç¨
/ppt ./docs/ \
--theme corporate-light \
--duration 60 \
-o presentation.pptx \
-v