yuanflow-cli 0.1.39 → 0.1.41

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.
Files changed (38) hide show
  1. package/README.md +149 -12
  2. package/generated/registry.json +985 -984
  3. package/package.json +1 -1
  4. package/scripts/generate-registry.js +1 -1
  5. package/skills/yuanflow-skill/IP/350/277/220/350/220/245/SKILL.md +1 -0
  6. package/skills/yuanflow-skill/README.md +18 -10
  7. package/skills/yuanflow-skill/SKILL.md +46 -11
  8. package/skills/yuanflow-skill/{OSS → YuanFlow}/346/226/207/344/273/266/344/270/255/350/275/254/345/267/245/345/205/267/SKILL.md +8 -8
  9. package/skills/yuanflow-skill/yuanflow-cli/SKILL.md +3 -3
  10. package/skills/yuanflow-skill//344/275/234/345/223/201/344/270/213/350/275/275/347/273/274/345/220/210/345/267/245/345/205/267/SKILL.md +1 -1
  11. package/skills/yuanflow-skill//344/275/234/345/223/201/350/257/204/350/256/272/351/207/207/351/233/206/SKILL.md +1 -1
  12. package/skills/yuanflow-skill//345/205/254/344/274/227/345/217/267/347/224/237/346/210/220/344/270/216/345/217/221/345/270/203/SKILL.md +1 -1
  13. package/skills/yuanflow-skill//345/210/233/344/275/234/346/200/273/347/233/221/SKILL.md +94 -0
  14. package/skills/yuanflow-skill//345/260/217/347/272/242/344/271/246/350/277/220/350/220/245/{344/270/216/345/217/221/345/270/203/SKILL.md → SKILL.md} +10 -5
  15. package/skills/yuanflow-skill//345/270/220/345/217/267/345/256/232/344/275/215/SKILL.md +1 -0
  16. package/skills/yuanflow-skill//346/226/207/346/241/210/345/210/233/344/275/234/SKILL.md +1 -0
  17. package/skills/yuanflow-skill//347/203/255/351/227/250/345/206/205/345/256/271/346/225/264/347/220/206/SKILL.md +83 -0
  18. package/skills/yuanflow-skill//347/233/264/346/222/255/346/212/225/346/265/201/347/255/226/347/225/245/SKILL.md +1 -0
  19. package/skills/yuanflow-skill//347/233/264/346/222/255/350/257/235/346/234/257/347/224/237/346/210/220/SKILL.md +1 -0
  20. package/skills/yuanflow-skill//350/207/252/345/252/222/344/275/223/347/237/245/350/257/206/345/272/223/SKILL.md +2 -0
  21. package/skills/yuanflow-skill//350/247/206/350/247/211/347/220/206/350/247/243/SKILL.md +174 -0
  22. package/skills/yuanflow-skill//350/247/206/351/242/221/346/212/225/346/265/201/347/255/226/347/225/245/SKILL.md +1 -0
  23. package/skills/yuanflow-skill//350/247/206/351/242/221/346/213/206/350/247/243/SKILL.md +245 -0
  24. package/skills/yuanflow-skill//350/247/206/351/242/221/346/231/272/350/203/275/345/211/252/350/276/221/SKILL.md +60 -12
  25. package/skills/yuanflow-skill//351/200/211/351/242/230/347/255/226/345/210/222/SKILL.md +1 -0
  26. package/skills/yuanflow-skill//351/237/263/350/247/206/351/242/221/345/234/250/347/272/277/350/275/254/346/226/207/345/255/227/SKILL.md +10 -10
  27. package/src/agent-protocol.js +11 -5
  28. package/src/ai-tools.js +835 -0
  29. package/src/cli.js +58 -2
  30. package/src/comment-collector.js +1 -1
  31. package/src/oss-tools.js +11 -11
  32. package/src/shortcuts.js +3 -3
  33. package/src/trending-tools.js +117 -0
  34. package/src/video-tools.js +182 -3
  35. package/src/work-tools.js +4 -4
  36. /package/skills/yuanflow-skill//345/260/217/347/272/242/344/271/246/350/277/220/350/220/245/{344/270/216/345/217/221/345/270/203/references → references}/commands.md" +0 -0
  37. /package/skills/yuanflow-skill//345/260/217/347/272/242/344/271/246/350/277/220/350/220/245/{344/270/216/345/217/221/345/270/203/references → references}/interaction-policy.md" +0 -0
  38. /package/skills/yuanflow-skill//345/260/217/347/272/242/344/271/246/350/277/220/350/220/245/{344/270/216/345/217/221/345/270/203/references → references}/publishing-policy.md" +0 -0
