@yixiaoermail/cli 3.1.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.
Files changed (127) hide show
  1. package/README.md +25 -0
  2. package/bin/yxer.js +74 -0
  3. package/dist/yxer-darwin-amd64 +0 -0
  4. package/dist/yxer-darwin-arm64 +0 -0
  5. package/dist/yxer-linux-amd64 +0 -0
  6. package/dist/yxer-linux-arm64 +0 -0
  7. package/dist/yxer-windows-amd64.exe +0 -0
  8. package/dist/yxer-windows-arm64.exe +0 -0
  9. package/package.json +23 -0
  10. package/skills/yixiaoer/QUICKSTART.md +265 -0
  11. package/skills/yixiaoer/SKILL.md +70 -0
  12. package/skills/yixiaoer/assets/yixiaoer.png +0 -0
  13. package/skills/yixiaoer/plugin.json +21 -0
  14. package/skills/yixiaoer/references/cli/command-reference.md +212 -0
  15. package/skills/yixiaoer/references/cli/skill-install.md +65 -0
  16. package/skills/yixiaoer/references/cli-install-uninstall.md +196 -0
  17. package/skills/yixiaoer/references/domains/accounts-and-env.md +37 -0
  18. package/skills/yixiaoer/references/domains/draft-and-material.md +29 -0
  19. package/skills/yixiaoer/references/domains/install-and-sync.md +37 -0
  20. package/skills/yixiaoer/references/domains/publish.md +75 -0
  21. package/skills/yixiaoer/references/domains/troubleshooting.md +30 -0
  22. package/skills/yixiaoer/references/execution-standard.md +144 -0
  23. package/skills/yixiaoer/references/get-account-overviews.md +56 -0
  24. package/skills/yixiaoer/references/get-challenges.md +14 -0
  25. package/skills/yixiaoer/references/get-collections.md +34 -0
  26. package/skills/yixiaoer/references/get-content-overviews.md +59 -0
  27. package/skills/yixiaoer/references/get-friends.md +9 -0
  28. package/skills/yixiaoer/references/get-games.md +39 -0
  29. package/skills/yixiaoer/references/get-goods.md +42 -0
  30. package/skills/yixiaoer/references/get-groups.md +35 -0
  31. package/skills/yixiaoer/references/get-hot-events.md +14 -0
  32. package/skills/yixiaoer/references/get-locations.md +48 -0
  33. package/skills/yixiaoer/references/get-miniapps.md +38 -0
  34. package/skills/yixiaoer/references/get-music-categories.md +41 -0
  35. package/skills/yixiaoer/references/get-music.md +67 -0
  36. package/skills/yixiaoer/references/get-publish-activities.md +40 -0
  37. package/skills/yixiaoer/references/get-publish-categories.md +62 -0
  38. package/skills/yixiaoer/references/get-sync-apps.md +14 -0
  39. package/skills/yixiaoer/references/get-topics.md +13 -0
  40. package/skills/yixiaoer/references/go-live-process.md +168 -0
  41. package/skills/yixiaoer/references/keyword-reference.md +113 -0
  42. package/skills/yixiaoer/references/material-resource.md +89 -0
  43. package/skills/yixiaoer/references/platform-doc-maintenance.md +33 -0
  44. package/skills/yixiaoer/references/platform.md +61 -0
  45. package/skills/yixiaoer/references/platforms/article/acfun.md +90 -0
  46. package/skills/yixiaoer/references/platforms/article/aiqiyi.md +56 -0
  47. package/skills/yixiaoer/references/platforms/article/baijiahao.md +94 -0
  48. package/skills/yixiaoer/references/platforms/article/bilibili.md +88 -0
  49. package/skills/yixiaoer/references/platforms/article/chejiahao.md +81 -0
  50. package/skills/yixiaoer/references/platforms/article/csdn.md +86 -0
  51. package/skills/yixiaoer/references/platforms/article/dayuhao.md +78 -0
  52. package/skills/yixiaoer/references/platforms/article/douban.md +62 -0
  53. package/skills/yixiaoer/references/platforms/article/douyin.md +106 -0
  54. package/skills/yixiaoer/references/platforms/article/index.md +157 -0
  55. package/skills/yixiaoer/references/platforms/article/jianshu.md +58 -0
  56. package/skills/yixiaoer/references/platforms/article/kuaichuanhao.md +78 -0
  57. package/skills/yixiaoer/references/platforms/article/qiehao.md +78 -0
  58. package/skills/yixiaoer/references/platforms/article/souhuhao.md +75 -0
  59. package/skills/yixiaoer/references/platforms/article/toutiaohao.md +78 -0
  60. package/skills/yixiaoer/references/platforms/article/wangyihao.md +79 -0
  61. package/skills/yixiaoer/references/platforms/article/weixingongzhonghao.md +135 -0
  62. package/skills/yixiaoer/references/platforms/article/xinlangweibo.md +75 -0
  63. package/skills/yixiaoer/references/platforms/article/xueqiuhao.md +73 -0
  64. package/skills/yixiaoer/references/platforms/article/yichehao.md +92 -0
  65. package/skills/yixiaoer/references/platforms/article/yidianhao.md +76 -0
  66. package/skills/yixiaoer/references/platforms/article/zhihu.md +75 -0
  67. package/skills/yixiaoer/references/platforms/get-locations.md +5 -0
  68. package/skills/yixiaoer/references/platforms/imageText/baijiahao.md +91 -0
  69. package/skills/yixiaoer/references/platforms/imageText/douyin.md +111 -0
  70. package/skills/yixiaoer/references/platforms/imageText/index.md +116 -0
  71. package/skills/yixiaoer/references/platforms/imageText/kuaishou.md +106 -0
  72. package/skills/yixiaoer/references/platforms/imageText/shipinhao.md +125 -0
  73. package/skills/yixiaoer/references/platforms/imageText/toutiaohao.md +76 -0
  74. package/skills/yixiaoer/references/platforms/imageText/weixinshipinhao.md +7 -0
  75. package/skills/yixiaoer/references/platforms/imageText/xiaohongshu.md +88 -0
  76. package/skills/yixiaoer/references/platforms/imageText/xinlangweibo.md +77 -0
  77. package/skills/yixiaoer/references/platforms/imageText/zhihu.md +92 -0
  78. package/skills/yixiaoer/references/platforms/index.md +20 -0
  79. package/skills/yixiaoer/references/platforms/video/acfun.md +82 -0
  80. package/skills/yixiaoer/references/platforms/video/aiqiyi.md +89 -0
  81. package/skills/yixiaoer/references/platforms/video/baijiahao.md +89 -0
  82. package/skills/yixiaoer/references/platforms/video/bilibili-open.md +87 -0
  83. package/skills/yixiaoer/references/platforms/video/bilibili.md +80 -0
  84. package/skills/yixiaoer/references/platforms/video/chejiahao.md +63 -0
  85. package/skills/yixiaoer/references/platforms/video/dayuhao.md +89 -0
  86. package/skills/yixiaoer/references/platforms/video/dewu.md +80 -0
  87. package/skills/yixiaoer/references/platforms/video/douyin.md +143 -0
  88. package/skills/yixiaoer/references/platforms/video/duoduoshipin.md +64 -0
  89. package/skills/yixiaoer/references/platforms/video/fengwang.md +81 -0
  90. package/skills/yixiaoer/references/platforms/video/index.md +165 -0
  91. package/skills/yixiaoer/references/platforms/video/kuaishou-open.md +63 -0
  92. package/skills/yixiaoer/references/platforms/video/kuaishou.md +77 -0
  93. package/skills/yixiaoer/references/platforms/video/meipai.md +79 -0
  94. package/skills/yixiaoer/references/platforms/video/meiyou.md +59 -0
  95. package/skills/yixiaoer/references/platforms/video/pipixia.md +58 -0
  96. package/skills/yixiaoer/references/platforms/video/qiehao.md +91 -0
  97. package/skills/yixiaoer/references/platforms/video/shipinhao.md +95 -0
  98. package/skills/yixiaoer/references/platforms/video/souhuhao.md +91 -0
  99. package/skills/yixiaoer/references/platforms/video/souhushipin.md +64 -0
  100. package/skills/yixiaoer/references/platforms/video/tengxunshipin.md +63 -0
  101. package/skills/yixiaoer/references/platforms/video/toutiaohao.md +66 -0
  102. package/skills/yixiaoer/references/platforms/video/wangyihao.md +93 -0
  103. package/skills/yixiaoer/references/platforms/video/weishi.md +61 -0
  104. package/skills/yixiaoer/references/platforms/video/xiaohongshu.md +133 -0
  105. package/skills/yixiaoer/references/platforms/video/xiaohongshushop.md +92 -0
  106. package/skills/yixiaoer/references/platforms/video/xinlangweibo.md +79 -0
  107. package/skills/yixiaoer/references/platforms/video/yichehao.md +61 -0
  108. package/skills/yixiaoer/references/platforms/video/yidianhao.md +85 -0
  109. package/skills/yixiaoer/references/platforms/video/zhihu.md +85 -0
  110. package/skills/yixiaoer/references/proxy-management.md +68 -0
  111. package/skills/yixiaoer/references/query-accounts.md +85 -0
  112. package/skills/yixiaoer/references/save-draft.md +75 -0
  113. package/skills/yixiaoer/references/topic-tags.md +139 -0
  114. package/skills/yixiaoer/references/troubleshooting-guide.md +105 -0
  115. package/skills/yixiaoer/references/upload-resource.md +59 -0
  116. package/skills/yixiaoer/references/usage-workflow.md +209 -0
  117. package/skills/yixiaoer/references/workflows/account-selection.md +38 -0
  118. package/skills/yixiaoer/references/workflows/common-rules.md +259 -0
  119. package/skills/yixiaoer/references/workflows/draft-workflow.md +44 -0
  120. package/skills/yixiaoer/references/workflows/local-vs-cloud.md +50 -0
  121. package/skills/yixiaoer/references/workflows/material-workflow.md +43 -0
  122. package/skills/yixiaoer/references/workflows/payload-sourcing.md +70 -0
  123. package/skills/yixiaoer/references/workflows/publish-article.md +68 -0
  124. package/skills/yixiaoer/references/workflows/publish-imageText.md +64 -0
  125. package/skills/yixiaoer/references/workflows/publish-troubleshooting.md +50 -0
  126. package/skills/yixiaoer/references/workflows/publish-video.md +65 -0
  127. package/skills/yixiaoer/references/yixiaoer-shared.md +95 -0
