Install
openclaw skills install ops-comment小红书自动化养号互动 Skill(OpenClaw 多模型版)。 当用户提到小红书养号、自动互动、点赞、收藏、关注、评论引流、 账号活跃度提升、互动任务、定时养号、多账号管理时必须使用。 核心:在用户已登录会话内模拟真人浏览与互动行为,按配置的速率、 抖动、过滤器与每日上限执行点赞/收藏/关注/评论四类动作。 纯浏览器 DOM 操作,不使用 Headless 浏览器、MCP工具或API逆向调用。
openclaw skills install ops-comment在用户已登录的小红书 Web 会话内,模拟真人浏览与互动行为, 自动执行点赞、收藏、关注、评论四类动作,完成养号引流。
在执行任何任务前,先探测当前可用工具集,确认处于 advanced 层级。
def detect_tier() -> str:
required_tools = ["navigate", "read_page", "find", "javascript_tool", "computer"]
has_all = all(tool_available(t) for t in required_tools)
if has_all:
return "advanced" # 完整浏览器自动化(本 Skill 要求)
return "unsupported" # 本 Skill 不支持降级运行
如果层级为 unsupported,告知用户:
"本 Skill 需要 OpenClaw 浏览器工具链(navigate, read_page, find, computer 等)。请确认当前环境为 OpenClaw/Cowork 并已连接浏览器。"
用户触发本 Skill 时,根据意图路由到对应流程:
| 用户意图 | 路由目标 | 参考文档 |
|---|---|---|
| "开始养号" / "执行互动" | → §互动主流程 | references/interaction-engine.md |
| "配置/修改策略" | → §配置管理 | config/nurture-config.yaml |
| "查看数据/报告" | → §数据看板 | references/dashboard.md |
| "切换账号" | → §多账号切换 | references/multi-account.md |
| "设置定时任务" | → §定时调度 | references/scheduler.md |
| "停止/暂停" | → §会话控制 | 本文件 §会话控制 |
1. navigate 到 https://www.xiaohongshu.com
2. read_page 获取页面结构
3. find("用户头像") 或 find("登录按钮")
4. 判断登录状态:
- 找到头像 → 登录有效,继续
- 找到登录按钮 → 未登录,通知用户手动登录后重试
- 页面异常 → 等待 5s 重试,3次失败则终止
1. 读取 config/nurture-config.yaml(全局配置)
2. 读取 config/profiles/{当前账号}.yaml(账号配置)
3. 读取 data/nurture-log/ 中今日已有日志,恢复计数器
4. 计算剩余配额:
remaining = daily_limit - already_done_today
如果 remaining <= 0 → 通知用户今日配额已满,终止
目的:模拟真人打开 App 先浏览一会儿的行为,避免一上来就开始互动。
1. 停留在首页 3-8 秒(随机)
2. 缓慢滚动浏览 2-4 条笔记(只看不动作)
3. 随机点开 1 条笔记阅读 5-15 秒
4. 返回首页
5. 预热总时长:2-5 分钟
滚动模拟(所有滚动统一逻辑):
scroll_params:
direction: "down"
amount: random(2, 5) # 滚动幅度随机
pause_after: gaussian(3.0, 1.5) # 滚动后停顿(秒)
reverse_probability: 0.1 # 10% 概率回滚
根据配置中的 mode 参数选择路径:
1. 确认在首页推荐流
2. 滚动加载新内容
3. 对每条可见笔记:
a. read_page 获取笔记卡片信息(标题、点赞数、作者)
b. 过滤器判断是否符合目标(见 references/filters.md)
c. 符合 → 点击进入详情页 → 执行互动动作
d. 不符合 → 跳过,继续滚动
4. 每处理 3-5 条后,休息 15-30 秒
1. navigate 到搜索页或点击搜索框
2. 从 config.targets.keywords 中随机选取关键词
3. 输入关键词搜索(模拟逐字输入)
4. 在搜索结果中按过滤器筛选
5. 对符合条件的笔记执行互动
6. 每个关键词处理 5-10 条后换下一个关键词
1. 从 config.targets.competitor_accounts 中选取目标用户
2. navigate 到该用户主页
3. 浏览其粉丝列表或最近互动用户
4. 对符合过滤条件的用户:
a. 进入其主页
b. 浏览 1-3 条笔记
c. 执行点赞/收藏/关注
5. 每处理 3 个用户后休息
1. 找到目标赛道的热门笔记(搜索 + 按热度排序)
2. 进入笔记详情页
3. 滚动浏览评论区
4. 生成 AI 评论(见 references/comment-generation.md)
5. 点击评论框 → 逐字输入 → 发送
6. 每条评论后等待 ≥ 90s
通用执行逻辑(所有动作共享):
def execute_action(action_type, target):
# 1. 限额检查
if counters[action_type] >= daily_limits[action_type]:
return "limit_reached"
# 2. 间隔检查
elapsed = now() - last_action_time
min_interval = get_min_interval(action_type)
if elapsed < min_interval:
wait(min_interval - elapsed + jitter())
# 3. 动作前停留(模拟阅读)
dwell_time = random_gaussian(mean=8, std=3, min=3, max=20)
wait(dwell_time)
# 4. 执行动作(见各动作详细逻辑)
result = perform_action(action_type, target)
# 5. 动作后处理
if result.success:
counters[action_type] += 1
log_action(action_type, target, success=True)
else:
handle_failure(result.error)
# 6. 连续动作检查
if counters["total"] % cooldown_threshold == 0:
cooldown(random(120, 300))
return result
各动作详细逻辑:
1. find("点赞按钮") 或 find("爱心图标")
2. 检查是否已点赞(按钮状态/颜色)
3. 已点赞 → 跳过
4. 未点赞 → 鼠标移动到按钮(贝塞尔曲线)→ 随机偏移 ±3px → 点击
5. 等待 500ms 确认状态变化
6. 验证点赞成功(按钮变色/数字+1)
1. find("收藏按钮") 或 find("星标图标")
2. 检查是否已收藏
3. 逻辑同点赞,但频率更低(点赞:收藏 ≈ 4:1)
4. 收藏前额外停留 2-5s(模拟"觉得值得收藏"的决策时间)
1. 进入目标用户主页(如果不在的话)
2. find("关注按钮")
3. 检查是否已关注
4. 未关注 → 先浏览用户主页 5-10s → 浏览 1-2 条笔记
5. 返回主页 → 点击关注
6. 关注后在其主页再停留 3-5s
7. 关注间隔 ≥ 60s
1. 调用 AI 生成评论(见 references/comment-generation.md)
2. find("评论输入框") → 点击激活
3. 逐字输入评论:
- 字符间隔:gaussian(120ms, 40ms)
- 偶尔停顿 500-2000ms(模拟思考)
- 5% 概率打错字然后删除重打
4. 输入完成后停顿 1-3s(模拟检查)
5. find("发送按钮") → 点击
6. 等待 1s 确认发送成功
7. 评论后等待 ≥ 90s 再执行下一动作
每 15-20 分钟触发一次中场休息:
1. 停止互动动作
2. 纯浏览行为 3-8 分钟:
- 随机滚动首页
- 点开 1-2 条笔记看看(不互动)
- 可能切到"我的"页面看看
3. 恢复互动
触发条件:会话时长到达上限 OR 日配额用完 OR 用户主动停止
1. 逐步减速(最后 5 个动作间隔加倍)
2. 纯浏览 1-3 分钟
3. 保存状态到 data/nurture-log/
4. 生成会话摘要报告
5. 输出给用户:
"本次互动完成:点赞 {n}、收藏 {n}、关注 {n}、评论 {n}
耗时 {t} 分钟,无异常。今日剩余配额:点赞 {r}..."
| 指令 | 行为 |
|---|---|
| "暂停" | 保存当前状态,停止动作,保持页面不关闭 |
| "继续" | 从暂停点恢复,重新验证登录态后继续 |
| "停止" | 执行收尾流程后完全终止 |
| "状态" | 报告当前计数、运行时长、剩余配额 |
def handle_exception(error_type):
match error_type:
case "button_no_response":
wait(30)
retry(max=2)
case "toast_warning":
pause(minutes=5)
log("warning", "平台 Toast 警告")
case "captcha_detected":
stop_immediately()
notify_user("检测到验证码,已暂停所有操作。请手动完成验证后告知我继续。")
case "logged_out":
stop_immediately()
save_state()
notify_user("登录态已失效,请重新登录后告知我继续。")
case "violation_notice":
stop_immediately()
save_state()
notify_user("检测到违规提示,已终止操作。建议 24 小时内不再执行自动互动。")
case "page_error":
retry(max=3, backoff="exponential")
if still_failing:
stop_and_notify()
所有鼠标移动使用贝塞尔曲线(见 references/anti-detection.md):
move_to_element(target):
1. 获取当前鼠标位置 (x0, y0)
2. 获取目标元素中心 (x1, y1) + random_offset(±3px)
3. 生成 2 个随机控制点(贝塞尔曲线)
4. 沿曲线分 15-25 步移动
5. 每步间隔 10-30ms(模拟手速)
6. 最后 3 步减速(模拟精确对准)
7. 添加 ±1px 微颤抖
当用户要求修改配置时:
1. 读取当前 config/nurture-config.yaml
2. 根据用户指令修改对应字段
3. 验证配置合法性(限额不超安全阈值)
4. 写回配置文件
5. 确认修改内容给用户
安全阈值上限(不可超过):
每次会话结束后自动:
data/nurture-log/{date}.jsonl用户可随时请求查看数据: