@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.
- package/README.md +25 -0
- package/bin/yxer.js +74 -0
- package/dist/yxer-darwin-amd64 +0 -0
- package/dist/yxer-darwin-arm64 +0 -0
- package/dist/yxer-linux-amd64 +0 -0
- package/dist/yxer-linux-arm64 +0 -0
- package/dist/yxer-windows-amd64.exe +0 -0
- package/dist/yxer-windows-arm64.exe +0 -0
- package/package.json +23 -0
- package/skills/yixiaoer/QUICKSTART.md +265 -0
- package/skills/yixiaoer/SKILL.md +70 -0
- package/skills/yixiaoer/assets/yixiaoer.png +0 -0
- package/skills/yixiaoer/plugin.json +21 -0
- package/skills/yixiaoer/references/cli/command-reference.md +212 -0
- package/skills/yixiaoer/references/cli/skill-install.md +65 -0
- package/skills/yixiaoer/references/cli-install-uninstall.md +196 -0
- package/skills/yixiaoer/references/domains/accounts-and-env.md +37 -0
- package/skills/yixiaoer/references/domains/draft-and-material.md +29 -0
- package/skills/yixiaoer/references/domains/install-and-sync.md +37 -0
- package/skills/yixiaoer/references/domains/publish.md +75 -0
- package/skills/yixiaoer/references/domains/troubleshooting.md +30 -0
- package/skills/yixiaoer/references/execution-standard.md +144 -0
- package/skills/yixiaoer/references/get-account-overviews.md +56 -0
- package/skills/yixiaoer/references/get-challenges.md +14 -0
- package/skills/yixiaoer/references/get-collections.md +34 -0
- package/skills/yixiaoer/references/get-content-overviews.md +59 -0
- package/skills/yixiaoer/references/get-friends.md +9 -0
- package/skills/yixiaoer/references/get-games.md +39 -0
- package/skills/yixiaoer/references/get-goods.md +42 -0
- package/skills/yixiaoer/references/get-groups.md +35 -0
- package/skills/yixiaoer/references/get-hot-events.md +14 -0
- package/skills/yixiaoer/references/get-locations.md +48 -0
- package/skills/yixiaoer/references/get-miniapps.md +38 -0
- package/skills/yixiaoer/references/get-music-categories.md +41 -0
- package/skills/yixiaoer/references/get-music.md +67 -0
- package/skills/yixiaoer/references/get-publish-activities.md +40 -0
- package/skills/yixiaoer/references/get-publish-categories.md +62 -0
- package/skills/yixiaoer/references/get-sync-apps.md +14 -0
- package/skills/yixiaoer/references/get-topics.md +13 -0
- package/skills/yixiaoer/references/go-live-process.md +168 -0
- package/skills/yixiaoer/references/keyword-reference.md +113 -0
- package/skills/yixiaoer/references/material-resource.md +89 -0
- package/skills/yixiaoer/references/platform-doc-maintenance.md +33 -0
- package/skills/yixiaoer/references/platform.md +61 -0
- package/skills/yixiaoer/references/platforms/article/acfun.md +90 -0
- package/skills/yixiaoer/references/platforms/article/aiqiyi.md +56 -0
- package/skills/yixiaoer/references/platforms/article/baijiahao.md +94 -0
- package/skills/yixiaoer/references/platforms/article/bilibili.md +88 -0
- package/skills/yixiaoer/references/platforms/article/chejiahao.md +81 -0
- package/skills/yixiaoer/references/platforms/article/csdn.md +86 -0
- package/skills/yixiaoer/references/platforms/article/dayuhao.md +78 -0
- package/skills/yixiaoer/references/platforms/article/douban.md +62 -0
- package/skills/yixiaoer/references/platforms/article/douyin.md +106 -0
- package/skills/yixiaoer/references/platforms/article/index.md +157 -0
- package/skills/yixiaoer/references/platforms/article/jianshu.md +58 -0
- package/skills/yixiaoer/references/platforms/article/kuaichuanhao.md +78 -0
- package/skills/yixiaoer/references/platforms/article/qiehao.md +78 -0
- package/skills/yixiaoer/references/platforms/article/souhuhao.md +75 -0
- package/skills/yixiaoer/references/platforms/article/toutiaohao.md +78 -0
- package/skills/yixiaoer/references/platforms/article/wangyihao.md +79 -0
- package/skills/yixiaoer/references/platforms/article/weixingongzhonghao.md +135 -0
- package/skills/yixiaoer/references/platforms/article/xinlangweibo.md +75 -0
- package/skills/yixiaoer/references/platforms/article/xueqiuhao.md +73 -0
- package/skills/yixiaoer/references/platforms/article/yichehao.md +92 -0
- package/skills/yixiaoer/references/platforms/article/yidianhao.md +76 -0
- package/skills/yixiaoer/references/platforms/article/zhihu.md +75 -0
- package/skills/yixiaoer/references/platforms/get-locations.md +5 -0
- package/skills/yixiaoer/references/platforms/imageText/baijiahao.md +91 -0
- package/skills/yixiaoer/references/platforms/imageText/douyin.md +111 -0
- package/skills/yixiaoer/references/platforms/imageText/index.md +116 -0
- package/skills/yixiaoer/references/platforms/imageText/kuaishou.md +106 -0
- package/skills/yixiaoer/references/platforms/imageText/shipinhao.md +125 -0
- package/skills/yixiaoer/references/platforms/imageText/toutiaohao.md +76 -0
- package/skills/yixiaoer/references/platforms/imageText/weixinshipinhao.md +7 -0
- package/skills/yixiaoer/references/platforms/imageText/xiaohongshu.md +88 -0
- package/skills/yixiaoer/references/platforms/imageText/xinlangweibo.md +77 -0
- package/skills/yixiaoer/references/platforms/imageText/zhihu.md +92 -0
- package/skills/yixiaoer/references/platforms/index.md +20 -0
- package/skills/yixiaoer/references/platforms/video/acfun.md +82 -0
- package/skills/yixiaoer/references/platforms/video/aiqiyi.md +89 -0
- package/skills/yixiaoer/references/platforms/video/baijiahao.md +89 -0
- package/skills/yixiaoer/references/platforms/video/bilibili-open.md +87 -0
- package/skills/yixiaoer/references/platforms/video/bilibili.md +80 -0
- package/skills/yixiaoer/references/platforms/video/chejiahao.md +63 -0
- package/skills/yixiaoer/references/platforms/video/dayuhao.md +89 -0
- package/skills/yixiaoer/references/platforms/video/dewu.md +80 -0
- package/skills/yixiaoer/references/platforms/video/douyin.md +143 -0
- package/skills/yixiaoer/references/platforms/video/duoduoshipin.md +64 -0
- package/skills/yixiaoer/references/platforms/video/fengwang.md +81 -0
- package/skills/yixiaoer/references/platforms/video/index.md +165 -0
- package/skills/yixiaoer/references/platforms/video/kuaishou-open.md +63 -0
- package/skills/yixiaoer/references/platforms/video/kuaishou.md +77 -0
- package/skills/yixiaoer/references/platforms/video/meipai.md +79 -0
- package/skills/yixiaoer/references/platforms/video/meiyou.md +59 -0
- package/skills/yixiaoer/references/platforms/video/pipixia.md +58 -0
- package/skills/yixiaoer/references/platforms/video/qiehao.md +91 -0
- package/skills/yixiaoer/references/platforms/video/shipinhao.md +95 -0
- package/skills/yixiaoer/references/platforms/video/souhuhao.md +91 -0
- package/skills/yixiaoer/references/platforms/video/souhushipin.md +64 -0
- package/skills/yixiaoer/references/platforms/video/tengxunshipin.md +63 -0
- package/skills/yixiaoer/references/platforms/video/toutiaohao.md +66 -0
- package/skills/yixiaoer/references/platforms/video/wangyihao.md +93 -0
- package/skills/yixiaoer/references/platforms/video/weishi.md +61 -0
- package/skills/yixiaoer/references/platforms/video/xiaohongshu.md +133 -0
- package/skills/yixiaoer/references/platforms/video/xiaohongshushop.md +92 -0
- package/skills/yixiaoer/references/platforms/video/xinlangweibo.md +79 -0
- package/skills/yixiaoer/references/platforms/video/yichehao.md +61 -0
- package/skills/yixiaoer/references/platforms/video/yidianhao.md +85 -0
- package/skills/yixiaoer/references/platforms/video/zhihu.md +85 -0
- package/skills/yixiaoer/references/proxy-management.md +68 -0
- package/skills/yixiaoer/references/query-accounts.md +85 -0
- package/skills/yixiaoer/references/save-draft.md +75 -0
- package/skills/yixiaoer/references/topic-tags.md +139 -0
- package/skills/yixiaoer/references/troubleshooting-guide.md +105 -0
- package/skills/yixiaoer/references/upload-resource.md +59 -0
- package/skills/yixiaoer/references/usage-workflow.md +209 -0
- package/skills/yixiaoer/references/workflows/account-selection.md +38 -0
- package/skills/yixiaoer/references/workflows/common-rules.md +259 -0
- package/skills/yixiaoer/references/workflows/draft-workflow.md +44 -0
- package/skills/yixiaoer/references/workflows/local-vs-cloud.md +50 -0
- package/skills/yixiaoer/references/workflows/material-workflow.md +43 -0
- package/skills/yixiaoer/references/workflows/payload-sourcing.md +70 -0
- package/skills/yixiaoer/references/workflows/publish-article.md +68 -0
- package/skills/yixiaoer/references/workflows/publish-imageText.md +64 -0
- package/skills/yixiaoer/references/workflows/publish-troubleshooting.md +50 -0
- package/skills/yixiaoer/references/workflows/publish-video.md +65 -0
- package/skills/yixiaoer/references/yixiaoer-shared.md +95 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# 抖音图文发布参数 (Douyin Image-Text)
|
|
2
|
+
|
|
3
|
+
> [!IMPORTANT]
|
|
4
|
+
> **前提条件 (Prerequisite)**:
|
|
5
|
+
> 在使用本平台的特定参数之前,你 **必须** 已经阅读并理解了 [图文发布首页 (Index)](./index.md) 中定义的 Payload 根结构。本页仅描述 `contentPublishForm` 内部的平台差异化字段。
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## 触发场景 (Trigger)
|
|
9
|
+
- **意图辨析**:用户指定在“Douyin”平台发布图文动态时触发。
|
|
10
|
+
- **典型提示词**:
|
|
11
|
+
- “发几张图到Douyin”
|
|
12
|
+
- “同步这条动态到Douyin”
|
|
13
|
+
|
|
14
|
+
## 执行逻辑 (Logic Flow)
|
|
15
|
+
1. **资源校验**:确保所有图片均已上传并获得 Key。
|
|
16
|
+
2. **参数装配**:填充描述及图片列表至 `contentPublishForm`。
|
|
17
|
+
3. **指令执行**:先执行 `yxer validate <platform> <type> <payload.json>`,再执行 `yxer publish <type> <platform> <payload.json> [clientId]`。
|
|
18
|
+
|
|
19
|
+
> [!TIP]
|
|
20
|
+
> 抖音图文如涉及话题,请先读取 [`../../topic-tags.md`](../../topic-tags.md)。如果要使用 `<topic>`,Agent 必须直接写入最终 `description` HTML。
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
本平台图文发布通过 `contentPublishForm` 承载以下参数。
|
|
24
|
+
|
|
25
|
+
## 1. contentPublishForm 参数定义
|
|
26
|
+
|
|
27
|
+
| 字段名 | 类型 | 必填 | 说明 | 默认值 |
|
|
28
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
29
|
+
| `formType` | `string` | **是** | 固定值: `task` | `task` |
|
|
30
|
+
| `title` | `string` | 否 | 标题 (最多 20 字) | - |
|
|
31
|
+
| `description` | `string` | 否 | 图文描述,支持 HTML (`<p>`, `<topic>`)。最多 30 字符。 | - |
|
|
32
|
+
| `images` | `Array` | **是** | 图片数组 (`OldImage[]`) | - |
|
|
33
|
+
| `location` | `Object` | 否 | 地址信息 (`PlatformDataItem`) | - |
|
|
34
|
+
| `music` | `Object` | 否 | 音乐信息 (`MusicItem`) | - |
|
|
35
|
+
| `scheduledTime` | `number` | 否 | 定时发布时间 (13 位 Unix 时间戳,单位: 毫秒) | - |
|
|
36
|
+
| `collection` | `Object` | 否 | 合集信息 (`Category`) | - |
|
|
37
|
+
| `sub_collection` | `Object` | 否 | 合集选集信息 (`Category`) | - |
|
|
38
|
+
|
|
39
|
+
## 2. 复杂对象结构说明
|
|
40
|
+
|
|
41
|
+
### OldImage
|
|
42
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
43
|
+
| :--- | :--- | :--- | :--- |
|
|
44
|
+
| `width` | `number` | **是** | 图片宽度 |
|
|
45
|
+
| `height` | `number` | **是** | 图片高度 |
|
|
46
|
+
| `size` | `number` | **是** | 文件大小 (Bytes) |
|
|
47
|
+
| `key` | `string` | **是** | 资源 Key (通过上传接口获取) |
|
|
48
|
+
| `format` | `string` | **是** | 文件格式 (e.g., `jpg`, `png`) |
|
|
49
|
+
|
|
50
|
+
### Category (用于合集等)
|
|
51
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
52
|
+
| :--- | :--- | :--- | :--- |
|
|
53
|
+
| `yixiaoerId` | `string` | **是** | 蚁小二内部 ID |
|
|
54
|
+
| `yixiaoerName` | `string` | **是** | 显示名称 |
|
|
55
|
+
| `raw` | `object` | 否 | 平台原始数据。如果在获取时该字段存在,发布表单中必须携带并完整透传 |
|
|
56
|
+
|
|
57
|
+
### MusicItem (音乐)
|
|
58
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
59
|
+
| :--- | :--- | :--- | :--- |
|
|
60
|
+
| `yixiaoerId` | `string` | 是 | 蚁小二端统一音乐 ID |
|
|
61
|
+
| `yixiaoerName` | `string` | 是 | 歌曲名称 |
|
|
62
|
+
| `duration` | `number` | 是 | 音乐时长(秒) |
|
|
63
|
+
| `playUrl` | `string` | 是 | 试听/播放链接 |
|
|
64
|
+
| `artist` | `string` | 否 | 歌手/作者名 |
|
|
65
|
+
| `raw` | `object` | 否 | 平台原始数据。如果在音乐列表获取时该字段存在,发布表单中必须携带并完整透传 |
|
|
66
|
+
|
|
67
|
+
### PlatformDataItem (基础结构)
|
|
68
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
69
|
+
| :--- | :--- | :--- | :--- |
|
|
70
|
+
| `yixiaoerId` | `string` | 是 | 统一 ID |
|
|
71
|
+
| `yixiaoerName` | `string` | 是 | 显示名称 |
|
|
72
|
+
| `raw` | `object` | 是 | 平台原始数据。如果在获取时该字段存在,发布表单中必须携带并完整透传 |
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## 3. Payload 完整示例
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"action": "publish",
|
|
81
|
+
"publishType": "imageText",
|
|
82
|
+
"platforms": ["抖音"],
|
|
83
|
+
"publishArgs": {
|
|
84
|
+
"accountForms": [
|
|
85
|
+
{
|
|
86
|
+
"platformAccountId": "DY_ACC_ID",
|
|
87
|
+
"contentPublishForm": {
|
|
88
|
+
"formType": "task",
|
|
89
|
+
"title": "抖音图文标题",
|
|
90
|
+
"description": "<p>内容描述 <topic text='合拍' raw='{\"id\":\"xxx\",\"name\":\"合拍\"}'>#合拍</topic></p>",
|
|
91
|
+
"images": [
|
|
92
|
+
{ "key": "img_1", "size": 1024, "width": 1080, "height": 1440, "format": "jpg" },
|
|
93
|
+
{ "key": "img_2", "size": 1024, "width": 1080, "height": 1440, "format": "jpg" }
|
|
94
|
+
],
|
|
95
|
+
"location": { "yixiaoerId": "loc_123", "yixiaoerName": "某商位", "raw": {} }
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 相关接口
|
|
104
|
+
|
|
105
|
+
| 目标字段 | 对应 Action | 文档参考 |
|
|
106
|
+
| :--- | :--- | :--- |
|
|
107
|
+
| `location` | `locations` | [获取位置信息](../../get-locations.md) |
|
|
108
|
+
| `collection` | `collections` | [获取合集列表](../../get-collections.md) |
|
|
109
|
+
| `music` | `music` | [获取背景音乐](../../get-music.md) |
|
|
110
|
+
| `tags` | `challenges` | [获取话题/挑战](../../get-challenges.md) |
|
|
111
|
+
| `images.key` | `upload` | [资源上传](../../upload-resource.md) |
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# 图文发布 (Image-Text Publish)
|
|
2
|
+
|
|
3
|
+
> [!CAUTION]
|
|
4
|
+
> **阅读规范 (Reading Protocol)**:
|
|
5
|
+
> 本文档是 **所有平台** 图文发布的 **唯一入口** 和 **基础 DTO 定义**。
|
|
6
|
+
> 在查阅具体的平台文档(如 `xiaohongshu.md`)之前,你 **必须** 首先查阅本文档以理解 Payload 的根结构,否则将导致生成的 JSON 无法通过校验。
|
|
7
|
+
|
|
8
|
+
## 触发场景 (Trigger)
|
|
9
|
+
- **意图辨析**:发布短小精悍的图文动态(类似小红书笔记、微博动态、朋友圈风格)时触发。特点是多图 + 简短描述。
|
|
10
|
+
- **典型提示词**:
|
|
11
|
+
- “帮我把这几张图发到小红书”
|
|
12
|
+
- “发布一条带图片的微博动态”
|
|
13
|
+
- “这个产品的宣传图,同步到抖音和推文”
|
|
14
|
+
|
|
15
|
+
## 执行逻辑 (Logic Flow)
|
|
16
|
+
1. **多图处理**:
|
|
17
|
+
- 遍历所有待发图片,循环调用 `upload` action 获得多个资源 Key。
|
|
18
|
+
- 严禁缺失任何图片的 Key。
|
|
19
|
+
2. **账号确权**:获取目标账号对应的 `platformAccountId`。
|
|
20
|
+
3. **平台细化**:针对小红书等平台,查阅对应文档补齐“话题”、“地点”等字段。
|
|
21
|
+
4. **Payload 装配**:按照 1.1 - 1.3 节结构,构造包含 `action: "publish"` 的 JSON。
|
|
22
|
+
5. **指令交付**:先执行 `yxer validate <platform> imageText <payload.json>`,再执行 `yxer publish imageText <platform> <payload.json> [clientId]`。
|
|
23
|
+
|
|
24
|
+
## 1. 数据结构 (Data Structure)
|
|
25
|
+
|
|
26
|
+
接口要求传入 `CloudTaskPushRequest` 结构。
|
|
27
|
+
|
|
28
|
+
### 1.1 基础结构 (Base Structure)
|
|
29
|
+
|
|
30
|
+
| 字段名 | 类型 | 必填 | 说明 | 默认值 |
|
|
31
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
32
|
+
| `action` | `string` | **是** | 固定值:`publish` | - |
|
|
33
|
+
| `publishType` | `string` | **是** | 固定为 `imageText` | - |
|
|
34
|
+
| `platforms` | `string[]` | **是** | 目标平台枚举数组,详见下方平台列表 | - |
|
|
35
|
+
| `coverKey` | `string` | **是** | 任务封面资源 Key | - |
|
|
36
|
+
| `publishArgs` | `Object` | **是** | 发布参数核心容器 | - |
|
|
37
|
+
| `taskSetId` | `string` | 否 | 任务集唯一标识 (草稿发布时必填) | - |
|
|
38
|
+
| `desc` | `string` | 否 | 任务描述/摘要 | - |
|
|
39
|
+
| `publishChannel` | `string` | 否 | `cloud` (云端) 或 `local` (本机) | `cloud` |
|
|
40
|
+
| `clientId` | `string` | 否 | 客户端连接 ID (`local` 发布时必填) | - |
|
|
41
|
+
| `isDraft` | `boolean` | 否 | 是否仅保存为草稿 (蚁小二草稿) | `false` |
|
|
42
|
+
|
|
43
|
+
### 1.2 草稿模式选取 (Draft Selection)
|
|
44
|
+
|
|
45
|
+
| 场景 | 蚁小二草稿箱 | 目标平台草稿箱 |
|
|
46
|
+
| :--- | :--- | :--- |
|
|
47
|
+
| **位置** | `Payload` 根路径 | `accountForms` -> `contentPublishForm` |
|
|
48
|
+
| **参数** | `"isDraft": true` | `"pubType": 0` (若平台不支持,见下方说明) |
|
|
49
|
+
| **效果** | 仅保存在蚁小二系统,不发起平台推送 | 执行推送流程,但最终结果为平台端的草稿态 |
|
|
50
|
+
| **用户话术** | “存为蚁小二草稿”、“暂不发布” | “存到抖音草稿箱”、“推送到小红书草稿盒” |
|
|
51
|
+
|
|
52
|
+
> [!TIP]
|
|
53
|
+
> **字段兼容性补丁 (Draft Fallback Rule)**:
|
|
54
|
+
> Agent 在处理“存为平台草稿”时必须遵循以下优先级:
|
|
55
|
+
> 1. **首选 (pubType)**:若目标平台文档定义了 `pubType` 字段,必须设置 `"pubType": 0`。
|
|
56
|
+
> 2. **次选 (visibleType)**:若无 `pubType` 但定义了 `visibleType` 或 `privacy` 等字段,将其设置为 **`1` (私密)**。对应的,`0` 为公开。
|
|
57
|
+
> 3. **不支持**:若上述字段均未在平台文档中定义,说明该平台不支持草稿或私密保存,Agent 应向用户说明情况并引导其选择公开推送或存为蚁小二内部草稿。
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### 1.3 发布参数 (publishArgs)
|
|
61
|
+
|
|
62
|
+
| 字段名 | 类型 | 必填 | 说明 | 默认值 |
|
|
63
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
64
|
+
| `content` | `string` | **是** | **图文描述**: 纯文本格式 | - |
|
|
65
|
+
| `accountForms` | `Array` | **是** | 账号发布表单列表 | - |
|
|
66
|
+
|
|
67
|
+
### 1.4 账号表单项 (accountForms Item)
|
|
68
|
+
|
|
69
|
+
| 字段名 | 类型 | 必填 | 说明 | 默认值 |
|
|
70
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
71
|
+
| `platformAccountId` | `string` | **是** | 蚁小二平台账号唯一 ID | - |
|
|
72
|
+
| `images` | `Array` | **是** | **ImageFormItem[]**: 图文图片列表 (`key`, `width`, `height`, `size`) | - |
|
|
73
|
+
| `cover` | `Object` | **是** | **ImageFormItem**: 主封面对象 | - |
|
|
74
|
+
| `contentPublishForm`| `Object` | **是** | **透传层**: `{}` | - |
|
|
75
|
+
| `coverKey` | `string` | **是** | 账号级封面 Key (必须与 `cover.key` 一致) | - |
|
|
76
|
+
|
|
77
|
+
## 2. 发布示例 (Payload Example)
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"action": "publish",
|
|
82
|
+
"publishType": "imageText",
|
|
83
|
+
"platforms": ["小红书"],
|
|
84
|
+
"coverKey": "img_key_1",
|
|
85
|
+
"publishArgs": {
|
|
86
|
+
"content": "这是一个图文发布的描述内容。 #演示",
|
|
87
|
+
"accountForms": [
|
|
88
|
+
{
|
|
89
|
+
"platformAccountId": "acc_img_002",
|
|
90
|
+
"images": [
|
|
91
|
+
{ "key": "img_key_1", "width": 1080, "height": 1440, "size": 200000 }
|
|
92
|
+
],
|
|
93
|
+
"coverKey": "img_key_1",
|
|
94
|
+
"cover": { "key": "img_key_1", "width": 1080, "height": 1440, "size": 200000 }
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 4. 通用规则 (Common DTO Rules)
|
|
102
|
+
|
|
103
|
+
### 4.1 级联分类组装 (Cascading Categories)
|
|
104
|
+
许多平台要求传入由父及子的完整分类对象数组。
|
|
105
|
+
- **组装逻辑**:Agent 从 `categories` 接口获取数据后,若存在层级关系,**必须自行构造** 路径数组。
|
|
106
|
+
- **填表规范**:对于每一级,必须包含 `yixiaoerId`, `yixiaoerName` 以及对应的 **`raw`** 对象。
|
|
107
|
+
- **层级示例**:
|
|
108
|
+
- 父分类:`{"yixiaoerId": "18", "yixiaoerName": "动漫", "raw": {...}}`
|
|
109
|
+
- 子分类:`{"yixiaoerId": "1", "yixiaoerName": "国产动漫", "raw": {...}}`
|
|
110
|
+
- **最终 Payload 形式**(Agent 需手动装配成此数组):
|
|
111
|
+
```json
|
|
112
|
+
"category": [
|
|
113
|
+
{ "yixiaoerId": "18", "yixiaoerName": "动漫", "raw": {...} },
|
|
114
|
+
{ "yixiaoerId": "1", "yixiaoerName": "国产动漫", "raw": {...} }
|
|
115
|
+
]
|
|
116
|
+
```
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# 快手图文发布参数 (Kuaishou Image-Text)
|
|
2
|
+
|
|
3
|
+
> [!IMPORTANT]
|
|
4
|
+
> **前提条件 (Prerequisite)**:
|
|
5
|
+
> 在使用本平台的特定参数之前,你 **必须** 已经阅读并理解了 [图文发布首页 (Index)](./index.md) 中定义的 Payload 根结构。本页仅描述 `contentPublishForm` 内部的 platform 差异化字段。
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## 触发场景 (Trigger)
|
|
9
|
+
- **意图辨析**:用户指定在“Kuaishou”平台发布图文动态时触发。
|
|
10
|
+
- **典型提示词**:
|
|
11
|
+
- “发几张图到Kuaishou”
|
|
12
|
+
- “同步这条动态到Kuaishou”
|
|
13
|
+
|
|
14
|
+
## 执行逻辑 (Logic Flow)
|
|
15
|
+
1. **资源校验**:确保所有图片均已上传并获得 Key。
|
|
16
|
+
2. **参数装配**:填充描述及图片列表至 `contentPublishForm`。
|
|
17
|
+
3. **指令执行**:先执行 `yxer validate <platform> <type> <payload.json>`,再执行 `yxer publish <type> <platform> <payload.json> [clientId]`。
|
|
18
|
+
|
|
19
|
+
本平台图文发布通过 `contentPublishForm` 承载以下参数。
|
|
20
|
+
|
|
21
|
+
## 1. contentPublishForm 参数定义
|
|
22
|
+
|
|
23
|
+
| 字段名 | 类型 | 必填 | 说明 | 默认值 |
|
|
24
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
25
|
+
| `formType` | `string` | **是** | 固定值: `task` | `task` |
|
|
26
|
+
| `description` | `string` | **否** | 图文描述,支持 HTML (`<p>`, `<topic>`)。最多 1000 字符。 | - |
|
|
27
|
+
| `images` | `OldImage[]` | **是** | 图片数组 | - |
|
|
28
|
+
| `location` | `PlatformDataItem` | **否** | 位置信息 | - |
|
|
29
|
+
| `music` | `PlatformDataItem` | **否** | 音乐信息 | - |
|
|
30
|
+
| `visibleType` | `number` | **是** | 可见类型: 0-公开, 1-私密, 3-好友可见 | 0 |
|
|
31
|
+
| `scheduledTime` | `number` | **否** | 定时发布时间 (13 位 Unix 时间戳,单位: 毫秒) | - |
|
|
32
|
+
| `collection` | `Category` | **否** | 合集信息 | - |
|
|
33
|
+
|
|
34
|
+
## 2. 复杂对象结构说明
|
|
35
|
+
|
|
36
|
+
### OldImage
|
|
37
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
38
|
+
| :--- | :--- | :--- | :--- |
|
|
39
|
+
| `key` | `string` | **是** | OSS 资源 Key |
|
|
40
|
+
| `size` | `number` | **是** | 文件大小 (Bytes) |
|
|
41
|
+
| `width` | `number` | **是** | 宽度 |
|
|
42
|
+
| `height` | `number` | **是** | 高度 |
|
|
43
|
+
| `format` | `string` | **是** | 文件格式 (如 `jpg`, `png`) |
|
|
44
|
+
|
|
45
|
+
### Category
|
|
46
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
47
|
+
| :--- | :--- | :--- | :--- |
|
|
48
|
+
| `yixiaoerId` | `string` | **是** | 蚁小二内部 ID |
|
|
49
|
+
| `yixiaoerName` | `string` | **是** | 显示名称 |
|
|
50
|
+
| `raw` | `object` | **是** | 平台原始数据 (如果接口返回,必须原样回传) |
|
|
51
|
+
|
|
52
|
+
### PlatformDataItem
|
|
53
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
54
|
+
| :--- | :--- | :--- | :--- |
|
|
55
|
+
| `yixiaoerId` | `string` | **是** | 统一 ID |
|
|
56
|
+
| `yixiaoerName` | `string` | **是** | 显示名称 |
|
|
57
|
+
| `raw` | `object` | **是** | 平台原始数据 (如果接口返回,必须原样回传) |
|
|
58
|
+
|
|
59
|
+
### MusicItem (音乐)
|
|
60
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
61
|
+
| :--- | :--- | :--- | :--- |
|
|
62
|
+
| `yixiaoerId` | `string` | **是** | 蚁小二端统一音乐 ID |
|
|
63
|
+
| `yixiaoerName` | `string` | **是** | 歌曲名称 |
|
|
64
|
+
| `duration` | `number` | **是** | 音乐时长(秒) |
|
|
65
|
+
| `playUrl` | `string` | **是** | 试听/播放链接 |
|
|
66
|
+
| `artist` | `string` | **否** | 歌手/作者名 |
|
|
67
|
+
| `raw` | `object` | **是** | 平台原始数据 (如果接口返回,必须原样回传) |
|
|
68
|
+
|
|
69
|
+
## 3. 依赖接口说明
|
|
70
|
+
|
|
71
|
+
若字段值需通过查询获得,需注明:
|
|
72
|
+
- **位置 (location)**: 需通过 `[获取地理位置](../../get-locations.md)` 获得对应的 `PlatformDataItem`。
|
|
73
|
+
- **音乐 (music)**: 需通过 `[获取音乐](../../get-music.md)` 获得对应的 `PlatformDataItem`。
|
|
74
|
+
- **话题 (topic)**: 在 `description` 中使用 `<topic>` 标签时,话题数据需通过 `[获取话题](../../get-topics.md)` 获得。
|
|
75
|
+
- **合集 (collection)**: 需通过 `[获取合集](../../get-collections.md)` 获得对应的 `Category`。
|
|
76
|
+
|
|
77
|
+
## 4. Payload 完整示例
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"action": "publish",
|
|
82
|
+
"publishType": "imageText",
|
|
83
|
+
"platforms": ["快手"],
|
|
84
|
+
"publishArgs": {
|
|
85
|
+
"accountForms": [
|
|
86
|
+
{
|
|
87
|
+
"platformAccountId": "acc_ks_it_001",
|
|
88
|
+
"contentPublishForm": {
|
|
89
|
+
"formType": "task",
|
|
90
|
+
"description": "<p>快手动态内容 <topic text='快手' raw='{\"id\":\"xxx\",\"name\":\"快手\"}'>#快手</topic></p>",
|
|
91
|
+
"images": [
|
|
92
|
+
{ "key": "img_ks_01", "size": 1024, "width": 1080, "height": 1440, "format": "jpg" }
|
|
93
|
+
],
|
|
94
|
+
"visibleType": 0
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 相关接口
|
|
103
|
+
|
|
104
|
+
| 目标数据 | 对应 Action | 相关文档 |
|
|
105
|
+
| :--- | :--- | :--- |
|
|
106
|
+
| `images.key` | `upload` | [资源上传](../../upload-resource.md) |
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# 视频号图文发布参数 (Shipinhao Image-Text)
|
|
2
|
+
|
|
3
|
+
> [!IMPORTANT]
|
|
4
|
+
> **前提条件 (Prerequisite)**:
|
|
5
|
+
> 在使用本平台的特定参数之前,你 **必须** 已经阅读并理解了 [图文发布首页 (Index)](./index.md) 中定义的 Payload 根结构。本页仅描述 `contentPublishForm` 内部的平台差异化字段。
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## 触发场景 (Trigger)
|
|
9
|
+
- **意图辨析**:用户指定在“视频号 / 微信视频号 / shipinhao”平台发布图文动态时触发。
|
|
10
|
+
- **典型提示词**:
|
|
11
|
+
- “发几张图到视频号”
|
|
12
|
+
- “同步这条动态到微信视频号”
|
|
13
|
+
- “用 shipinhao 发图文”
|
|
14
|
+
|
|
15
|
+
## 执行逻辑 (Logic Flow)
|
|
16
|
+
1. **资源校验**:确保所有图片均已上传并获得 Key。
|
|
17
|
+
2. **参数装配**:填充描述及图片列表至 `contentPublishForm`,并把首图同步到账号层 `cover` / `coverKey`。
|
|
18
|
+
3. **指令执行**:先执行 `yxer validate <platform> <type> <payload.json>`,再执行 `yxer publish <type> <platform> <payload.json> [clientId]`。
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
本平台图文发布通过 `contentPublishForm` 承载以下参数。
|
|
22
|
+
|
|
23
|
+
## 1. contentPublishForm 参数定义
|
|
24
|
+
|
|
25
|
+
| 字段名 | 类型 | 必填 | 说明 | 默认值 |
|
|
26
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
27
|
+
| `formType` | `string` | **是** | 固定值: `task` | `task` |
|
|
28
|
+
| `title` | `string` | 否 | 标题 | - |
|
|
29
|
+
| `description` | `string` | 否 | 图文描述,支持 HTML (`<p>`, `<topic>`)。最多 1000 字符。 | - |
|
|
30
|
+
| `images` | `Array` | **是** | 图片数组 (`OldImage[]`) | - |
|
|
31
|
+
| `location` | `Object` | 否 | 位置对象 (`PlatformDataItem`) | - |
|
|
32
|
+
| `music` | `Object` | 否 | 音乐对象 (`MusicItem`) | - |
|
|
33
|
+
| `scheduledTime` | `number` | 否 | 定时发布时间 (13 位 Unix 时间戳,单位: 毫秒) | - |
|
|
34
|
+
| `collection` | `Object` | 否 | 合集信息,使用 `Collection` 结构 | - |
|
|
35
|
+
| `pubType` | `number` | **是** | 发布类型: 0-平台草稿, 1-直接发布 | 1 |
|
|
36
|
+
|
|
37
|
+
## 1.1 账号层必填封面
|
|
38
|
+
|
|
39
|
+
视频号图文除 `contentPublishForm.images` 外,还要求在 `publishArgs.accountForms[]` 层提供:
|
|
40
|
+
|
|
41
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
42
|
+
| :--- | :--- | :--- | :--- |
|
|
43
|
+
| `cover` | `Object` | **是** | 账号级封面对象,通常直接复用首图资源对象 |
|
|
44
|
+
| `coverKey` | `string` | **是** | 账号级封面 Key,必须与 `cover.key` 一致 |
|
|
45
|
+
|
|
46
|
+
## 2. 复杂对象结构说明
|
|
47
|
+
|
|
48
|
+
### OldImage
|
|
49
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
50
|
+
| :--- | :--- | :--- | :--- |
|
|
51
|
+
| `width` | `number` | **是** | 图片宽度 |
|
|
52
|
+
| `height` | `number` | **是** | 图片高度 |
|
|
53
|
+
| `size` | `number` | **是** | 文件大小 (Bytes) |
|
|
54
|
+
| `key` | `string` | **是** | 资源 Key (通过上传接口获取) |
|
|
55
|
+
| `format` | `string` | **是** | 文件格式 (e.g., `jpg`, `png`) |
|
|
56
|
+
|
|
57
|
+
### PlatformDataItem (基础结构)
|
|
58
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
59
|
+
| :--- | :--- | :--- | :--- |
|
|
60
|
+
| `yixiaoerId` | `string` | 是 | 统一 ID |
|
|
61
|
+
| `yixiaoerName` | `string` | 是 | 显示名称 |
|
|
62
|
+
| `raw` | `object` | 是 | 平台原始数据 |
|
|
63
|
+
|
|
64
|
+
### Collection
|
|
65
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
66
|
+
| :--- | :--- | :--- | :--- |
|
|
67
|
+
| `yixiaoerId` | `string` | 是 | 合集 ID |
|
|
68
|
+
| `yixiaoerName` | `string` | 是 | 合集名称 |
|
|
69
|
+
| `raw` | `object` | 否 | 平台原始数据 |
|
|
70
|
+
|
|
71
|
+
### MusicItem (音乐)
|
|
72
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
73
|
+
| :--- | :--- | :--- | :--- |
|
|
74
|
+
| `yixiaoerId` | `string` | 是 | 蚁小二端统一音乐 ID |
|
|
75
|
+
| `yixiaoerName` | `string` | 是 | 歌曲名称 |
|
|
76
|
+
| `duration` | `number` | 是 | 音乐时长(秒) |
|
|
77
|
+
| `playUrl` | `string` | 是 | 试听/播放链接 |
|
|
78
|
+
| `artist` | `string` | 否 | 歌手/作者名 |
|
|
79
|
+
| `raw` | `object` | 否 | 平台原始数据。如果在音乐列表获取时该字段存在,发布表单中必须携带并完整透传 |
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## 3. Payload 完整示例
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"action": "publish",
|
|
88
|
+
"publishType": "imageText",
|
|
89
|
+
"platforms": ["视频号"],
|
|
90
|
+
"publishArgs": {
|
|
91
|
+
"accountForms": [
|
|
92
|
+
{
|
|
93
|
+
"platformAccountId": "SPH_ACC_ID",
|
|
94
|
+
"coverKey": "img_sph_01",
|
|
95
|
+
"cover": {
|
|
96
|
+
"key": "img_sph_01",
|
|
97
|
+
"size": 1024,
|
|
98
|
+
"width": 1080,
|
|
99
|
+
"height": 1440,
|
|
100
|
+
"format": "jpg"
|
|
101
|
+
},
|
|
102
|
+
"contentPublishForm": {
|
|
103
|
+
"formType": "task",
|
|
104
|
+
"title": "视频号动态标题",
|
|
105
|
+
"description": "<p>视频号图文内容 <topic text='微信' raw='{\"id\":\"xxx\",\"name\":\"微信\"}'>#微信</topic></p>",
|
|
106
|
+
"pubType": 0,
|
|
107
|
+
"images": [
|
|
108
|
+
{ "key": "img_sph_01", "size": 1024, "width": 1080, "height": 1440, "format": "jpg" }
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## 相关接口
|
|
118
|
+
|
|
119
|
+
| 目标字段 | 对应 Action | 文档参考 |
|
|
120
|
+
| :--- | :--- | :--- |
|
|
121
|
+
| `location` | `locations` | [获取位置信息](../../get-locations.md) |
|
|
122
|
+
| `collection` | `collections` | [获取合集列表](../../get-collections.md) |
|
|
123
|
+
| `music` | `music` | [获取背景音乐](../../get-music.md) |
|
|
124
|
+
| `tags` | `challenges` | [获取话题/挑战](../../get-challenges.md) |
|
|
125
|
+
| `images.key` | `upload` | [资源上传](../../upload-resource.md) |
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# 头条号图文发布参数 (TouTiaoHao Image-Text)
|
|
2
|
+
|
|
3
|
+
> [!IMPORTANT]
|
|
4
|
+
> **前提条件 (Prerequisite)**:
|
|
5
|
+
> 在使用本平台的特定参数之前,你 **必须** 已经阅读并理解了 [图文发布首页 (Index)](./index.md) 中定义的 Payload 根结构。本页仅描述 `contentPublishForm` 内部的平台差异化字段。
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## 触发场景 (Trigger)
|
|
9
|
+
- **意图辨析**:用户指定在“头条号”平台发布图文动态时触发。
|
|
10
|
+
- **典型提示词**:
|
|
11
|
+
- “发几张图到头条号”
|
|
12
|
+
- “同步这条动态到头条号”
|
|
13
|
+
|
|
14
|
+
## 执行逻辑 (Logic Flow)
|
|
15
|
+
1. **资源校验**:确保所有图片均已上传并获得 Key。
|
|
16
|
+
2. **参数装配**:填充描述及图片列表至 `contentPublishForm`。
|
|
17
|
+
3. **指令执行**:先执行 `yxer validate <platform> <type> <payload.json>`,再执行 `yxer publish <type> <platform> <payload.json> [clientId]`。
|
|
18
|
+
|
|
19
|
+
本平台图文发布通过 `contentPublishForm` 承载以下参数。
|
|
20
|
+
|
|
21
|
+
## 1. contentPublishForm 参数定义
|
|
22
|
+
|
|
23
|
+
| 字段名 | 类型 | 必填 | 说明 | 默认值 |
|
|
24
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
25
|
+
| `formType` | `string` | **是** | 固定值: `task` | `task` |
|
|
26
|
+
| `description` | `string` | **是** | 图文描述,支持 HTML 和话题标签 (`<topic>`)。最多 1000 字符。 | - |
|
|
27
|
+
| `images` | `Array` | **是** | 图片数组 (`OldImage[]`) | - |
|
|
28
|
+
| `declaration` | `number` | 否 | 创作类型 1:自行拍摄 2:取自站外 3:AI生成 6:虚构演绎,故事经历 7:投资观点,仅供参考 8:健康医疗分享,仅供参考 | - |
|
|
29
|
+
| `pubType` | `number` | **是** | 发布类型: 0-草稿, 1-直接发布 | - |
|
|
30
|
+
|
|
31
|
+
## 2. 复杂对象结构说明
|
|
32
|
+
|
|
33
|
+
### 复杂对象:OldImage
|
|
34
|
+
| 字段名 | 类型 | 必填 | 说明 | 默认值 |
|
|
35
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
36
|
+
| `width` | `number` | **是** | 图片宽度 | - |
|
|
37
|
+
| `height` | `number` | **是** | 图片高度 | - |
|
|
38
|
+
| `size` | `number` | **是** | 文件大小 (Bytes) | - |
|
|
39
|
+
| `key` | `string` | **是** | 资源 Key (通过上传接口获取) | - |
|
|
40
|
+
| `format` | `string` | **是** | 文件格式 (e.g., `jpg`, `png`) | - |
|
|
41
|
+
|
|
42
|
+
## 3. 依赖接口说明
|
|
43
|
+
|
|
44
|
+
若字段值需通过查询获得,需注明:
|
|
45
|
+
- **话题 (topic)**: 在 `description` 中使用 `<topic>` 标签时,话题数据需通过 `[获取话题](../../get-topics.md)` 获得。
|
|
46
|
+
|
|
47
|
+
## 4. Payload 完整示例
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"action": "publish",
|
|
52
|
+
"publishType": "imageText",
|
|
53
|
+
"platforms": ["头条号"],
|
|
54
|
+
"publishArgs": {
|
|
55
|
+
"accountForms": [
|
|
56
|
+
{
|
|
57
|
+
"platformAccountId": "acc_tt_it_001",
|
|
58
|
+
"contentPublishForm": {
|
|
59
|
+
"formType": "task",
|
|
60
|
+
"description": "<p>今日头条内容 <topic text='头条' raw='{\"yixiaoerId\":\"123\",\"yixiaoerName\":\"头条\",\"raw\":{\"id\":\"xxx\",\"topic\":\"头条\"}}'>#头条</topic></p>",
|
|
61
|
+
"images": [
|
|
62
|
+
{ "key": "img_resource_key", "size": 1024000, "width": 1080, "height": 1440, "format": "jpg" }
|
|
63
|
+
],
|
|
64
|
+
"pubType": 1
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 相关接口
|
|
73
|
+
|
|
74
|
+
| 目标数据 | 对应 Action | 相关文档 |
|
|
75
|
+
| :--- | :--- | :--- |
|
|
76
|
+
| `images.key` | `upload` | [资源上传](../../upload-resource.md) |
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# 小红书图文发布参数 (Xiaohongshu Image-Text)
|
|
2
|
+
|
|
3
|
+
> [!IMPORTANT]
|
|
4
|
+
> **前提条件 (Prerequisite)**:
|
|
5
|
+
> 在使用本平台的特定参数之前,你 **必须** 已经阅读并理解了 [图文发布首页 (Index)](./index.md) 中定义的 Payload 根结构。本页仅描述 `contentPublishForm` 内部的平台差异化字段。
|
|
6
|
+
|
|
7
|
+
## 触发场景 (Trigger)
|
|
8
|
+
- **意图辨析**:用户指定在“小红书”平台发布图文笔记,且需要配置如“标记话题”、“地点挂载”、“多级分类挂载”或“定时发布”等功能时触发。
|
|
9
|
+
- **典型提示词**:
|
|
10
|
+
- “帮我发一篇小红书笔记,带上 #穿搭 话题”
|
|
11
|
+
- “小红书发布,地点选在上海东方明珠”
|
|
12
|
+
- “把这两张图存为小红书草稿,设置仅好友可见”
|
|
13
|
+
- “查询小红书的分类并设置”
|
|
14
|
+
|
|
15
|
+
## 执行逻辑 (Logic Flow)
|
|
16
|
+
1. **内容识别**:识别笔记标题、正文及内嵌话题(小红书正文支持 HTML 话题标签)。
|
|
17
|
+
2. **辅助检索**:
|
|
18
|
+
- 话题:调用 `challenges` 获取标准话题 DTO。
|
|
19
|
+
- 地点:调用 `locations` 获取 POI 数据。
|
|
20
|
+
- 音乐:若需要,调用 `music` 获取。
|
|
21
|
+
3. **参数装配**:将处理后的字段填入 `accountForms[i].contentPublishForm`。
|
|
22
|
+
4. **指令执行**:先执行 `yxer validate <platform> <type> <payload.json>`,再执行 `yxer publish <type> <platform> <payload.json> [clientId]`。
|
|
23
|
+
|
|
24
|
+
## 1. contentPublishForm 参数 definition
|
|
25
|
+
|
|
26
|
+
| 字段名 | 类型 | 必填 | 说明 | 默认值 |
|
|
27
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
28
|
+
| `formType` | `string` | **是** | 固定值: `task` | `task` |
|
|
29
|
+
| `title` | `string` | 否 | 标题 (笔记标题,最多 20 字) | - |
|
|
30
|
+
| `description` | `string` | **是** | 笔记描述,支持 HTML (`<p>`, `<topic>`)。最多 1000 字符。 | - |
|
|
31
|
+
| `images` | `Array` | **是** | 图片数组 (`OldImage[]`) | - |
|
|
32
|
+
| `location` | `Object` | 否 | 位置对象 (`PlatformDataItem`) | - |
|
|
33
|
+
| `music` | `Object` | 否 | 音乐对象 (`MusicItem`) | - |
|
|
34
|
+
| `scheduledTime` | `number` | 否 | 定时发布时间 (13 位 Unix 时间戳,单位: 毫秒) | - |
|
|
35
|
+
| `collection` | `Object` | 否 | 合集信息,使用 `Collection` 结构 | - |
|
|
36
|
+
| `visibleType` | `number` | **是** | 可见类型: 0-公开, 1-私密, 3-好友可见 | 0 |
|
|
37
|
+
|
|
38
|
+
## 2. 复杂对象结构说明
|
|
39
|
+
|
|
40
|
+
### OldImage
|
|
41
|
+
| 字段名 | 类型 | 必填 | 说明 |
|
|
42
|
+
| :--- | :--- | :--- | :--- |
|
|
43
|
+
| `width` | `number` | **是** | 图片宽度 |
|
|
44
|
+
| `height` | `number` | **是** | 图片高度 |
|
|
45
|
+
| `size` | `number` | **是** | 文件大小 (Bytes) |
|
|
46
|
+
| `key` | `string` | **是** | 资源 Key (通过上传接口获取) |
|
|
47
|
+
| `format` | `string` | **是** | 文件格式 (e.g., `jpg`, `png`) |
|
|
48
|
+
|
|
49
|
+
### PlatformDataItem (基础结构)
|
|
50
|
+
包含 `yixiaoerId`, `yixiaoerName`, `raw`。
|
|
51
|
+
|
|
52
|
+
### MusicItem (音乐)
|
|
53
|
+
包含 `yixiaoerId`, `yixiaoerName`, `duration`, `playUrl`, `raw` 等。
|
|
54
|
+
|
|
55
|
+
## 3. Payload 完整示例
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"action": "publish",
|
|
60
|
+
"publishType": "imageText",
|
|
61
|
+
"platforms": ["小红书"],
|
|
62
|
+
"publishArgs": {
|
|
63
|
+
"accountForms": [
|
|
64
|
+
{
|
|
65
|
+
"platformAccountId": "XHS_ACC_ID",
|
|
66
|
+
"contentPublishForm": {
|
|
67
|
+
"formType": "task",
|
|
68
|
+
"title": "今日穿搭",
|
|
69
|
+
"description": "<p>今日穿搭分享 <topic text='穿搭' raw='{\"id\":\"xxx\",\"name\":\"穿搭\"}'>#穿搭</topic></p>",
|
|
70
|
+
"images": [
|
|
71
|
+
{ "key": "img_xhs_01", "size": 1024, "width": 1080, "height": 1440, "format": "jpg" }
|
|
72
|
+
],
|
|
73
|
+
"visibleType": 0
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 相关接口
|
|
82
|
+
|
|
83
|
+
| 目标字段 | 对应 Action | 文档参考 |
|
|
84
|
+
| :--- | :--- | :--- |
|
|
85
|
+
| `location` | `locations` | [获取位置信息](../../get-locations.md) |
|
|
86
|
+
| `collection` | `collections` | [获取合集列表](../../get-collections.md) |
|
|
87
|
+
| `tags/topic`| `challenges` | [获取话题/挑战](../../get-challenges.md) |
|
|
88
|
+
| `images.key`| `upload` | [资源上传](../../upload-resource.md) |
|