xpzouying/xiaohongshu-mcp · error

小红书发布失败

Error message

小红书发布失败

What it means

Publish 图文发布流程的总包装错误:上传图片或 submitPublish 任一子步骤失败时被 errors.Wrap 上抛到此消息。真正原因在包装链下游(如上传输入框查找失败、TAB 点击失败、长度超限等),需查看错误链的底层 cause。

Source

Thrown at xiaohongshu/publish.go:94

	}

	// 重设超时:.Context(ctx) 会替换掉 NewPublishImageAction 里 Timeout(300s) 的 deadline
	page := p.page.Context(ctx).Timeout(300 * time.Second)

	if err := uploadImages(page, content.ImagePaths); err != nil {
		return errors.Wrap(err, "小红书上传图片失败")
	}

	tags := content.Tags
	if len(tags) >= 10 {
		logrus.Warnf("标签数量超过10,截取前10个标签")
		tags = tags[:10]
	}

	logrus.Infof("发布内容: title=%s, images=%v, tags=%v, schedule=%v, original=%v, visibility=%s, products=%v", content.Title, len(content.ImagePaths), tags, content.ScheduleTime, content.IsOriginal, content.Visibility, content.Products)

	if err := submitPublish(ctx, page, content.Title, content.Content, tags, content.ScheduleTime, content.IsOriginal, content.Visibility, content.Products); err != nil {
		return errors.Wrap(err, "小红书发布失败")
	}

	return nil
}

// hasPopCover 当前页面是否还有挡人的浮层。
func hasPopCover(page *rod.Page) bool {
	has, _, err := page.Has("div.d-popover")
	return err == nil && has
}

// dismissPopCover 关掉挡住发布 TAB 的浮层,按 Esc → 点空白 → 摘节点逐级降级。
// 保留摘节点这一步是因为它只要节点还在就必定生效,前两步是否奏效取决于页面
// 自己有没有写对应的处理,无从预判。
func dismissPopCover(page *rod.Page) {
	if err := page.Keyboard.Press(input.Escape); err != nil {
		logrus.Debugf("按 Esc 关闭浮层失败: %v", err)
	}

View on GitHub (pinned to 332d196854)

Solutions

  1. 查看错误链底层 cause 定位具体失败步骤
  2. 按底层错误对应的方式处理(重试/修正参数/检查登录态)
  3. 确认图片路径有效且标签数不超过 10
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at xiaohongshu/publish.go:94 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of xpzouying/xiaohongshu-mcp@332d196854 (2026-09-05). Data as JSON: /api/errors/08a0d604b7959bd8. Report an issue: GitHub.