@@ -0,0 +1,174 @@
1
+ ---
2
+ name: 视觉理解
3
+ description: 当用户提交图片、视频、本地媒体文件或媒体 URL,并要求识别画面、描述内容、对比画面差异、提取画面信息、检查视觉细节、总结视频画面时使用。本 Skill 是通用型画面理解能力,必须通过 yuanflow-cli 的 qwen3-vl-plus 调用,不用于自媒体对标拆解;对标视频和内容创作拆解请改用“视频拆解”。
4
+ emoji: 👁️
5
+ ---
6
+
7
+ # 视觉理解
8
+
9
+ 本 Skill 是通用型图片/视频画面理解技能。核心能力只使用 `yuanflow-cli ai qwen3-vl-plus`,通过 YuanFlow API 对外模型名 `qwen3-vl-plus` 完成图片、视频 URL 或本地图片、视频文件的理解。
10
+
11
+ 不要把它写成自媒体拆解、爆款分析或创作策略技能;这些需求交给 `视频拆解`。
12
+
13
+ ## 环境判断
14
+
15
+ 1. 在 YuanFlow 主程序内,优先调用受控工具 `yuanflow_cli_call`。
16
+ 2. 外部 Agent 且本机有 CLI 时,直接执行 `yuanflow-cli`。
17
+ 3. 外部 Agent 没有 CLI 时,再提示用户安装 `npm install -g yuanflow-cli`。
18
+
19
+ 不要让用户手动提供 YuanFlow token。YuanFlow 主程序会注入认证 token;外部 CLI 使用 `YUANCHUANG_API_TOKEN`。
20
+
21
+ 本地图片/视频上传依赖 CLI 的 YuanFlow 文件中转能力。外部 Agent 只需要配置 YuanFlow API token;不要要求用户提供第三方平台 Key,也不要在回复里展示完整 token。
22
+
23
+ ## 能处理什么
24
+
25
+ - 图片 URL:`--image-url`
26
+ - 视频 URL:`--video-url`
27
+ - 本地图片:`--image-file`
28
+ - 本地视频:`--video-file`
29
+
30
+ 快捷参数一次只传一个媒体。如果用户给多个图片或视频,逐个调用 qwen3-vl-plus,再把每次结果汇总、对比和整理。
31
+
32
+ ## 调用限制和注意事项
33
+
34
+ - 视频 URL 需要能被 YuanFlow API 访问,响应头建议包含 `Content-Length` 和 `Content-Type`。
35
+ - 视觉模型侧建议单个视频最大 2GB,时长 2 秒到 1 小时。
36
+ - 本地文件会先通过 YuanFlow 文件中转 `POST /atomic/oss/temp-upload` 上传,CLI 取返回的 `signed_url` 后再调用 `/v1/chat/completions`。
37
+ - 本地文件过大时,让用户压缩、裁剪、换文件,或改用可公网访问的视频 URL。
38
+ - 不要上传密钥、cookie、身份证、合同、私密聊天记录等敏感文件,除非用户明确确认且任务确实需要。
39
+
40
+ ## 固定流程
41
+
42
+ 1. 明确用户要做什么:描述、提取文字、找细节、对比差异、判断场景、总结视频、检查异常等。
43
+ 2. 判断输入类型:图片 URL、视频 URL、本地图片、本地视频。
44
+ 3. 如果输入是多个媒体,按顺序逐个调用 CLI,给每个媒体编号。
45
+ 4. 把用户要求写进 `--prompt`,不要只写“描述一下”。
46
+ 5. 调用 qwen3-vl-plus。
47
+ 6. 整理输出:先给结论,再给画面证据,再给不确定项。
48
+
49
+ ## YuanFlow 内置工具调用示例
50
+
51
+ 图片 URL:
52
+
53
+ ```json
54
+ {
55
+ "args": [
56
+ "ai",
57
+ "qwen3-vl-plus",
58
+ "--prompt",
59
+ "请描述图片里的主体、文字、环境和可能的用途。",
60
+ "--image-url",
61
+ "https://example.com/image.png",
62
+ "--format",
63
+ "agent-json"
64
+ ],
65
+ "timeout": 180
66
+ }
67
+ ```
68
+
69
+ 视频 URL:
70
+
71
+ ```json
72
+ {
73
+ "args": [
74
+ "ai",
75
+ "qwen3-vl-plus",
76
+ "--prompt",
77
+ "请总结视频的主要画面、人物动作、场景变化和可见文字。",
78
+ "--video-url",
79
+ "https://example.com/video.mp4",
80
+ "--format",
81
+ "agent-json"
82
+ ],
83
+ "timeout": 300
84
+ }
85
+ ```
86
+
87
+ 本地图片:
88
+
89
+ ```json
90
+ {
91
+ "args": [
92
+ "ai",
93
+ "qwen3-vl-plus",
94
+ "--prompt",
95
+ "请识别这张图片中的关键信息,并按主体、文字、细节、可能风险输出。",
96
+ "--image-file",
97
+ "D:\\素材\\cover.png",
98
+ "--format",
99
+ "agent-json"
100
+ ],
101
+ "timeout": 300
102
+ }
103
+ ```
104
+
105
+ 本地视频:
106
+
107
+ ```json
108
+ {
109
+ "args": [
110
+ "ai",
111
+ "qwen3-vl-plus",
112
+ "--prompt",
113
+ "请按时间顺序总结视频画面变化、人物动作、关键物品和屏幕文字。",
114
+ "--video-file",
115
+ "D:\\素材\\demo.mp4",
116
+ "--format",
117
+ "agent-json"
118
+ ],
119
+ "timeout": 600
120
+ }
121
+ ```
122
+
123
+ ## 外部 CLI 示例
124
+
125
+ ```powershell
126
+ yuanflow-cli ai qwen3-vl-plus --prompt "描述这张图的主体、文字和环境" --image-file "D:\素材\cover.png" --format agent-json
127
+ ```
128
+
129
+ ```powershell
130
+ yuanflow-cli ai qwen3-vl-plus --prompt "总结视频画面变化和关键细节" --video-file "D:\素材\demo.mp4" --format agent-json
131
+ ```
132
+
133
+ ## 输出格式
134
+
135
+ 默认按这个结构输出:
136
+
137
+ ```text
138
+ 结论:
139
+ - ...
140
+
141
+ 画面内容:
142
+ - 主体:
143
+ - 场景:
144
+ - 动作/变化:
145
+ - 可见文字:
146
+
147
+ 用户要求对应结果:
148
+ - ...
149
+
150
+ 不确定项:
151
+ - ...
152
+ ```
153
+
154
+ 如果是多个媒体对比,输出:
155
+
156
+ ```text
157
+ 整体结论:
158
+
159
+ 逐项理解:
160
+ 1. 媒体 A:
161
+ 2. 媒体 B:
162
+
163
+ 差异对比:
164
+ - 相同点:
165
+ - 不同点:
166
+ - 需要人工确认:
167
+ ```
168
+
169
+ ## 失败处理
170
+
171
+ - YuanFlow token 缺失:说明需要在受管环境或 CLI 配置 YuanFlow API token,不要让用户在聊天里粘贴敏感 Key。
172
+ - 视频超限:提示视频最大 2GB、时长 2 秒到 1 小时,让用户裁剪或压缩。
173
+ - URL 不可访问:提示用户换成公网可访问 URL,或改用本地文件上传。
174
+ - 模型返回不确定:明确标注“不确定”,不要把猜测写成事实。
@@ -46,6 +46,7 @@ emoji: 📈
46
46
  - 如果没有命中,说明“未发现可用历史参考记录”,继续下一步。
