# Xiaohongshu Skill

> 小红书操作指南（Chrome MCP）

- Skill: `sssssssynqa/xiaohongshu-skill` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add sssssssynqa/xiaohongshu-skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sssssssynqa/xiaohongshu-skill/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: SsssssSynqa (https://skillmd.com/u/sssssssynqa)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/sssssssynqa/xiaohongshu-skill

---

# 小红书操作指南（Chrome MCP）

> 适用于 Claude Code + Chrome MCP 扩展，让 Claude 通过浏览器操作小红书。

## 前置要求

1. **Claude Code**：[Anthropic 官方 CLI 工具](https://docs.anthropic.com/en/docs/claude-code)
2. **Claude in Chrome 扩展**：[Chrome Web Store 安装](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn)（需 v1.0.36+）
3. Chrome MCP 连接：安装扩展后，Claude Code 启动时加 `--chrome` 参数，或在设置中启用 Chrome 集成

## 安装方式

将本文件夹复制到你的项目 `.claude/skills/` 目录下：

```
你的项目/
├── .claude/
│   └── skills/
│       └── xiaohongshu/
│           ├── SKILL.md          ← 本文件
│           └── references/
│               └── js-snippets.md
```

Claude Code 会自动识别 Skill 并在相关对话中加载。

## 使用前配置

### 评论签名

建议在每条评论末尾附上你的标识签名，方便辨认和验证发送是否成功。在 JS 代码片段中搜索 `你的签名` 替换为你自己的签名。

### 账号信息

在本文件顶部记录你的小红书账号名和主页 URL，方便 Claude 定位你的个人主页：

```
- 账号名：你的账号名
- 主页 URL：xiaohongshu.com/user/profile/你的用户ID
```

---

## ⚠️ 安全警告

**禁止使用 CLI/API 工具进行互动操作（评论、回复、点赞、收藏）。** 直接走 API 调用会被小红书风控系统检测到 AI 托管行为，触发账号违规预警。Chrome MCP 模拟真人浏览器操作，风险低得多。

即使用 Chrome MCP，也**不要连续快速回复多条评论**，每条之间保持自然间隔。

---

## 核心操作流程

### 第一步：确认登录状态

打开任意小红书页面后，先检查是否已登录。如果出现登录弹窗或跳转登录页，**立即停止并告知用户**，不要尝试自动登录。

### 第二步：导航到目标页面

**关键机制 —— xsec_token：**
小红书帖子 URL 需要 `xsec_token` 参数才能正常访问。这个 token 由站内的 Vue 应用在用户点击封面时动态生成。**直接在地址栏输入帖子 URL（不带 token）会被拦截或跳转到首页。**

正确做法：
1. 先导航到一个列表页面（点赞页、搜索结果页、通知页、首页推荐）
2. 在列表页面中**点击帖子封面/标题**，让页面自然跳转（会自动带上 xsec_token）
3. 页面跳转后即可正常浏览和操作

### 第三步：阅读帖子内容

**省 token 原则：JS 提取 > read_page 定点 > read_page 全扫 > 截图**

优先用 JS 读取文字内容（参见 [js-snippets.md](references/js-snippets.md)），只在需要视觉确认（布局、按钮位置、图片内容）时才截图。

**⚠️ 严禁用截图 OCR 识别文字内容。** 颜文字、特殊符号、相似汉字的 OCR 识别率极低，会产生大量错别字。阅读帖子/评论/通知内容时，必须用 JS 提取文字。截图只用于确认页面布局和按钮位置。

#### 读取文字

使用 [js-snippets.md](references/js-snippets.md) 中的"读取帖子文本"代码片段。

#### 查看图片

很多帖子的核心内容在图片里（对话截图、文字卡片等），**必须查看所有图片再评论**。

操作方式：点击图片 → 进入图片查看器 → 右上角显示 `当前/总数` → 用右箭头键或点击右侧箭头翻页 → 左上角 X 按钮关闭查看器

### 第四步：发表评论

#### 找到评论输入框

评论框在帖子右侧评论区底部，定位方式（按优先级）：

1. **JS 定位**：`document.getElementById('content-textarea')` 或 `document.querySelector('[contenteditable="true"]')`
2. **语义搜索**：用 `find` 工具搜索"说点什么"或"点击评论"

**⚠️ 帖子页的评论框默认是收起状态。必须先物理点击（`click()`）让它展开，展开后才会出现发送按钮。仅用 JS 的 `focus()` 不会展开评论框。**

#### 输入评论内容

聚焦输入框后用 Chrome MCP 的 `type` 动作打字。

#### 发送评论

用 `find` 搜索"发送"按钮或 JS 定位发送按钮后点击。**不要用 Enter 键发送**（可能触发换行而非提交）。

#### 验证评论

发送后等待 2 秒，用 JS 检查评论列表中是否包含你的签名关键字（参见 js-snippets.md 中的验证片段）。如果未找到且多次尝试失败，大概率是权限限制（如"仅好友可评论"），直接放弃该帖子。

### 第五步：返回列表继续下一篇

**关键机制 —— 模态弹窗关闭：**
从个人主页（点赞页、收藏页等）点击帖子封面时，帖子以**模态弹窗（overlay）**形式打开。评论完成后：

1. **首选：点击弹窗外部区域关闭**（推荐）——点击模态弹窗左侧的空白区域，弹窗关闭，**滚动位置完美保持**
2. **备选：`navigate` 回列表页 URL**——会重置滚动到顶部，需要重新滚动
3. **不要用浏览器后退**——行为不可预测

---

## 批量评论工作流

适用于"去点赞页评论 N 篇"这类任务。

### 帖子追踪（防重复）

用**作者名 Set**追踪已评论帖子。每完成一篇，将作者名加入 Set。详细代码见 [js-snippets.md](references/js-snippets.md)。

### 懒加载

点赞页初始只加载约 10 篇帖子，需要**物理滚动**（computer/scroll 工具）触发加载更多。JS 滚动无效。通常需要 2-4 轮、每轮 5-10 ticks 的滚动。

### 单帖操作循环

```
列表页 → 滚动加载 → JS找未评论帖子 → 点击封面（模态弹窗打开）→ 等待加载
→ JS读文本 → 看图片 → 找评论框 → 输入 → 发送 → 验证
→ 点击弹窗外部区域关闭（保持滚动位置）→ 重复
```

---

## 个人主页帖子操作

### 首选方案：`window.__INITIAL_STATE__`

小红书前端（Vue 3）把页面数据序列化存在 `window.__INITIAL_STATE__` 全局变量中。个人主页的帖子数据在 `state.user.notes` 里，是一个二维数组（每个标签页一个子数组），**无需滚动即可获取全部帖子**。

数据需要用 `_value` 逐层解包 Vue 3 reactive proxy。输出中避免包含图片 URL（Chrome MCP 安全过滤会拦截带 query string 的 URL）。

详细 JS 代码见 [js-snippets.md](references/js-snippets.md) 中的"个人主页帖子提取"章节。

### 备选方案：DOM 滚动收集（`data-index`）

当 `__INITIAL_STATE__` 不可用时，通过 DOM 渐进式滚动收集。每个 `section.note-item` 上有 `data-index` 属性代表真实位置，按此排序而非 DOM 顺序或视觉位置。

详细代码见 [js-snippets.md](references/js-snippets.md)。

---

## 通知页操作

通知页 URL：`xiaohongshu.com/notification`

点击"评论和@"标签查看评论通知。通知按时间倒序（最新在最上面）。

**通知结构**：每条通知中，对方的回复在上方，下面灰色小字是自己之前的评论（作为上下文）。不要把灰色文字误认为对方的回复。

### 回复通知的关键技术点

1. **定位通知条目**：用 `.tabs-content-container` 的直接子元素（`container.children[i]`），**不要用 `div.info` 选择器**（会匹配到 460+ 个无关元素）
2. **输入框类型不同**：通知页的输入框是 `textarea.comment-input`（与帖子页的 `contenteditable` div 不同）
3. **Chrome MCP 的 `type` 动作在通知页 textarea 上无效**：value 始终为空。必须用 JS 的 `nativeInputValueSetter` 设值
4. **JS 字符串中直接写原始字符**：绝对不要手动转 Unicode 转义码（`\uXXXX`），否则会出现错字和乱码

详细代码见 [js-snippets.md](references/js-snippets.md) 的"通知页"章节。

---

## 工具对照表

| 操作 | Chrome MCP 工具 |
|---|---|
| 跳转 URL | `navigate` |
| 点击 | `computer` (left_click) / `find` + ref 点击 |
| 截图 | `computer` (screenshot) |
| 打字 | `computer` (type) |
| 滚动 | `computer` (scroll) |
| 执行 JS | `javascript_tool` |
| 读取 DOM | `read_page` (无障碍树) |
| 语义搜索元素 | `find` |
| 提取页面文字 | `get_page_text` |
| 键盘操作 | `computer` (key) |
| 标签页管理 | `tabs_context_mcp` |
| 等待 | `computer` (wait) |

---

## 小红书常见概念速查

评论区常见的概念，了解避免张冠李戴：

- **momo**：小红书上的匿名/默认用户名，叫 momo 的人非常多。不要通过用户名搜索 momo
- **小克**：小红书用户对 Claude 的昵称，来源是"克劳德"的简称
- **Clawd**：Claude Code 的官方像素风吉祥物，是一只小螃蟹（Claw + d）。不是猫，不是牛
- **MCP（Model Context Protocol）**：Anthropic 推出的协议，让 AI 模型连接外部工具

---

## 已知限制

- **Toast 弹窗不可见**：小红书的系统提示弹窗消失极快，截图无法捕捉。评论多次失败时直接放弃
- **xsec_token 必需**：直接输入帖子 URL 无法访问，必须从站内点击获取 token
- **评论框延迟渲染**：帖子加载完成后评论框才出现，可能需要等待或滚动触发
- **图片上传**：可以通过 Chrome MCP 的 `file_upload` 工具上传图片到发帖页面，支持图文笔记发布

---

## 反模式（不要这样做）

1. **不要自己开新标签页访问帖子 URL**。没有 xsec_token 会失败
2. **不要在本地创建文件写评论草稿**。直接在浏览器评论框里操作
3. **不要跳过图片直接评论**。很多帖子核心内容在图片里
4. **不要依赖截图 OCR 识别文字**。用 JS 提取
5. **不要在找不到元素时无限重试**。截图确认后改用其他定位方式，或告知用户
6. **不要用 Enter 键发送评论**。找到"发送"按钮点击它
7. **不要忽视已打开的页面自己重新导航**。先确认当前页面状态
8. **不要尝试自动登录**。遇到登录页面立即停止并告知用户
9. **不要用 CLI/API 工具互动**。只用 Chrome MCP 浏览器操作

