Just internal test skill

小红书自动化养号互动 Skill(OpenClaw 多模型版)。 当用户提到小红书养号、自动互动、点赞、收藏、关注、评论引流、 账号活跃度提升、互动任务、定时养号、多账号管理时必须使用。 核心:在用户已登录会话内模拟真人浏览与互动行为,按配置的速率、 抖动、过滤器与每日上限执行点赞/收藏/关注/评论四类动作。 纯浏览器 DOM 操作,不使用 Headless 浏览器、MCP工具或API逆向调用。

Audits

Warn

Install

openclaw skills install ops-comment

小红书自动化养号互动 Skill — xhs-nurture v1.0

在用户已登录的小红书 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
"停止/暂停"→ §会话控制本文件 §会话控制

互动主流程

Step 1: 登录态验证

1. navigate 到 https://www.xiaohongshu.com
2. read_page 获取页面结构
3. find("用户头像") 或 find("登录按钮")
4. 判断登录状态:
   - 找到头像 → 登录有效,继续
   - 找到登录按钮 → 未登录,通知用户手动登录后重试
   - 页面异常 → 等待 5s 重试,3次失败则终止

Step 2: 加载配置

1. 读取 config/nurture-config.yaml(全局配置)
2. 读取 config/profiles/{当前账号}.yaml(账号配置)
3. 读取 data/nurture-log/ 中今日已有日志,恢复计数器
4. 计算剩余配额:
   remaining = daily_limit - already_done_today
   如果 remaining <= 0 → 通知用户今日配额已满,终止

Step 3: 预热阶段

目的:模拟真人打开 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% 概率回滚

Step 4: 选择任务路径

根据配置中的 mode 参数选择路径:

路径 A: 发现页模式 (discover_feed)

1. 确认在首页推荐流
2. 滚动加载新内容
3. 对每条可见笔记:
   a. read_page 获取笔记卡片信息(标题、点赞数、作者)
   b. 过滤器判断是否符合目标(见 references/filters.md)
   c. 符合 → 点击进入详情页 → 执行互动动作
   d. 不符合 → 跳过,继续滚动
4. 每处理 3-5 条后,休息 15-30 秒

路径 B: 搜索页模式 (search)

1. navigate 到搜索页或点击搜索框
2. 从 config.targets.keywords 中随机选取关键词
3. 输入关键词搜索(模拟逐字输入)
4. 在搜索结果中按过滤器筛选
5. 对符合条件的笔记执行互动
6. 每个关键词处理 5-10 条后换下一个关键词

路径 C: 用户主页模式 (user_profile)

1. 从 config.targets.competitor_accounts 中选取目标用户
2. navigate 到该用户主页
3. 浏览其粉丝列表或最近互动用户
4. 对符合过滤条件的用户:
   a. 进入其主页
   b. 浏览 1-3 条笔记
   c. 执行点赞/收藏/关注
5. 每处理 3 个用户后休息

路径 D: 评论区模式 (comment_section)

1. 找到目标赛道的热门笔记(搜索 + 按热度排序)
2. 进入笔记详情页
3. 滚动浏览评论区
4. 生成 AI 评论(见 references/comment-generation.md)
5. 点击评论框 → 逐字输入 → 发送
6. 每条评论后等待 ≥ 90s

Step 5: 执行互动动作

通用执行逻辑(所有动作共享):

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

各动作详细逻辑

点赞 (like)

1. find("点赞按钮") 或 find("爱心图标")
2. 检查是否已点赞(按钮状态/颜色)
3. 已点赞 → 跳过
4. 未点赞 → 鼠标移动到按钮(贝塞尔曲线)→ 随机偏移 ±3px → 点击
5. 等待 500ms 确认状态变化
6. 验证点赞成功(按钮变色/数字+1)

收藏 (collect)

1. find("收藏按钮") 或 find("星标图标")
2. 检查是否已收藏
3. 逻辑同点赞,但频率更低(点赞:收藏 ≈ 4:1)
4. 收藏前额外停留 2-5s(模拟"觉得值得收藏"的决策时间)

关注 (follow)

1. 进入目标用户主页(如果不在的话)
2. find("关注按钮")
3. 检查是否已关注
4. 未关注 → 先浏览用户主页 5-10s → 浏览 1-2 条笔记
5. 返回主页 → 点击关注
6. 关注后在其主页再停留 3-5s
7. 关注间隔 ≥ 60s

评论 (comment)

1. 调用 AI 生成评论(见 references/comment-generation.md)
2. find("评论输入框") → 点击激活
3. 逐字输入评论:
   - 字符间隔:gaussian(120ms, 40ms)
   - 偶尔停顿 500-2000ms(模拟思考)
   - 5% 概率打错字然后删除重打
4. 输入完成后停顿 1-3s(模拟检查)
5. find("发送按钮") → 点击
6. 等待 1s 确认发送成功
7. 评论后等待 ≥ 90s 再执行下一动作

Step 6: 中场休息

每 15-20 分钟触发一次中场休息:
1. 停止互动动作
2. 纯浏览行为 3-8 分钟:
   - 随机滚动首页
   - 点开 1-2 条笔记看看(不互动)
   - 可能切到"我的"页面看看
3. 恢复互动

Step 7: 收尾阶段

触发条件:会话时长到达上限 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. 确认修改内容给用户

安全阈值上限(不可超过):

  • 每日点赞 ≤ 200
  • 每日收藏 ≤ 50
  • 每日关注 ≤ 30
  • 每日评论 ≤ 20
  • 单次会话 ≤ 60 分钟

数据输出

每次会话结束后自动:

  1. 追加操作日志到 data/nurture-log/{date}.jsonl
  2. 如果是当天最后一个会话,生成日报 HTML
  3. 周日会话结束后额外生成周报

用户可随时请求查看数据:

  • "看今天的数据" → 输出今日统计摘要
  • "生成报告" → 生成并打开 HTML 看板
  • "看趋势" → 输出近 7 天对比数据