47
47
  5. 调用 `自媒体知识库`。
48
48
  - 先查 `knowledge docs` 或 `knowledge entry`,根据平台、投放目标、预算、人群和素材类型构造 `domain` 和 `content_goal`。
49
+ - 查询时,必须先明确用户具体需求,然后从知识库的一级能力开始,依次使用渐进式查询。不能跳级、跨越式查询。
49
50
  - 按返回的 `next_actions` 分层查看 `packs`、`rules` 或 `rule-detail`,直到拿到足够的方法摘要。
50
51
  - 不要自己拼 SQL,不要跳过知识库直接凭空输出。
51
52
  6. 结合用户要求、账号最近 5 条视频数据、历史参考记录和知识库结果,输出视频投流策略。
@@ -0,0 +1,245 @@
1
+ ---
2
+ name: 视频拆解
3
+ description: 当用户提交对标视频、本地视频、视频 URL,要求做自媒体创作方向的视频拆解、爆款结构分析、内容复盘、脚本拆解、镜头节奏拆解、账号/竞品内容学习时使用。开始前必须先使用“自媒体知识库”查询与对标拆解相关的规则,再通过 yuanflow-cli 的 qwen3-vl-plus 上传/理解视频,并把知识库规则放入提示词中指导拆解。
4
+ emoji: 🎬
5
+ ---
6
+
7
+ # 视频拆解
8
+
9
+ 本 Skill 是自媒体创作场景下的对标视频拆解技能。它不是通用画面描述工具;通用图片/视频理解请使用 `视觉理解`。
10
+
11
+ 核心链路:
12
+
13
+ 1. 先查 `自媒体知识库`,获取与“对标拆解、视频拆解、内容创作、脚本结构、镜头节奏、爆款复盘”相关的规则摘要。
14
+ 2. 如果用户给的是视频 URL,先用相关工具解析并保存到本地。
15
+ 3. 使用 `yuanflow-cli ai qwen3-vl-plus --video-file` 提交本地视频。
16
+ 4. 把知识库拆解规则写进 prompt,让模型按规则拆解视频。
17
+ 5. 整理成适合自媒体创作复用的详细拆解报告。
18
+
19
+ ## 环境判断
20
+
21
+ 1. 在 YuanFlow 主程序内,优先调用受控工具 `yuanflow_cli_call`。
22
+ 2. 外部 Agent 且本机有 CLI 时,直接执行 `yuanflow-cli`。
23
+ 3. 外部 Agent 没有 CLI 时,再提示用户安装 `npm install -g yuanflow-cli`。
24
+
25
+ 不要让用户手动提供 YuanFlow token。YuanFlow 主程序会注入认证 token;外部 CLI 使用 `YUANCHUANG_API_TOKEN`。
26
+
27
+ 本地视频上传依赖 qwen3-vl-plus 的 YuanFlow 文件中转能力。外部 Agent 只需要配置 YuanFlow API token;不要要求用户提供第三方平台 Key。
28
+
29
+ ## 适用场景
30
+
31
+ - 对标视频拆解。
32
+ - 爆款视频拆解。
33
+ - 内容结构、开头钩子、脚本节奏、镜头节奏分析。
34
+ - 短视频带货、口播、剧情、测评、知识分享类内容复盘。
35
+ - 用户希望从竞品视频里提炼可复用创作方法。
36
+
37
+ 不适合:
38
+
39
+ - 只想描述视频画面:改用 `视觉理解`。
40
+ - 只想转文字:改用 `音视频在线转文字` 或 `本地音视频转文字`。
41
+ - 只想下载视频:改用 `作品下载综合工具`。
42
+
43
+ ## 固定流程
44
+
45
+ ### 1. 明确拆解目标
46
+
47
+ 先问清或从用户话里提取:
48
+
49
+ - 平台或内容类型:抖音、小红书、B站、视频号、YouTube 等。
50
+ - 拆解目的:选题学习、脚本复用、镜头节奏、带货结构、账号定位、投放素材、爆款复盘。
51
+ - 用户是否给了本地视频,还是视频 URL。
52
+
53
+ ### 2. 先查自媒体知识库
54
+
55
+ 必须先调用知识库,不要直接上传视频拆解。
56
+
57
+ YuanFlow 内置工具示例:
58
+
59
+ ```json
60
+ {
61
+ "args": [
62
+ "knowledge",
63
+ "entry",
64
+ "--output-format",
65
+ "video_breakdown",
66
+ "--domain",
67
+ "自媒体运营",
68
+ "--content-goal",
69
+ "对标视频拆解,提炼内容结构、脚本节奏、镜头设计和可复用创作方法",
70
+ "--target-audience",
71
+ "自媒体创作者",
72
+ "--format",
73
+ "agent-json"
74
+ ],
75
+ "timeout": 180
76
+ }
77
+ ```
78
+
79
+ 如果返回 `next_actions`,继续按推荐调用 `packs`、`rules` 或 `rule-detail`。优先查询与以下方向相关的规则:
80
+
81
+ - 对标拆解
82
+ - 视频拆解
83
+ - 内容复盘
84
+ - 脚本结构
85
+ - 开头钩子
86
+ - 镜头节奏
87
+ - 账号定位
88
+ - 带货/转化结构
89
+
90
+ 外部 CLI 示例:
91
+
92
+ ```powershell
93
+ yuanflow-cli knowledge entry --output-format video_breakdown --domain 自媒体运营 --content-goal "对标视频拆解,提炼内容结构、脚本节奏、镜头设计和可复用创作方法" --target-audience 自媒体创作者 --format agent-json
94
+ ```
95
+
96
+ ### 3. 视频 URL 先解析并保存本地
97
+
98
+ 如果用户提交的是平台视频 URL,先用 `作品下载综合工具` 或 `yuanflow-cli works download` 解析可播放/下载地址候选。
99
+
100
+ 先按链接判断平台:
101
+
102
+ - `douyin.com`、`v.douyin.com`:`--platform douyin`,国内环境通常加 `--region CN`。
103
+ - `bilibili.com`、`b23.tv`、`BV`:`--platform bilibili`。
104
+ - `youtube.com`、`youtu.be`:`--platform youtube`。
105
+ - `ixigua.com`:`--platform xigua`。
106
+
107
+ YuanFlow 内置工具示例:
108
+
109
+ ```json
110
+ {
111
+ "args": [
112
+ "works",
113
+ "download",
114
+ "--platform",
115
+ "douyin",
116
+ "--target",
117
+ "https://v.douyin.com/xxx/",
118
+ "--region",
119
+ "CN",
120
+ "--format",
121
+ "agent-json"
122
+ ],
123
+ "timeout": 180
124
+ }
125
+ ```
126
+
127
+ 外部 CLI 示例:
128
+
129
+ ```powershell
130
+ yuanflow-cli works download --platform douyin --target "https://v.douyin.com/xxx/" --region CN --format agent-json
131
+ ```
132
+
133
+ 解析到可访问视频 URL 后,经用户授权保存到本地临时文件,再提交 qwen3-vl-plus。保存文件时使用清晰路径,例如:
134
+
135
+ ```text
136
+ D:\素材\yuanflow-video-breakdown\input.mp4
137
+ ```
138
+
139
+ 保存方式:
140
+
141
+ - 如果返回的是普通 mp4/http 下载地址,用系统下载能力保存到本地。
142
+ - 如果返回的是 m3u8 或分片流,优先用 ffmpeg 保存成 mp4。
143
+ - 如果返回多个清晰度,默认选清晰度高且文件体积可控的一项;不要为了拆解盲目选超大文件。
144
+ - 保存前确认这是用户授权分析的视频,不要下载私密、付费、未授权或明显受版权限制的内容。
145
+
146
+ 外部 Agent 可用的保存示例:
147
+
148
+ ```powershell
149
+ New-Item -ItemType Directory -Force "D:\素材\yuanflow-video-breakdown"
150
+ Invoke-WebRequest -Uri "<解析得到的视频直链>" -OutFile "D:\素材\yuanflow-video-breakdown\input.mp4"
151
+ ```
152
+
153
+ 如果是 m3u8:
154
+
155
+ ```powershell
156
+ ffmpeg -y -i "<解析得到的 m3u8 地址>" -c copy "D:\素材\yuanflow-video-breakdown\input.mp4"
157
+ ```
158
+
159
+ 如果平台解析只返回播放候选而没有稳定下载 URL,说明当前链接需要用户提供可下载文件,或先让用户使用其它授权方式保存视频。
160
+
161
+ ### 4. 调用 qwen3-vl-plus 做规则化拆解
162
+
163
+ 把知识库查询到的规则摘要压缩进 prompt。不要只让模型“分析视频”,必须告诉它按规则拆解。
164
+
165
+ YuanFlow 内置工具示例:
166
+
167
+ ```json
168
+ {
169
+ "args": [
170
+ "ai",
171
+ "qwen3-vl-plus",
172
+ "--prompt",
173
+ "你是自媒体视频拆解助手。请严格按以下知识库规则拆解这个对标视频:\\n【知识库规则摘要】...\\n【用户目标】学习该视频的选题、开头、脚本结构、镜头节奏和可复用创作方法。\\n请输出:1. 一句话总结;2. 视频定位;3. 开头钩子;4. 内容结构;5. 镜头/画面节奏;6. 情绪和转化设计;7. 可复用模板;8. 不建议照搬的风险。",
174
+ "--video-file",
175
+ "D:\\素材\\yuanflow-video-breakdown\\input.mp4",
176
+ "--format",
177
+ "agent-json"
178
+ ],
179
+ "timeout": 600
180
+ }
181
+ ```
182
+
183
+ 外部 CLI 示例:
184
+
185
+ ```powershell
186
+ yuanflow-cli ai qwen3-vl-plus --prompt "你是自媒体视频拆解助手。请按知识库规则拆解这个视频:..." --video-file "D:\素材\yuanflow-video-breakdown\input.mp4" --format agent-json
187
+ ```
188
+
189
+ ## 调用限制和注意事项
190
+
191
+ - qwen3-vl-plus 视频建议单个视频最大 2GB,时长 2 秒到 1 小时。
192
+ - 本地视频上传时,CLI 会先调用 YuanFlow 文件中转 `POST /atomic/oss/temp-upload`,再把返回的 `signed_url` 提交给 YuanFlow API。
193
+ - 本地文件过大时,让用户压缩、裁剪、提供短版本,或改用可公网访问的视频 URL。
194
+ - 对标视频拆解只能用于学习结构、表达和创作方法,不要鼓励搬运、洗稿、规避版权或冒充原创。
195
+
196
+ ## 输出格式
197
+
198
+ 默认输出详细拆解报告:
199
+
200
+ ```text
201
+ # 视频拆解报告
202
+
203
+ ## 1. 一句话结论
204
+
205
+ ## 2. 视频基础判断
206
+ - 内容类型:
207
+ - 目标受众:
208
+ - 核心卖点/观点:
209
+ - 适用平台:
210
+
211
+ ## 3. 开头钩子拆解
212
+ - 前 3 秒:
213
+ - 冲突/利益点:
214
+ - 留人方式:
215
+
216
+ ## 4. 内容结构拆解
217
+ - 段落 1:
218
+ - 段落 2:
219
+ - 段落 3:
220
+ - 结尾:
221
+
222
+ ## 5. 画面与镜头节奏
223
+ - 场景变化:
224
+ - 人物/产品/字幕:
225
+ - 节奏特点:
226
+
227
+ ## 6. 情绪、信任和转化设计
228
+
229
+ ## 7. 可复用创作模板
230
+
231
+ ## 8. 可借鉴点与风险
232
+ - 可借鉴:
233
+ - 不建议照搬:
234
+ - 需要二次原创:
235
+
236
+ ## 9. 给用户的下一步建议
237
+ ```
238
+
239
+ ## 失败处理
240
+
241
+ - 知识库查询失败:说明无法取得拆解规则,不要跳过规则直接当普通视觉理解;可询问用户是否改为通用视觉理解。
242
+ - 视频 URL 解析失败:说明需要用户提供本地视频或可直接访问的下载链接。
243
+ - YuanFlow token 缺失:说明需要在受管环境或 CLI 配置 YuanFlow API token,不要让用户在聊天里粘贴敏感 Key。
244
+ - 视频超限:提示最大 2GB、2 秒到 1 小时,让用户裁剪或压缩。
245
+ - 模型无法识别细节:按“可确认/不确定/建议人工复查”分开写,不要编造。
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: 视频智能剪辑
3
- description: "用于把主音频、文案、B-roll 视频或图片素材组合成可解释的智能剪辑项目。执行前先查询自媒体知识库中的视频剪辑策略规则,再按 1秒1帧抽帧,由 Agent 判断画面语义并生成 EDL,交给 yuanflow-cli video 校验和渲染。"
3
+ description: "用于把主音频、文案、B-roll 视频或图片素材组合成可解释的智能剪辑项目。执行前先查询自媒体知识库中的视频剪辑策略规则,再用音视频在线转文字取得 ASR/时间戳,导入音频对齐,按 1秒1帧抽帧并回写视觉理解,由 Agent 生成 EDL,交给 yuanflow-cli video 校验和渲染。"
4
4
  metadata:
