---
name: xhs-nurture
description: >
  小红书自动化养号互动 Skill（OpenClaw 多模型版）。
  当用户提到小红书养号、自动互动、点赞、收藏、关注、评论引流、
  账号活跃度提升、互动任务、定时养号、多账号管理时必须使用。
  核心：在用户已登录会话内模拟真人浏览与互动行为，按配置的速率、
  抖动、过滤器与每日上限执行点赞/收藏/关注/评论四类动作。
  纯浏览器 DOM 操作，不使用 Headless 浏览器、MCP工具或API逆向调用。
compatibility: >
  OpenClaw browser(snapshot/act) 基础工具集，
  以及 Claude in Chrome 完整工具集。
  多模型：Claude / GPT-4o / Kimi / DeepSeek
metadata:
  version: "1.2.0"
  capability_tier: adaptive
  category: 小红书互动养号
---

# xhs-nurture v1.2 — 小红书自动化养号

在用户已登录的小红书 Web 会话内，模拟真人行为执行点赞/收藏/关注/评论。

---

## 绝对禁止规则（全程生效）

1. **禁止固定等待** — 连续两次等待不能用相同秒数。正确：5s→12s→3s→9s；错误：8s→8s→8s
2. **禁止跳过预热** — 会话开始后 2 分钟内不能执行任何互动动作
3. **禁止重复互动** — 你必须维护一个"已互动列表"（笔记标题+作者），每次互动前检查，匹配则跳过。这条规则在每次会话开始时就生效，包括第一次会话
4. **禁止互动低赞笔记** — 点赞数 < 50 的笔记不互动。显示"赞"而非数字时，进入详情页确认实际赞数再决定
5. **禁止不间断连续互动** — 每 3-4 次互动后必须插入 30-60 秒纯浏览

⚠ **以上规则从 Step 1 开始即刻生效，适用于所有会话（包括第一次）。不存在"前几次会话可以放宽"的情况。**

---

## 工具适配

**模式 A（完整工具集）**：navigate/find/read_page/computer/javascript_tool 全部可用
- 随机数：`javascript_tool("Math.floor(Math.random()*(MAX-MIN)+MIN)")`

**模式 B（基础工具集）**：仅 browser(snapshot+act)，无 javascript_tool
- 随机数：你自行在 [MIN,MAX] 范围内选值，每次必须不同，覆盖整个范围
- 元素定位：snapshot 解析 → ref 点击
- **点赞数显示为"赞"时**：进入笔记详情页查看实际赞数，不要直接跳过

---

## 任务路由

| 用户说 | 执行 |
|-------|------|
| "开始养号"/"执行互动" | → 互动主流程 |
| "配置/修改策略" | → 修改 config/nurture-config.yaml |
| "查看数据/报告" | → references/dashboard.md |
| "切换账号" | → references/multi-account.md |
| "设置定时任务" | → references/scheduler.md |
| "暂停/停止" | → 保存状态，执行收尾 |

---

## 互动主流程

### Step 1: 浏览器准备与登录验证

在当前已打开的 Chrome 窗口中新建一个 Tab 页执行任务，**不要打开新窗口**：
1. 在当前浏览器窗口中打开新 Tab
2. 在新 Tab 中导航到 xiaohongshu.com
3. 查找用户头像 → 有=已登录，无=提示手动登录。3次失败终止
4. 后续所有操作都在这个 Tab 中完成
5. **初始化已互动列表**（空列表，用于去重）

### Step 2: 加载配置与计数
1. 读取 config/nurture-config.yaml + 账号 profile
2. 从日志恢复今日计数，计算剩余配额（≤0 则终止）
3. 安全上限：点赞≤200 收藏≤50 关注≤30 评论≤20 会话≤60分钟

### Step 3: 预热（MANDATORY，≥2 分钟）

预热期间**绝对不能**点击互动按钮，只能浏览：
1. 首页停留 30-60s，滚动 2-3 次（每次滚动量不同）
2. 点开 1-2 篇笔记纯阅读 10-25s 后返回
3. 起始路径三选一：直接搜索 / 先看通知再搜索 / 多浏览几屏再搜索

自检：第一个互动动作必须在会话开始 2 分钟之后。

### Step 4: 搜索与关键词轮换

从 config.targets.keywords 选关键词搜索。**换词条件**（满足任一）：
- 当前词下已互动 5-8 篇
- 连续 3 屏无合格笔记
- 已浏览超过 3 页结果
- **浏览 2 屏后合格率 < 10% → 立即换词**（不要在低效关键词上浪费时间）

换词时优先选择泛关键词（如"期货""交易""投资"），细分词（如"期货开户"）合格率通常较低。

### Step 5: 内容过滤（MANDATORY）

**粗筛（搜索结果页，不进入笔记）**：
- 点赞数：< 50 跳过，> 50000 跳过
- **点赞数显示为"赞"无法读取时**：不要直接跳过，进入详情页确认实际赞数再决定
- 标题含排除词跳过：广告/代理/带单/喊单/保证收益/稳赚/零风险/开户找/加微信/返佣/手续费优惠/免费领/福利
- 作者含"期货公司""XX证券""XX营业部""XX期货"等机构名 → 跳过
- **去重**：对比已互动列表（标题+作者），已互动过 → 跳过

