360 Secure SkillHub
360 安全技能中心

Xhs Ai Detective Publisher

该技能编排小红书发帖流程:确定选题、生成帖子文案与 6 套风格封面图,经手机号验证码或扫码登录后,用 Puppeteer 自动发布到小红书创作者中心;内置内容安全检查和随机延时示例。

halleyyang
halleyyang
热度 31.18
最近更新 2026-04-04 09:16:53
分类:营销依赖:代码执行 / 联网浏览搜索 / 读写文件 / 内部调用大模型应用场景:社交媒体 / 文案创作 / 图像生成 / 自动化脚本 ...

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add xhs-ai-detective-publisher
Metadata
name
xhs-ai-detective-publisher
description
小红书自动发帖技能。全流程自动化:搜索资讯 → AI生成帖子内容 → 生成封面图(6套风格模板)→ Puppeteer自动发布到小红书创作者中心。适合运营任意垂直领域小红书账号(科技、生活、美食、旅行、知识分享等)。当用户需要自动发小红书帖子、生成封面图、或定时发帖时使用。依赖 Puppeteer 和 web-session-manager 保存的小红书登录会话。

小红书自动发帖

自动化运营小红书账号:搜索资讯 → 写帖子 → 生成封面图 → 发布。

前置条件

  • Node.js ≥ 18,已安装 puppeteer(npm install puppeteer)
  • 中文字体:封面图渲染需要中文字体,见 references/setup.md
  • 登录会话:需通过 web-session-manager skill 完成小红书扫码登录,保存 session

核心文件

文件 说明
scripts/xhs_ai_publisher.js 主脚本,导出 generateCoverImage, publishPost
references/posting-guide.md 帖子创作规范、话题库、封面模板说明
references/setup.md 环境配置、登录会话、字体安装指南

内容安全规范(必读)

脚本内置内容安全检查,发布前自动拦截违规内容,触发则抛出错误提示修改。

🚫 会被拦截的内容

类型 示例(错误做法) 原因
煽动站队标题 这事你支持谁? 谁对谁错? 平台判定对立煽动
强烈倾向性定性 全是他的错 活该 罪有应得 不当言论风险
人身攻击 智障 脑残 去死 直接违规
未证实指控 故意侵权 明知故犯 名誉侵权风险

✅ 涉及争议话题的正确写法

原则:陈述事实 + 开放提问,不站队、不定性

❌ 标题:「李荣浩单依纯,这事我支持谁?」
✅ 标题:「李荣浩公开维权,版权这件事聊一聊」

❌ 正文:「单依纯全是她的错,活该被骂」
✅ 正文:「这件事有几个细节值得关注……你觉得版权问题
         艺人和主办方各该负什么责任?」

结尾互动句推荐:

  • 你怎么看这件事? ✅
  • 这种情况你遇到过吗? ✅
  • 你支持谁? ❌(煽动对立)

脚本每次发布前自动检测登录态。Session 有效则直接发布;失效时提供两种登录方式:

方式一:手机号 + 验证码(推荐)

最稳定,不依赖二维码图片质量:

await publishPost({
  title, content, topics, imagePath,
  phone: '13812345678',
  askCodeFn: async (prompt) => {
    // 将 prompt 发给用户,等待回复验证码
    // 例:return await agent.ask(prompt);
  }
});

Agent 引导话术:

「小红书登录态已失效,需要重新登录。请告诉我你的小红书注册手机号,我来帮你发送验证码。」

方式二:扫码登录

⚠️ 重要:必须用 captureQRCode() 裁切二维码区域再发给用户,直接截全页分辨率太低无法扫码!

const { captureQRCode, waitForQRLogin } = require('./scripts/xhs_ai_publisher.js');

// 1. 截取二维码(自动裁切高清)
const qrPath = await captureQRCode(page, '/tmp/xhs_qr.png');

// 2. 发给用户扫码:MEDIA: /tmp/xhs_qr.png

// 3. 等待扫码完成(最多120秒)
const ok = await waitForQRLogin(page, 120);
if (!ok) {
  // 二维码过期,重新截取
  const qrPath2 = await captureQRCode(page, '/tmp/xhs_qr2.png');
}

登录失败排查

  • 调试截图保存在 /tmp/xhs_login_debug.png、/tmp/xhs_after_login.png
  • 验证码错误:重新调用 loginWithPhone
  • 二维码过期:调用 captureQRCode 重新生成后发给用户

发帖流程

1. 确定选题

根据你的账号定位搜索资讯,参见 references/posting-guide.md 了解选题策略。

通用选题原则:真实发生、有具体细节、目标读者能感知到价值。

2. 写帖子

参见 references/posting-guide.md 中的写作规范。

核心要求:

  • 标题:严格 ≤20字(超出会被小红书截断)
  • 正文:200-400字,自然口语风格,结尾有互动问句
  • 话题标签:3-5个(从话题库选,每次不同)

3. 生成封面图

const { generateCoverImage } = require('./scripts/xhs_ai_publisher.js');

await generateCoverImage(
  title,      // 标题文字(≤20字)
  subtitle,   // 副标题:2-3句话,用 \n 换行,30-50字
  outputPath  // 图片输出路径(绝对路径,.png)
);

subtitle 示例:

「昨夜正式发布\n性能超越上一代50%\n普通人能用到什么程度?」

6套封面模板根据标题 hash 自动选择,见 references/posting-guide.md。

4. 发布

const { publishPost } = require('./scripts/xhs_ai_publisher.js');

const success = await publishPost({
  title,      // ≤20字
  content,    // 正文(纯文本,不含话题标签)
  topics,     // 字符串数组,如 ['AI工具', '大模型', 'ChatGPT']
  imagePath   // 封面图绝对路径
});

5. 随机延时(定时任务推荐)

避免固定时间模式,在执行前随机等待:

const delayMs = Math.floor(Math.random() * 30 * 60 * 1000); // 0-30分钟
await new Promise(r => setTimeout(r, delayMs));

常见问题

  • 封面图中文乱码:字体未安装,见 references/setup.md
  • 发布按钮未找到:脚本会自动截图 xhs_pre_publish.png 到 workspace,用于诊断
  • 话题未插入:话题面板弹出较慢,脚本自动等待2秒后尝试 Enter 兜底
  • 会话过期:用 Puppeteer 截图 https://creator.xiaohongshu.com 确认登录状态,失效则重登(见 setup.md)