5
5
  builtin_skill_version: "1.0.1"
6
6
  yuanflow:
@@ -25,6 +25,7 @@ tags:
25
25
  推荐查询顺序:
26
26
 
27
27
  1. 先用 `knowledge entry` 建立任务入口,`domain` 填 `视频剪辑`,`content_goal` 写清本次剪辑目标。
28
+ - 查询时,必须先明确用户具体需求,然后从知识库的一级能力开始,依次使用渐进式查询。不能跳级、跨越式查询。
28
29
  2. 再用 `knowledge packs --capability-code video_editing_strategy` 查看视频剪辑策略下的方法包。
29
30
  3. 必查 `video_edit_logic_layer_pack`,获得通用剪辑逻辑层规则。
30
31
  4. 如果任务是口播、旁白、主音频驱动,查询 `talking_head_edit_template_pack`。
@@ -101,8 +102,9 @@ CLI 会生成 `strategy_snapshot.json`,后续 Agent 必须基于这个快照
101
102
 
102
103
  - 主音频可以是口播、旁白或已经录好的音频。
103
104
  - B-roll 可以是视频或图片素材。
104
- - 第一版视觉理解不调用视觉模型,使用 `yuanflow-cli video timeline --fps 1` 1秒1帧抽帧。
105
- - Agent 需要查看抽帧结果,自己判断每段画面的语义、主体、动作和适合承接的文案。
105
+ - 第一版音频对齐优先使用“音视频在线转文字”Skill ASR 时间戳结果;如果 ASR 没有时间戳,使用 forced alignment 或人工按文案切分,不编造时间戳。
106
+ - 第一版视觉理解不调用固定视觉模型,使用 `yuanflow-cli video timeline --fps 1` 按 1秒1帧抽帧。
107
+ - Agent 或人工需要查看抽帧结果,判断每段画面的语义、主体、动作和适合承接的文案,再用 `video visual-review` 回写结构化视觉描述。
106
108
  - 第一版 `video plan` 不自动生成 EDL,由 Agent 生成 EDL 后交给 CLI 校验和渲染。
