---
name: ai-ppt-generator
description: Generate PPT with Baidu AI. Smart template selection based on content.
metadata: { "openclaw": { "emoji": "📑", "requires": { "bins": ["python3"], "env":["BAIDU_API_KEY"]},"primaryEnv":"BAIDU_API_KEY" } }
---

# AI PPT Generator

Generate PPT using Baidu AI with intelligent template selection.

## Smart Workflow
1. **User provides PPT topic**
2. **Agent asks**: "Want to choose a template style?"
3. **If yes** → Show styles from `ppt_theme_list.py` → User picks → Use `generate_ppt.py` with chosen `tpl_id` and real `style_id`
4. **If no** → Use `random_ppt_theme.py` (auto-selects appropriate template based on topic content)

## Intelligent Template Selection
`random_ppt_theme.py` analyzes the topic and suggests appropriate template:
- **Business topics** → 企业商务 style
- **Technology topics** → 未来科技 style  
- **Education topics** → 卡通手绘 style
- **Creative topics** → 创意趣味 style
- **Cultural topics** → 中国风 or 文化艺术 style
- **Year-end reports** → 年终总结 style
- **Minimalist design** → 扁平简约 style
- **Artistic content** → 文艺清新 style

## Scripts
- `scripts/ppt_theme_list.py` - List all available templates with style_id and tpl_id
- `scripts/random_ppt_theme.py` - Smart template selection + generate PPT
- `scripts/generate_ppt.py` - Generate PPT with specific template (uses real style_id and tpl_id from API)

## Key Features
- **Smart categorization**: Analyzes topic content to suggest appropriate style
- **Fallback logic**: If template not found, automatically uses random selection
- **Complete parameters**: Properly passes both style_id and tpl_id to API

## Usage Examples
```bash
# List all templates with IDs
python3 scripts/ppt_theme_list.py

# Smart automatic selection (recommended for most users)
python3 scripts/random_ppt_theme.py --query "人工智能发展趋势报告"

# Specific template with proper style_id
python3 scripts/generate_ppt.py --query "儿童英语课件" --tpl_id 106

# Specific template with auto-suggested category
python3 scripts/random_ppt_theme.py --query "企业年度总结" --category "企业商务"
```

## Agent Steps
1. Get PPT topic from user
2. Ask: "Want to choose a template style?" 
3. **If user says YES**:
   - Run `ppt_theme_list.py` to show available templates
   - User selects a template (note the tpl_id)
   - Run `generate_ppt.py --query "TOPIC" --tpl_id ID`
4. **If user says NO**:
   - Run `random_ppt_theme.py --query "TOPIC"`
   - Script will auto-select appropriate template based on topic
5. Set timeout to 300 seconds (PPT generation takes 2-5 minutes)
6. Monitor output, wait for `is_end: true` to get final PPT URL

## Output Examples
**During generation:**
```json
{"status": "PPT生成中", "run_time": 45}
```

**Final result:**
```json
{
  "status": "PPT导出结束", 
  "is_end": true, 
  "data": {"ppt_url": "https://image0.bj.bcebos.com/...ppt"}
}
```

## Technical Notes
- **API integration**: Fetches real style_id from Baidu API for each template
- **Error handling**: If template not found, falls back to random selection
- **Timeout**: Generation takes 2-5 minutes, set sufficient timeout
- **Streaming**: Uses streaming API, wait for `is_end: true` before considering complete