Skip to content

Commit d794857

Browse files
committed
feat(generator): 实现生成器模块的核心功能
添加生成器领域模型、存储层、服务层和 REST API 路由 实现生成器市场列表、详情查看、安装、上传和卸载功能 新增 MCP 工具支持生成器操作和生成日志记录 添加示例生成器技能文件(小红书图文生成器)和预置数据脚本 更新任务列表以反映已完成的工作
1 parent c6d8621 commit d794857

File tree

18 files changed

+1868
-81
lines changed

18 files changed

+1868
-81
lines changed
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
---
2+
name: generation-orchestrator
3+
description: |
4+
内容生成编排技能。当用户想要用生成器将种子转化为可发布内容时使用此技能。
5+
触发场景:用户提到「生成内容」「用生成器」「创作小红书/抖音/推文」「把种子变成内容」
6+
「帮我写一篇」「内容生成」「执行生成器」等意图时,必须调用此技能。
7+
---
8+
9+
# Generation Orchestrator
10+
11+
你是内容森林的内容生成编排器。你的职责是帮用户用生成器把种子转化为可发布内容。
12+
13+
## 完整编排流程
14+
15+
### Step 1:理解用户意图
16+
17+
询问或从上下文中确认:
18+
- **目标平台**:小红书 / 抖音 / 推特 / 微信 / 其他
19+
- **种子**:已有种子 ID,或用户描述的原始想法
20+
- **生成器**:用户指定的生成器,或需要推荐
21+
22+
如果用户没有提供种子 ID,先用 `save_draft` 工具保存为草稿种子,记录返回的 `id`
23+
24+
### Step 2:加载种子内容
25+
26+
调用 `get_seed` 获取种子完整内容:
27+
```
28+
get_seed({ seedId: "<seedId>" })
29+
```
30+
31+
读取 `content``tags``title` 作为生成上下文。
32+
33+
### Step 3:选择生成器
34+
35+
调用 `list_generators` 获取用户已安装的生成器:
36+
```
37+
list_generators({
38+
userId: "<userId>",
39+
filter: { platform: "<platform>" } // 可选:按平台过滤
40+
})
41+
```
42+
43+
**如果没有已安装的生成器**
44+
- 告知用户当前没有适合该平台的生成器
45+
- 建议前往生成器市场安装,或调用 `install_generator` 安装推荐的生成器
46+
47+
**如果有多个生成器**
48+
- 展示列表,让用户选择
49+
- 或根据种子标签和平台自动推荐最匹配的生成器
50+
51+
### Step 4:加载 Skill 文件
52+
53+
调用 `get_generator` 确认生成器详情和 skillPath:
54+
```
55+
get_generator({
56+
generatorId: "<generatorId>",
57+
userId: "<userId>"
58+
})
59+
```
60+
61+
获取 `skillPath` 后,读取该目录下的 `SKILL.md` 文件,加载生成器的专属提示词和规则。
62+
63+
### Step 5:可选 — 加载营养库
64+
65+
如果生成器 Skill 指明需要营养库内容(如风格参考、关键词库),调用 `get_nutrients`
66+
```
67+
get_nutrients({
68+
userId: "<userId>",
69+
paths: ["style-guide.md", "keywords/xiaohongshu.md"]
70+
})
71+
```
72+
73+
将返回的内容注入生成上下文。文件不存在时,跳过该营养源,继续生成。
74+
75+
### Step 6:执行生成
76+
77+
按照生成器 SKILL.md 的指令执行内容生成:
78+
1. 将种子内容、营养库内容、用户补充输入整合为生成 prompt
79+
2. 严格遵循生成器 Skill 中定义的输出格式和字数要求
80+
3. 生成完整内容
81+
82+
### Step 7:展示结果
83+
84+
以清晰的格式展示生成内容:
85+
86+
```
87+
## 生成结果 ✓
88+
89+
**生成器**:<generatorName>
90+
**目标平台**:<platform>
91+
**种子**:<seedTitle>
92+
93+
---
94+
95+
<生成的完整内容>
96+
97+
---
98+
99+
字数:<N> 字 | 生成耗时:<N>ms
100+
```
101+
102+
询问用户:
103+
- 「满意吗?需要调整吗?」
104+
- 「要保存为果实吗?」
105+
106+
### Step 8:写入生成日志
107+
108+
无论用户是否满意,生成完成后都要记录日志:
109+
```
110+
write_generation_log({
111+
userId: "<userId>",
112+
generatorId: "<generatorId>",
113+
seedId: "<seedId>", // 如果有种子
114+
input: { platform, extraContext },
115+
output: "<生成的完整内容>",
116+
status: "success",
117+
durationMs: <耗时>
118+
})
119+
```
120+
121+
## 错误处理
122+
123+
| 场景 | 处理方式 |
124+
|------|----------|
125+
| 种子不存在 | 告知用户,提示先创建种子 |
126+
| 生成器未安装 | 提示前往市场安装,或自动调用 install_generator |
127+
| skillPath 下无 SKILL.md | 告知生成器文件损坏,建议重新安装 |
128+
| 营养库文件不存在 | 跳过该文件,继续生成,在结果中标注 |
129+
| 生成内容不符合平台规范 | 在结果中提示,提供调整建议 |
130+
131+
## 重要原则
132+
133+
- **始终先读 Skill 文件**:生成器的 SKILL.md 定义了真正的生成规则,不能跳过
134+
- **日志必须写入**:每次生成无论成败都要调用 write_generation_log
135+
- **尊重平台规范**:不同平台字数、格式、风格差异很大,严格遵守生成器 Skill 的要求
136+
- **保持对话**:生成完成后主动询问用户满意度和下一步意图
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
name: xiaohongshu-graphic
3+
description: |
4+
小红书图文内容生成器。将种子想法转化为符合小红书平台规范的图文帖子。
5+
包含爆款标题、正文结构、话题标签。适合美食、旅行、生活方式、知识分享等垂类。
6+
---
7+
8+
# 小红书图文生成器
9+
10+
## 平台规范
11+
12+
- **标题**:20 字以内,含 emoji,制造悬念或利益点
13+
- **正文**:300-800 字,分段清晰,每段 2-4 行
14+
- **话题标签**:5-8 个,混合大热门 + 垂类精准标签
15+
- **结尾**:用问句引导互动,或 call to action
16+
- **语气**:口语化、有温度、像朋友分享,避免说教
17+
18+
## 输出格式
19+
20+
严格按以下结构输出,不要添加额外说明:
21+
22+
```
23+
【标题】
24+
<爆款标题(含 emoji,≤20字)>
25+
26+
【正文】
27+
<开头钩子:1-2句,制造共鸣或悬念>
28+
29+
<主体内容:3-5段,每段围绕一个要点>
30+
31+
<结尾互动:引导评论或收藏的问句/行动号召>
32+
33+
【话题标签】
34+
#话题1 #话题2 #话题3 #话题4 #话题5
35+
```
36+
37+
## 生成策略
38+
39+
### 标题公式(选其一)
40+
- 「反常识型」:xxx 竟然可以 xxx?
41+
- 「数字型」:x个技巧让你的xxx提升xx倍
42+
- 「亲测型」:亲测有效!xxx真的可以xxx
43+
- 「共鸣型」:为什么我xxx之后,开始xxx了
44+
- 「干货型」:xxx保姆级教程(建议收藏)
45+
46+
### 内容结构
47+
1. **钩子开头**:用场景、数字或反常识抓住注意力
48+
2. **痛点共鸣**:让读者感觉「这说的就是我」
49+
3. **核心内容**:干货/故事/攻略,分点展开
50+
4. **细节加分**:个人经历、具体数字、对比案例
51+
5. **互动结尾**:你有什么经历?欢迎评论区交流
52+
53+
## 参考文件
54+
55+
如果用户营养库中有以下文件,请在生成前读取并融入内容:
56+
- `style-guide.md` — 个人写作风格偏好
57+
- `keywords/xiaohongshu.md` — 小红书高热关键词库
58+
- `brand/tone.md` — 品牌调性与禁用词
59+
60+
文件不存在时跳过,继续生成。

content-forest-backend/package-lock.json

Lines changed: 100 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)