107
109
 
108
110
  ## 执行原则
@@ -161,18 +163,27 @@ yuanflow-cli video inspect --project "D:\素材\yuanflow-video-edit" --format ag
161
163
 
162
164
  如果只是验证命令结构,可以加 `--dry-run`。
163
165
 
164
- ### 3. 导入文案或转写
166
+ ### 3. 音频对齐
165
167
 
166
- 如果用户已有文案:
168
+ 主音频驱动的剪辑必须先建立音频时间轴。优先使用“音视频在线转文字”Skill 调用在线 ASR;如果 ASR 返回 `segments` / `words` 时间戳,保存为 JSON 后导入:
167
169
 
168
170
  ```bash
169
- yuanflow-cli video transcribe \
171
+ yuanflow-cli video align \
170
172
  --project "D:\素材\yuanflow-video-edit" \
171
- --script-file "D:\素材\口播文案.txt" \
173
+ --asr-file "D:\素材\asr.json" \
172
174
  --format agent-json
173
175
  ```
174
176
 
175
- 如果用户只有音频,先使用“音视频在线转文字”或“本地音视频转文字”得到文本,再用 `--script-file` 导入。
177
+ 如果 ASR 只返回纯文本,没有时间戳:
178
+
179
+ - 先明确说明缺少时间戳。
180
+ - 可用 forced alignment 或人工按文案切分生成 `segments`。
181
+ - 只有在用户允许“粗对齐”时,才能按文本段落和音频总时长均分兜底。
182
+
183
+ `video align` 会生成:
184
+
185
+ - `audio_alignment.json`
186
+ - 带 `start_s / end_s` 的 `beats.json`
176
187
 