**精筛（进入笔记后）**：发布超 30 天跳过、内容极短(<50字)跳过、广告软文跳过

**随机跳过**：约 20% 的合格笔记故意只看不互动（反检测）。

**低合格率应对**：如果连续浏览 2 屏（约 10-20 篇）仅 0-1 篇合格：
1. 立即换关键词（选更泛的词）
2. 如果换 2 个词后仍不足 → 切换到发现页模式（首页推荐流通常有更多高赞内容）

详见 references/filters.md。

### Step 6: 执行互动

**动作选择**（每篇笔记生成随机数 1-100）：
- ≤70 且配额未满 → 点赞
- ≤25 且配额未满 → 收藏（可与点赞叠加）
- ≤15 且配额未满且赞>500 → 关注
- ≤10 且配额未满且赞>500 → 评论

**各动作要点**：
- **点赞**：检查未赞 → 等 1-3s → 点击 → 验证变红
- **收藏**：等 2-5s（比点赞多犹豫）→ 点击 → 关闭专辑弹窗
- **关注**：先浏览作者信息 5-15s（MANDATORY）→ 点击 → 停留 3-5s
- **评论**：先读评论区 3-8s → 生成评论 → 安全自检 → 输入 → 审视 1-4s → 发送

**互动后必做**：
1. 验证成功（按钮变色/数字+1）
2. **将笔记标题+作者加入已互动列表**（去重用）
3. 记录日志
4. 检查风控信号

**动作间隔**（秒，范围内随机，每次不同）：

| 转换 | 间隔 |
|------|------|
| 赞→赞 | 8-30 |
| 赞→藏(同笔记) | 5-20 |
| 赞→关注 | 30-120 |
| 藏→任何 | 10-40 |
| 关注→任何 | 60-180 |
| 评论→任何 | 90-300 |

详见 references/interaction-engine.md 和 references/rate-control.md。

### Step 7: 会话节奏（MANDATORY）

按会话进度调整间隔倍数，不能匀速执行：
- 前 10% 时间：×2.0，纯浏览不互动（预热）
- 10-25%：×1.5，开始少量互动
- 25-75%：×1.0，正常频率
- 75-90%：×1.3，渐慢
- 最后 10%：×2.5，几乎不互动，纯浏览收尾

根据已完成互动次数/计划总次数估算当前阶段。

### Step 8: 休息与连续限制

- 连续点赞 ≤4 次 → 之后纯浏览 30-60s
- 连续互动 ≤6 次 → 之后纯浏览 60-90s
- 每 15-20 次互动 → 强制休息 2-5 分钟
- 每 15-20 分钟 → 中场大休息 3-8 分钟（回首页/看通知/不操作）

### Step 9: 反检测行为

贯穿全程随机触发（详见 references/anti-detection.md）：
- **等待随机化**：所有等待在范围内取不同值，永不固定
- **滚动随机化**：每次 scroll 量不同(2-5)，偶尔回滚
- **故意跳过合格笔记**：~20%
- **好奇心点击**：~5% 点开非目标内容看几秒
- **误点击**：~3% 点开后立刻返回

### Step 10: 错误恢复

**元素失效处理**（这是最常见的问题）：
1. **立即刷新 snapshot** → 重新获取元素 ref → 用新 ref 重试
2. 如仍失败 → 小幅滚动页面触发 DOM 更新 → 再刷新 → 重试
3. 第 3 次失败 → 放弃此笔记，继续下一篇（不卡超 30s）

**页面切换后元素失效是正常现象**：从详情页返回搜索结果后，旧 ref 必然失效。
返回搜索结果页后必须重新 snapshot 再操作，不要尝试用旧 ref。

**Tab 健康检查**：每 5 次互动后确认页面正常，异常则重新导航。

### Step 11: 风控响应

| 信号 | 响应 |
|------|------|
| 按钮无响应 | 等 30s → 重试 ×2 → 跳过 |
| "操作频繁" | 暂停 5-10 分钟 |
| 验证码/滑块 | **立即停止**，通知用户 |
| 登录失效 | 终止 + 保存 + 通知 |
| 违规提示 | **终止** + 建议 24h 不操作 |

累积：1次 Medium→间隔翻倍；2次→暂停15分钟；3次→终止。

### Step 12: 收尾

时长到/配额尽/用户停止时：最后几个动作间隔×2.5 → 纯浏览 1-3 分钟 → 保存日志 → 输出摘要。

---

## 自检清单（每 5 次互动后）

- □ 等待秒数每次都不同？
- □ 是否重复互动了同一笔记？（检查已互动列表）
- □ 互动的笔记点赞数都 ≥ 50？
- □ 连续互动是否超 4 次没休息？
- □ 页面有无异常提示？
- □ 当前关键词的合格率如何？（< 10% 应换词）

---

## 日志持久化

每次成功互动追加到 `data/nurture-log/{日期}.jsonl`，格式：
`{"ts":"时间","action":"like","note_id":"ID","note_title":"标题","success":true}`

去重文件：`data/interacted-notes.txt`，每行一个笔记 ID。

上下文丢失时从日志文件恢复计数；日志不可用则保守估计已用 50% 配额。
