85 lines
3.2 KiB
Markdown
85 lines
3.2 KiB
Markdown
---
|
|
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 |