177
188
  ### 4. 生成 1秒1帧时间线
178
189
 
@@ -191,14 +202,51 @@ CLI 会生成:
191
202
 
192
203
  Agent 必须基于这些抽帧图片判断画面,不要凭文件名猜。
193
204
 
194
- ### 5. Agent 生成 timeline_plan 和 EDL
205
+ ### 5. 视觉理解回写
206
+
207
+ Agent 或人工查看抽帧图片后,先写出 `visual_review.agent.json`,不要直接跳到 EDL。基础格式:
208
+
209
+ ```json
210
+ {
211
+ "version": 1,
212
+ "reviews": [
213
+ {
214
+ "segment_id": "vis_0001",
215
+ "description": "产品近景,手持展示刷头。",
216
+ "subjects": ["产品", "手"],
217
+ "scene": "厨房水槽",
218
+ "motion": "展示",
219
+ "semantic_tags": ["product_closeup", "kitchen"],
220
+ "quality_score": 0.88
221
+ }
222
+ ]
223
+ }
224
+ ```
225
+
226
+ 导入视觉理解:
227
+
228
+ ```bash
229
+ yuanflow-cli video visual-review \
230
+ --project "D:\素材\yuanflow-video-edit" \
231
+ --review-file "D:\素材\yuanflow-video-edit\visual_review.agent.json" \
232
+ --format agent-json
233
+ ```
234
+
235
+ CLI 会生成或更新:
236
+
237
+ - `visual_understanding.json`
238
+ - 带结构化描述的 `visual_segments.json`
239
+
240
+ ### 6. Agent 生成 timeline_plan 和 EDL
195
241
 