@@ -0,0 +1,40 @@
1
+ # 获取征文活动列表 (Get Activities)
2
+
3
+ 获取各媒体平台(如百家号、企鹅号等)当前正在开展的征文任务或激励活动信息。
4
+
5
+ ## 触发场景 (Trigger)
6
+ - **意图辨析**:当用户希望参加平台官方活动以获取额外流量激励或奖金,并需要获取活动 ID 进行发布挂载时触发。
7
+ - **典型提示词**:
8
+ - “最近百家号有什么征文活动?”
9
+ - “帮我找一下适合这个视频参加的活动”
10
+ - “查看特定分类下的激励任务”
11
+
12
+ ## 参数定义 (Parameters)
13
+
14
+ ### 参数列表 (Payload Properties)
15
+
16
+ | 字段名 | 类型 | 是否必填 | 说明 |
17
+ | :--- | :--- | :--- | :--- |
18
+ | `action` | `string` | **是** | 固定值:`activities` |
19
+ | `account_id` | `string` | **是** | 蚁小二账号 ID (ObjectId) |
20
+ | `type` | `string` | 否 | 发布类型:`video` 或 `article` (默认) |
21
+ | `categoryId` | `string` | 否 | 仅查询特定分类下的活动 |
22
+ | `keyword` | `string` | 否 | 按关键字搜索 (别名: `keyWord`) |
23
+
24
+ ## 执行逻辑 (Logic Flow)
25
+ 1. **意图解析**:识别目标平台账号及活动所属类别。
26
+ 2. **关键词过滤**:提取用户提到的活动名称作为 `keyword`。
27
+ 3. **参数装配**:构造 `action: "activities"` 负载。
28
+ 4. **指令执行**:当前能力正在迁移到 `yxer` CLI,本文档不再推荐脚本直调。
29
+ 5. **挂载建议**:获取活动列表后,将 `activityId` 反馈给用户或自动准备发布 Payload。
30
+
31
+ ## 返回数据 (Response)
32
+
33
+ 返回包含活动对象的数组。参与活动时,请将对应的 `id` 填入发布表单。
34
+
35
+ ## 调用指令 (Command)
36
+
37
+ ```text
38
+ 当前版本尚未提供独立 `yxer` 子命令。
39
+ 本页仅保留字段结构说明,执行时应优先扩展 Go CLI,而不是寻找旧脚本入口。
40
+ ```
@@ -0,0 +1,62 @@
1
+ # 获取发布分类/话题 (Get Categories)
2
+
3
+ 获取特定平台账号支持的文章分类、视频分类或话题标签列表。
4
+
5
+ 当前支持平台:百家号、爱奇艺、哔哩哔哩、企鹅号、网易号、一点号、知乎、蜂网、AcFun。
6
+
7
+ ## 触发场景 (Trigger)
8
+ - **意图辨析**:在准备发布内容时,为了确保 `platformSettings` 中的分类/话题符合平台标准,不产生非法值,必须预先查询合法值。
9
+ - **典型提示词**:
10
+ - “获取这个百家号的视频分类”
11
+ - “查看百家号支持的文章类别”
12
+ - “查询可以挂载的话题”
13
+
14
+ ## 参数定义 (Parameters)
15
+
16
+ ### 参数列表 (Payload Properties)
17
+
18
+ | 字段名 | 类型 | 是否必填 | 说明 |
19
+ | :--- | :--- | :--- | :--- |
20
+ | `action` | `string` | **是** | 固定值:`categories` |
21
+ | `account_id` | `string` | **是** | 蚁小二账号 ID (ObjectId) |
22
+ | `type` | `string` | 否 | 发布类型:`video` (默认) 或 `article` |
23
+
24
+ ## 执行逻辑 (Logic Flow)
25
+ 1. **身份锚定**:识别目标账号 `account_id`(通过 `accounts` action 获取)。
26
+ 2. **场景对齐**:根据发布内容决定 `type`。
27
+ 3. **参数装配**:构造 `action: "categories"` 负载。
28
+ 4. **指令执行**:调用 `yxer query categories <account_id> [--type video|article] [--json]`。
29
+ 5. **值注入**:将 CLI 返回的完整分类对象填入发布 Payload 的对应位置,不能只摘取 `id`、`name` 或局部 `raw` 字段。
30
+
31
+ ## 返回数据说明 (Response Details)
32
+
33
+ 返回包含分类对象(`Category` 结构)的树形或扁平结构。发布时必须使用 `yxer query categories` 返回的完整对象数据。
34
+ - **Agent 手动铺平 (Flattening)**:若返回的数据包含嵌套的 `children` 数组,Agent **必须自行递归遍历**,以便在组装发布表单时能够获取任何层级的分类。
35
+ - **层级路径组装 (Cascading Path)**:
36
+ - 对于要求多级分类的平台 (如 Bilibili),Agent 在组装表单时,不能只填入最终选中的子分类。
37
+ - **必须组装一个数组**:包含从根节点到选中节点的所有路径对象。
38
+ - **包含 `raw` 对象**:路径中每一个对象除 `yixiaoerId` 和 `yixiaoerName` 外,**必须同步传入其对应的 `raw` 对象**(若存在)。
39
+
40
+ ### 复杂对象:CategoryItem
41
+ - `yixiaoerId`: 内部分类 ID。
42
+ - `yixiaoerName`: 分类名称。
43
+ - `raw`: 原始平台返回的分类对象(组装表单时必须保留)。
44
+ - `children`: 子分类数组(若存在,需递归处理)。
45
+ - **示例**:
46
+ - 父分类:`{"yixiaoerId": "18", "yixiaoerName": "动漫"}`
47
+ - 子分类:`{"yixiaoerId": "1", "yixiaoerName": "国产动漫"}`
48
+ - 最终处理后的 `category` 字段:
49
+ ```json
50
+ "category": [
51
+ { "yixiaoerId": "18", "yixiaoerName": "动漫", "raw": {} },
52
+ { "yixiaoerId": "1", "yixiaoerName": "国产动漫", "raw": {} }
53
+ ]
54
+ ```
55
+ - `raw`: 原始平台返回的分类对象。
56
+
57
+ ## 调用指令 (Command)
58
+
59
+ ```bash
60
+ yxer query categories YOUR_ACCOUNT_ID --type video --json
61
+ ```
62
+
@@ -0,0 +1,14 @@
1
+ # 获取同步发布应用列表 (Get Sync Apps)
2
+
3
+ 获取发布当前作品时,可同时同步到的其他平台或应用列表(如抖音发布时同步到今日头条)。
4
+
5
+ ## 1. 调用指令
6
+
7
+ ```text
8
+ 当前版本尚未提供独立 `yxer` 子命令。
9
+ 本页仅保留字段结构说明,执行时应优先扩展 Go CLI,而不是寻找旧脚本入口。
10
+ ```
11
+
12
+ ## 2. 返回数据结构
13
+
14
+ 返回 `Category` 数组。如果在获取时 `raw` 字段有值,发布表单中必须完整保留并透传。
@@ -0,0 +1,13 @@
1
+ # 获取话题列表 (Get Topics)
2
+
3
+ 本页是历史别名,兼容旧平台文档中的 `get-topics.md` 引用。
4
+
5
+ ## 当前建议
6
+
7
+ - 通用话题/挑战赛场景:优先读取 [`./get-challenges.md`](./get-challenges.md)
8
+ - 平台热点/活动话题场景:按需补读 [`./get-hot-events.md`](./get-hot-events.md)
9
+
10
+ ## CLI 优先级
11
+
12
+ - 如平台提供 `yxer query challenges <account_id> [--query 关键词]`,优先使用该命令
13
+ - 如平台文档明确要求活动对象,再按平台规则使用活动或热点数据
@@ -0,0 +1,168 @@
1
+ # yxer 上线流程
2
+
3
+ 本文档用于说明 `yxer` CLI 和 `yixiaoer` skill 的标准上线流程,适合研发、测试、运维和实施同学协作使用。
4
+
5
+ ## 1. 上线目标
6
+
7
+ 本项目上线交付物包含两部分:
8
+
9
+ - `yxer` CLI:实际执行账号查询、资源上传、校验和发布
10
+ - `skills/yixiaoer`:提供给 AI agent 读取的技能规则和工作流
11
+
12
+ 上线时必须保证两者版本一致,避免出现 CLI 已升级、skill 未同步的问题。
13
+
14
+ ## 2. 发布前检查
15
+
16
+ 上线前至少完成以下检查:
17
+
18
+ - `go test ./...`
19
+ - `go build -o bin/yxer.exe .`
20
+ - `bin\\yxer.exe --version`
21
+ - `bin\\yxer.exe skill show`
22
+ - `bin\\yxer.exe doctor`
23
+
24
+ 建议同时人工检查以下内容:
25
+
26
+ - `README.md` 是否已更新
27
+ - `skills/yixiaoer/SKILL.md` 是否已同步当前版本说明
28
+ - `references/cli/`、`references/workflows/` 是否与本次功能一致
29
+ - `schemas/` 是否覆盖本次变更涉及的平台字段
30
+
31
+ ## 3. 标准上线步骤
32
+
33
+ ### 步骤 1:代码冻结
34
+
35
+ - 合并本次要上线的功能、文档和 schema
36
+ - 确认没有未评审的临时调试代码
37
+ - 确认 `git status` 干净或仅保留已知发布文件
38
+
39
+ ### 步骤 2:执行测试
40
+
41
+ 在项目根目录执行:
42
+
43
+ ```bash
44
+ go test ./...
45
+ ```
46
+
47
+ 如测试失败,不进入后续上线步骤。
48
+
49
+ ### 步骤 3:构建 CLI
50
+
51
+ ```bash
52
+ go build -o bin/yxer.exe .
53
+ ```
54
+
55
+ 如需要给其他环境发包,建议同时生成版本目录,例如:
56
+
57
+ ```text
58
+ release/
59
+ yxer-windows-amd64/
60
+ yxer.exe
61
+ README.md
62
+ skills/yixiaoer/references/
63
+ ```
64
+
65
+ ### 步骤 4:冒烟验证
66
+
67
+ 至少验证以下命令:
68
+
69
+ ```bash
70
+ bin\yxer.exe --version
71
+ bin\yxer.exe skill show
72
+ bin\yxer.exe update --check
73
+ bin\yxer.exe doctor
74
+ ```
75
+
76
+ 如有可用测试账号,建议再补一轮无副作用验证:
77
+
78
+ ```bash
79
+ bin\yxer.exe accounts list 抖音 --json
80
+ bin\yxer.exe prepare 抖音 video
81
+ bin\yxer.exe schema get 抖音 video
82
+ bin\yxer.exe validate 抖音 video .\tests\fixtures\cli\test-cli-payload.json
83
+ bin\yxer.exe publish video 抖音 .\tests\fixtures\cli\test-cli-payload.json --dry-run
84
+ ```
85
+
86
+ 说明:
87
+
88
+ - `doctor` 用于检查配置和 skill 漂移
89
+ - `skill show` 用于确认技能目录和同步命令
90
+ - `update --check` 用于确认当前版本状态
91
+
92
+ ### 步骤 5:同步 Skill
93
+
94
+ 在发布包对应目录执行:
95
+
96
+ ```bash
97
+ bin\yxer.exe skill sync
98
+ ```
99
+
100
+ 如需全局安装 skill:
101
+
102
+ ```bash
103
+ bin\yxer.exe skill sync --global
104
+ ```
105
+
106
+ ### 步骤 6:发布交付物
107
+
108
+ 建议至少交付以下内容:
109
+
110
+ - `yxer.exe`
111
+ - `README.md`
112
+ - `skills/yixiaoer/references/go-live-process.md`
113
+ - `skills/yixiaoer/references/cli-install-uninstall.md`
114
+ - `skills/yixiaoer/references/usage-workflow.md`
115
+ - `skills/yixiaoer/references/keyword-reference.md`
116
+ - `skills/yixiaoer/SKILL.md`
117
+ - `references/cli/`
118
+ - `references/workflows/`
119
+ - `schemas/`
120
+
121
+ ## 4. 建议交付方式
122
+
123
+ 当前仓库尚未提供自动下载新版 CLI 二进制的能力,因此推荐以下两种方式之一:
124
+
125
+ ### 方式 A:源码构建交付
126
+
127
+ 适用于研发或内测环境:
128
+
129
+ 1. 拉取指定版本代码
130
+ 2. 执行 `go build -o bin/yxer.exe .`
131
+ 3. 按文档安装 skill
132
+
133
+ ### 方式 B:制品包交付
134
+
135
+ 适用于正式上线或给业务同学分发:
136
+
137
+ 1. 由发布人员构建 `yxer.exe`
138
+ 2. 打包 `yxer.exe + skills/yixiaoer + references + docs + schemas`
139
+ 3. 上传到内部制品库、网盘或发布平台
140
+ 4. 给使用方发固定版本下载地址
141
+
142
+ ## 5. 回滚流程
143
+
144
+ 若上线后发现问题,按以下顺序回滚:
145
+
146
+ 1. 停止分发新版本 `yxer.exe`
147
+ 2. 恢复上一个稳定版本的 CLI 包
148
+ 3. 重新执行对应版本的 `yxer skill sync`
149
+ 4. 用 `yxer doctor` 检查 skill 是否与 CLI 重新对齐
150
+
151
+ 如果只是 skill 文档漂移,但 CLI 本体无问题,可只回滚 skill 包并重新同步。
152
+
153
+ ## 6. 上线验收标准
154
+
155
+ 满足以下条件即可判定可上线:
156
+
157
+ - 单元测试通过
158
+ - `yxer.exe` 可正常运行并输出版本
159
+ - `yxer skill show` 可正确识别技能目录
160
+ - `yxer doctor` 无阻断性错误
161
+ - 安装、同步、使用流程文档齐全
162
+ - CLI 与 skill 版本一致
163
+
164
+ ## 7. 风险提示
165
+
166
+ - 当前项目没有“自动下载最新 CLI”的能力,版本升级仍以源码构建或制品分发为主
167
+ - Skill 的实际执行依赖外部 `npx skills add` 工具,目标环境必须具备 Node.js 和 `npx`
168
+ - 若只替换 `yxer.exe` 但未同步 skill,AI agent 可能继续使用旧规则
@@ -0,0 +1,113 @@
1
+ # yxer 关键词文档
2
+
3
+ 本文档用于统一业务沟通、实施交付和 AI 调用时的关键词口径。
4
+
5
+ ## 1. 产品与组件关键词
6
+
7
+ | 关键词 | 含义 |
8
+ | --- | --- |
9
+ | `yxer` | 蚁小二 CLI,可执行入口 |
10
+ | `yixiaoer skill` | 给 AI agent 读取的技能包 |
11
+ | `CLI` | 命令行工具,当前项目即 `yxer` |
12
+ | `skill` | AI 技能规则,不直接执行 API |
13
+ | `linked app` | 宿主可识别的链接应用状态 |
14
+
15
+ ## 2. 安装与运维关键词
16
+
17
+ | 关键词 | 推荐理解 |
18
+ | --- | --- |
19
+ | 下载 CLI | 获取 `yxer.exe`,来源可以是源码构建或制品包 |
20
+ | 安装 CLI | 放置 `yxer.exe` 到本地目录并加入 `PATH` |
21
+ | 安装 skill | 执行 `npx skills add "<repo>\\skills\\yixiaoer" -y` |
22
+ | 同步 skill | 执行 `yxer skill sync`,让 skill 版本与 CLI 对齐 |
23
+ | 升级 CLI | 重新构建或替换新版 `yxer.exe` |
24
+ | 卸载 CLI | 删除 `yxer.exe`、移除 `PATH`、按需清理 `.yxer` 配置 |
25
+ | 卸载 skill | 删除 AI 宿主中的 `yixiaoer` 技能安装,并清理 `skills.stamp` |
26
+
27
+ ## 3. 发布能力关键词
28
+
29
+ | 关键词 | 含义 |
30
+ | --- | --- |
31
+ | `publish` | 正式发布 |
32
+ | `validate` | 发布前校验 payload |
33
+ | `dry-run` | 只预演,不正式提交 |
34
+ | `prepare` | 获取平台发布表单定义 |
35
+ | `schema get` | 获取标准 schema |
36
+ | `upload` | 上传图片、视频等资源 |
37
+
38
+ ## 4. 内容类型关键词
39
+
40
+ | 关键词 | 含义 |
41
+ | --- | --- |
42
+ | `video` | 视频发布 |
43
+ | `imageText` | 图文发布 |
44
+ | `article` | 文章发布 |
45
+
46
+ 说明:
47
+
48
+ - 当前推荐发布类型只使用这三种
49
+ - 文档、命令、payload 中都应保持这三个标准写法
50
+
51
+ ## 5. 发布通道关键词
52
+
53
+ | 关键词 | 含义 |
54
+ | --- | --- |
55
+ | `cloud` | 云发布,默认模式 |
56
+ | `local` | 本机发布 / 本地发布 / 客户端发布 |
57
+ | `clientId` | 本机发布时必须提供的客户端标识 |
58
+
59
+ 同义词归并建议:
60
+
61
+ - 本机发布 = 本地发布 = 客户端发布 = `publishChannel=local`
62
+ - 云发布 = 线上代理发布 = `publishChannel=cloud`
63
+
64
+ ## 6. Payload 结构关键词
65
+
66
+ | 关键词 | 含义 |
67
+ | --- | --- |
68
+ | `publishArgs` | 标准发布请求体主体 |
69
+ | `accountForms` | 账号维度表单数组,必须位于 `publishArgs` 下 |
70
+ | `contentPublishForm` | 单账号的平台业务表单 |
71
+ | `platformAccountId` | 平台账号 ID |
72
+ | `platforms` | 本次目标平台列表 |
73
+
74
+ 统一约束:
75
+
76
+ - 顶层必须包含 `publishArgs`
77
+ - `accountForms` 只能放在 `publishArgs.accountForms`
78
+ - 平台字段默认放在 `contentPublishForm`
79
+
80
+ ## 7. 查询类关键词
81
+
82
+ | 关键词 | 含义 |
83
+ | --- | --- |
84
+ | `accounts list` | 查询账号 |
85
+ | `categories` | 查询分类 |
86
+ | `locations` | 查询地点 |
87
+ | `music` | 查询音乐 |
88
+ | `goods` | 查询商品 |
89
+ | `collections` | 查询合集 |
90
+ | `challenges` | 查询话题 |
91
+ | `records list` | 查询发布记录 |
92
+
93
+ ## 8. 使用场景关键词
94
+
95
+ | 用户说法 | 标准动作 |
96
+ | --- | --- |
97
+ | 查账号 | `yxer accounts list` |
98
+ | 发视频 | `yxer publish video` |
99
+ | 发图文 | `yxer publish imageText` |
100
+ | 发文章 | `yxer publish article` |
101
+ | 先试一下 | `--dry-run` |
102
+ | 本机发 | `--publish-channel local` |
103
+ | 云端发 | 默认 `cloud` |
104
+ | 看字段 | `yxer prepare` + `yxer schema get` |
105
+
106
+ ## 9. 推荐培训口径
107
+
108
+ 对外说明时,建议统一这样表述:
109
+
110
+ - `yxer` 是实际执行工具
111
+ - `yixiaoer skill` 是给 AI 读的规则包
112
+ - 发布前必须先 `prepare`、`schema get`、`validate`
113
+ - 资源必须先上传,不能直接在 payload 里乱填外链
@@ -0,0 +1,89 @@
1
+ # 上传到素材库 (Material Library Save)
2
+
3
+ 将资源上传并登记到素材库,生成可在素材管理中复用的视频或图片记录。
4
+
5
+ ## 触发场景 (Trigger)
6
+ - **意图辨析**:当用户希望将已上传的临时资源“持久化”或“资产化”,以便后续多次复用、团队共享或在网页端素材库中进行统一管理时触发。
7
+ - **典型提示词**:
8
+ - “把这个视频存进素材库方便以后调用”
9
+ - “我的宣传片已经传好了,帮我入库”
10
+ - “将这个 Key 对应的图片登记到素材管理中”
11
+
12
+ > [!TIP]
13
+ > **推荐命令 (Recommended Command)**:
14
+ > 当用户意图是“把文件放进素材库”,优先直接使用:
15
+ >
16
+ > ```bash
17
+ > yxer material add --file ./demo.mp4
18
+ > ```
19
+ >
20
+ > 该命令会自动完成:
21
+ > 1. 上传到 `material-library`
22
+ > 2. 素材登记入库
23
+
24
+ ## 参数定义 (Parameters)
25
+
26
+ ### 参数列表 (Payload Properties)
27
+
28
+ | 字段名 | 类型 | 是否必填 | 描述 |
29
+ | :--- | :--- | :--- | :--- |
30
+ | `action` | `string` | **是** | 固定值: `material` |
31
+ | `filePath` | `string` | **是** | 已上传到蚁小二 OSS 的资源 `key`(通过 `upload` 获取) |
32
+ | `fileName` | `string` | **是** | 展示用文件名,建议保留扩展名 |
33
+ | `width` | `number` | **是** | 素材宽度 |
34
+ | `height` | `number` | **是** | 素材高度 |
35
+ | `type` | `string` | **是** | 素材类型。常用值为 `video` 或 `image` |
36
+ | `thumbPath` | `string` | 否 | 缩略图资源 `key`。视频建议传封面,图片可不传 |
37
+
38
+ ## 执行逻辑 (Logic Flow)
39
+ 1. **链路检查**:确认资源是否已通过 `upload` 动作上传(建议使用 `bucket: "material-library"`)。
40
+ 2. **元数据提取**:识别文件的真实名称、宽高及类型。
41
+ 3. **参数装配**:构造 `action: "material"` 及完整元数据。
42
+ 4. **指令执行**:优先调用 `yxer material add --file ...`;只有高级定制时再拆分成 `upload + material create`。
43
+ 5. **入库反馈**:向用户确认素材 ID 及入库成功状态。
44
+
45
+ ## 推荐链路 (Recommended Flow)
46
+
47
+ 1. 优先使用:
48
+
49
+ ```bash
50
+ yxer material add --file ./demo.mp4
51
+ ```
52
+
53
+ 2. 如需手工控制资源 key 或缩略图,再拆分成:
54
+ - `yxer upload ./demo.mp4 --bucket material-library`
55
+ - `yxer material create material-payload.json`
56
+
57
+ ## 调用指令 (Command)
58
+
59
+ ```bash
60
+ yxer material create material-payload.json
61
+ ```
62
+
63
+ 推荐优先执行:
64
+
65
+ ```bash
66
+ yxer material add --file ./demo.mp4
67
+ ```
68
+
69
+ 兼容旧模式时,先执行:
70
+
71
+ ```bash
72
+ yxer upload ./demo.mp4 --bucket material-library
73
+ ```
74
+
75
+ 再将返回的 `key` 组装进 `material-payload.json`:
76
+
77
+ ```json
78
+ {
79
+ "filePath": "uploaded/demo.mp4",
80
+ "fileName": "demo.mp4",
81
+ "width": 1080,
82
+ "height": 1920,
83
+ "type": "video"
84
+ }
85
+ ```
86
+
87
+ ## 注意事项
88
+ - **Bucket 匹配**:若目标是素材库,请在上传步骤显式使用 `bucket: "material-library"`。
89
+ - **重复校验**:若相同资源已入库,后端可能返回已有记录。
@@ -0,0 +1,33 @@
1
+ # 平台文档维护规范
2
+
3
+ 本文档定义 `skills/yixiaoer/references/platforms/` 与根目录历史文档副本的角色分工,避免平台文档长期双轨漂移。
4
+
5
+ ## 目录角色
6
+
7
+ - `skills/yixiaoer/references/platforms/`
8
+ - skill 运行时唯一有效的平台文档入口
9
+ - Agent 读取平台差异时,必须优先读取这里
10
+ - 这里的内容优先级最高
11
+ - 根目录历史平台文档副本
12
+ - 仅供仓库人工查阅、比对和批量编辑
13
+ - 不再作为 skill 或 agent 主入口
14
+
15
+ ## 维护原则
16
+
17
+ 1. 平台文档发生变更时,先更新 `skills/yixiaoer/references/platforms/`
18
+ 2. 如果仍保留根目录副本,同一轮变更内必须同步更新
19
+ 3. 若两处内容冲突,以 `skills/yixiaoer/references/platforms/` 为准
20
+ 4. 新增平台或新增字段时,所有引用路径应指向 skill 内平台目录
21
+
22
+ ## 引用规范
23
+
24
+ - skill 入口:`skills/yixiaoer/SKILL.md`
25
+ - 任务分域:`skills/yixiaoer/references/domains/`
26
+ - 平台索引:`skills/yixiaoer/references/platforms/*/index.md`
27
+ - 平台细节:`skills/yixiaoer/references/platforms/<type>/<platform>.md`
28
+
29
+ ## 禁止事项
30
+
31
+ - 不要再把历史平台副本写成“唯一入口”
32
+ - 不要在 workflow 中把根目录历史副本作为 agent 默认跳转路径
33
+ - 不要只修改历史副本而遗漏 skill 内平台文档
@@ -0,0 +1,61 @@
1
+ # 平台定义 (Platform Definitions)
2
+ 如无特殊声明,API 接口中 `platforms` 数组中需要填写的名称为**平台中文名**。
3
+
4
+ 详细的发布接口结构请参考: [平台参考索引](./platforms/index.md)
5
+
6
+ ## 平台标识枚举 (Platform Codes)
7
+
8
+ | 平台标识 (Code) | 平台中文名 (Name) |
9
+ | :--- | :--- |
10
+ | `DouYin` | `抖音` |
11
+ | `KuaiShou` | `快手` |
12
+ | `ShiPinHao` | `视频号` |
13
+ | `BiLiBiLi` | `哔哩哔哩` |
14
+ | `XiaoHongShu` | `小红书` |
15
+ | `BaiJiaHao` | `百家号` |
16
+ | `TouTiaoHao` | `头条号` |
17
+ | `XiGuaShiPin` | `西瓜视频` |
18
+ | `ZhiHu` | `知乎` |
19
+ | `QiEHao` | `企鹅号` |
20
+ | `XinLangWeiBo` | `新浪微博` |
21
+ | `SouHuHao` | `搜狐号` |
22
+ | `YiDianHao` | `一点号` |
23
+ | `DaYuHao` | `大鱼号` |
24
+ | `WangYiHao` | `网易号` |
25
+ | `AiQiYi` | `爱奇艺` |
26
+ | `TengXunWeiShi` | `腾讯微视` |
27
+ | `WeiXinGongZhongHao` | `微信公众号` |
28
+ | `WeiXin` | `微信` |
29
+ | `Tiktok` | `TikTok` |
30
+ | `Youtube` | `Youtube` |
31
+ | `Twitter` | `X` |
32
+ | `Facebook` | `Facebook` |
33
+ | `Instagram` | `Instagram` |
34
+ | `Other` | `其他账号` |
35
+ | `SouHuShiPin` | `搜狐视频` |
36
+ | `PiPiXia` | `皮皮虾` |
37
+ | `TengXunShiPin` | `腾讯视频` |
38
+ | `DuoDuoShiPin` | `多多视频` |
39
+ | `MeiPai` | `美拍` |
40
+ | `AcFun` | `AcFun` |
41
+ | `KuaiChuanHao` | `快传号` |
42
+ | `XueQiuHao` | `雪球号` |
43
+ | `CheJiaHao` | `车家号` |
44
+ | `XiaoHongShuShangJiaHao` | `小红书商家号` |
45
+ | `YiCheHao` | `易车号` |
46
+ | `FengWang` | `蜂网` |
47
+ | `DouBan` | `豆瓣` |
48
+ | `CSDN` | `CSDN` |
49
+ | `DeWu` | `得物` |
50
+ | `JianShu` | `简书` |
51
+ | `MeiYou` | `美柚` |
52
+ | `WeiXinGongZhongHao-Open` | `微信公众号-Open` |
53
+ | `BiLiBiLi-Open` | `哔哩哔哩-Open` |
54
+
55
+ ## 平台类型枚举 (PlatformType)
56
+
57
+ | 值 (Value) | 定义 | 说明 |
58
+ | :--- | :--- | :--- |
59
+ | `0` | `Crawler` | 其他/爬虫账号 |
60
+ | `1` | `OpenPlatform` | 开放平台账号 |
61
+ | `2` | `Overseas` | 海外平台账号 |
@@ -0,0 +1,90 @@
1
+ # AcFun文章发布参数 (AcFun Article)
2
+
3
+ > [!IMPORTANT]
4
+ > **前提条件 (Prerequisite)**:
5
+ > 在使用本平台的特定参数之前,你 **必须** 已经阅读并理解了 [文章发布首页 (Index)](./index.md) 中定义的 Payload 根结构。本页仅描述 `contentPublishForm` 内部的平台差异化字段。
6
+
7
+
8
+ ## 触发场景 (Trigger)
9
+ - **意图辨析**:用户指定在“Acfun”平台发布文章内容时触发。
10
+ - **典型提示词**:
11
+ - “发布这篇文章到Acfun”
12
+ - “并在Acfun上同步更新”
13
+
14
+ ## 执行逻辑 (Logic Flow)
15
+ 1. **内容处理**:确保文章正文符合Acfun要求的格式。
16
+ 2. **参数装配**:提取标题、正文及封面信息至 `contentPublishForm`。
17
+ 3. **指令执行**:先执行 `yxer validate <platform> <type> <payload.json>`,再执行 `yxer publish <type> <platform> <payload.json> [clientId]`。
18
+
19
+
20
+ 本平台文章发布通过 `contentPublishForm` 承载以下参数。
21
+
22
+ ## 1. contentPublishForm 参数定义
23
+
24
+ | 字段名 | 类型 | 必填 | 说明 | 默认值 |
25
+ | :--- | :--- | :--- | :--- | :--- |
26
+ | `formType` | `string` | **是** | 固定值: `task` | `task` |
27
+ | `title` | `string` | **是** | 文章标题 (长度: 1-50) | - |
28
+ | `content` | `string` | **是** | 文章内容 (HTML 格式,最多 50000 字符) | - |
29
+ | `desc` | `string` | 否 | 文章摘要/描述 (最多 200 字) | - |
30
+ | `covers` | `Array` | **是** | 文章封面列表 (`OldCover[]`, 至少 1 张) | - |
31
+ | `tags` | `string[]` | 否 | 话题标签 (最多 1 个) | - |
32
+ | `category` | `Array` | **是** | 文章分类 (`Category[]`, 1-2 个) | - |
33
+ | `type` | `number` | **是** | 创作类型: 0-不申明, 1-申明原创 | - |
34
+ | `contentSourceUrl` | `string` | 否 | 原文链接 (转载时必填) | - |
35
+
36
+ ## 2. Payload 完整示例
37
+
38
+ ```json
39
+ {
40
+ "action": "publish",
41
+ "publishType": "article",
42
+ "platforms": ["AcFun"],
43
+ "publishArgs": {
44
+ "accountForms": [
45
+ {
46
+ "platformAccountId": "acc_ac_001",
47
+ "coverKey": "article_cover_key",
48
+ "cover": { "key": "article_cover_key", "size": 102400, "width": 800, "height": 600 },
49
+ "contentPublishForm": {
50
+ "formType": "task",
51
+ "title": "这是文章标题",
52
+ "content": "<h1>文章标题</h1><p>正文内容...</p>",
53
+ "covers": [
54
+ { "key": "article_cover_key", "size": 102400, "width": 800, "height": 600 }
55
+ ],
56
+ "tags": ["综合"],
57
+ "type": 1,
58
+ "category": [
59
+ { "yixiaoerId": "cat_001", "yixiaoerName": "综合", "raw": {} }
60
+ ]
61
+ }
62
+ }
63
+ ]
64
+ }
65
+ }
66
+ ```
67
+
68
+ ## 3. 复杂对象结构说明
69
+
70
+ ### 3.1 OldCover
71
+ | 字段名 | 类型 | 必填 | 说明 |
72
+ | :--- | :--- | :--- | :--- |
73
+ | `key` | `string` | **是** | OSS 资源 Key |
74
+ | `size` | `number` | **是** | 文件大小 (Bytes) |
75
+ | `width` | `number` | **是** | 宽度 |
76
+ | `height` | `number` | **是** | 高度 |
77
+
78
+ ### 3.2 Category (分类对象)
79
+ | 字段名 | 类型 | 必填 | 说明 |
80
+ | :--- | :--- | :--- | :--- |
81
+ | `yixiaoerId` | `string` | **是** | ID |
82
+ | `yixiaoerName` | `string` | **是** | 名称 |
83
+ | `raw` | `Object` | **是** | 原始对象 (透传) |
84
+
85
+ ## 相关接口
86
+
87
+ | 目标数据 | 对应 Action | 相关文档 |
88
+ | :--- | :--- | :--- |
89
+ | `covers.key` | `upload` | [资源上传](../../upload-resource.md) |
90
+ | `category` | `categories` | [获取发布分类](../../get-publish-categories.md) |