yuanflow-cli 0.1.43 → 0.1.45
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/README.md +34 -4
- package/package.json +1 -1
- package/skills/yuanflow-skill/README.md +7 -0
- package/skills/yuanflow-skill/SKILL.md +24 -9
- package/skills/yuanflow-skill//345/243/260/351/237/263/345/205/213/351/232/206/SKILL.md +146 -0
- package/skills/yuanflow-skill//345/243/260/351/237/263/345/244/215/345/210/273/SKILL.md +103 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/SKILL.md +77 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/agents/openai.yaml +8 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/assets/templates/editorial-publishing.html +65 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/assets/templates/lifestyle-collage.html +49 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/assets/templates/product-brand.html +50 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/assets/templates/social-campaign.html +49 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/assets/templates/technical-diagram.html +45 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/overview.html +272 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/references/commercial-system.md +56 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/references/layout-playbook.md +98 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/references/quality-check.md +58 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/references/style-atlas.md +728 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/references/use-case-recipes.md +116 -0
- package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/scripts/check_visual_card.py +92 -0
- package/src/agent-protocol.js +3 -0
- package/src/cli.js +24 -0
- package/src/voice-tools.js +471 -0
package/README.md
CHANGED
|
@@ -5,6 +5,8 @@ YuanFlow 的 npm 包,包含两个命令入口:
|
|
|
5
5
|
- `yuanflow-cli`:社媒 API 转 CLI,覆盖完整 registry、快捷命令、schema、dry-run 和 agent-json 输出。
|
|
6
6
|
- `yuanflow-skill`:把 `YuanFlow-skill` 注入到本机支持的 AI Agent skills 目录。
|
|
7
7
|
- `飞书官方技能`:YuanFlow-main 内置环境通过受控工具托管安装并调用飞书官方 `@larksuite/cli`,npm 包只提供 Skill 说明,不复制官方 CLI 源码。
|
|
8
|
+
- `视觉卡片生成`:作为 Skill、HTML 模板、参考文档和检查脚本随包分发,不新增独立 `yuanflow-cli visual-card` 命令。
|
|
9
|
+
- `声音克隆 / 声音复刻`:通过 `yuanflow-cli voice` 命令创建、查询、激活 `voice_xxx`,并把文本复刻生成音频文件。
|
|
8
10
|
|
|
9
11
|
## 安装
|
|
10
12
|
|
|
@@ -19,6 +21,7 @@ npm install -g yuanflow-cli
|
|
|
19
21
|
```bash
|
|
20
22
|
yuanflow-cli --help
|
|
21
23
|
yuanflow-skill list-agents
|
|
24
|
+
yuanflow-skill list-skills
|
|
22
25
|
```
|
|
23
26
|
|
|
24
27
|
## API CLI
|
|
@@ -51,6 +54,10 @@ yuanflow-cli video plan --project "D:\素材\yuanflow-video-edit" --timeline-pla
|
|
|
51
54
|
yuanflow-cli ai qwen3-vl-plus --prompt "描述这张图" --image-url "https://example.com/image.png" --format agent-json
|
|
52
55
|
yuanflow-cli ai qwen3-vl-plus --prompt "总结这个视频画面" --video-url "https://example.com/video.mp4" --format agent-json
|
|
53
56
|
yuanflow-cli ai qwen3-vl-plus --prompt "描述本地视频" --video-file "D:\素材\demo.mp4" --format agent-json
|
|
57
|
+
yuanflow-cli voice clone --file-transfer "D:\voice\sample.wav" --name "我的声音" --activate --format agent-json
|
|
58
|
+
yuanflow-cli voice list --format agent-json
|
|
59
|
+
yuanflow-cli voice activate --voice voice_xxx --format agent-json
|
|
60
|
+
yuanflow-cli voice replicate --text "你好,这是声音复刻测试。" --voice voice_xxx --output "D:\voice\replicate.mp3" --format agent-json
|
|
54
61
|
yuanflow-cli ai doubao-tts voices --format agent-json
|
|
55
62
|
yuanflow-cli ai doubao-tts voice --voice zh_female_xiaohe_uranus_bigtts --format agent-json
|
|
56
63
|
yuanflow-cli ai doubao-tts voice-download --voice zh_female_xiaohe_uranus_bigtts --output "D:\voice\preview.mp3" --format agent-json
|
|
@@ -67,6 +74,33 @@ YUANCHUANG_API_TOKEN=<你的令牌>
|
|
|
67
74
|
|
|
68
75
|
token 优先级:`--token` > `YUANCHUANG_API_TOKEN` > 本地 `config.token`。独立 CLI 用户可以使用环境变量或 `config set-token`;在 YuanFlow-main 内置环境使用时,token 由 YuanFlow-main 内置环境注入,不需要手动配置。本地图片/视频上传统一使用 YuanFlow 文件中转,不需要用户配置第三方平台 Key。
|
|
69
76
|
|
|
77
|
+
### 声音克隆与声音复刻
|
|
78
|
+
|
|
79
|
+
`voice` 命令组用于创建声音克隆、查询已有克隆音色 ID、激活默认音色,并使用 `voice_xxx` 把文本复刻为音频文件。声音复刻前必须先有 `voice_xxx`,或已激活默认音色。
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# 创建声音克隆:本地音频先走 YuanFlow 文件中转
|
|
83
|
+
yuanflow-cli voice clone --file-transfer "D:\voice\sample.wav" --name "我的声音" --activate --format agent-json
|
|
84
|
+
|
|
85
|
+
# 查询已有声音克隆 ID
|
|
86
|
+
yuanflow-cli voice list --format agent-json
|
|
87
|
+
|
|
88
|
+
# 激活某个克隆音色为默认音色
|
|
89
|
+
yuanflow-cli voice activate --voice voice_xxx --format agent-json
|
|
90
|
+
|
|
91
|
+
# 使用克隆音色生成复刻音频
|
|
92
|
+
yuanflow-cli voice replicate --text "你好,这是声音复刻测试。" --voice voice_xxx --output "D:\voice\replicate.mp3" --format agent-json
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
命令清单:
|
|
96
|
+
|
|
97
|
+
- `voice clone`:`POST /v1/audio/voices`,创建声音克隆,常用参数 `--file`、`--file-transfer`、`--audio-url`、`--name`、`--activate`。
|
|
98
|
+
- `voice list`:`GET /v1/audio/voices`,查询当前用户已有声音克隆音色 ID。
|
|
99
|
+
- `voice activate`:`POST /v1/audio/voices/{voice_xxx}/activate`,把已有声音克隆设为默认音色。
|
|
100
|
+
- `voice replicate`:`POST /v1/audio/speech`,使用 `voice_xxx` 或 `default` 生成复刻音频,真实调用时必须传 `--output`。
|
|
101
|
+
|
|
102
|
+
`--file-transfer` 会先通过 YuanFlow 文件中转上传本地音频,再把临时访问链接提交给 YuanFlow API。`--file` 保留为直接提交本地音频的兼容方式。`--file`、`--file-transfer` 和 `--audio-url` 只能选择一个。
|
|
103
|
+
|
|
70
104
|
### AI 模型命令
|
|
71
105
|
|
|
72
106
|
`ai` 命令用于调用 YuanFlow API 的 OpenAI 兼容端点。CLI 对外只使用 YuanFlow API 模型参数,不暴露底层供应商内部模型名。
|
|
@@ -77,8 +111,6 @@ yuanflow-cli ai qwen3-vl-plus --prompt "描述这张图" --image-url "https://ex
|
|
|
77
111
|
yuanflow-cli ai qwen3-vl-plus --prompt "总结这个视频画面" --video-url "https://example.com/video.mp4" --format agent-json
|
|
78
112
|
yuanflow-cli ai qwen3-vl-plus --prompt "描述本地图片" --image-file "D:\素材\cover.png" --format agent-json
|
|
79
113
|
yuanflow-cli ai qwen3-vl-plus --prompt "描述本地视频" --video-file "D:\素材\demo.mp4" --format agent-json
|
|
80
|
-
yuanflow-cli ai qwen-voice-enrollment --file "D:\voice\sample.wav" --name demo --activate --format agent-json
|
|
81
|
-
yuanflow-cli ai qwen3-tts-vc-realtime-2026-01-15 --text "你好" --voice voice_xxx --output "D:\voice\qwen.mp3" --format agent-json
|
|
82
114
|
yuanflow-cli ai fun-asr --audio-url "https://example.com/audio.wav" --response-format verbose_json --format agent-json
|
|
83
115
|
yuanflow-cli ai doubao-tts voices --format agent-json
|
|
84
116
|
yuanflow-cli ai doubao-tts voice --voice zh_female_xiaohe_uranus_bigtts --format agent-json
|
|
@@ -120,8 +152,6 @@ yuanflow-cli ai qwen3-vl-plus --prompt "描述本地视频" --video-file "D:\素
|
|
|
120
152
|
命令清单:
|
|
121
153
|
|
|
122
154
|
- `ai qwen3-vl-plus`:`POST /v1/chat/completions`,文本/图片/视频理解,常用参数 `--prompt`、`--image-url`、`--video-url`、`--image-file`、`--video-file`。
|
|
123
|
-
- `ai qwen-voice-enrollment`:`POST /v1/audio/voices`,音色复刻,常用参数 `--file` 或 `--audio-url`、`--name`、`--activate`。
|
|
124
|
-
- `ai qwen3-tts-vc-realtime-2026-01-15`:`POST /v1/audio/speech`,复刻音色合成,`--voice` 使用 `voice_xxx` 或 `default`。
|
|
125
155
|
- `ai fun-asr`:`POST /v1/audio/transcriptions`,语音识别,`--audio-url` 适合远程音频,`--file` 适合本地音频直传。
|
|
126
156
|
- `ai doubao-tts`:`POST /v1/audio/speech`,豆包语音合成,`--voice` 直接传豆包官方音色 ID。
|
|
127
157
|
- `ai doubao-tts voices`:`GET /api/voice-assets/doubao/voices`,查询 doubao-tts 可用音色列表。
|
package/package.json
CHANGED
|
@@ -11,6 +11,7 @@ YuanFlow Skill 是 `yuanflow-cli` 的 Agent Skill 仓库,用于把社媒平台
|
|
|
11
11
|
- `视频拆解/`:自媒体创作场景的对标视频拆解 Skill,先查自媒体知识库对标拆解规则,再用 `qwen3-vl-plus` 上传视频并按规则拆解。
|
|
12
12
|
- `YuanFlow文件中转工具/`:YuanFlow 文件中转、签名链接、对象复制 Skill,内部兼容命令走 `yuanflow-cli oss`。
|
|
13
13
|
- `生图技能/`:图片生成与编辑 Skill,优先走 YuanFlow-main 内置环境的 `yuanflow_image_request`。
|
|
14
|
+
- `视觉卡片生成/`:小红书图文卡片、公众号封面、文章插图、海报、信息图和商业视觉方案卡生成 Skill,使用 HTML 模板、风格参考和质量检查脚本完成交付。
|
|
14
15
|
- `公众号生成与发布/`:公众号文章创作、主题预览、微信内联 HTML 排版、正文图片上传和草稿箱推送 Skill。
|
|
15
16
|
- `小红书运营/`:小红书选题调研、笔记搜索、账号分析、评论采集、文案创作、发布前检查和互动操作 Skill;不建议浏览器自动发布作品,除非用户明确无视平台识别和限流风险并强制要求。
|
|
16
17
|
- `视频智能剪辑/`:主音频 + B-roll 素材智能剪辑 Skill,先查自媒体知识库的视频剪辑策略,保存 `strategy_snapshot.json`,再通过 ASR/forced alignment 导入 `audio_alignment.json`,按 1 秒 1 帧抽帧并回写视觉理解,由 Agent 生成 `timeline_plan` 和 EDL,交给 `yuanflow-cli video` 校验和渲染。
|
|
@@ -39,6 +40,7 @@ YuanFlow Skill 是 `yuanflow-cli` 的 Agent Skill 仓库,用于把社媒平台
|
|
|
39
40
|
- 对自媒体对标视频、爆款视频、竞品视频做内容结构、开头钩子、脚本节奏、镜头节奏和可复用创作方法拆解;开始前先查自媒体知识库规则,视频 URL 先解析并保存本地。
|
|
40
41
|
- 上传文件到 YuanFlow 文件中转、生成签名链接或复制文件对象。
|
|
41
42
|
- 生成图片、编辑图片,并缓存返回 URL 或 base64 图片。生成图片必填 `prompt`,可选 `size / quality / style / n / response_format`;编辑图片必须通过 multipart 上传本地图片。
|
|
43
|
+
- 生成小红书图文卡片、公众号封面、文章插图、社交媒体配图、海报、信息图和商业视觉方案卡;视觉卡片生成不新增独立 CLI 命令,按 Skill 模板、参考文档和检查脚本完成。
|
|
42
44
|
- 把自媒体分析、数据复盘、文案方案、账号监控、知识梳理和执行计划生成可直接打开的单页 HTML 报告。
|
|
43
45
|
- 生成或改写公众号文章,进入主题选择预览后导出微信公众号编辑器可粘贴 HTML,或推送到公众号草稿箱。
|
|
44
46
|
- 处理小红书单段或全流程任务,例如只写文案、只采集笔记、只分析账号、只采集评论、只做点赞收藏评论回复,或完整执行图文/视频发布流程;每轮开始前必须明确任务边界。写小红书文案前先查自媒体知识库方法论,遇到封面或正文插图生成时先确认 4:3 或 3:4 比例并调用生图技能。
|
|
@@ -115,6 +117,11 @@ yuanflow-skill list-skills
|
|
|
115
117
|
│ └─ SKILL.md
|
|
116
118
|
├─ 生图技能
|
|
117
119
|
│ └─ SKILL.md
|
|
120
|
+
├─ 视觉卡片生成
|
|
121
|
+
│ ├─ SKILL.md
|
|
122
|
+
│ ├─ assets/
|
|
123
|
+
│ ├─ references/
|
|
124
|
+
│ └─ scripts/
|
|
118
125
|
├─ 公众号生成与发布
|
|
119
126
|
│ ├─ SKILL.md
|
|
120
127
|
│ ├─ scripts/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: YuanFlow技能总入口
|
|
3
|
-
description:
|
|
3
|
+
description: 当用户需要处理自媒体平台接口工作流、平台数据查询、命令发现、生图、视觉卡片生成、YuanFlow 文件中转、知识库查询、HTML 报告生成,或需要在 YuanFlow 子技能之间选择合适能力时使用。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# YuanFlow Skill
|
|
@@ -23,6 +23,7 @@ description: 当用户需要处理自媒体平台接口工作流、平台数据
|
|
|
23
23
|
- `视频拆解/`
|
|
24
24
|
- `YuanFlow文件中转工具/`
|
|
25
25
|
- `生图技能/`
|
|
26
|
+
- `视觉卡片生成/`
|
|
26
27
|
- `公众号生成与发布/`
|
|
27
28
|
- `小红书运营/`
|
|
28
29
|
- `热门内容整理/`
|
|
@@ -228,7 +229,21 @@ description: 当用户需要处理自媒体平台接口工作流、平台数据
|
|
|
228
229
|
|
|
229
230
|
- `生图技能`
|
|
230
231
|
|
|
231
|
-
### 13. 走
|
|
232
|
+
### 13. 走 `视觉卡片生成`
|
|
233
|
+
|
|
234
|
+
遇到下面这些需求,优先进入这个子 Skill:
|
|
235
|
+
|
|
236
|
+
- 生成小红书图文卡片、公众号封面、文章插图、社交媒体配图、海报、信息图或商业视觉方案卡。
|
|
237
|
+
- 用户提供主题、文章、截图、照片、笔记、提纲或脚本,希望转成可复用、可检查、可商业交付的视觉卡片。
|
|
238
|
+
- 用户要求多风格配图、封面设计、卡片排版、视觉风格探索或 HTML 视觉模板输出。
|
|
239
|
+
|
|
240
|
+
如果用户只要求生成图片素材或编辑图片,先用 `生图技能`;如果用户要求把完整方案整理成长文报告,改用 `HTML报告生成`。
|
|
241
|
+
|
|
242
|
+
子 Skill 名称:
|
|
243
|
+
|
|
244
|
+
- `视觉卡片生成`
|
|
245
|
+
|
|
246
|
+
### 14. 走 `HTML报告生成`
|
|
232
247
|
|
|
233
248
|
遇到下面这些需求,优先进入这个子 Skill:
|
|
234
249
|
|
|
@@ -240,7 +255,7 @@ description: 当用户需要处理自媒体平台接口工作流、平台数据
|
|
|
240
255
|
|
|
241
256
|
- `HTML报告生成`
|
|
242
257
|
|
|
243
|
-
###
|
|
258
|
+
### 15. 走 `公众号生成与发布`
|
|
244
259
|
|
|
245
260
|
遇到下面这些需求,优先进入这个子 Skill:
|
|
246
261
|
|
|
@@ -252,7 +267,7 @@ description: 当用户需要处理自媒体平台接口工作流、平台数据
|
|
|
252
267
|
|
|
253
268
|
- `公众号生成与发布`
|
|
254
269
|
|
|
255
|
-
###
|
|
270
|
+
### 16. 走 `小红书运营`
|
|
256
271
|
|
|
257
272
|
遇到下面这些需求,优先进入这个子 Skill:
|
|
258
273
|
|
|
@@ -266,7 +281,7 @@ description: 当用户需要处理自媒体平台接口工作流、平台数据
|
|
|
266
281
|
|
|
267
282
|
- `小红书运营`
|
|
268
283
|
|
|
269
|
-
###
|
|
284
|
+
### 17. 走 `个人创作库`
|
|
270
285
|
|
|
271
286
|
遇到下面这些需求,优先进入这个子 Skill:
|
|
272
287
|
|
|
@@ -280,7 +295,7 @@ description: 当用户需要处理自媒体平台接口工作流、平台数据
|
|
|
280
295
|
|
|
281
296
|
- `个人创作库`
|
|
282
297
|
|
|
283
|
-
###
|
|
298
|
+
### 18. 走 `本地音视频转文字`
|
|
284
299
|
|
|
285
300
|
只有当用户明确要求使用本地音视频转文字、本地转写、本地 ASR、离线转写或本地模型把音频/视频转成文字时,才进入这个子 Skill。
|
|
286
301
|
|
|
@@ -290,7 +305,7 @@ description: 当用户需要处理自媒体平台接口工作流、平台数据
|
|
|
290
305
|
|
|
291
306
|
- `本地音视频转文字`
|
|
292
307
|
|
|
293
|
-
###
|
|
308
|
+
### 19. 走 `音视频在线转文字`
|
|
294
309
|
|
|
295
310
|
遇到下面这些需求,优先进入这个子 Skill:
|
|
296
311
|
|
|
@@ -304,7 +319,7 @@ description: 当用户需要处理自媒体平台接口工作流、平台数据
|
|
|
304
319
|
|
|
305
320
|
- `音视频在线转文字`
|
|
306
321
|
|
|
307
|
-
###
|
|
322
|
+
### 20. 走 `视觉理解`
|
|
308
323
|
|
|
309
324
|
遇到下面这些需求,优先进入这个子 Skill:
|
|
310
325
|
|
|
@@ -318,7 +333,7 @@ description: 当用户需要处理自媒体平台接口工作流、平台数据
|
|
|
318
333
|
|
|
319
334
|
- `视觉理解`
|
|
320
335
|
|
|
321
|
-
###
|
|
336
|
+
### 21. 走 `视频拆解`
|
|
322
337
|
|
|
323
338
|
遇到下面这些需求,优先进入这个子 Skill:
|
|
324
339
|
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 声音克隆
|
|
3
|
+
description: 当用户需要创建声音克隆、查询已有声音克隆音色 ID、激活默认克隆音色,或为后续声音复刻准备 voice_xxx 时使用。本 Skill 通过 YuanFlow API 和 yuanflow-cli voice 命令完成。
|
|
4
|
+
emoji: 🎙️
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 声音克隆
|
|
8
|
+
|
|
9
|
+
本 Skill 用于把参考音频注册成可复用的声音克隆音色,并返回 `voice_xxx` 音色 ID。后续要生成复刻音频时,交给 `声音复刻` Skill。
|
|
10
|
+
|
|
11
|
+
## 外部 CLI 主流程
|
|
12
|
+
|
|
13
|
+
外部 Agent 或用户直接使用时,优先使用 `yuanflow-cli voice ...` 命令。
|
|
14
|
+
|
|
15
|
+
1. 先确认本机可执行 `yuanflow-cli --help`。
|
|
16
|
+
2. 外部 CLI 使用 `YUANCHUANG_API_TOKEN` 或 `yuanflow-cli config set-token <你的令牌>` 完成鉴权。
|
|
17
|
+
3. 选择音频输入方式:
|
|
18
|
+
- 本地音频直接提交:`--file`
|
|
19
|
+
- 本地音频先走 YuanFlow 文件中转:`--file-transfer`
|
|
20
|
+
- 已有公网音频链接:`--audio-url`
|
|
21
|
+
4. 创建成功后,保存返回的 `voice_xxx`。这是后续声音复刻必须使用的音色 ID。
|
|
22
|
+
|
|
23
|
+
不要在回复、日志或文件中暴露 token。用户主流程统一称为 YuanFlow API 和 YuanFlow 文件中转,不要求用户配置第三方平台 Key。
|
|
24
|
+
|
|
25
|
+
## 创建声音克隆
|
|
26
|
+
|
|
27
|
+
推荐本地文件使用 YuanFlow 文件中转:
|
|
28
|
+
|
|
29
|
+
```powershell
|
|
30
|
+
yuanflow-cli voice clone --file-transfer "D:\voice\sample.wav" --name "我的声音" --activate --format agent-json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
如果用户明确希望直接提交本地音频:
|
|
34
|
+
|
|
35
|
+
```powershell
|
|
36
|
+
yuanflow-cli voice clone --file "D:\voice\sample.wav" --name "我的声音" --activate --format agent-json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
如果已经有可访问音频 URL:
|
|
40
|
+
|
|
41
|
+
```powershell
|
|
42
|
+
yuanflow-cli voice clone --audio-url "https://example.com/sample.wav" --name "我的声音" --activate --format agent-json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
返回里重点读取:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
data.response.id
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
如果响应结构被 Agent JSON 包裹,优先找 `voice_xxx` 格式的 `id` 字段。不要把内部原始音色参数展示给用户。
|
|
52
|
+
|
|
53
|
+
## 查询已有声音克隆 ID
|
|
54
|
+
|
|
55
|
+
当用户已经做过声音克隆但忘记 ID,先查询:
|
|
56
|
+
|
|
57
|
+
```powershell
|
|
58
|
+
yuanflow-cli voice list --format agent-json
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
输出时只需要整理这些字段:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
声音名称:
|
|
65
|
+
音色 ID:voice_xxx
|
|
66
|
+
状态:
|
|
67
|
+
是否默认:
|
|
68
|
+
创建时间:
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
如果没有可用音色,提示用户先提供参考音频创建声音克隆。
|
|
72
|
+
|
|
73
|
+
## 激活默认音色
|
|
74
|
+
|
|
75
|
+
如果用户希望后续用 `default` 复刻,或指定某个克隆音色为默认:
|
|
76
|
+
|
|
77
|
+
```powershell
|
|
78
|
+
yuanflow-cli voice activate --voice voice_xxx --format agent-json
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 音频要求
|
|
82
|
+
|
|
83
|
+
- 优先使用清晰、无背景音乐、无明显混响的人声音频。
|
|
84
|
+
- 建议使用 wav、mp3、m4a、flac 等常见格式。
|
|
85
|
+
- 文件过大、噪音明显或多人混说时,先让用户换音频或裁剪。
|
|
86
|
+
- 不要上传身份证、合同、私密通话、未授权人物声音等敏感内容,除非用户明确确认且任务确实需要。
|
|
87
|
+
|
|
88
|
+
## YuanFlow-main 内置环境
|
|
89
|
+
|
|
90
|
+
只有在 YuanFlow-main 内置环境中,才使用受控工具 `yuanflow_cli_call`。token、受管包路径和输出目录由 YuanFlow-main 管理,不写成外部用户必备步骤。
|
|
91
|
+
|
|
92
|
+
创建声音克隆:
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"args": [
|
|
97
|
+
"voice",
|
|
98
|
+
"clone",
|
|
99
|
+
"--file-transfer",
|
|
100
|
+
"D:\\voice\\sample.wav",
|
|
101
|
+
"--name",
|
|
102
|
+
"我的声音",
|
|
103
|
+
"--activate",
|
|
104
|
+
"--format",
|
|
105
|
+
"agent-json"
|
|
106
|
+
],
|
|
107
|
+
"timeout": 300
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
查询已有声音克隆:
|
|
112
|
+
|
|
113
|
+
```json
|
|
114
|
+
{
|
|
115
|
+
"args": [
|
|
116
|
+
"voice",
|
|
117
|
+
"list",
|
|
118
|
+
"--format",
|
|
119
|
+
"agent-json"
|
|
120
|
+
],
|
|
121
|
+
"timeout": 120
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
激活默认音色:
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"args": [
|
|
130
|
+
"voice",
|
|
131
|
+
"activate",
|
|
132
|
+
"--voice",
|
|
133
|
+
"voice_xxx",
|
|
134
|
+
"--format",
|
|
135
|
+
"agent-json"
|
|
136
|
+
],
|
|
137
|
+
"timeout": 120
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## 失败处理
|
|
142
|
+
|
|
143
|
+
- token 缺失:说明需要配置 YuanFlow API token,或在 YuanFlow-main 受控环境中运行。
|
|
144
|
+
- 没有返回 `voice_xxx`:说明声音克隆未完成,不要继续声音复刻。
|
|
145
|
+
- 已存在克隆限制:先用 `voice list` 查询已有音色,必要时让用户选择已有 `voice_xxx` 继续。
|
|
146
|
+
- 音频不可访问:如果使用 URL,让用户换成可访问链接;如果是本地文件,改用 `--file-transfer`。
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 声音复刻
|
|
3
|
+
description: 当用户需要使用已有声音克隆 ID 生成复刻语音、把文字合成为用户克隆声音,或要求根据 voice_xxx 输出音频文件时使用。使用前必须先完成声音克隆或查询到已有 voice_xxx。
|
|
4
|
+
emoji: 🔊
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 声音复刻
|
|
8
|
+
|
|
9
|
+
本 Skill 用于把文本合成为已有克隆音色的音频。使用前必须满足其中一个条件:
|
|
10
|
+
|
|
11
|
+
- 已通过 `声音克隆` Skill 创建过声音克隆,并拿到 `voice_xxx`。
|
|
12
|
+
- 已通过 `yuanflow-cli voice list` 查询到可用 `voice_xxx`。
|
|
13
|
+
- 用户明确指定使用已激活默认音色 `default`。
|
|
14
|
+
|
|
15
|
+
如果没有声音克隆 ID,先调用 `声音克隆`,不要直接复刻。
|
|
16
|
+
|
|
17
|
+
## 外部 CLI 主流程
|
|
18
|
+
|
|
19
|
+
外部 Agent 或用户直接使用时,优先使用 `yuanflow-cli voice replicate`。
|
|
20
|
+
|
|
21
|
+
1. 先确认本机可执行 `yuanflow-cli --help`。
|
|
22
|
+
2. 外部 CLI 使用 `YUANCHUANG_API_TOKEN` 或 `yuanflow-cli config set-token <你的令牌>` 完成鉴权。
|
|
23
|
+
3. 确认 `--voice` 是 `voice_xxx` 或 `default`。
|
|
24
|
+
4. 用 `--output` 指定音频保存路径。
|
|
25
|
+
|
|
26
|
+
不要在回复、日志或文件中暴露 token。用户主流程统一称为 YuanFlow API,不要求用户配置第三方平台 Key。
|
|
27
|
+
|
|
28
|
+
## 查询或确认音色 ID
|
|
29
|
+
|
|
30
|
+
如果用户没有提供 `voice_xxx`,先查询:
|
|
31
|
+
|
|
32
|
+
```powershell
|
|
33
|
+
yuanflow-cli voice list --format agent-json
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
如果列表中没有可用音色,转到 `声音克隆` Skill,先创建声音克隆。
|
|
37
|
+
|
|
38
|
+
## 生成复刻音频
|
|
39
|
+
|
|
40
|
+
```powershell
|
|
41
|
+
yuanflow-cli voice replicate --text "你好,这是声音复刻测试。" --voice voice_xxx --output "D:\voice\replicate.mp3" --format agent-json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
如果用户要求使用默认音色:
|
|
45
|
+
|
|
46
|
+
```powershell
|
|
47
|
+
yuanflow-cli voice replicate --text "你好,这是声音复刻测试。" --voice default --output "D:\voice\replicate.mp3" --format agent-json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
默认输出 `mp3`。用户要求 wav 或 pcm 时,增加 `--response-format`:
|
|
51
|
+
|
|
52
|
+
```powershell
|
|
53
|
+
yuanflow-cli voice replicate --text "测试内容" --voice voice_xxx --response-format wav --output "D:\voice\replicate.wav" --format agent-json
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## 输出要求
|
|
57
|
+
|
|
58
|
+
最终回复给用户时说明:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
复刻音频已生成:
|
|
62
|
+
文件路径:D:\voice\replicate.mp3
|
|
63
|
+
使用音色:voice_xxx
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
如果命令返回 agent-json,优先读取:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
data.response.output
|
|
70
|
+
data.response.bytes
|
|
71
|
+
data.response.content_type
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## YuanFlow-main 内置环境
|
|
75
|
+
|
|
76
|
+
只有在 YuanFlow-main 内置环境中,才使用受控工具 `yuanflow_cli_call`。token、受管包路径和输出目录由 YuanFlow-main 管理,不写成外部用户必备步骤。
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"args": [
|
|
81
|
+
"voice",
|
|
82
|
+
"replicate",
|
|
83
|
+
"--text",
|
|
84
|
+
"你好,这是声音复刻测试。",
|
|
85
|
+
"--voice",
|
|
86
|
+
"voice_xxx",
|
|
87
|
+
"--output",
|
|
88
|
+
"replicate.mp3",
|
|
89
|
+
"--format",
|
|
90
|
+
"agent-json"
|
|
91
|
+
],
|
|
92
|
+
"timeout": 300
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
在 YuanFlow-main 内置环境里,`--output` 会被限制到受控输出目录。不要要求用户手动传程序数据目录,也不要绕过 `yuanflow_cli_call` 直接写本地文件。
|
|
97
|
+
|
|
98
|
+
## 失败处理
|
|
99
|
+
|
|
100
|
+
- 缺少 `voice_xxx`:先调用 `声音克隆` 的查询流程或创建流程。
|
|
101
|
+
- 音色不存在或无权限:提示用户重新查询 `voice list`,不要猜测 ID。
|
|
102
|
+
- 输出路径被拒绝:在 YuanFlow-main 内置环境中改用相对文件名,让受控工具自动放入输出目录。
|
|
103
|
+
- 生成失败:报告 YuanFlow API 返回的简短错误,不暴露 token、Authorization header 或完整敏感链接。
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 视觉卡片生成
|
|
3
|
+
description: 当用户需要生成小红书图文卡片、公众号封面、文章插图、社交媒体配图、海报、信息图、视觉方案卡、商业风格设计图或多风格配图时使用。本 Skill 使用 HTML 模板、风格参考和质量检查脚本生成可复用、可检查、可商业交付的视觉卡片。
|
|
4
|
+
emoji: 🖼️
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 视觉卡片生成
|
|
8
|
+
|
|
9
|
+
## 外部 CLI 主流程
|
|
10
|
+
|
|
11
|
+
外部 Agent 或用户直接使用本 Skill 时,优先按本 Skill 的模板和参考文档完成视觉卡片生成;如果任务中需要上传素材、生成图片、理解图片/视频或调用 YuanFlow API,再使用本地 `yuanflow-cli`。
|
|
12
|
+
|
|
13
|
+
1. 如果本地可执行 `yuanflow-cli --help`,直接使用本地 CLI。
|
|
14
|
+
2. 如果本地没有 `yuanflow-cli`,再提示用户安装 `npm install -g yuanflow-cli`。
|
|
15
|
+
3. 外部 CLI 使用 `YUANCHUANG_API_TOKEN` 或 `yuanflow-cli config set-token <你的令牌>` 完成鉴权。
|
|
16
|
+
|
|
17
|
+
不要在回复、日志或文件中暴露 token。用户主流程统一称为 YuanFlow API 和 YuanFlow 文件中转,不要求用户配置第三方平台 Key。
|
|
18
|
+
|
|
19
|
+
本 Skill 本身不新增独立 `yuanflow-cli visual-card` 命令。它通过 Skill 说明、HTML 模板、参考文档和检查脚本完成视觉卡片生产。
|
|
20
|
+
|
|
21
|
+
## YuanFlow-main 内置环境
|
|
22
|
+
|
|
23
|
+
只有在 YuanFlow-main 内置环境中,才使用 `yuanflow_cli_call`、`yuanflow_image_request`、`content_workbench_update`、`artifact_files_register` 等受控工具。token、受管包路径、程序数据目录和输出目录由 YuanFlow-main 管理,不写成外部用户必备步骤。
|
|
24
|
+
|
|
25
|
+
如果用户需要先生成图片素材,可调用 `生图技能` 或 YuanFlow-main 内置图片能力;如果需要理解用户提供的图片/视频素材,可调用 `视觉理解`;如果需要上传本地素材给在线能力使用,可调用 `YuanFlow文件中转工具`。
|
|
26
|
+
|
|
27
|
+
## 适用输出
|
|
28
|
+
|
|
29
|
+
- 小红书图文:3:4 封面和 3-9 张正文卡片。
|
|
30
|
+
- 公众号封面:21:9 主封面、1:1 次封面、3:4 竖版封面。
|
|
31
|
+
- 文章插图:16:9、4:3、3:2 的正文配图。
|
|
32
|
+
- 社交媒体视觉:海报、活动图、概念图、产品卖点图、数据图、流程图。
|
|
33
|
+
- 设计方案卡:风格探索板、品牌视觉方向、信息架构卡片、方案对比图。
|
|
34
|
+
|
|
35
|
+
## 生成流程
|
|
36
|
+
|
|
37
|
+
1. 识别任务类型:封面、图文卡片、文章插图、社交配图、海报、信息图、风格探索。
|
|
38
|
+
2. 读取 `references/commercial-system.md`,确认比例、尺寸、页面角色、文字限制、证据需求和质量门禁。
|
|
39
|
+
3. 从 `references/style-atlas.md` 选择一个主风格和一个子风格;用户未指定时,按传播目标选择。
|
|
40
|
+
4. 从 `assets/templates/` 复制最接近的 HTML 模板到任务输出目录,命名为 `index.html`。
|
|
41
|
+
5. 在 `.poster` 节点上设置 `data-style`、`data-ratio`,并按页面目标调整布局模块。
|
|
42
|
+
6. 参考 `references/layout-playbook.md` 和 `references/use-case-recipes.md` 组织页面结构,避免每页都变成重复的标题加卡片。
|
|
43
|
+
7. 如果图片或截图是证据,优先使用用户提供的真实素材;如果需要生成图片,只把生成图作为素材,最终文字仍放在 HTML 中排版。
|
|
44
|
+
8. 参考 `references/quality-check.md` 做最终检查;生成 HTML 后尽量运行检查脚本。
|
|
45
|
+
|
|
46
|
+
检查命令:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
python scripts/check_visual_card.py <index.html>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 风格选择规则
|
|
53
|
+
|
|
54
|
+
- 一组输出默认只使用一个主风格,除非用户明确要求做多风格探索。
|
|
55
|
+
- 通过风格、色板、布局、材质、图片处理和文案节奏制造变化,不靠随机装饰。
|
|
56
|
+
- 不使用无意义气泡、假数据、假 UI、假截图、占位文字或不可读小字。
|
|
57
|
+
- 小红书封面优先保证缩略图可读:主标题清楚,主体视觉明确,正文不拥挤。
|
|
58
|
+
- 文章插图优先服务文章论点,不做成硬广横幅。
|
|
59
|
+
- 不同封面比例要分别设计,不能把 21:9 直接裁成 1:1 或 3:4。
|
|
60
|
+
|
|
61
|
+
## 资源说明
|
|
62
|
+
|
|
63
|
+
- `references/style-atlas.md`:风格体系、子风格、识别测试、反模式、HTML 骨架。
|
|
64
|
+
- `references/commercial-system.md`:商业交付骨架、生产标准、复用矩阵。
|
|
65
|
+
- `references/use-case-recipes.md`:封面、文章插图、社交配图、海报和风格探索配方。
|
|
66
|
+
- `references/layout-playbook.md`:按输出类型和内容模式选择布局。
|
|
67
|
+
- `references/quality-check.md`:最终质量检查清单。
|
|
68
|
+
- `assets/templates/`:可复制使用的 HTML 母版。
|
|
69
|
+
- `overview.html`:成熟风格系统和矩阵总览。
|
|
70
|
+
- `scripts/check_visual_card.py`:HTML 静态检查脚本,只依赖 Python 标准库。
|
|
71
|
+
|
|
72
|
+
## 交付要求
|
|
73
|
+
|
|
74
|
+
- 给出输出目录路径。
|
|
75
|
+
- 如用户要求渲染图片,给出渲染后的图片文件路径。
|
|
76
|
+
- 简短说明使用的风格、比例和页面数量。
|
|
77
|
+
- 如果使用了网页图片或外部素材,在任务目录中记录来源链接,并在回复中说明。
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN" data-parent-style="editorial-publishing">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
+
<title>Editorial Publishing Template</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--paper: #f3f0e8;
|
|
10
|
+
--ink: #12100d;
|
|
11
|
+
--muted: #716a60;
|
|
12
|
+
--line: rgba(18,16,13,.22);
|
|
13
|
+
--accent: #9b2f24;
|
|
14
|
+
--serif: "Songti SC", "STSong", "SimSun", serif;
|
|
15
|
+
--sans: system-ui, sans-serif;
|
|
16
|
+
--mono: ui-monospace, monospace;
|
|
17
|
+
}
|
|
18
|
+
* { box-sizing: border-box; }
|
|
19
|
+
body { margin: 0; padding: 48px; background: #1c1a17; font-family: var(--sans); }
|
|
20
|
+
.sheet { display: flex; flex-direction: column; align-items: center; gap: 42px; }
|
|
21
|
+
.poster { position: relative; overflow: hidden; background: var(--paper); color: var(--ink); isolation: isolate; }
|
|
22
|
+
.poster[data-ratio="xhs"] { width: 1080px; height: 1440px; }
|
|
23
|
+
.poster[data-ratio="article"] { width: 1600px; height: 900px; }
|
|
24
|
+
.poster[data-ratio="wide"] { width: 2100px; height: 900px; }
|
|
25
|
+
.paper-grain { position: absolute; inset: 0; opacity: .26; mix-blend-mode: multiply; background-image: radial-gradient(rgba(0,0,0,.06) 1px, transparent 1.5px); background-size: 4px 4px; }
|
|
26
|
+
.ep-pad { position: relative; z-index: 2; height: 100%; padding: 88px; display: flex; flex-direction: column; }
|
|
27
|
+
[data-ratio="article"] .ep-pad, [data-ratio="wide"] .ep-pad { padding: 76px 110px; }
|
|
28
|
+
.ep-issue, .ep-strip, .small-label { font-family: var(--mono); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
|
|
29
|
+
.ep-issue { font-size: 20px; margin: 0 0 34px; }
|
|
30
|
+
.ep-title { font-family: var(--serif); font-weight: 500; font-size: 112px; line-height: 1.08; letter-spacing: .04em; margin: 0; max-width: 880px; }
|
|
31
|
+
.ep-deck { font-family: var(--serif); font-size: 32px; line-height: 1.55; color: var(--muted); max-width: 640px; }
|
|
32
|
+
.ep-photo { margin: 44px 0 0; height: 460px; background: #d9d0c2; overflow: hidden; border: 1px solid var(--line); }
|
|
33
|
+
.ep-photo.small { width: 52%; height: 360px; margin-left: auto; }
|
|
34
|
+
.ep-photo img, .object-frame img { width: 100%; height: 100%; object-fit: cover; display: block; }
|
|
35
|
+
.ep-strip { margin-top: auto; padding-top: 18px; border-top: 1px solid var(--line); display: flex; justify-content: space-between; font-size: 18px; }
|
|
36
|
+
.book-page { border: 18px solid rgba(155,47,36,.18); }
|
|
37
|
+
.vertical { writing-mode: vertical-rl; letter-spacing: .18em; }
|
|
38
|
+
.seal { width: 64px; height: 64px; border: 2px solid var(--accent); color: var(--accent); display: grid; place-items: center; font-family: var(--serif); margin-top: 28px; }
|
|
39
|
+
.newspaper { display: grid; grid-template-rows: auto auto 1fr; }
|
|
40
|
+
.masthead { font-family: var(--serif); font-size: 34px; letter-spacing: .18em; border-bottom: 4px double var(--ink); padding-bottom: 16px; margin: 0 0 32px; }
|
|
41
|
+
.news-grid { display: grid; grid-template-columns: 1fr 1fr .7fr; gap: 26px; margin-top: 40px; }
|
|
42
|
+
.news-grid article { border-top: 1px solid var(--line); padding-top: 18px; font-family: var(--serif); font-size: 26px; line-height: 1.55; }
|
|
43
|
+
.mini-chart { display: flex; gap: 18px; align-items: end; border: 1px solid var(--line); padding: 26px; }
|
|
44
|
+
.mini-chart span { flex: 1; height: var(--h); background: var(--accent); }
|
|
45
|
+
.gallery { display: grid; grid-template-columns: 1.2fr .8fr; gap: 54px; align-items: end; }
|
|
46
|
+
.object-frame { margin: 0; height: 620px; background: #dedbd2; }
|
|
47
|
+
.plaque { border-top: 1px solid var(--line); padding-top: 24px; }
|
|
48
|
+
.plaque h2 { font-family: var(--serif); font-size: 54px; margin: 0 0 18px; }
|
|
49
|
+
.plaque p { font-family: var(--serif); color: var(--muted); font-size: 26px; line-height: 1.55; }
|
|
50
|
+
</style>
|
|
51
|
+
</head>
|
|
52
|
+
<body>
|
|
53
|
+
<main class="sheet">
|
|
54
|
+
<section class="poster magazine-paper" data-ratio="xhs" data-style="magazine-paper">
|
|
55
|
+
<div class="paper-grain"></div>
|
|
56
|
+
<main class="ep-pad">
|
|
57
|
+
<p class="ep-issue">VOL. 04 / FIELD NOTE / 2026</p>
|
|
58
|
+
<h1 class="ep-title">在信息里<br>找到一条路</h1>
|
|
59
|
+
<figure class="ep-photo"><img src="assets/hero.jpg" alt=""></figure>
|
|
60
|
+
<div class="ep-strip"><span>观察</span><span>方法</span><span>结论</span></div>
|
|
61
|
+
</main>
|
|
62
|
+
</section>
|
|
63
|
+
</main>
|
|
64
|
+
</body>
|
|
65
|
+
</html>
|