196
242
  Agent 读取:
197
243
 
198
244
  - `project.json`
199
245
  - `assets.json`
246
+ - `audio_alignment.json`
200
247
  - `beats.json`
201
248
  - `visual_segments.json`
249
+ - `visual_understanding.json`
202
250
  - `strategy_snapshot.json`
203
251
  - 抽帧图片
204
252
 
@@ -268,7 +316,7 @@ Agent 读取:
268
316
  }
269
317
  ```
270
318
 
271
- ### 6. 校验 EDL
319
+ ### 7. 校验 EDL
272
320
 
273
321
  ```bash
274
322
  yuanflow-cli video plan \
@@ -289,14 +337,14 @@ yuanflow-cli video plan \
289
337
 
290
338
  只有校验通过后,才允许渲染。
291
339
 
292
- ### 7. 渲染预览和自检
340
+ ### 8. 渲染预览和自检
293
341
 
294
342
  ```bash
295
343
  yuanflow-cli video render-preview --project "D:\素材\yuanflow-video-edit" --format agent-json
296
344
  yuanflow-cli video evaluate --project "D:\素材\yuanflow-video-edit" --file "D:\素材\yuanflow-video-edit\preview.mp4" --format agent-json
297
345
  ```
298
346
 
299
- ### 8. 最终导出
347
+ ### 9. 最终导出
300
348
 
