yuanflow-cli 0.1.23 → 0.1.26

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 CHANGED
@@ -159,6 +159,10 @@ yuanflow-cli oss copy --source-key temp/cover.png --target-key final/cover.png -
159
159
 
160
160
  `browser` 命令是自媒体平台专用浏览器自动化协议,用于账号登录态隔离、Cookie/profile 本地保存、账号页面采集、作品发布前检查和发布流程规划。它不用于普通网页搜索、通用浏览、截图或 CDP 连接。
161
161
 
162
+ 如果要做发布类任务,先优先用用户电脑里已有的 Chrome,第二优先用 Edge。两个都没有时,再提示用户安装给浏览器自动化用的 Chromium。不要把这件事说得太技术化,直接告诉用户“需要一个能给自动化程序用的浏览器”就够了。
163
+
164
+ 如果 Chromium 连续下载 3 次还是失败,就停止继续重试,明确告诉用户可能是网络、权限、下载源不可用或安全软件拦截,并引导用户手动下载和安装后再继续。
165
+
162
166
  当前命令只返回受控路径、任务计划和 dry-run 预检结果,不直接暴露裸 Playwright 或 Chrome 调试能力:
163
167
 
164
168
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuanflow-cli",
3
- "version": "0.1.23",
3
+ "version": "0.1.26",
4
4
  "description": "YuanFlow API CLI and skill installer for supported AI coding agents.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -71,3 +71,5 @@
71
71
  "douyin"
72
72
  ]
73
73
  }
74
+
75
+
@@ -13,6 +13,13 @@ emoji: 🧭
13
13
 
14
14
  本 Skill 只用于自媒体平台的专用浏览器自动化:账号登录态隔离、Cookie/profile 本地保存、账号资料浏览采集、作品页面收集、草稿创建、作品发布前检查和发布执行。
15
15
 
16
+ 浏览器选择先后顺序要说清楚:
17
+
18
+ - 先优先使用用户电脑里已经装好的 Chrome。
19
+ - 没有 Chrome,再优先使用 Edge。
20
+ - 如果这两个浏览器都没有,再提示用户安装“给浏览器自动化用的 Chromium”。
21
+ - 这里说的 Chromium,不是让用户去学技术,而是让用户装一个能给自动化程序用的浏览器内核。
22
+
16
23
  不要把它和 YuanFlow 已有的通用浏览器能力混在一起:
17
24
 
18
25
  - `浏览器启动模式`:通用网页浏览、打开页面、可见窗口、普通搜索。
@@ -62,11 +69,20 @@ yuanflow-cli browser task-plan --platform douyin --task publish --account main -
62
69
  ## 固定边界
63
70
 
64
71
  - Cookie、localStorage、sessionStorage、浏览器 profile 只保存在本地受控目录,不上传、不输出、不写入报告。
72
+ - Cookie/profile 的保存和浏览器品牌无关,始终按“平台 + 帐号别名”分开保存,不和用户日常浏览器混在一起。
65
73
  - 扫码、验证码、人机验证、二次验证、风控提醒,必须暂停并让用户手动处理。
66
74
  - 发布、删除、修改账号资料、提交草稿、定时发布等会改变线上状态的动作,必须先向用户复述并等待确认。
67
75
  - 不做绕过验证码、绕过风控、刷量、批量骚扰、未授权采集或平台禁止的自动化。
68
76
  - 不直接调用 shell 执行裸 Playwright、Chrome 调试命令或读取浏览器敏感目录;优先走受控工具。
69
77
 
78
+ ## 浏览器缺失与下载失败
79
+
80
+ - 如果本机没有 Chrome 和 Edge,先直接告诉用户:这台电脑没有现成可用的浏览器,需要安装给自动化用的 Chromium。
81
+ - 如果 Chromium 下载连续失败 3 次,就不要一直重试了,直接停下来,把问题说清楚。
82
+ - 这时候要明确告诉用户,常见原因可能是网络、权限、下载源不可用或者安全软件拦截。
83
+ - 同时给用户手动处理的简单步骤:先检查网络,再重新下载 Chromium;如果还是不行,就让用户手动安装后再继续。
84
+ - 不要把这个问题说成账号问题,也不要只说“网络错误”就结束。
85
+
70
86
  ## 支持平台
71
87
 
72
88
  当前受控协议支持:
@@ -209,9 +225,10 @@ downloads 浏览器下载文件
209
225
  ### 登录或保存登录态
210
226
 
211
227
  1. 先执行 `profile-path` 或 `session-init` 获取账号目录。
212
- 2. 使用该账号专属 profile 打开平台登录页。
213
- 3. 遇到扫码、验证码或风控,暂停并让用户手动处理。
214
- 4. 登录完成后只报告“已保存本地登录态”和 profile 路径,不输出 Cookie 内容。
228
+ 2. 先检查本机是否已有 Chrome,次选 Edge;只有都没有时,才提示用户安装 Chromium。
229
+ 3. 使用该账号专属 profile 打开平台登录页。
230
+ 4. 遇到扫码、验证码或风控,暂停并让用户手动处理。
231
+ 5. 登录完成后只报告“已保存本地登录态”和 profile 路径,不输出 Cookie 内容。
215
232
 
