@lemonppt/cli 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +189 -97
- package/agents/codex.yaml +99 -0
- package/agents/cursor.yaml +47 -0
- package/agents/openai.yaml +176 -0
- package/dist/cli.js +199 -1
- package/dist/index.d.ts +98 -1
- package/dist/index.js +320 -8
- package/package.json +7 -6
package/SKILL.md
CHANGED
|
@@ -1,87 +1,131 @@
|
|
|
1
1
|
# lemonPPT
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
根据一句话主题、结构化需求或已有的 `goal.json`,生成精美、可编辑的 PPT(HTML/PPTX/PDF)。
|
|
4
4
|
|
|
5
|
-
> **协议声明**:lemonPPT 采用 AGPL-3.0 开源协议。若你通过 AI Agent 向第三方提供基于 lemonPPT 的服务,请遵守 AGPL-3.0
|
|
5
|
+
> **协议声明**:lemonPPT 采用 AGPL-3.0-or-later 开源协议。若你通过 AI Agent 向第三方提供基于 lemonPPT 的服务,请遵守 AGPL-3.0 的源代码公开义务。详见项目根目录 `LICENSE` 与 `docs/LEGAL.md`。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
---
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- 生成结构化演示文稿规划(goal.json)
|
|
11
|
-
- 渲染为可浏览的 HTML
|
|
12
|
-
- 导出为 PPTX 或 PDF
|
|
9
|
+
## 能力边界
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
用户说"帮我做一份 PPT"时,按以下步骤执行:
|
|
11
|
+
lemonPPT 是**结构化 goal.json → 视觉 PPT** 的渲染与导出引擎:
|
|
17
12
|
|
|
18
|
-
|
|
13
|
+
- ✅ 将 `goal.json` 渲染为可离线打开的 HTML deck(支持浏览器内编辑)
|
|
14
|
+
- ✅ 导出可编辑 PPTX 或截图 PDF
|
|
15
|
+
- ✅ 根据 `role` 自动挑选合适版式
|
|
16
|
+
- ✅ 内置自然语言 → `goal.json` 生成(`lemonppt generate`)
|
|
17
|
+
- ❌ **不直接解析外部文档**(Word/PDF/Markdown);如需“上传文档生成 PPT”,外层 Agent 需先提取文本/结构,再交给 lemonPPT
|
|
18
|
+
- ❌ 不联网抓取网页;不生成图片/图表数据本身,但可渲染你提供的数据
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
---
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
- **目标受众**(audience):听众是谁?(如投资人、客户、内部团队)
|
|
24
|
-
- **核心卖点/关键数据**:有没有必须突出的指标、功能或案例?
|
|
25
|
-
- **页数**:建议 6~20 页
|
|
26
|
-
- **主题风格**:`base`(极简商务)、`dark-tech`(深色科技)、`warm-business`(温暖商务)
|
|
27
|
-
- **语言**:`zh` 或 `en`
|
|
28
|
-
- **API Key**:如果有 OpenAI 兼容 API Key,生成内容会更贴合主题;没有则使用内置 fallback 示例
|
|
22
|
+
## 使用流程
|
|
29
23
|
|
|
30
|
-
###
|
|
24
|
+
### 方式一:一句话端到端生成(最简单)
|
|
31
25
|
|
|
32
26
|
```bash
|
|
33
|
-
|
|
27
|
+
# 1. 生成 goal.json
|
|
28
|
+
lemonppt generate "面向企业客户的 AI 助手产品发布会,强调效率提升 10 倍、支持私有化部署、已有 50 家客户" \
|
|
29
|
+
--pages 8 --theme theme01 --language zh --out ./goal.json
|
|
30
|
+
|
|
31
|
+
# 2. 导出 PPTX / PDF
|
|
32
|
+
lemonppt export ./goal.json --pptx ./deck.pptx --pdf ./deck.pdf
|
|
33
|
+
|
|
34
|
+
# 3. (可选)渲染可编辑 HTML 预览
|
|
35
|
+
lemonppt render ./goal.json --out ./output --editable
|
|
34
36
|
```
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
参数说明:
|
|
39
|
+
|
|
40
|
+
- `--pages`:页数,建议 5~20 页
|
|
41
|
+
- `--theme`:主题 ID,见下方「可用主题」
|
|
38
42
|
- `--language`:`zh` 或 `en`
|
|
39
|
-
- `--api-key`:可选,OpenAI 兼容 API
|
|
43
|
+
- `--api-key` / `--base-url` / `--model`:可选,OpenAI 兼容 API;不传则使用内置 fallback 示例
|
|
44
|
+
|
|
45
|
+
### 方式二:Agent 精细编排
|
|
40
46
|
|
|
41
|
-
|
|
47
|
+
当外层 Agent 需要控制每一页的结构、版式、数据时:
|
|
42
48
|
|
|
43
49
|
```bash
|
|
44
|
-
|
|
50
|
+
# 1. 查看可用主题
|
|
51
|
+
lemonppt list-themes
|
|
52
|
+
|
|
53
|
+
# 2. 按角色查询候选版式
|
|
54
|
+
lemonppt layout-query --theme theme06 --role metric --limit 5
|
|
55
|
+
|
|
56
|
+
# 3. 查看版式字段契约
|
|
57
|
+
lemonppt inspect-layout theme06_metric_hero_v1
|
|
58
|
+
|
|
59
|
+
# 4. 生成只含 role 的骨架
|
|
60
|
+
lemonppt goal-scaffold --title "AI 产业投资图谱" --goal "..." --theme theme06 --pages 10 --out ./goal.json
|
|
61
|
+
|
|
62
|
+
# 5. 外层 Agent 填充 props 后,规范化默认值并校验未知字段
|
|
63
|
+
lemonppt write-safe-props ./goal.json --write
|
|
64
|
+
|
|
65
|
+
# 6. 校验 goal.json 规范
|
|
66
|
+
lemonppt validate-goal-spec ./goal.json
|
|
67
|
+
|
|
68
|
+
# 7. 渲染与导出
|
|
69
|
+
lemonppt render ./goal.json --out ./output
|
|
70
|
+
lemonppt export ./goal.json --pptx ./deck.pptx
|
|
45
71
|
```
|
|
46
72
|
|
|
47
|
-
###
|
|
73
|
+
### 方式三:HTTP API 服务
|
|
48
74
|
|
|
49
75
|
```bash
|
|
50
|
-
lemonppt
|
|
76
|
+
lemonppt serve --port 3456
|
|
51
77
|
```
|
|
52
78
|
|
|
53
|
-
|
|
79
|
+
接口:
|
|
54
80
|
|
|
55
|
-
|
|
81
|
+
- `POST /api/generate-goal`:自然语言 → `goal.json`
|
|
82
|
+
- `POST /api/render`:`goal.json` → HTML
|
|
83
|
+
- `POST /api/export/pptx`:`goal.json` → PPTX
|
|
84
|
+
- `POST /api/export/pdf`:`goal.json` → PDF
|
|
85
|
+
- `POST /api/layout-query`:候选版式查询
|
|
86
|
+
- `POST /api/inspect-layout`:版式字段契约
|
|
87
|
+
- `POST /api/goal-scaffold`:生成骨架
|
|
88
|
+
- `POST /api/write-safe-props`:规范化 props
|
|
89
|
+
- `POST /api/validate-goal-spec`:校验 goal.json
|
|
56
90
|
|
|
57
|
-
|
|
91
|
+
---
|
|
58
92
|
|
|
59
|
-
|
|
93
|
+
## 可用主题
|
|
94
|
+
|
|
95
|
+
| 主题 ID | 风格 | 配色/外观 |
|
|
96
|
+
|---|---|---|
|
|
97
|
+
| `theme01` | 浅色玻璃质感 | light / dark |
|
|
98
|
+
| `theme02` | 深色霓虹科技 | scheme-a / scheme-b |
|
|
99
|
+
| `theme03` | 代码编辑器风 | scheme-a / scheme-b + light / dark |
|
|
100
|
+
| `theme04` | 玻璃糖果风 | green / yellow / blue / pink + light / dark |
|
|
101
|
+
| `theme05` | 光谱报告风 | coral / amber / teal / indigo / violet + light / dark |
|
|
102
|
+
| `theme06` | 深色图谱风 | volt / magma / nebula / nova + light / dark |
|
|
60
103
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
104
|
+
默认主题:`theme01`。
|
|
105
|
+
|
|
106
|
+
---
|
|
64
107
|
|
|
65
108
|
## goal.json 格式
|
|
66
109
|
|
|
67
110
|
```json
|
|
68
111
|
{
|
|
69
112
|
"title": "演示文稿标题",
|
|
70
|
-
"goal": "
|
|
113
|
+
"goal": "这场 PPT 希望达成什么?",
|
|
71
114
|
"audience": "目标受众",
|
|
72
115
|
"owner": "汇报人",
|
|
73
|
-
"theme": "
|
|
116
|
+
"theme": "theme01",
|
|
117
|
+
"colorScheme": "light",
|
|
118
|
+
"appearance": "light",
|
|
74
119
|
"language": "zh",
|
|
75
120
|
"pageCount": 8,
|
|
76
121
|
"randomSeed": "可选种子",
|
|
77
122
|
"slides": [
|
|
78
123
|
{
|
|
79
124
|
"role": "cover",
|
|
80
|
-
"layout": "
|
|
125
|
+
"layout": "theme01_cover_v1",
|
|
81
126
|
"props": {
|
|
82
127
|
"title": "标题",
|
|
83
|
-
"subtitle": "副标题"
|
|
84
|
-
"date": "2026-07-18"
|
|
128
|
+
"subtitle": "副标题"
|
|
85
129
|
}
|
|
86
130
|
}
|
|
87
131
|
]
|
|
@@ -97,96 +141,144 @@ lemonppt export ./goal.json --pptx ./deck.pptx --pdf ./deck.pdf
|
|
|
97
141
|
| `audience` | 是 | 受众描述 |
|
|
98
142
|
| `owner` | 否 | 汇报人 |
|
|
99
143
|
| `theme` | 是 | 主题 ID |
|
|
144
|
+
| `colorScheme` | 否 | 主题专用配色方案,见「可用主题」 |
|
|
145
|
+
| `appearance` | 否 | `light` / `dark`,部分主题支持 |
|
|
100
146
|
| `language` | 否 | `zh` 或 `en`,默认 `zh` |
|
|
101
147
|
| `pageCount` | 是 | 总页数,必须等于 `slides.length` |
|
|
102
|
-
| `randomSeed` | 否 |
|
|
148
|
+
| `randomSeed` | 否 | 随机种子,保证选页可复现 |
|
|
103
149
|
| `slides` | 是 | 幻灯片数组 |
|
|
104
150
|
|
|
105
151
|
每个 slide:
|
|
106
152
|
|
|
107
153
|
| 字段 | 必填 | 说明 |
|
|
108
154
|
|---|---|---|
|
|
109
|
-
| `role` | 是 |
|
|
155
|
+
| `role` | 是 | 页面角色,见下方「页面角色」 |
|
|
110
156
|
| `layout` | 否 | 具体版式 ID;留空时系统按 role 自动选择 |
|
|
111
157
|
| `props` | 是 | 该版式所需数据 |
|
|
112
158
|
|
|
113
|
-
|
|
159
|
+
---
|
|
114
160
|
|
|
115
|
-
|
|
116
|
-
|---|---|
|
|
117
|
-
| `base` | 极简商务 |
|
|
118
|
-
| `dark-tech` | 深色科技 |
|
|
119
|
-
| `warm-business` | 温暖商务 |
|
|
161
|
+
## 页面角色
|
|
120
162
|
|
|
121
|
-
|
|
163
|
+
Agent 选页时优先只指定 `role`,由系统根据当前主题自动挑选合适版式。只有在明确需要某一款版式时才填 `layout`。
|
|
122
164
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
|
126
|
-
|
|
127
|
-
| `
|
|
128
|
-
| `
|
|
129
|
-
| `
|
|
130
|
-
| `
|
|
131
|
-
| `
|
|
132
|
-
| `
|
|
133
|
-
| `
|
|
134
|
-
| `
|
|
135
|
-
| `
|
|
136
|
-
| `
|
|
137
|
-
| `
|
|
138
|
-
| `
|
|
139
|
-
| `
|
|
140
|
-
| `
|
|
141
|
-
| `
|
|
142
|
-
| `
|
|
143
|
-
| `
|
|
144
|
-
| `
|
|
145
|
-
| `
|
|
146
|
-
| `
|
|
147
|
-
| `
|
|
148
|
-
| `
|
|
165
|
+
| role | 用途 |
|
|
166
|
+
|---|---|
|
|
167
|
+
| `cover` | 封面 |
|
|
168
|
+
| `tableOfContents` | 目录 |
|
|
169
|
+
| `metric` | 关键数字/指标 |
|
|
170
|
+
| `stats` | 统计摘要 |
|
|
171
|
+
| `chart` | 数据图表 |
|
|
172
|
+
| `comparison` | 对比页 |
|
|
173
|
+
| `pricing` | 价格方案 |
|
|
174
|
+
| `process` | 流程步骤 |
|
|
175
|
+
| `timeline` | 时间线 |
|
|
176
|
+
| `roadmap` | 路线图 |
|
|
177
|
+
| `quote` | 金句引用 |
|
|
178
|
+
| `testimonial` | 客户评价 |
|
|
179
|
+
| `content` | 图文内容 |
|
|
180
|
+
| `faq` | 问答 |
|
|
181
|
+
| `feature` | 产品特性 |
|
|
182
|
+
| `team` | 团队介绍 |
|
|
183
|
+
| `partners` | 合作伙伴墙 |
|
|
184
|
+
| `image` | 单图页 |
|
|
185
|
+
| `gallery` | 图片画廊 |
|
|
186
|
+
| `bento` | 模块化概览 |
|
|
187
|
+
| `table` | 表格 |
|
|
188
|
+
| `tags` | 标签云 |
|
|
189
|
+
| `filmstrip` | 胶片条 |
|
|
190
|
+
| `swot` | SWOT 分析 |
|
|
191
|
+
| `pest` | PEST 分析 |
|
|
192
|
+
| `closing` | 结尾/感谢 |
|
|
193
|
+
|
|
194
|
+
---
|
|
149
195
|
|
|
150
196
|
## 常见 props 字段
|
|
151
197
|
|
|
152
198
|
- `title`:页面主标题
|
|
153
199
|
- `kicker`:小标题/标签
|
|
154
200
|
- `subtitle`:副标题
|
|
155
|
-
- `items`:列表项数组
|
|
156
|
-
- `
|
|
157
|
-
- `
|
|
158
|
-
- `image` / `imageUrl`:图片 URL(远程 URL 在 PPTX 中可能显示占位符)
|
|
201
|
+
- `items` / `points` / `bullets`:列表项数组
|
|
202
|
+
- `stats` / `metrics`:指标数组,元素通常含 `label`、`value`、`unit`、`change`
|
|
203
|
+
- `image` / `imageUrl`:图片 URL(远程 URL 在 PPTX 中可能显示占位符,建议用本地图片或 base64)
|
|
159
204
|
- `cta` / `contact` / `email` / `link`:结尾页联系方式
|
|
205
|
+
- `showInsight` + `insight`:图表/数据页的重点强调面板
|
|
206
|
+
|
|
207
|
+
具体字段请用 `lemonppt inspect-layout <layoutId>` 查看。
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## CLI 命令速查
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
# 生成
|
|
215
|
+
lemonppt generate "<主题>" [--pages N] [--theme <id>] [--language zh|en] [--out goal.json] [--api-key KEY]
|
|
216
|
+
|
|
217
|
+
# 渲染
|
|
218
|
+
lemonppt render <goal.json> [--out ./output] [--editable]
|
|
219
|
+
|
|
220
|
+
# 导出
|
|
221
|
+
lemonppt export <goal.json> --pptx out.pptx [--pdf out.pdf]
|
|
222
|
+
|
|
223
|
+
# 本地服务
|
|
224
|
+
lemonppt serve [<dir>] [--port N]
|
|
225
|
+
|
|
226
|
+
# 主题/版式查询
|
|
227
|
+
lemonppt list-themes
|
|
228
|
+
lemonppt layout-query --theme <id> --role <role> [--limit N] [--seed S] [--keyword K]
|
|
229
|
+
lemonppt inspect-layout <layoutId> [--compact]
|
|
230
|
+
|
|
231
|
+
# 骨架/校验
|
|
232
|
+
lemonppt goal-scaffold --title T --goal G --theme <id> --pages N --out goal.json
|
|
233
|
+
lemonppt write-safe-props <goal.json> [--write]
|
|
234
|
+
lemonppt validate-goal-spec <goal.json>
|
|
235
|
+
|
|
236
|
+
# 安装到 Agent 技能目录
|
|
237
|
+
lemonppt install-skill [--claude] [--codex] [--cursor] [--all]
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
160
241
|
|
|
161
242
|
## 常见错误处理
|
|
162
243
|
|
|
163
|
-
1. **没有 API Key**:`lemonppt generate` 会 fallback
|
|
164
|
-
2.
|
|
244
|
+
1. **没有 API Key**:`lemonppt generate` 会 fallback 到内置示例内容,仍可生成完整文件。如需更贴合主题的文案,提供 `--api-key`。
|
|
245
|
+
2. **生成内容偏离主题**:把主题描述写得更具体,补充目标受众、核心卖点、关键数据。
|
|
165
246
|
3. **页数太少**:建议封面 + 目录 + 3~5 页内容 + 结尾,最少 5 页。
|
|
166
247
|
4. **远程图片在 PPTX 中不显示**:PPTX 导出优先使用本地图片或 base64;远程 URL 会显示占位符。
|
|
167
|
-
5.
|
|
248
|
+
5. **校验失败**:检查 `slides.length === pageCount`、必填字段、未知 props 字段。
|
|
249
|
+
6. **版式不存在**:使用 `lemonppt layout-query` 查询当前主题下可用版式。
|
|
168
250
|
|
|
169
|
-
|
|
251
|
+
---
|
|
170
252
|
|
|
171
|
-
|
|
253
|
+
## Agent 调用示例
|
|
172
254
|
|
|
173
|
-
|
|
174
|
-
lemonppt generate "面向企业客户的 AI 助手产品发布会,核心卖点:效率提升 10 倍、支持私有化部署、服务 50+ 标杆客户" --pages 8 --theme base --language zh --api-key $OPENAI_API_KEY --out ./ai-launch.json
|
|
175
|
-
lemonppt render ./ai-launch.json --out ./output
|
|
176
|
-
lemonppt export ./ai-launch.json --pptx ./ai-launch.pptx --pdf ./ai-launch.pdf
|
|
177
|
-
```
|
|
255
|
+
### 例 1:用户说“帮我做一份 PPT”
|
|
178
256
|
|
|
179
|
-
|
|
257
|
+
1. 先追问:主题、目标、受众、页数、主题风格、语言。
|
|
258
|
+
2. 调用 `lemonppt generate "<完整主题>" --pages N --theme <id> --language zh --out ./goal.json`。
|
|
259
|
+
3. 调用 `lemonppt export ./goal.json --pptx ./deck.pptx --pdf ./deck.pdf`。
|
|
260
|
+
4. 交付文件并说明来源。
|
|
180
261
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
262
|
+
### 例 2:用户上传了一份文档
|
|
263
|
+
|
|
264
|
+
1. 外层 Agent 自行解析文档,提取标题、摘要、章节、数据、图片。
|
|
265
|
+
2. 调用 `lemonppt goal-scaffold` 生成骨架。
|
|
266
|
+
3. 按 `lemonppt inspect-layout` 的字段契约,将文档内容映射为每页 `props`。
|
|
267
|
+
4. 调用 `lemonppt write-safe-props` 规范化,`lemonppt validate-goal-spec` 校验。
|
|
268
|
+
5. 渲染并导出。
|
|
269
|
+
|
|
270
|
+
### 例 3:用户指定某一页要“团队介绍”
|
|
271
|
+
|
|
272
|
+
1. 查看候选版式:`lemonppt layout-query --theme <id> --role team --limit 3`。
|
|
273
|
+
2. 查看契约:`lemonppt inspect-layout theme01_team_v1`。
|
|
274
|
+
3. 修改 `goal.json` 中对应 slide 的 `role` 为 `team`,按契约填充 `props`。
|
|
275
|
+
4. 重新渲染/导出。
|
|
276
|
+
|
|
277
|
+
---
|
|
186
278
|
|
|
187
279
|
## 注意事项
|
|
188
280
|
|
|
189
|
-
-
|
|
281
|
+
- 优先只写 `role`,不要手动指定每个 slide 的 `layout`,除非用户明确要求某一款版式。
|
|
190
282
|
- `goal.json` 是核心协议,生成后可以直接交给用户修改再导出。
|
|
191
|
-
-
|
|
283
|
+
- 同一 deck 中建议不要重复使用完全相同的 `layout`。
|
|
192
284
|
- 所有命令在 lemonPPT 项目根目录执行;CLI 入口为 `packages/cli/dist/cli.js` 或安装后的 `lemonppt`。
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# lemonPPT - AI-powered presentation generation
|
|
2
|
+
# Copyright (c) 2026 lemonforme
|
|
3
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
|
+
|
|
5
|
+
name: lemonppt
|
|
6
|
+
description: |
|
|
7
|
+
lemonPPT 结构化 goal.json → 视觉 PPT 渲染与导出引擎。
|
|
8
|
+
提供端到端生成、版式查询与字段契约查看、goal.json 规范化与校验能力。
|
|
9
|
+
|
|
10
|
+
tools:
|
|
11
|
+
- name: lemonppt-generate-goal
|
|
12
|
+
description: 根据一句话需求生成完整 goal.json
|
|
13
|
+
command: |
|
|
14
|
+
lemonppt generate "{{input}}" --pages {{pageCount}} --theme {{theme}} --language {{language}}
|
|
15
|
+
parameters:
|
|
16
|
+
input:
|
|
17
|
+
type: string
|
|
18
|
+
required: true
|
|
19
|
+
pageCount:
|
|
20
|
+
type: integer
|
|
21
|
+
default: 8
|
|
22
|
+
theme:
|
|
23
|
+
type: string
|
|
24
|
+
default: theme01
|
|
25
|
+
language:
|
|
26
|
+
type: string
|
|
27
|
+
default: zh
|
|
28
|
+
|
|
29
|
+
- name: lemonppt-list-themes
|
|
30
|
+
description: 列出所有可用主题
|
|
31
|
+
command: lemonppt list-themes
|
|
32
|
+
|
|
33
|
+
- name: lemonppt-layout-query
|
|
34
|
+
description: 按主题与角色查询候选版式
|
|
35
|
+
command: |
|
|
36
|
+
lemonppt layout-query --theme {{theme}} --role {{role}} --limit {{limit}}{% if keyword %} --keyword {{keyword}}{% endif %}{% if needsMedia %} --needs-media{% endif %}
|
|
37
|
+
parameters:
|
|
38
|
+
theme:
|
|
39
|
+
type: string
|
|
40
|
+
required: true
|
|
41
|
+
role:
|
|
42
|
+
type: string
|
|
43
|
+
required: true
|
|
44
|
+
keyword:
|
|
45
|
+
type: string
|
|
46
|
+
needsMedia:
|
|
47
|
+
type: boolean
|
|
48
|
+
limit:
|
|
49
|
+
type: integer
|
|
50
|
+
default: 8
|
|
51
|
+
|
|
52
|
+
- name: lemonppt-inspect-layout
|
|
53
|
+
description: 查看指定版式的字段契约
|
|
54
|
+
command: lemonppt inspect-layout {{layoutId}}
|
|
55
|
+
parameters:
|
|
56
|
+
layoutId:
|
|
57
|
+
type: string
|
|
58
|
+
required: true
|
|
59
|
+
|
|
60
|
+
- name: lemonppt-goal-scaffold
|
|
61
|
+
description: 生成只含 role 的 goal.json 骨架
|
|
62
|
+
command: |
|
|
63
|
+
lemonppt goal-scaffold --title "{{title}}" --goal "{{goal}}" --theme {{theme}} --pages {{pages}} --language {{language}} --out ./goal.json
|
|
64
|
+
parameters:
|
|
65
|
+
title:
|
|
66
|
+
type: string
|
|
67
|
+
required: true
|
|
68
|
+
goal:
|
|
69
|
+
type: string
|
|
70
|
+
required: true
|
|
71
|
+
theme:
|
|
72
|
+
type: string
|
|
73
|
+
default: theme01
|
|
74
|
+
pages:
|
|
75
|
+
type: integer
|
|
76
|
+
default: 8
|
|
77
|
+
language:
|
|
78
|
+
type: string
|
|
79
|
+
default: zh
|
|
80
|
+
|
|
81
|
+
- name: lemonppt-write-safe-props
|
|
82
|
+
description: 规范化 goal.json 的 props
|
|
83
|
+
command: lemonppt write-safe-props ./goal.json --write
|
|
84
|
+
|
|
85
|
+
- name: lemonppt-validate-goal-spec
|
|
86
|
+
description: 校验 goal.json 是否符合规范
|
|
87
|
+
command: lemonppt validate-goal-spec ./goal.json
|
|
88
|
+
|
|
89
|
+
- name: lemonppt-export-pptx
|
|
90
|
+
description: 导出 PPTX
|
|
91
|
+
command: lemonppt export ./goal.json --pptx ./deck.pptx
|
|
92
|
+
|
|
93
|
+
- name: lemonppt-export-pdf
|
|
94
|
+
description: 导出 PDF
|
|
95
|
+
command: lemonppt export ./goal.json --pdf ./deck.pdf
|
|
96
|
+
|
|
97
|
+
instructions: |
|
|
98
|
+
当用户需要生成 PPT 时,优先使用 lemonppt-generate-goal 端到端生成。
|
|
99
|
+
当用户需要控制每一页版式或查看字段契约时,使用 layout-query、inspect-layout、goal-scaffold 等工具精细编排。
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# lemonPPT - AI-powered presentation generation
|
|
2
|
+
# Copyright (c) 2026 lemonforme
|
|
3
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
|
+
|
|
5
|
+
name: lemonppt
|
|
6
|
+
description: |
|
|
7
|
+
Cursor Agent 调用 lemonPPT 的参考配置。
|
|
8
|
+
建议将以下内容写入项目根目录的 .cursorrules 文件,或作为 Cursor Composer 的 system prompt 片段使用。
|
|
9
|
+
|
|
10
|
+
cursorrules: |
|
|
11
|
+
# lemonPPT Skill 调用规范
|
|
12
|
+
|
|
13
|
+
lemonPPT 是一个结构化 goal.json → 视觉 PPT 的渲染与导出引擎。
|
|
14
|
+
|
|
15
|
+
## 能力边界
|
|
16
|
+
- ✅ 将 `goal.json` 渲染为可离线打开的 HTML deck(支持浏览器内编辑)
|
|
17
|
+
- ✅ 导出可编辑 PPTX 或截图 PDF
|
|
18
|
+
- ✅ 根据 `role` 自动挑选合适版式
|
|
19
|
+
- ✅ 内置自然语言 → `goal.json` 生成(`lemonppt generate`)
|
|
20
|
+
- ✅ 程序化选页(`lemonppt layout-query`)、查看版式契约(`lemonppt inspect-layout`)
|
|
21
|
+
- ✅ goal.json 规范化(`lemonppt write-safe-props`)与校验(`lemonppt validate-goal-spec`)
|
|
22
|
+
- ❌ 不直接解析外部文档(Word/PDF/Markdown);如需“上传文档生成 PPT”,外层 Agent 需先提取文本/结构,再交给 lemonPPT
|
|
23
|
+
|
|
24
|
+
## 推荐调用流程
|
|
25
|
+
|
|
26
|
+
### 方式 1:一句话端到端
|
|
27
|
+
```bash
|
|
28
|
+
lemonppt generate "面向企业客户的 AI 助手产品发布会..." --pages 8 --theme theme01 --language zh --out ./goal.json
|
|
29
|
+
lemonppt export ./goal.json --pptx ./deck.pptx --pdf ./deck.pdf
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 方式 2:精细编排
|
|
33
|
+
```bash
|
|
34
|
+
lemonppt list-themes
|
|
35
|
+
lemonppt layout-query --theme theme06 --role metric --limit 5
|
|
36
|
+
lemonppt inspect-layout theme06_metric_hero_v1
|
|
37
|
+
lemonppt goal-scaffold --title "AI 产业投资图谱" --goal "..." --theme theme06 --pages 10 --out ./goal.json
|
|
38
|
+
# 外层 Agent 填充 props 后
|
|
39
|
+
lemonppt write-safe-props ./goal.json --write
|
|
40
|
+
lemonppt validate-goal-spec ./goal.json
|
|
41
|
+
lemonppt export ./goal.json --pptx ./deck.pptx
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 关键约束
|
|
45
|
+
- 不要直接为 slide 指定 `layout`;优先只提供 `role` 与 `props`,由系统自动选版式。
|
|
46
|
+
- 所有字符串字段必须非空,数组字段必须非空且元素关键字段非空。
|
|
47
|
+
- theme 默认值是 theme01;如需 theme06 请在 generate 或 goal-scaffold 时显式指定。
|