| name | xiaohongshu-ops |
| description | End-to-end Xiaohongshu operations: positioning, topic research, content production, publish execution, and post-incident recovery. Reusable across verticals; includes reusable templates and one concrete “陪你看剧” case preset. |
Openclaw 小红书运营技能(通用版)
目标:构建可复用的“小红书运营”流程,让任何账号类型都能复用同一套动作框架。
适用范围(默认即通用流程)
- 账号定位与内容方向
- 选题产出与争议点挖掘
- 竞品/同类账号对标
- 小红书发布前演练与内容交付
- 发布后快速复盘(互动结构、评论回复、热点追踪)
将每类账号的行业细节作为“案例模块(case module)”挂载到通用流程中。
常用术语
选题:可发布、可讨论、可转发的内容切入点
引流钩子:标题/开头一句用于触发停留与点击
结构化输出:标题、正文、互动问句、话题、标签五元组
快照:用于验证页面状态的关键证据快照
回放:流程失败后重试或改道执行
0) 启动与环境校验(所有任务都遵循)
- 先验证 OpenClaw 与目标站点链路可达(创作后台 + 评论来源站点)
- 建议先完成“创作页登录”再继续后续流程
- 先完成环境打通再做内容动作,避免流程中途卡住
- 优先
browser.act(kind="evaluate") 做字段提取与填充,避免无意义的全页截图
- 每次抓取仅提取必要字段,避免“大量 dump”
- 每次返回结构化信号,默认先够用再扩展,不追求“抓满”
- 失败两次则降级:减少动作、保留已得结果、请求单条用户支持动作
0.1) 低 token 操作准则(必须遵循)
- 少快照,多 evaluate:优先用一次
evaluate 返回多字段(账号名、页面状态、按钮可见、字数)
- 关键节点才 snapshot:仅在“登录确认 / 到发布页 / 填写完成 / 发布前停下”四个节点保留证据
- 默认禁止 fullPage 截图:只有用户明确要求整页存档才开
fullPage:true
- 固定 targetId 连续操作:拿到目标 tab 后复用同一
targetId,避免反复 tabs -> snapshot
- 合并探测动作:一次脚本拿全状态,避免多次小调用
- 失败重试上限:同动作最多重试 1 次,第二次失败立即切换策略(click -> evaluate)
- 三个关键站点常驻:
creator.xiaohongshu.com、xiaohongshu.com/explore、/user/profile/... 打开后复用,不重复 open
- 发布链路默认“盲操 + 关键校验”:中间步骤不做高频快照,只做末端校验
1) 技能默认行为(所有任务都遵循)
- 先读本技能目录下的
SOUL.md(小红书平台专用语气/人设/禁忌)。所有对外文案(发帖/评论回复/私信话术)都必须遵循。
- 优先输出可执行的 SOP 而非一次性内容稿
- 语言优先“能对话”而不是“写报告”:短句、口语、站位明确、可引导评论
- 所有输出默认保留“可追问点”,用于评论区继续延展
2) 账号定位(可复用)
每个账号先确认 4 个变量:
- 目标用户:年龄/场景/痛点(如「下班后碎片时间」「追星讨论人群」)
- 内容价值主张:每篇给用户什么(观点、情绪价值、实操建议)
- 差异化角度:同类账号不做什么、你做什么
- 风格规范:语气、长度、冲突边界(避免过激)
输出:
- 人设关键词(3-5)
- 内容支柱(3 个)
- 口头禅/固定句式(2-3 个)
- 不能碰底线(红线)清单(剧透、人身攻击、虚假承诺)
3) 通用选题与对标流程
A. 平台侧抓取信号(可并行)
- 先在小红书抓同题材高互动内容(点赞/收藏/评论高于近期平均值)
- 记录可复用字段:
title, hook, angle, 结构标签, 评论信号, 互动CTA, 标签组
- 汇总前 10-20 条到候选池
B. 需求侧补充信号(行业/场景)
- 按主题去主流平台/社媒抓“评论区观点分歧”
- 抽取支持/反对/中性观点各一组
- 输出可发文争论点(争议但可控)
C. 形成选题清单(每轮至少 3 条)
每条选题包含:
- 选题标题(20 字内可选)
- 观点标签(支持/反对/中性)
- 预计互动钩子
- 证据来源(哪组高互动数据)
- 风险提示(是否容易踩线)
3.5) 搜索并浏览(新增操作类型,必须遵循)
适用:用户要求“搜某话题并进帖浏览/留言/互动”(例如搜 OpenClaw 热门新帖)。
核心规则(强约束)
- 只允许从搜索结果页“点击进入”帖子,禁止直接
navigate 到 /explore/<id>。
- 原因:直接跳转容易触发 404 / 风控(缺少平台上下文参数,如
xsec_token/xsec_source)。
- 默认过滤“自己账号发的帖子”(避免给自己刷评论)。
- 若命中作者为本账号(如“虾薯”),直接跳过,选下一条。
- 点击进入后先做可见性校验:
- URL 非 404
- 页面可见评论输入区或互动区
- 能抓到作者/标题/互动信息(至少 2 项)
- 进入方式优先级:先点帖子卡片(常见是卡片封面/标题所在
link),避免只点作者名/头像(会进作者主页而不是帖子弹窗)。
- 评论输入控件兼容:帖子弹窗里评论框不一定是
textarea,可能是 p.content-input 或其它 contenteditable 节点。
- 发送前先判断输入控件类型并触发
input/change 事件,再点「发送」。
- 若连续两条点击后都不可见/404:
推荐执行顺序(SOP)
- 进入搜索页:
/search_result?keyword=<query>
- 按“热门 + 新近”优先顺序选候选
- 对每条候选先读卡片字段:
title / author / 发布时间 / 互动量
- 过滤规则:
- 作者=本账号 → 跳过
- 明显低质量/无关 → 跳过
- 对合格候选执行“点击进入”
- 进入帖子后再决定动作(浏览/留言/回复)
最小字段提取(建议 evaluate 一次拿全)
title
author
publish_time
like_or_collect_or_comment(能取到几个取几个)
href
is_self_post(是否本账号)
失败回放规则
- 点击失败或落地 404:回搜索页,换下一条(不直跳同链接)
- 找不到评论入口:保留浏览结果,提示用户“可浏览不可留言”
- 若搜索结果页结构变化:先 snapshot 更新 ref,再继续点击
4) 通用内容模板(小红书)
每次产出至少 2 个备选:
- 标题(争议/立场/反问,≤20字优先)
- 开头钩子(1-2 句)
- 正文(3 段:观点→证据→反方)
- 互动提问(1 句)
- 话题(5-8 个)
- 风险标注(是否剧透 / 引战边界 / 版权风险)
5) 通用发布前演练(不发稿)
详细发布链路请按需读取:references/xhs-publish-flows.md(含视频/图文/长文与图文大字报流程)。
- 先确保创作页已登录,确认 Relay 在正确创作 tab(badge ON)
- 打开发布页:
https://creator.xiaohongshu.com/publish/publish
- 走图文路径(默认优先:文字配图)
- 生成封面文案并进入下一步
- 按顺序填写字段(避免主题提示词式文案出现到正文以外):
- 标题
- 正文(先有正文后再加话题)
- 话题(末尾添加)
- 标签
- 到达
发布 按钮可见即可停,明确说明未点击发布
- 正式发布前必须截图确认(标题+封面+正文可见 + 发布按钮可见),先发用户确认,得到明确同意后才能点击发布
- 截图发送流程(飞书默认附件模式):
- 默认直接用附件方式发送截图(
message.send + path),不先走普通预览
- 若附件发送失败,再降级为普通截图消息
- 发出后必须问一句“现在是否看到截图”,未得到“看到了/确认”前禁止发布
发布完成前的结构校验:
- 标题不空
- 标题长度符合平台约束(图文标题建议
<= 20 字;超出会出现 xx/20 超限提示)
- 正文字段完整(3 段结构)
- 话题在正文尾部,避免插入到正文开头
发布 按钮可见
- 预览是否正确渲染
- 封面文案为可读性文字,不露出“提示词”痕迹
5.1 发布类型与三要素(必须先判定)
小红书创作后台至少包含三种发布类型:
每种类型都必须先确认三要素:
- 封面(首图/视频封面)
- 标题
- 正文
默认优先图文;若用户强调封面 CTR,优先走图文并明确封面策略(上传封面图 / 文字配图生成大字报)。
5.2 图文 + 文字配图(大字报)标准流程
- 进入发布页,切到「上传图文」
- 进入「文字配图」
- 输入大字报文案并点「生成图片」
- 预览模板并点「下一步」
- 在编辑页填写:
- 标题(<=20字)
- 正文(可先不加话题)
- 话题/标签(末尾补充)
- 校验三要素完成后停在「发布」按钮可见处
- 未获明确“现在发布”指令前,禁止点击发布
5.3 半程预发演练(用于确认流程正确,不发布)
“半程预发”定义:
- 已完成封面生成(含大字报)
- 已进入编辑页
- 已填写标题与正文
- 仅停在「发布」按钮可见处
这一步是回放/教学/验收标准动作,适合让用户确认流程是否走对。
5.4 常见坑位与修复
- 误入长文:回到「发布笔记」后明确切回「上传图文」
- 草稿箱默认落到视频:进入草稿箱后先切「图文笔记」tab再编辑
- 标题超限:出现
xx/20 时立即压缩标题
- 只做了封面没填标题正文:补齐三要素后才算可发布状态
- 网页端笔记详情可能出现“请 App 扫码查看”:评论动作优先在通知页完成,必要时请用户在 App 端补发
6) 发布后互动与风控(轻量)
评论检查与回复详细流程请按需读取:references/xhs-comment-ops.md(含通知页优先、对位校验、one-send-per-turn、风控节奏)。
- 首小时追踪:点赞、收藏、评论量变化
- 评论初筛:赞同观点、反对观点、可追评问题
- 从小红书主站通知页按条回复,保持真人节奏(避免连续轰炸式回复)
- 回复分层:
- 短评:先有礼貌点头/情绪共鸣
- 长评:追加观点延展
- 杠精:记录但不过度对抗
- 输出复盘字段:
- 表达是否有效
- 钩子是否吸引
- 话题匹配度
- 下一轮迭代建议(保留/复刻/弃用)
6.1) 评论语气与互动模板(基于高互动样本)
优先用「通知」判断新回复(比刷全量评论更准、更省风控):
- 先去 /notification 的「评论和@」
- 能在通知里直接点「回复」就直接回(不必先进帖子)
- 只有当通知里无法回复/定位异常时,才点进笔记页再处理
- 仅在必要时再展开该线程的回复/更多评论
先采样同题材爆帖评论(至少 2 帖、每帖前 5-10 条)再写回复,默认遵循:
-
高互动评论常见形态:
- 短句共鸣(如“太棒了”“这个做的好”)
- 具体反馈(指出一个镜头/气质/节奏点)
- 轻梗不油腻(1 个梗点即可)
-
句尾策略:
- 70% 用陈述句结尾
- 20% 用感叹句结尾
- 10% 才使用问句(只在确实要收集信息时)
- 禁止每条都以问号收尾
-
禁止“隐性承诺”(必须遵循):
- 回复评论时只解决当下问题,不是为了显得更 helpful。
- 禁止顺手加“后续我会整理/我会发教程/我回头统计给你/我之后发出来”等额外承诺。
- 如需要互动钩子,用“可选项/二选一问题”替代承诺:例如「你更想看 A 还是 B?」
- 只有当用户明确要求你做额外交付时,才可答应;并且必须写清范围+时间(否则不答应)。
-
真实性约束:
- 不瞎编“我也被踢/我也遇到同问题”等未发生经历
- 用可验证表述:
我这次是正常发出的、我这边看到...
-
对位回复规则(防回错人):
- 回复前先二次确认作者名与原评论文本
- 逐条处理(单条定位 -> 单条输入 -> 单条发送)
- 发送后必须做成功校验再处理下一条:优先检查对应回复输入框是否已清空/关闭;若仍保留原文,视为未成功发送,立即重试一次并重新校验;连续失败则中止并请求人工确认
-
输入行为:
- 默认逐字输入(每字约 20-60ms 随机延迟)
- 连续多条回复时每条间隔 3-10 秒,模拟真人节奏
6.2) 评论回复两种模式(通知页 / 帖子内)
目标:同一套“对位凭证”思想,支持两种入口:
- 模式 A:通知页回复(优先,省定位、省风控)
- 模式 B:帖子内回复(当通知页无法回复/需要进线程批量处理时)
6.2.0) 总原则(两种模式都必须遵循)
- 先对位、后输入、最后发送。
- “对位凭证”必须是页面明确显示的:
回复 <用户名>(或等价 UI 文案)。
- 只要对位凭证不是目标用户:立刻点「取消」退出,重新定位。
6.2.1) 帖子内回复成功 SOP(对某个用户回复,不是对帖子回复)
适用:进入 xiaohongshu.com/explore/... 的笔记详情页,在评论区对某条评论进行回复。
核心原则
- 必须点击目标评论这一行里面的「回复」(通常是评论下方的
span.count 文案“回复”),不要点到:
- 帖子底部的“说点什么...”输入框(那是对帖子/对作者的通用评论)
- 头像/空白区域(容易触发跳转或不进入回复态)
推荐工具动作(稳定版)
- 在评论列表中锁定目标:同时匹配
用户名 + 评论关键片段(必要时先用 evaluate 找到包含该文本的最小容器)。
- 点击该条评论下方的「回复」。
- 对位校验(必须):页面出现明确的
回复 <用户名>(例如截图/文字中可见“回复 MKTer 小V”)。
- 若出现的是
回复 虾薯 / 说点什么... 等,说明未对位到目标用户。
- 在已对位状态下再
type 输入回复文案。
- 发送前再次校验
回复 <用户名> 仍然是目标用户(防止焦点漂移)。
- 点击红色「发送」。
6.2.2) 通知页回复成功 SOP(防点错/防误触搜索框)
目标:在 /notification 页面直接回复并发送,且每一步都可验证,避免误点顶部「搜索小红书」。
核心原则
- 永远以页面显示的“回复 <用户名>”作为唯一对位凭证(在通知页通常体现为输入框 placeholder:
回复 李随机)。
- 禁止用 Enter 触发发送(容易触发页面其他控件);只点击红色 「发送」。
- 任意时刻若 placeholder 不对:立刻点「取消」退出,重新定位目标通知再来。
推荐工具动作(稳定版)
- 打开通知页:
/notification → 进入「评论和@」
snapshot(selector='.notification-page', refs='role') 拿到:
- 目标用户所在通知条
- 对应的
textbox "回复 <用户名>"
- 对应的
button "发送"
- 点击目标通知的「回复」入口(优先点该条附近的“回复”按钮,而不是点整行空白)
- 校验:页面出现
textbox "回复 <用户名>"(placeholder 必须匹配目标用户名)
type(slowly:true) 逐字输入评论文案
- 再次校验 placeholder 仍为目标用户名(防止中途插入新通知导致焦点漂移)
- 点击红色
button "发送"
- 发送后验证:
- 输入框消失/清空,或
- 页面不再显示该条的“回复 <用户名>”输入框(视 UI 而定)
6.3) 反“批量脚本误发/评论过快”安全闸(必须遵循)
6.4) 评论长度上限(必须遵循)
实测:小红书评论/回复可能存在 最多约 300 字 的限制;超出会导致发送失败或被拦截。
硬规则
- 发送前必须检查本条回复长度:
<= 280 字 为安全区(给平台提示/表情/换行留余量)。
- 若超长:
- 优先缩写(删解释、删铺垫、只留结论 + 1 条关键链接/要点)。
- 仍超长则 拆成多条(2-3 条分开发,每条都能独立读懂)。
- 若页面出现“超过300字/字数限制/发送失败”提示:立刻停止连发,改为缩写版重发。
建议实现方式
- 用
evaluate 在发送前计算 textarea.value.length,并在工具层截断或改写到安全区。
事故复盘:一次 evaluate/循环脚本可能在用户只想回“最新一条”时,误连发多条;且连续发送会触发「评论过于频繁/操作过快」风控。
硬规则
- 默认每次只允许发送 1 条回复(one-send-per-turn)。
- 只有用户明确说“批量发/这几条都发/连续回 X 条”,才允许连续发送。
- 禁止使用“遍历 rows → 依次 click 回复 → 依次发送”的批量脚本作为默认路径。
- 任意“发送”动作后,默认等待 8–15 秒随机间隔(真人节奏,优先防风控)。
- 若用户明确要求加速,可降级为 5 秒左右间隔(建议带少量抖动,例如 4.5–5.5 秒);不建议更低(如 3 秒)以免触发「操作频繁/评论过快」。
- 发现以下任意提示/信号,立即停手并报告用户,不再尝试发送:
- 页面出现/文本包含:
评论过于频繁、操作过快/操作频繁、请稍后再试、网络异常、发送失败 等
建议实现方式(工具层)
- 先用
evaluate/snapshot 只定位目标单条(匹配用户名 + 评论关键片段)。
- 发送后用一次
evaluate 检查风控关键词(在 document.body.innerText 搜索),命中即退出。
- 需要连发时:严格按“1 条发送 → 等待 → 再 snapshot 重新取 ref → 下一条”的节奏走。
常见故障与处理
- 误点到顶部「搜索小红书」:
- 立刻点击空白处收起搜索下拉 → 回到步骤 2 重来
- 新评论插队导致“回复对象变了”(placeholder 变化):
- 立刻点「取消」→ 重新定位目标通知行 → 再点回复
- 点了发送但对方看不到:
- 优先检查是否真的点了红色「发送」按钮
- 再次按 SOP 走一遍(先对位 placeholder,再发送)
7) 失败与修复(必须遵循)
- 自动化失败先重试一次(同策略)
- 仍失败则改道:换到“更稳妥同义路径”
- 不做无效重复动作;保留当前进度可复用,报告一次用户需手动的单一动作
8) 通用提取示例(Evaluate)
() => {
const pickText = (el, sels) => {
for (const s of sels) {
const v = el.querySelector?.(s)?.textContent?.trim();
if (v) return v;
}
return '';
};
const num = (v) => {
const m = String(v || '')
.replace(/,/g, '')
.match(/\\d+(\\.\\d+)?/);
return m ? Number(m[0]) : 0;
};
const rows = [...document.querySelectorAll('.note-item, .comment-item, li, [data-item]')]
.slice(0, 20)
.map((el) => ({
title: pickText(el, ['.title', '.note-title', 'h1', 'h2', 'h3']),
hook: pickText(el, ['.desc', '.description', '.summary', '.intro']),
angle: pickText(el, ['.tag', '.category', '.angle']),
comments_signal: pickText(el, ['.comment', '.comments', '[data-comment]']),
cta: pickText(el, ['.cta', '.action', '.footer']),
likes: num(pickText(el, ['.like', '.likes', '[data-like]')),
tags: pickText(el, ['.tag-list', '.tags'])
}))
.filter(x => x.title || x.hook);
return rows;
}
9) 具体案例:陪你看剧(保留为特例)
使用方式
本技能主文件保留通用框架;垂直行业经验放在 examples/ 目录,按内容类型选用:
- 先按《通用流程》跑一遍
- 再加载对应案例文件补齐行业特殊动作
当前已可用案例:
examples/drama-watch/case.md(陪你看剧账号)
每个内容类型按目录组织,文件命名可为:
实操经验(持续有效)
- 统一规则:所有浏览器操作一律走内置浏览器 profile=
openclaw(除非用户明确要求使用 Chrome 扩展 Relay)。
- 文字配图是稳定写入口,typed text 直接成为封面文案
- 发布话题优先用 UI 选题,不建议纯文本粘贴大量
#话题
evaluate 批量改写富文本时,尽量少改版式,避免丢失 topic entity
- 关键步骤前保留一次快照,可用于复盘与问题定位
发布 按钮可见 ≠ 发布成功;必须明确标注“到发布页停手”
- 若出现新类型评论节奏问题,优先减少每小时回复密度而非提高频率
运营成熟路径(可选)
- 标题池:按“站队/反问/冲突”各保留 10 条可复用模板
- 话题池:按账号调性建立常用关键词与同义替换列表
- 复用机制:每次复盘后把可复用表达同步进案例文件