feat: 添加商品绑定功能

- 在图文发布和视频发布流程中集成商品绑定功能
- 新增 Products 字段到发布请求结构体
- 实现 go-rod 原生商品绑定函数(bindProducts)
- 商品绑定失败将阻断发布流程并返回具体错误信息

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
tanjun
2026-01-24 19:30:59 +08:00
committed by tan jun
parent bc7fc864b5
commit d092830b67
5 changed files with 306 additions and 7 deletions

View File

@@ -24,6 +24,7 @@ type PublishContentArgs struct {
ScheduleAt string `json:"schedule_at,omitempty" jsonschema:"定时发布时间可选ISO8601格式如 2024-01-20T10:30:00+08:00支持1小时至14天内。不填则立即发布"`
IsOriginal bool `json:"is_original,omitempty" jsonschema:"是否声明原创可选true为声明原创false或不填则不声明"`
Visibility string `json:"visibility,omitempty" jsonschema:"可见范围(可选),支持: 公开可见(默认)、仅自己可见、仅互关好友可见。不填则默认公开可见"`
Products []string `json:"products,omitempty" jsonschema:"商品关键词列表可选用于绑定带货商品。填写商品名称或商品ID系统会自动搜索并选择第一个匹配结果。需账号已开通商品功能。示例: [面膜, 防晒霜SPF50]"`
}
// PublishVideoArgs 发布视频的参数(仅支持本地单个视频文件)
@@ -34,6 +35,7 @@ type PublishVideoArgs struct {
Tags []string `json:"tags,omitempty" jsonschema:"话题标签列表(可选参数),如 [美食, 旅行, 生活]"`
ScheduleAt string `json:"schedule_at,omitempty" jsonschema:"定时发布时间可选ISO8601格式如 2024-01-20T10:30:00+08:00支持1小时至14天内。不填则立即发布"`
Visibility string `json:"visibility,omitempty" jsonschema:"可见范围(可选),支持: 公开可见(默认)、仅自己可见、仅互关好友可见。不填则默认公开可见"`
Products []string `json:"products,omitempty" jsonschema:"商品关键词列表可选用于绑定带货商品。填写商品名称或商品ID系统会自动搜索并选择第一个匹配结果。需账号已开通商品功能。示例: [面膜, 防晒霜SPF50]"`
}
// SearchFeedsArgs 搜索内容的参数
@@ -219,6 +221,7 @@ func registerTools(server *mcp.Server, appServer *AppServer) {
"schedule_at": args.ScheduleAt,
"is_original": args.IsOriginal,
"visibility": args.Visibility,
"products": convertStringsToInterfaces(args.Products),
}
result := appServer.handlePublishContent(ctx, argsMap)
return convertToMCPResult(result), nil, nil
@@ -391,6 +394,7 @@ func registerTools(server *mcp.Server, appServer *AppServer) {
"tags": convertStringsToInterfaces(args.Tags),
"schedule_at": args.ScheduleAt,
"visibility": args.Visibility,
"products": convertStringsToInterfaces(args.Products),
}
result := appServer.handlePublishVideo(ctx, argsMap)
return convertToMCPResult(result), nil, nil