216
233
  ### 账号资料或页面采集
217
234
 
@@ -224,10 +241,11 @@ downloads 浏览器下载文件
224
241
 
225
242
  1. 发布前必须确认平台、帐号、素材、标题、正文、封面、话题、发布时间。
226
243
  2. 先执行 `dry-run --task publish` 检查缺失项。
227
- 3. 打开发布入口并填写内容。
228
- 4. 到最终发布按钮前暂停,复述即将发布的内容。
229
- 5. 用户确认后再点击最终发布或保存草稿。
230
- 6. 记录发布结果、作品链接或失败原因到 `tasks` 目录。
244
+ 3. 先优先用 Chrome 或 Edge;没有这两个浏览器时,提示用户先安装 Chromium。
245
+ 4. 打开发布入口并填写内容。
246
+ 5. 到最终发布按钮前暂停,复述即将发布的内容。
247
+ 6. 用户确认后再点击最终发布或保存草稿。
248
+ 7. 记录发布结果、作品链接或失败原因到 `tasks` 目录。
231
249
 
232
250
  ## 输出要求
233
251
 
@@ -1,27 +1,59 @@
1
1
  ---
2
2
  name: 视频投流策略
3
- description: 当用户需要为短视频、图文视频或内容素材制定投流目标、人群、预算、素材分层、测试节奏和数据调整策略时使用。
3
+ description: 当用户需要为短视频、图文视频或内容素材制定投流目标、人群、预算、素材分层、测试节奏和数据调整策略时使用。正式制定前必须先确认投流账号主页 URL,并通过帐号监控采集该账号最近 5 条视频完整数据作为策略依据。
4
4
  ---
5
5
 
6
6
  # 视频投流策略
7
7
 
8
- 本 Skill 用于制定视频内容投流策略。执行时必须先查历史资产,再查自媒体知识库,最后结合用户本次目标输出可执行投放方案。
8
+ 本 Skill 用于制定视频内容投流策略。执行时必须先确认投流对象账号,再采集该账号最近视频数据,之后再查历史资产和自媒体知识库,最后结合账号视频表现输出可执行投放方案。
9
9
 
10
10
  ## 固定流程
11
11
 
12
- 1. 先读取 `个人创作库`。
12
+ 1. 先确认投流策略针对的账号。
13
+ - 开始前必须先确认账号主页 URL,不能在不知道账号对象的情况下直接制定投流策略。
14
+ - 如果用户没有提供账号主页 URL,先询问用户提供目标账号主页链接,例如抖音、小红书、Bilibili、TikTok、YouTube 等账号主页 URL。
15
+ - 如果用户只给了账号名、昵称或 ID,先说明需要主页 URL 才能稳定采集主页和最近作品;用户确认平台和账号标识后,再尝试用 `帐号监控` 或相关搜索工具定位主页。
16
+ 2. 使用 `帐号监控` 采集账号主页和最近视频数据。
17
+ - 读取并使用 `帐号监控` Skill,不要自己临时拼接口。
18
+ - 默认采集最近发布的 5 条作品;只有用户明确要求更多或更少时,才调整数量。
19
+ - 采集字段应尽量完整,包括作品 URL/ID、标题/描述、发布时间、播放量、点赞数、评论数、转发数、收藏数、完播或其它平台可返回指标。
20
+ - 如果主页作品列表已包含播放、点赞、评论、转发、收藏等统计,可以直接使用;如果字段缺失,按 `帐号监控` 的说明调用作品详情补全。
21
+ - 采集完成后,把本次账号上下文缓存到本地,方便后续复用。
22
+ 3. 缓存本次账号投流上下文。
23
+ - YuanFlow 主程序内默认保存到程序数据目录:
24
+
25
+ ```text
26
+ <YuanFlow data dir>/runtime_tools/video-ad-strategy/account-context
27
+ ```
28
+
29
+ - Windows 外部 Agent 默认保存到:
30
+
31
+ ```text
32
+ %APPDATA%\YuanFlow\runtime_tools\video-ad-strategy\account-context
33
+ ```
34
+
35
+ - 文件名建议:
36
+
37
+ ```text
38
+ <platform>-<account_id>-latest5-<yyyyMMdd-HHmmss>.json
39
+ ```
40
+
41
+ - 缓存内容至少包含:`platform`、`account_url`、`account_id`、`profile_summary`、`recent_works`、`captured_at`、`source_snapshot_path`、`strategy_input_summary`。
42
+ 4. 再读取 `个人创作库`。
13
43
  - 优先检查 `library/publishing-plans/`、`library/performance-reviews/`、`library/best-works/`、`library/topics/`、`library/copywriting/`。
