siluzan-cso-cli 1.0.0-beta.28
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 +100 -0
- package/assets/siluzan-cso/README.md +100 -0
- package/assets/siluzan-cso/SKILL.md +621 -0
- package/assets/siluzan-cso/publish-config-image.example.json +37 -0
- package/assets/siluzan-cso/publish-config.example.json +55 -0
- package/assets/siluzan-cso/reference-api.md +32 -0
- package/assets/siluzan-cso/reference-cso-publish.md +116 -0
- package/dist/chunk-FZS2K2T3.js +225 -0
- package/dist/extract-cover-NFKUUFLS.js +8 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2461 -0
- package/dist/skill/SKILL.md +621 -0
- package/dist/skill/_meta.json +5 -0
- package/dist/skill/publish-config-image.example.json +37 -0
- package/dist/skill/publish-config.example.json +55 -0
- package/dist/skill/reference-api.md +32 -0
- package/dist/skill/reference-cso-publish.md +116 -0
- package/package.json +52 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contentType": 1,
|
|
3
|
+
"taskName": "我的发布任务",
|
|
4
|
+
"failureNotification": false,
|
|
5
|
+
"isDomesticTrade": false,
|
|
6
|
+
|
|
7
|
+
"videos": [
|
|
8
|
+
{
|
|
9
|
+
"videoId": "从素材库获取的 videoId",
|
|
10
|
+
"videoUrl": "https://cdn.example.com/video.mp4",
|
|
11
|
+
"videoName": "视频文件名.mp4",
|
|
12
|
+
"isMaterialCenter": true,
|
|
13
|
+
"width": 1920,
|
|
14
|
+
"height": 1080,
|
|
15
|
+
"duration": 60,
|
|
16
|
+
|
|
17
|
+
"title": "默认标题,所有平台共用",
|
|
18
|
+
"description": "描述(YouTube/Facebook 有独立描述字段,其他平台回落为标题)",
|
|
19
|
+
"topics": ["话题A", "话题B"],
|
|
20
|
+
|
|
21
|
+
"cover": {
|
|
22
|
+
"imageUrl": "https://cdn.example.com/cover.jpg",
|
|
23
|
+
"imageName": "cover.jpg",
|
|
24
|
+
"imageSourceType": 1
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
"accounts": [
|
|
28
|
+
{
|
|
29
|
+
"entityId": "从 siluzan-cso list-accounts 获取",
|
|
30
|
+
"mediaAccountType": "Douyin",
|
|
31
|
+
"mediaCustomerId": "xxx",
|
|
32
|
+
"mediaCustomerName": "我的抖音账号",
|
|
33
|
+
"externalMediaAccountTokenId": ""
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"entityId": "另一个账号 entityId",
|
|
37
|
+
"mediaAccountType": "YouTube",
|
|
38
|
+
"mediaCustomerId": "yyy",
|
|
39
|
+
"mediaCustomerName": "我的 YouTube 频道",
|
|
40
|
+
"externalMediaAccountTokenId": ""
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
|
|
44
|
+
"publishMode": "immediate",
|
|
45
|
+
|
|
46
|
+
"platformOverrides": {
|
|
47
|
+
"YouTube": {
|
|
48
|
+
"title": "YouTube 专用标题(≤100字)",
|
|
49
|
+
"description": "YouTube 专用描述",
|
|
50
|
+
"topics": ["YouTubeTopic"]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Siluzan API 参考(占位)
|
|
2
|
+
|
|
3
|
+
> **请替换为本公司真实文档链接或 OpenAPI 地址。** 以下内容仅为结构示例,避免 Agent 编造接口。
|
|
4
|
+
|
|
5
|
+
## 基地址
|
|
6
|
+
|
|
7
|
+
- 配置项:`apiBaseUrl`,默认见 SKILL.md。
|
|
8
|
+
- 所有路径均相对于该基地址。
|
|
9
|
+
|
|
10
|
+
## 认证
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Authorization: Bearer <SILUZAN_AUTH_TOKEN>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
(若实际为 `X-Api-Key` 等,请在此写明。)
|
|
17
|
+
|
|
18
|
+
## 建议补充的章节
|
|
19
|
+
|
|
20
|
+
1. **素材**:列表、上传、详情、删除
|
|
21
|
+
2. **发布任务**:创建、状态查询、渠道列表
|
|
22
|
+
3. **站点**:站点 CRUD、页面发布
|
|
23
|
+
4. **广告**:计划、单元、创意、报表
|
|
24
|
+
|
|
25
|
+
每节附上真实 `METHOD /path` 与必填字段说明。
|
|
26
|
+
|
|
27
|
+
## OIDC(规划)
|
|
28
|
+
|
|
29
|
+
后续若支持浏览器登录换 Token,在此描述:
|
|
30
|
+
|
|
31
|
+
- 授权端点、client_id、回调方式
|
|
32
|
+
- 如何将刷新后的 Token 写入 `~/.siluzan/config.json` 或环境变量
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# CSO 图文 / 视频发布流程(与前端 postVideo 一致)
|
|
2
|
+
|
|
3
|
+
本文档提炼自 CSO 应用 `apps/cso/src/views/postVideo`(含 `buildPublishParams.js`、发布页 `index.vue` 及 `components`)。**Agent 应据此引导用户在 CSO 内完成发布,或通过 API 时仅使用已确认的端点;不要编造请求体字段。**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. 业务区分
|
|
8
|
+
|
|
9
|
+
| 概念 | 值 / 说明 |
|
|
10
|
+
|------|-----------|
|
|
11
|
+
| **内容类型 contentType** | `1` = 视频发布;`2` = 图文发布 |
|
|
12
|
+
| **平台类型 csoPlatformType** | `1` = 内贸;`2` = 外贸(与存储键 `isDomesticTrade` 对应:内贸 true → 1) |
|
|
13
|
+
| **媒体账号树** | 内贸请求 `getTree` 时 `mediaGroup: 1`,外贸 `mediaGroup: 0` |
|
|
14
|
+
|
|
15
|
+
用户需先在 CSO 登录;发布页路由一般为 **`/postVideo`**,可通过 query 切换模式:
|
|
16
|
+
|
|
17
|
+
- `?contentType=1` 视频;`?contentType=2` 图文
|
|
18
|
+
- `?publishId=xxx` 基于已有任务修改
|
|
19
|
+
- `?dataType=...` 从素材中心带入发布(具体以产品为准)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2. 用户可见三步(与 PostSteps 一致)
|
|
24
|
+
|
|
25
|
+
### 视频(contentType = 1)
|
|
26
|
+
|
|
27
|
+
1. **添加视频** — 本地上传或素材库添加;等待上传完成再提交。
|
|
28
|
+
2. **发布设置** — 为每条视频、每个已选账号配置:标题/话题/封面(按平台)、发布方式(立即 / 定时)、定时时间等。
|
|
29
|
+
3. **发布任务** — 填写任务名、可选失败通知 → **提交发布**;成功后通常跳转任务列表 `/task`。
|
|
30
|
+
|
|
31
|
+
### 图文(contentType = 2)
|
|
32
|
+
|
|
33
|
+
1. **添加图片** — 本地或素材库;每条「帖子」至少要有**有效图片或文案**之一。
|
|
34
|
+
2. **发布设置** — 每平台标题/话题、发布方式与时间。
|
|
35
|
+
3. **发布任务** — 同上,提交创建发布任务。
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 3. 单条内容在界面上的必填项(与校验逻辑一致)
|
|
40
|
+
|
|
41
|
+
Agent 应用自然语言帮用户逐项确认,避免提交时报错。
|
|
42
|
+
|
|
43
|
+
### 视频(每条视频 × 每个已选媒体账号)
|
|
44
|
+
|
|
45
|
+
| 检查项 | 说明 |
|
|
46
|
+
|--------|------|
|
|
47
|
+
| 媒体账号 | 至少绑定一个账号;否则提示「请设置媒体账号」。 |
|
|
48
|
+
| 标题 | `publishTitle.title` 必填;提交时若无描述,多数平台描述会回落为标题。 |
|
|
49
|
+
| 封面 | 需 `imageUrl`、`imageName`、`imageSourceType`;否则「封面参数缺失」。 |
|
|
50
|
+
| 发布方式 | `mediaVideoType` 必填;非「立即」时必须填 `mediaPublishAt`。 |
|
|
51
|
+
| YouTube 标题 | 前端限制 **100 字**,超限有发布失败风险。 |
|
|
52
|
+
| 需合成封面的平台 | 如 YouTube / TikTok / X 等(`nonsupportCoverChannels` / `isMergeCover`):未单独设封面时会提示是否继续(否则取视频首帧)。 |
|
|
53
|
+
| 上传中 | 视频仍在上传时不可提交:「视频正在上传,请稍后提交」。 |
|
|
54
|
+
|
|
55
|
+
### 图文(每条帖子 × 每个账号)
|
|
56
|
+
|
|
57
|
+
| 检查项 | 说明 |
|
|
58
|
+
|--------|------|
|
|
59
|
+
| 可发布内容 | 至少一张有效图(已上传成功)或标题文案非空;否则「没有可发布的帖子…」。 |
|
|
60
|
+
| 媒体账号 / 标题 / 发布方式 / 定时 | 与视频侧类似(图文无封面字段,使用 `imageTextToBeSent`)。 |
|
|
61
|
+
|
|
62
|
+
### 内贸专属
|
|
63
|
+
|
|
64
|
+
- **定时发布**:若定时时间晚于账号 `tokenTime`(授权到期),会弹窗提示账号即将到期、继续发布有失败风险;用户确认后仍可提交。
|
|
65
|
+
- **内贸定时任务**:`publishTimeSetting` 可能携带统一 `publishAt`(见 `getPublishTimeSetting`);外贸逻辑不同。
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 4. 平台侧文案长度(供 Agent 帮用户缩写)
|
|
70
|
+
|
|
71
|
+
**视频**(VideoPostEditor):YouTube 标题 100;TikTok 2200;Facebook 5000;Instagram 2200;Linkedin 5000;Twitter 260;抖音 500;视频号 500。描述仅 YouTube/Facebook 有单独上限(5000)。
|
|
72
|
+
|
|
73
|
+
**图文**(PostEditor):Instagram 2200;Facebook 5000;Twitter 280;Linkedin 3000;抖音 2200;视频号 1000。
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 5. 前端调用的关键 API(路径来自 `api/matrixPost.js`)
|
|
78
|
+
|
|
79
|
+
基址分 `apiBaseUrl`(主站 query)与 `csoBaseUrl`(CSO 服务),以实际环境配置为准。
|
|
80
|
+
|
|
81
|
+
| 用途 | 方法 | 路径模式 |
|
|
82
|
+
|------|------|----------|
|
|
83
|
+
| 媒体账号树 | GET | `{apiBaseUrl}/query/media-account/v1/getTree` |
|
|
84
|
+
| 提交发布任务 | POST | `{csoBaseUrl}/cso/v1/video/create` |
|
|
85
|
+
| 保存草稿 | POST | `{csoBaseUrl}/cso/v1/video/saveToDrafts/{csoPlatformType}` |
|
|
86
|
+
| 读取草稿 | GET | `{csoBaseUrl}/cso/v1/video/detailForDrafts/{csoPlatformType}` |
|
|
87
|
+
| 删除草稿 | POST | `{csoBaseUrl}/cso/v1/video/deleteDrafts/{csoPlatformType}` |
|
|
88
|
+
| 编辑任务回填 | GET | `{csoBaseUrl}/cso/v1/task/detailForChange?publishId=...` |
|
|
89
|
+
| 上传视频 | POST Form | `{apiBaseUrl}/contentupload/Douyin/UploadVideoWithContentType` |
|
|
90
|
+
| 上传图片 | POST Form | `{apiBaseUrl}/contentupload/Douyin/UploadImageWithContentType` |
|
|
91
|
+
|
|
92
|
+
**提交体要点(create)**:前端将 `contents` **JSON 序列化后的字符串**与 `channels`(按媒体类型分组的账号与待发送列表)一并提交;含 `contentType`(1 视频 / 2 图文)、`videoType`、`taskName`、`version: "v3"`、`publishTimeSetting`、`actionStartTime` / `actionStopTime` 等。直连 API 集成须以 OpenAPI 或后端文档为准,此处仅反映前端行为。
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 6. Agent 协助用户的推荐话术流程
|
|
97
|
+
|
|
98
|
+
1. **确认模式**:要发视频还是图文?内贸还是外贸账号环境?
|
|
99
|
+
2. **入口**:打开 CSO → 矩阵发布/发布页 → 选对 `contentType`。
|
|
100
|
+
3. **添加素材**:视频/图片是否已从素材库或本地上传完成?
|
|
101
|
+
4. **选账号**:左侧或账号树勾选目标平台账号。
|
|
102
|
+
5. **按平台填标题、话题、封面(视频)、发布方式与时间**。
|
|
103
|
+
6. **检查**:YouTube 标题长度、是否需单独封面、内贸定时与授权到期。
|
|
104
|
+
7. **任务名与提交** → 到任务列表查看进度。
|
|
105
|
+
|
|
106
|
+
若用户要做「API 自动化发布」,明确告知:create 接口体复杂且与前端状态一致,需要后端文档或抓包示例,**勿凭猜测拼 body**。
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 7. 相关代码位置(供人类开发者对照)
|
|
111
|
+
|
|
112
|
+
- 参数构建:`postVideo/buildPublishParams.js`(`buildVideoTaskParams` / `buildImageTaskParams`)
|
|
113
|
+
- 提交流程:`postVideo/index.vue`(`submit` → `checkAccountExpire` → `VideoCreate`)
|
|
114
|
+
- 接口:`api/matrixPost.js`
|
|
115
|
+
- 步骤条:`postVideo/PostSteps.vue`
|
|
116
|
+
- 单条编辑:`components/VideoPostEditor.vue`、`PostEditor.vue`
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "siluzan-cso-cli",
|
|
3
|
+
"version": "1.0.0-beta.28",
|
|
4
|
+
"description": "Siluzan platform AI Skill CLI — multi-platform content publishing (video/image-text) for Cursor, Claude Code, and OpenClaw.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"siluzan-cso": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"assets",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"keywords": [
|
|
15
|
+
"siluzan",
|
|
16
|
+
"skill",
|
|
17
|
+
"ai-skill",
|
|
18
|
+
"cursor",
|
|
19
|
+
"claude-code",
|
|
20
|
+
"openclaw",
|
|
21
|
+
"mcp",
|
|
22
|
+
"publish",
|
|
23
|
+
"video",
|
|
24
|
+
"content-publishing",
|
|
25
|
+
"cli"
|
|
26
|
+
],
|
|
27
|
+
"license": "UNLICENSED",
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@azure/storage-blob": "^12.31.0",
|
|
33
|
+
"@sentry/node": "9",
|
|
34
|
+
"commander": "^12.1.0",
|
|
35
|
+
"image-size": "^2.0.2"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/node": "^22.10.0",
|
|
39
|
+
"tsup": "^8.3.0",
|
|
40
|
+
"typescript": "^5.7.2",
|
|
41
|
+
"siluzan-cli-common": "1.0.0"
|
|
42
|
+
},
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "node scripts/write-defaults.mjs --env production && tsup && node scripts/copy-skill-assets.mjs --env production",
|
|
48
|
+
"build:prod": "node scripts/write-defaults.mjs --env production && tsup && node scripts/copy-skill-assets.mjs --env production",
|
|
49
|
+
"build:test": "node scripts/write-defaults.mjs --env test && tsup && node scripts/copy-skill-assets.mjs --env test",
|
|
50
|
+
"start": "node dist/index.js"
|
|
51
|
+
}
|
|
52
|
+
}
|