小红书评论运营 CLI 工具。基于 Bridge Framework(Bridge Server + 油猴脚本),支持笔记搜索、评论获取、AI 人格化回复、行为模拟、运营仪表盘。
核心亮点:内置反检测引擎 — 人格化回复 + 随机延迟 + 浏览行为模拟,让自动化操作更像真人。
| 功能 | 说明 |
|---|---|
| 🔍 笔记搜索 | 关键词搜索笔记,支持增量获取 |
| 💬 评论获取 | 获取评论及嵌套回复,--new 增量拉取 |
| 🤖 AI 人格化回复 | 7 种人格自动轮换,避免"AI 味" |
| 🎭 行为模拟 | 模拟真实浏览(搜索→看笔记→点赞),穿插在发布流程中 |
| ⏱️ 随机延迟 | 发布间隔 45-180s 随机 + 疲劳累加,模拟真人节奏 |
| 🛡️ 风控断路器 | 10 分钟内 post 失败 ≥3 次自动暂停 |
| 📊 运营仪表盘 | 本地 HTML 可视化 |
| 💾 持久化记忆 | SQLite 存储评论、语料、失败模式 |
npm install
# 1. 复制配置
cp config.example.json config.json
# 编辑 config.json:填入 bridge.token 和 llm.api_key
# 2. 启动 Bridge Server
node server.js
# 3. Chrome 安装油猴脚本 scripts/xiaohongshu.user.js
# 打开 xiaohongshu.com 并登录
# 4. 验证连接
node cli.js status
# 5. 开始使用
node cli.js my
node cli.js search "穿搭"
node cli.js get <note_id> --page 1 --depth 1
node cli.js suggest <note_id> --auto7 种内置人格自动轮换,每条评论风格不同:
| 人格 | 特征 | 示例 |
|---|---|---|
| casual 朋友 | 口语短句,1-2 个 emoji | "哈哈哈这也太真实了😂" |
| 好奇提问型 | 以问句为主,真诚追问 | "这个是在哪里买的呀?" |
| 经验分享型 | "我之前也..." | "我之前试过,确实不错" |
| 热情追捧型 | 感叹号+emoji,情绪化 | "啊啊啊这个绝了!!" |
| 温和探讨型 | "我觉得..."委婉补充 | "说得挺有道理的,不过..." |
| 轻松幽默型 | 玩梗、自嘲、夸张 | "我的手:我会了 我的脑:不你不会" |
| 简短反应型 | 极简,3-15 字 | "真实👍" "马住了" |
使用:
# 生成建议(不发布,看风格)
node cli.js suggest <note_id>
# 自动发布(人格轮换 + 随机延迟 + 浏览穿插)
node cli.js suggest <note_id> --auto
# 调试模式(跳过所有延迟)
node cli.js suggest <note_id> --fast模拟真实用户浏览行为,解决"只发不看"的账户不对称检测:
# 随机搜索热门词 → 看 1-2 条笔记 → 偶尔点赞评论
node cli.js browse --max-notes 2 --like-chance 0.2
# 指定关键词浏览
node cli.js browse 穿搭 美食 --max-notes 3suggest --auto 已内置 browse 穿插:每发约 5 条评论自动穿插一次浏览+点赞。
| 命令 | 用途 | 示例 |
|---|---|---|
my |
我的笔记列表 | node cli.js my |
search |
搜索笔记 | node cli.js search "关键词" --count 5 |
get |
获取评论 | node cli.js get <id> --page 1 --depth 1 |
post |
发表评论/回复 | node cli.js post <id> "内容" --reply-to <cid> |
like |
点赞评论 | node cli.js like <id> <cid> |
delete |
删除评论 | node cli.js delete <id> <cid> |
| 命令 | 用途 | 示例 |
|---|---|---|
analyze |
AI 分析评论情感/优先级 | node cli.js analyze <id> |
suggest |
AI 生成回复建议 | node cli.js suggest <id> --auto |
browse |
模拟浏览行为 | node cli.js browse --max-notes 2 |
dashboard |
运营仪表盘 HTML | node cli.js dashboard |
| 命令 | 用途 |
|---|---|
replied |
已回复 cid 列表 |
corpus search/recent/stats |
回复语料库 |
failures |
失败模式 top 10 |
dedup |
查重护栏 |
config.json(从 config.example.json 复制):
{
"bridge": {
"host": "127.0.0.1",
"port": 19424,
"token": "your-bridge-token"
},
"llm": {
"api_key": "sk-...",
"base_url": "https://api.openai.com/v1",
"model": "gpt-4o-mini",
"max_tokens": 4096,
"timeout_ms": 60000,
"max_retries": 3
}
}环境变量(优先级更高):
export OPENAI_API_KEY="sk-..."
export OPENAI_BASE_URL="https://..."
export OPENAI_MODEL="gpt-4o-mini"CLI (cli.js) → HTTP/WS → Bridge Server (:19424) → 油猴脚本 → 页面 axios → 小红书 API
签名安全:油猴脚本劫持页面 webpack axios 实例,所有签名(x-s/x-s-common/x-t)由官方前端自动注入。
新增反检测模块:
lib/jitter.js— 人类行为延迟工具库lib/personas.js— 7 种人格模板池lib/commands/browse.js— 模拟浏览行为
| 检测维度 | 对策 |
|---|---|
| 固定时间间隔 | 发布间隔 45-180s 随机 + 疲劳累加 |
| AI 内容特征 | 7 种人格自动轮换 + AI 特征词黑名单 |
| 只发不看 | 每发 ~5 条穿插 browse 浏览+点赞 |
| 请求模式固定 | search sort 参数 90/10 随机切换 |
| 重复内容 | reply_corpus UNIQUE 去重 + LLM 重写 |
| 高频失败 | 10 分钟窗口断路器(非累计值) |
xiaohongshu-cli/
├── cli.js # CLI 入口
├── server.js # Bridge Server
├── config.json # 配置
├── lib/
│ ├── commands/ # 命令模块
│ │ ├── get.js # 获取评论
│ │ ├── post.js # 发表评论
│ │ ├── suggest.js # AI 回复建议(含人格化+随机延迟)
│ │ ├── browse.js # 模拟浏览行为
│ │ ├── search.js # 搜索笔记
│ │ └── ...
│ ├── memory/ # SQLite 持久化记忆层
│ ├── personas.js # 7 种人格模板池
│ ├── jitter.js # 人类行为延迟工具库
│ ├── llm.js # LLM 封装(支持人格化)
│ └── ...
├── scripts/
│ └── xiaohongshu.user.js # 油猴脚本
├── storage/
│ └── xiaohongshu.db # SQLite 数据库
├── reply-strategy.md # 回复策略模板
├── SKILL.md # Agent 技能文档
└── README.md # 本文档
- Node.js 18+
ws— WebSocketbetter-sqlite3— SQLite- Chrome + Tampermonkey + 油猴脚本
- (可选)OpenAI-compatible API key
MIT