oc-browser-relay 1.0.26 → 1.0.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/bundled-relay/index.js +44 -3
- package/bundled-relay/public/configs/pages/guanghe-taobao-publish.json +271 -0
- package/bundled-relay/public/configs/pages/index.json +4 -1
- package/bundled-relay/public/configs/pages/kuaishou-creator-publish.json +279 -0
- package/bundled-relay/public/configs/pages/taobao-item-detail.json +32 -0
- package/bundled-relay/public/configs/pages/wechat-channels-publish.json +291 -0
- package/bundled-relay/public/configs/sites/guanghe-taobao.json +42 -0
- package/bundled-relay/public/configs/sites/index.json +4 -1
- package/bundled-relay/public/configs/sites/kuaishou-creator.json +49 -0
- package/bundled-relay/public/configs/sites/wechat-channels.json +30 -0
- package/bundled-relay/public/configs/task-templates/guanghe-taobao-publish-video.json +133 -0
- package/bundled-relay/public/configs/task-templates/index.json +7 -1
- package/bundled-relay/public/configs/task-templates/kuaishou-creator-publish-video.json +114 -0
- package/bundled-relay/public/configs/task-templates/kuaishou-creator-save-draft.json +114 -0
- package/bundled-relay/public/configs/task-templates/taobao-item-detail-images.json +78 -0
- package/bundled-relay/public/configs/task-templates/wechat-channels-publish-video.json +144 -0
- package/bundled-relay/public/configs/task-templates/wechat-channels-save-draft.json +152 -0
- package/index.js +52 -37
- package/package.json +1 -1
- package/skills/oc-browser-relay-article/SKILL.md +31 -15
- package/skills/oc-browser-relay-guanghe-taobao/SKILL.md +62 -0
- package/skills/oc-browser-relay-kuaishou/SKILL.md +65 -0
- package/skills/oc-browser-relay-taobao/SKILL.md +29 -4
- package/skills/oc-browser-relay-wechat-channels/SKILL.md +75 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"siteId": "kuaishou_creator",
|
|
3
|
+
"taskType": "save_video_draft",
|
|
4
|
+
"platform": "kuaishou",
|
|
5
|
+
"name": "保存快手视频草稿",
|
|
6
|
+
"description": "在快手创作者中心保存视频草稿",
|
|
7
|
+
"requiredFields": [
|
|
8
|
+
{
|
|
9
|
+
"name": "video",
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "视频文件路径(绝对路径)"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"optionalFields": [
|
|
15
|
+
{
|
|
16
|
+
"name": "content",
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "作品描述(正文+话题合计最多500字)"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "topics",
|
|
22
|
+
"type": "array",
|
|
23
|
+
"description": "话题标签数组,最多4个,例如 [\"话题1\", \"话题2\"]"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"nodes": [
|
|
27
|
+
{
|
|
28
|
+
"nodeId": "ensure_publish_ready",
|
|
29
|
+
"name": "ensure_publish_ready",
|
|
30
|
+
"tool": "ensure_publish_ready",
|
|
31
|
+
"args": {
|
|
32
|
+
"initialDelayMs": 2000
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"nodeId": "wait_page_ready",
|
|
37
|
+
"name": "wait_page_ready",
|
|
38
|
+
"tool": "wait",
|
|
39
|
+
"args": {
|
|
40
|
+
"delayMs": 3000,
|
|
41
|
+
"message": "等待发布页面完全加载"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"nodeId": "upload_video",
|
|
46
|
+
"name": "upload_video",
|
|
47
|
+
"tool": "upload_assets",
|
|
48
|
+
"args": {
|
|
49
|
+
"field": "video",
|
|
50
|
+
"assets": [
|
|
51
|
+
"{{data.video}}"
|
|
52
|
+
],
|
|
53
|
+
"timeoutMs": 300000
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"nodeId": "wait_form_ready",
|
|
58
|
+
"name": "wait_form_ready",
|
|
59
|
+
"tool": "wait_for_condition",
|
|
60
|
+
"args": {
|
|
61
|
+
"condition": {
|
|
62
|
+
"type": "element_visible",
|
|
63
|
+
"selector": "#work-description-edit[contenteditable='true']"
|
|
64
|
+
},
|
|
65
|
+
"timeoutMs": 120000,
|
|
66
|
+
"pollIntervalMs": 2000,
|
|
67
|
+
"message": "等待表单出现(视频上传完成后渲染)"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"nodeId": "fill_content",
|
|
72
|
+
"name": "fill_content",
|
|
73
|
+
"when": "exists(payload.content)",
|
|
74
|
+
"tool": "fill_field",
|
|
75
|
+
"args": {
|
|
76
|
+
"field": "content",
|
|
77
|
+
"value": "{{data.content}}"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"nodeId": "save_draft",
|
|
82
|
+
"name": "save_draft",
|
|
83
|
+
"tool": "trigger_action",
|
|
84
|
+
"args": {
|
|
85
|
+
"action": "saveDraft"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"nodeId": "close_tab",
|
|
90
|
+
"name": "close_tab",
|
|
91
|
+
"tool": "close_tab",
|
|
92
|
+
"args": {
|
|
93
|
+
"delayMs": 1500,
|
|
94
|
+
"message": "草稿保存成功,页面即将关闭",
|
|
95
|
+
"showCountdown": true,
|
|
96
|
+
"activateOptional": true
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"validation": [
|
|
101
|
+
{
|
|
102
|
+
"rule": "video.length >= 1",
|
|
103
|
+
"message": "需要提供视频文件路径"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"rule": "!topics || topics.length <= 4",
|
|
107
|
+
"message": "话题数量不能超过4个"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"rule": "(content ? content.length : 0) + (topics && topics.length > 0 ? 2 + topics.reduce((s,t)=>s+(t.startsWith('#')?t.length:t.length+1),0) + topics.length - 1 : 0) <= 500",
|
|
111
|
+
"message": "作品描述与话题合计不能超过500字"
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"siteId": "taobao_web",
|
|
3
|
+
"taskType": "collect_detail_images",
|
|
4
|
+
"platform": "taobao",
|
|
5
|
+
"name": "采集淘宝商品详情图",
|
|
6
|
+
"description": "打开淘宝商品详情页,抓取商品详情图接口并提取所有详情图片 URL。",
|
|
7
|
+
"requiredFields": [
|
|
8
|
+
{
|
|
9
|
+
"name": "url",
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "淘宝或天猫商品详情页链接"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"optionalFields": [
|
|
15
|
+
{
|
|
16
|
+
"name": "returnHostPatterns",
|
|
17
|
+
"type": "array",
|
|
18
|
+
"description": "任务结束后若存在匹配这些 host 或 URL 片段的标签页,则切回该标签页"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"nodes": [
|
|
22
|
+
{
|
|
23
|
+
"nodeId": "s1",
|
|
24
|
+
"name": "open_product_detail",
|
|
25
|
+
"goal": "打开淘宝商品详情页,同时启动详情图接口捕获",
|
|
26
|
+
"tool": "open_tab",
|
|
27
|
+
"args": {
|
|
28
|
+
"url": "{{data.url}}",
|
|
29
|
+
"captureNetwork": {
|
|
30
|
+
"capturePlanId": "detail_images"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"nodeId": "s2",
|
|
36
|
+
"name": "validate_product_detail_page",
|
|
37
|
+
"goal": "校验当前页面已进入淘宝商品详情页",
|
|
38
|
+
"tool": "validate_page",
|
|
39
|
+
"args": {}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"nodeId": "s3",
|
|
43
|
+
"name": "collect_product_detail",
|
|
44
|
+
"goal": "提取商品详情结构化数据(含商品标题)",
|
|
45
|
+
"tool": "collect_structured_data",
|
|
46
|
+
"args": {
|
|
47
|
+
"extractor": "product_detail"
|
|
48
|
+
},
|
|
49
|
+
"storeAs": "detailData",
|
|
50
|
+
"outputs": ["detailData"]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"nodeId": "s4",
|
|
54
|
+
"name": "collect_detail_images",
|
|
55
|
+
"goal": "解析详情图接口,提取所有详情图片 URL",
|
|
56
|
+
"tool": "collect_structured_data",
|
|
57
|
+
"args": {
|
|
58
|
+
"extractor": "detail_images",
|
|
59
|
+
"sourceNodeId": "s1"
|
|
60
|
+
},
|
|
61
|
+
"storeAs": "detailImages",
|
|
62
|
+
"outputs": ["detailImages"]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"nodeId": "s5",
|
|
66
|
+
"name": "close_product_detail_tab",
|
|
67
|
+
"goal": "采集完成后倒计时关闭商品页标签",
|
|
68
|
+
"tool": "close_tab",
|
|
69
|
+
"args": {
|
|
70
|
+
"delayMs": 3000,
|
|
71
|
+
"message": "详情图采集完成,页面即将关闭",
|
|
72
|
+
"showCountdown": true,
|
|
73
|
+
"activateUrlIncludesAny": "{{data.returnHostPatterns}}",
|
|
74
|
+
"activateOptional": true
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
{
|
|
2
|
+
"siteId": "wechat_channels",
|
|
3
|
+
"taskType": "publish_video",
|
|
4
|
+
"platform": "wechat",
|
|
5
|
+
"name": "发布微信视频号视频",
|
|
6
|
+
"description": "在微信视频号创作者中心发布视频",
|
|
7
|
+
"requiredFields": [
|
|
8
|
+
{
|
|
9
|
+
"name": "video",
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "视频文件路径(绝对路径)"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"optionalFields": [
|
|
15
|
+
{
|
|
16
|
+
"name": "title",
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "视频标题(最多16字)"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "content",
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "视频描述(正文+话题合计最多1000字)"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "topics",
|
|
27
|
+
"type": "array",
|
|
28
|
+
"description": "话题标签数组,最多10个,例如 [\"话题1\", \"话题2\"]"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"nodes": [
|
|
32
|
+
{
|
|
33
|
+
"nodeId": "ensure_publish_ready",
|
|
34
|
+
"name": "ensure_publish_ready",
|
|
35
|
+
"tool": "ensure_publish_ready",
|
|
36
|
+
"args": {
|
|
37
|
+
"initialDelayMs": 2000
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"nodeId": "wait_page_ready",
|
|
42
|
+
"name": "wait_page_ready",
|
|
43
|
+
"tool": "wait",
|
|
44
|
+
"args": {
|
|
45
|
+
"delayMs": 3000,
|
|
46
|
+
"message": "等待发布页面完全加载"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"nodeId": "upload_video",
|
|
51
|
+
"name": "upload_video",
|
|
52
|
+
"tool": "upload_assets",
|
|
53
|
+
"args": {
|
|
54
|
+
"field": "video",
|
|
55
|
+
"assets": [
|
|
56
|
+
"{{data.video}}"
|
|
57
|
+
],
|
|
58
|
+
"timeoutMs": 300000
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"nodeId": "fill_content",
|
|
63
|
+
"name": "fill_content",
|
|
64
|
+
"when": "exists(payload.content)",
|
|
65
|
+
"tool": "fill_field",
|
|
66
|
+
"args": {
|
|
67
|
+
"field": "content",
|
|
68
|
+
"value": "{{data.content}}"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"nodeId": "fill_title",
|
|
73
|
+
"name": "fill_title",
|
|
74
|
+
"when": "exists(payload.title)",
|
|
75
|
+
"tool": "fill_field",
|
|
76
|
+
"args": {
|
|
77
|
+
"field": "title",
|
|
78
|
+
"value": "{{data.title}}"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"nodeId": "wait_publish_btn_ready",
|
|
83
|
+
"name": "wait_publish_btn_ready",
|
|
84
|
+
"tool": "wait_for_condition",
|
|
85
|
+
"args": {
|
|
86
|
+
"condition": {
|
|
87
|
+
"type": "logical_and",
|
|
88
|
+
"conditions": [
|
|
89
|
+
{
|
|
90
|
+
"type": "element_exists",
|
|
91
|
+
"selector": ".video-wrap video[src^='blob:']",
|
|
92
|
+
"shadowHost": "wujie-app"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"type": "element_visible",
|
|
96
|
+
"selector": ".vertical-cover-wrap img[src^='https://']",
|
|
97
|
+
"shadowHost": "wujie-app"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
"timeoutMs": 300000,
|
|
102
|
+
"pollIntervalMs": 3000,
|
|
103
|
+
"message": "等待视频预览和封面出现(视频上传完成)"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"nodeId": "submit_publish",
|
|
108
|
+
"name": "submit_publish",
|
|
109
|
+
"tool": "trigger_action",
|
|
110
|
+
"args": {
|
|
111
|
+
"action": "publish"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"nodeId": "close_tab",
|
|
116
|
+
"name": "close_tab",
|
|
117
|
+
"tool": "close_tab",
|
|
118
|
+
"args": {
|
|
119
|
+
"delayMs": 3000,
|
|
120
|
+
"message": "发布完成,页面即将关闭",
|
|
121
|
+
"showCountdown": true,
|
|
122
|
+
"activateOptional": true
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"validation": [
|
|
127
|
+
{
|
|
128
|
+
"rule": "video.length >= 1",
|
|
129
|
+
"message": "需要提供视频文件路径"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"rule": "!title || title.length <= 16",
|
|
133
|
+
"message": "视频标题不能超过16字"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"rule": "!topics || topics.length <= 10",
|
|
137
|
+
"message": "话题数量不能超过10个"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"rule": "(content ? content.length : 0) + (topics && topics.length > 0 ? 2 + topics.reduce((s,t)=>s+(t.startsWith('#')?t.length:t.length+1),0) + topics.length - 1 : 0) <= 1000",
|
|
141
|
+
"message": "视频描述与话题合计不能超过1000字"
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
{
|
|
2
|
+
"siteId": "wechat_channels",
|
|
3
|
+
"taskType": "save_video_draft",
|
|
4
|
+
"platform": "wechat",
|
|
5
|
+
"name": "保存微信视频号草稿",
|
|
6
|
+
"description": "在微信视频号创作者中心保存视频草稿",
|
|
7
|
+
"requiredFields": [
|
|
8
|
+
{
|
|
9
|
+
"name": "video",
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "视频文件路径(绝对路径)"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"optionalFields": [
|
|
15
|
+
{
|
|
16
|
+
"name": "title",
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "视频标题(最多16字)"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "content",
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "视频描述(正文+话题合计最多1000字)"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "topics",
|
|
27
|
+
"type": "array",
|
|
28
|
+
"description": "话题标签数组,最多10个,例如 [\"话题1\", \"话题2\"]"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"nodes": [
|
|
32
|
+
{
|
|
33
|
+
"nodeId": "ensure_publish_ready",
|
|
34
|
+
"name": "ensure_publish_ready",
|
|
35
|
+
"tool": "ensure_publish_ready",
|
|
36
|
+
"args": {
|
|
37
|
+
"initialDelayMs": 2000
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"nodeId": "wait_page_ready",
|
|
42
|
+
"name": "wait_page_ready",
|
|
43
|
+
"tool": "wait",
|
|
44
|
+
"args": {
|
|
45
|
+
"delayMs": 3000,
|
|
46
|
+
"message": "等待发布页面完全加载"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"nodeId": "upload_video",
|
|
51
|
+
"name": "upload_video",
|
|
52
|
+
"tool": "upload_assets",
|
|
53
|
+
"args": {
|
|
54
|
+
"field": "video",
|
|
55
|
+
"assets": [
|
|
56
|
+
"{{data.video}}"
|
|
57
|
+
],
|
|
58
|
+
"timeoutMs": 300000
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"nodeId": "fill_content",
|
|
63
|
+
"name": "fill_content",
|
|
64
|
+
"when": "exists(payload.content)",
|
|
65
|
+
"tool": "fill_field",
|
|
66
|
+
"args": {
|
|
67
|
+
"field": "content",
|
|
68
|
+
"value": "{{data.content}}"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"nodeId": "fill_title",
|
|
73
|
+
"name": "fill_title",
|
|
74
|
+
"when": "exists(payload.title)",
|
|
75
|
+
"tool": "fill_field",
|
|
76
|
+
"args": {
|
|
77
|
+
"field": "title",
|
|
78
|
+
"value": "{{data.title}}"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"nodeId": "wait_publish_btn_ready",
|
|
83
|
+
"name": "wait_publish_btn_ready",
|
|
84
|
+
"tool": "wait_for_condition",
|
|
85
|
+
"args": {
|
|
86
|
+
"condition": {
|
|
87
|
+
"type": "logical_and",
|
|
88
|
+
"conditions": [
|
|
89
|
+
{
|
|
90
|
+
"type": "element_exists",
|
|
91
|
+
"selector": ".video-wrap video[src^='blob:']",
|
|
92
|
+
"shadowHost": "wujie-app"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"type": "element_visible",
|
|
96
|
+
"selector": ".vertical-cover-wrap img[src^='https://']",
|
|
97
|
+
"shadowHost": "wujie-app"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
"timeoutMs": 300000,
|
|
102
|
+
"pollIntervalMs": 3000,
|
|
103
|
+
"message": "等待视频预览和封面出现(视频上传完成)"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"nodeId": "save_draft",
|
|
108
|
+
"name": "save_draft",
|
|
109
|
+
"tool": "trigger_action",
|
|
110
|
+
"args": {
|
|
111
|
+
"action": "saveDraft"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"nodeId": "navigate_home",
|
|
116
|
+
"name": "navigate_home",
|
|
117
|
+
"tool": "trigger_action",
|
|
118
|
+
"args": {
|
|
119
|
+
"action": "navigateHome"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"nodeId": "close_tab",
|
|
124
|
+
"name": "close_tab",
|
|
125
|
+
"tool": "close_tab",
|
|
126
|
+
"args": {
|
|
127
|
+
"delayMs": 1500,
|
|
128
|
+
"message": "草稿保存成功,页面即将关闭",
|
|
129
|
+
"showCountdown": true,
|
|
130
|
+
"activateOptional": true
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"validation": [
|
|
135
|
+
{
|
|
136
|
+
"rule": "video.length >= 1",
|
|
137
|
+
"message": "需要提供视频文件路径"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"rule": "!title || title.length <= 16",
|
|
141
|
+
"message": "视频标题不能超过16字"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"rule": "!topics || topics.length <= 10",
|
|
145
|
+
"message": "话题数量不能超过10个"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"rule": "(content ? content.length : 0) + (topics && topics.length > 0 ? 2 + topics.reduce((s,t)=>s+(t.startsWith('#')?t.length:t.length+1),0) + topics.length - 1 : 0) <= 1000",
|
|
149
|
+
"message": "视频描述与话题合计不能超过1000字"
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
}
|