301
349
  ```bash
302
350
  yuanflow-cli video render-final --project "D:\素材\yuanflow-video-edit" --format agent-json
@@ -16,6 +16,7 @@ emoji: 💡
16
16
  - 如果没有命中,说明“未发现可用历史参考记录”,继续下一步。
17
17
  2. 调用 `自媒体知识库`。
18
18
  - 先查 `knowledge docs` 或 `knowledge entry`,根据平台、受众、内容目标和选题方向构造 `domain` 和 `content_goal`。
19
+ - 查询时,必须先明确用户具体需求,然后从知识库的一级能力开始,依次使用渐进式查询。不能跳级、跨越式查询。
19
20
  - 按返回的 `next_actions` 分层查看 `packs`、`rules` 或 `rule-detail`,直到拿到足够的方法摘要。
20
21
  - 不要自己拼 SQL,不要跳过知识库直接凭空输出。
21
22
  3. 结合用户要求、历史参考记录和知识库结果,输出选题策划结果。
@@ -21,11 +21,11 @@ emoji: ☁️
21
21
  - 视频:先用 ffmpeg 分离音频,再进入上传流程。
22
22
  2. 上传前把待上传音频整理为英文文件名。
23
23
  - 官方参数只要求 `metadata.audio_url` 是可公网访问的音频 URL,没有说明必须英文文件名。
24
- - 但为避免 OSS URL 编码、上游下载和中文文件名兼容问题,上传前必须使用 ASCII 英文文件名,例如 `transcription-input.mp3`。
25
- 3. 使用 `OSS文件中转工具` 上传音频。
26
- 4. OSS 返回中优先取 `data.signed_url` 作为 ASR 的 `metadata.audio_url`。
27
- - 不要优先使用裸域名 `data.url`;实测裸域名可能导致上游报 `Invalid audio URI` 或音频下载失败。
28
- - 如果只有 `data.url`,必须补齐 `https://` 后再尝试;失败时说明 OSS URL 不可被 ASR 上游下载。
24
+ - 但为避免文件中转 URL 编码、服务下载和中文文件名兼容问题,上传前必须使用 ASCII 英文文件名,例如 `transcription-input.mp3`。
25
+ 3. 使用 `YuanFlow 文件中转工具` 上传音频。
26
+ 4. 从文件中转返回中优先取 `data.signed_url` 作为 ASR 的 `metadata.audio_url`。
27
+ - 不要优先使用裸域名 `data.url`;实测裸域名可能导致 `Invalid audio URI` 或音频下载失败。
28
+ - 如果只有 `data.url`,必须补齐 `https://` 后再尝试;失败时说明该文件中转 URL 不可被 ASR 服务下载。
29
29
  5. 调用在线 ASR 接口。
30
30
  6. 默认只把干净文本返回给用户,不展示原始 JSON。
31
31
  7. 只有用户明确要求时间戳、分句、原始结构或调试信息时,才返回 JSON 摘要或原始字段。
@@ -40,9 +40,9 @@ ffmpeg -y -i "C:\path\to\input.mp4" -vn -acodec libmp3lame -ar 44100 -ac 2 "tran
40
40
 
41
41
  如果 ffmpeg 不可用,必须明确告诉用户缺少 ffmpeg,不能伪造转写结果。
42
42
 
43
- ## OSS 上传
43
+ ## YuanFlow 文件中转
44
44
 
45
- YuanFlow 主程序内优先调用 `yuanflow_cli_call`,使用 OSS 子命令上传英文命名后的音频:
45
+ YuanFlow 主程序内优先调用 `yuanflow_cli_call`,使用兼容子命令 `oss` 上传英文命名后的音频:
46
46
 
47
47
  ```json
48
48
  {
@@ -95,7 +95,7 @@ Content-Type: application/json
95
95
  "model": "doubao-asr",
96
96
  "response_format": "json",
97
97
  "metadata": {
98
- "audio_url": "<OSS signed_url>"
98
+ "audio_url": "<YuanFlow 文件中转 signed_url>"
99
99
  }
100
100
  }
101
101
  ```
@@ -110,7 +110,7 @@ Content-Type: application/json
110
110
  "model": "doubao-asr",
111
111
  "response_format": "json",
112
112
  "metadata": {
113
- "audio_url": "<OSS signed_url>"
113
+ "audio_url": "<YuanFlow 文件中转 signed_url>"
114
114
  }
115
115
  },
116
116
  "timeout": 180
@@ -138,6 +138,6 @@ Content-Type: application/json
138
138
  ## 失败处理
139
139
 
140
140
  - `Invalid audio URI` / `audio download failed`:优先检查是否误用了 `data.url` 裸域名;改用 `data.signed_url` 重试。
141
- - OSS 上传成功但 ASR 失败:说明 OSS key 已生成,但上游无法下载或识别该 URL。
141
+ - YuanFlow 文件中转上传成功但 ASR 失败:说明文件对象已生成,但 ASR 服务无法下载或识别该 URL。
142
142
  - 视频抽音频失败:报告 ffmpeg 错误,不继续调用 ASR。
143
143
  - 不要暴露 token、Authorization header、签名 URL 的完整敏感查询参数,除非用户明确需要调试链接。