14
- - 如果发现历史投放计划、发布复盘、表现好的素材、选题或转化文案,标记为“历史参考记录”。
44
+ - 如果发现当前账号或相似账号的历史投放计划、发布复盘、表现好的素材、选题或转化文案,标记为“历史参考记录”。
15
45
  - 如果没有命中,说明“未发现可用历史参考记录”,继续下一步。
16
- 2. 调用 `自媒体知识库`。
46
+ 5. 调用 `自媒体知识库`。
17
47
  - 先查 `knowledge docs` 或 `knowledge entry`,根据平台、投放目标、预算、人群和素材类型构造 `domain` 和 `content_goal`。
18
48
  - 按返回的 `next_actions` 分层查看 `packs`、`rules` 或 `rule-detail`,直到拿到足够的方法摘要。
19
49
  - 不要自己拼 SQL,不要跳过知识库直接凭空输出。
20
- 3. 结合用户要求、历史参考记录和知识库结果,输出视频投流策略。
21
- 4. 输出后询问用户是否满意,是否要记录到 `个人创作库`。
50
+ 6. 结合用户要求、账号最近 5 条视频数据、历史参考记录和知识库结果,输出视频投流策略。
51
+ 7. 输出后询问用户是否满意,是否要记录到 `个人创作库`。
22
52
 
23
53
  ## 核心拆解
24
54
 
55
+ - 投流对象:账号主页 URL、平台、账号定位、近期内容表现。
56
+ - 近 5 条作品表现:播放、点赞、评论、转发、收藏、发布时间、主题类型和内容形式。
25
57
  - 投放目标:曝光、涨粉、线索、成交或复购。
26
58
  - 目标人群:基础人群、兴趣人群、相似人群、重定向人群。
27
59
  - 预算区间:测试预算、放量预算、止损线。
@@ -31,9 +63,12 @@ description: 当用户需要为短视频、图文视频或内容素材制定投
31
63
 
32
64
  ## 输出要求
33
65
 
66
+ - 必须先说明本次策略所针对的账号和最近 5 条作品数据概览。
34
67
  - 优先按“目标 / 人群 / 素材 / 预算 / 指标 / 调整规则”输出。
68
+ - 策略建议必须结合最近作品数据,例如哪些作品适合作为主投素材、哪些只适合做素材变体、哪些不建议投。
35
69
  - 指标要和目标对应,不能乱配。
36
70
  - 如果没有预算信息,要明确写出“需补充预算区间”。
71
+ - 如果账号主页或最近作品数据采集失败,要先说明失败步骤和缺失字段,再给出临时策略边界;不要假装已经拿到数据。
37
72
  - 不把自然流量逻辑和投流逻辑混为一谈。
38
73
 
39
74
  ## 结尾固定询问
@@ -46,6 +81,12 @@ description: 当用户需要为短视频、图文视频或内容素材制定投
46
81
 
47
82
  同时询问:
48
83
 
84
+ ```text
85
+ 是否需要把本次账号主页信息和最近 5 条视频数据保存到个人创作库,作为后续长期复用的投流策略账号对象?
86
+ ```
87
+
88
+ 同时询问:
89
+
49
90
  ```text
50
91
  是否需要我把本次方案生成 HTML 可视化汇总?
51
92
  ```
@@ -67,6 +67,12 @@ const TASK_ALIASES = {
67
67
  账号快照: 'account_snapshot',
68
68
  };
69
69
 
70
+ const BROWSER_PREFS = {
71
+ preferred: ['Chrome', 'Edge'],
72
+ fallback: 'Chromium',
73
+ retry_limit: 3,
74
+ };
75
+
70
76
  export function listBrowserCommands() {
71
77
  const commonOptions = [
72
78
  option('--platform', 'platform', true, '平台:douyin、xiaohongshu、weibo、bilibili、tiktok、youtube、twitter。'),
@@ -325,6 +331,7 @@ function buildTaskPlanPayload(options) {
325
331
  '发布前最终确认按钮',
326
332
  '任何可能修改线上帐号状态的动作',
327
333
  ],
334
+ browser_preferences: browserPreferences(),
328
335
  boundaries: browserBoundaries(),
329
336
  };
330
337
  }
@@ -411,3 +418,14 @@ function browserBoundaries() {
411
418
  fallback_tool: 'yuanflow_cli_call browser ...',
412
419
  };
413
420
  }
421
+
422
+ function browserPreferences() {
423
+ return {
424
+ browser_order: ['Chrome', 'Edge', 'Chromium'],
425
+ fallback_browser: BROWSER_PREFS.fallback,
426
+ download_retry_limit: BROWSER_PREFS.retry_limit,
427
+ download_retry_message: '如果 Chromium 连续下载 3 次还是失败,就不要继续死试了,直接告诉用户可能是网络、权限、下载源不可用或安全软件拦截,并指导用户手动下载安装后再继续。',
428
+ user_facing_hint:
429
+ '先看看这台电脑有没有 Chrome;没有就用 Edge;如果这两个都没有,再提示用户安装给浏览器自动化用的 Chromium。',
430
+ };
431
+ }