Skip to content

BodaFu/auto-rednote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

auto-rednote

小红书自动化运营 OpenClaw 插件。

复用你已登录的 Chrome(通过 OpenClaw browser control),让 AI Agent 获得完整的小红书网页端操作能力——无需独立浏览器进程,无需 API Key,无需逆向工程。

English →


工作原理

AI Agent(Claude / Gemini / …)
  → xhs_* 工具调用
  → auto-rednote 插件(TypeScript)
  → 进程内调用 → OpenClaw browser control
  → Playwright → OpenClaw 管理的 Chrome(openclaw profile)
  → 小红书网页端(www.xiaohongshu.com)

插件通过进程内调用直接使用 OpenClaw 的 browser control,无需独立 HTTP 端口。它控制 OpenClaw 管理的 Chromium 实例,自动共享你的登录会话。


前置条件

依赖 说明
OpenClaw 已安装,Gateway 正在运行(openclaw gateway
OpenClaw browser 已通过 openclaw browser 启动(使用内置 openclaw Chrome profile)
Node.js ≥ 22(使用内置 node:sqlite
小红书账号 已在 OpenClaw browser 中登录(见下方步骤)

安装步骤

第 1 步 — 找到 OpenClaw 的 extensions 目录

extensions 目录紧邻 OpenClaw 安装目录:

# npm 全局安装(最常见)
ls $(npm root -g)/openclaw/extensions/

# Homebrew
ls /opt/homebrew/lib/node_modules/openclaw/extensions/

# 源码目录
ls /path/to/openclaw/extensions/

提示:运行 openclaw doctor,输出中会显示 gateway 二进制路径,extensions/ 就在同级目录下。

第 2 步 — 将 auto-rednote clone 到 extensions 目录

cd $(npm root -g)/openclaw/extensions   # 根据你的安装方式调整路径
git clone https://github.com/BodaFu/auto-rednote.git
cd auto-rednote
npm install

第 3 步 — 在 OpenClaw 配置中启用

打开 ~/.openclaw/openclaw.json(不存在则新建),添加:

{
  "plugins": {
    "entries": {
      "auto-rednote": {
        "enabled": true
      }
    }
  }
}

可选:指定自定义数据库路径:

{
  "plugins": {
    "entries": {
      "auto-rednote": {
        "enabled": true,
        "config": {
          "dbPath": "~/.openclaw/auto-rednote.db"
        }
      }
    }
  }
}

第 4 步 — 在 OpenClaw browser 中登录小红书

OpenClaw 管理一个独立的 Chrome profile(openclaw),需要在这个浏览器里登录小红书:

openclaw browser

这会打开 OpenClaw 的 Chromium 窗口。访问 https://www.xiaohongshu.com 正常登录即可。登录状态会持久化在 openclaw profile 中。

第 5 步 — 重启 Gateway

# 发送 HUP 信号,热重载插件(无需完整重启)
kill -HUP $(pgrep -f "openclaw.*gateway")

# 或者完整重启
openclaw gateway --force

第 6 步 — 验证

向你的 Agent 发送:"调用 xhs_check_login,告诉我结果。"

预期返回:{ "loggedIn": true, "message": "已登录" }


配置项

配置项 类型 默认值 说明
dbPath string ~/.openclaw/auto-rednote.db 通知状态 SQLite 数据库路径

browserProfile 配置项无需设置——插件始终使用 OpenClaw 内置的 openclaw Chrome profile。


工具列表(共 28 个)

账号工具

工具 说明
xhs_check_login 检查小红书登录状态
xhs_get_qrcode 获取登录二维码 URL(未登录时)
xhs_my_profile 获取我的主页信息
xhs_my_notes 获取我的笔记列表(含互动数据)

内容工具

工具 说明
xhs_list_feeds 获取首页推荐 Feed 列表
xhs_search 按关键词、排序、类型、时间范围搜索笔记
xhs_get_feed 获取帖子详情(含评论)
xhs_get_sub_comments 获取某条评论下的所有子评论
xhs_get_user 获取用户主页信息和笔记列表

互动工具

工具 说明
xhs_post_comment 在笔记下发表顶级评论
xhs_reply_comment 回复评论(支持多级评论结构)
xhs_like 点赞 / 取消点赞笔记
xhs_collect 收藏 / 取消收藏笔记
xhs_follow 关注 / 取消关注用户

通知工具

工具 说明
xhs_get_notifications_pending 获取待处理通知(Agent 心跳循环专用)
xhs_mark_notification 标记通知处理结果(replied / skipped / retry)
xhs_notification_stats 获取通知处理状态统计

发布工具

工具 说明
xhs_publish 发布图文或视频笔记(支持纯文字、定时发布)

桌面 IM 工具(私信回复)— 仅 macOS

需要小红书 macOS App(rednote,Mac App Store 可下载)以全屏模式运行在独立 Space 中。网页版小红书不支持私信功能。通过 peekaboo CLI 控制。

工具 说明
xhs_desktop_im_scan_inbox 【推荐】扫描消息列表 + 返回所有可见行的预计算点击坐标
xhs_desktop_im_scan_stranger 【推荐】扫描陌生人消息列表 + 返回「回复」按钮坐标
xhs_desktop_im_unread 扫描未读私信(兼容旧版)
xhs_desktop_im_inbox 截图消息收件箱(不过滤未读状态)
xhs_desktop_im_open 通过坐标 (x, y) 或元素 ID 打开指定对话
xhs_desktop_im_send 在当前已打开的对话中发送私信
xhs_desktop_im_back 返回上一页(点击左上角 < 按钮)
xhs_desktop_im_see 列出当前界面所有 UI 元素(调试 / 动态元素定位)
xhs_desktop_screenshot 截图当前小红书 App 界面

桌面 Feed 工具(Ghost OS)— 仅 macOS

通过 Ghost OS 操作小红书 macOS App 的 GUI,从 AX 树提取数据。相比网页端 CDP 操作,更接近真人行为,风控风险更低。

工具 说明
xhs_desktop_list_feeds 获取桌面 App 首页推荐 Feed 列表
xhs_desktop_search 在桌面 App 中搜索内容
xhs_desktop_get_feed 获取桌面 App 中的帖子详情(通过标题匹配)
xhs_desktop_go_back 在桌面 App 中返回上一页

使用示例

自动回复新评论

用户:帮我检查小红书有没有新评论,如果有就回复"谢谢支持!"

Agent 调用流程:
1. xhs_check_login                → 确认已登录
2. xhs_get_notifications_pending { maxPages: 2 }
3. 过滤 comment_on_my_note / reply_to_my_comment 类型
4. xhs_reply_comment { feedId, xsecToken, commentId, content: "谢谢支持!" }
5. xhs_mark_notification { id, status: "replied" }

自动回复私信

用户:帮我查一下小红书有没有新私信,有的话帮我回复

Agent 调用流程:
1. xhs_desktop_im_scan_inbox      → 截图消息列表 + 所有行坐标
2. 视觉分析截图,找到有未读的对话行及其 clickX/clickY
3. xhs_desktop_im_open { x, y }   → 打开对话,截图显示消息历史
4. 读取截图中的消息内容
5. xhs_desktop_im_send { text: "..." }  → 发送回复
6. 视觉确认回复已出现在对话中
7. xhs_desktop_im_back            → 返回收件箱,继续处理下一条

搜索并点赞

用户:搜索"手机摄影技巧",点赞前3条

Agent 调用流程:
1. xhs_search { keyword: "手机摄影技巧", sortBy: "most_liked" }
2. 取前3条结果
3. xhs_like { feedId, xsecToken } × 3

技术说明

  • HTTP 浏览器控制:插件通过原生 fetch() 直接调用 OpenClaw Gateway 的浏览器控制 HTTP 服务,避免 jiti 模块隔离导致的 Playwright 连接冲突,由 Gateway 统一管理浏览器实例。
  • SPA 预热:小红书是 React SPA,插件会确保 Chrome 已访问首页完成 window.__INITIAL_STATE__ 初始化,再提取数据。
  • 数据提取:优先从 window.__INITIAL_STATE__ 提取结构化数据,降级到 DOM 解析。包含 Vue 响应式 Proxy 深度解包逻辑。
  • API 拦截:通知获取拦截 /api/sns/web/v1/you/mentions。评论回复在页面注入持续拦截器(window.__commentAPIEntries),处理虚拟化渲染和多级评论结构。
  • 多级评论处理xhs_reply_comment 实现了 4 级容错查找策略,包括从拦截的 API 数据中反推真实父评论 ID。
  • 通知状态持久化:使用 Node.js 内置 node:sqlite 将通知处理状态存储在本地 SQLite 数据库中。
  • 导航可靠性:三层重试机制(URL 验证 → 强制重导航 → 开新标签页),CDP navigate 返回成功不代表页面已加载。
  • 桌面 IM — Space 切换:小红书 macOS App 在独立全屏 Space 运行。activateApp 使用 System Events set frontmost to true(唯一能跨 Space 切换的方式),而非 tell application X to activate(只激活进程,不切换 Space)。截图在 Space 切换动画完成后(~800ms)由 screencapture -R 执行。
  • 桌面 IM — iOS on Mac 限制:该 App 是 iOS 移植版,Accessibility 树质量极低(大多数元素标注为"按钮"/"文本")。工具实现了优雅降级:peekaboo see 失败时自动回退到纯截图视觉分析。点击操作使用从已知窗口区域(x=0, y=33, 1512×949)推算的绝对屏幕坐标。
  • 桌面 Feed — Ghost OS:通过 Ghost OS CLI 操作小红书 macOS App 的 GUI,从 AX 树深度遍历提取 Feed 数据,不依赖网页端 __INITIAL_STATE__。更接近真人行为,风控风险更低。

常见问题

plugin not found: auto-rednote 找不到插件目录。确认 auto-rednote/ 直接位于 OpenClaw 安装目录下的 extensions/ 文件夹内,且已在目录内执行 npm install

Can't reach the OpenClaw browser control service OpenClaw browser 尚未启动,或 Chromium 进程崩溃。运行 openclaw browser 打开浏览器窗口,等待几秒后重试。

{ "loggedIn": false } 需要在 OpenClaw Chromium 窗口中登录小红书。运行 openclaw browser,访问 https://www.xiaohongshu.com 并登录。

工具在命令行测试正常,但通过 Agent 调用超时 这通常发生在 gateway 刚重启后,browser control service 还在初始化。等待 10–15 秒后重试。


版本历史

v2026.3.1

  • 新增:桌面 Feed 工具(Ghost OS) — 4 个新的 xhs_desktop_* 工具,通过 GUI 操作小红书 macOS App
    • xhs_desktop_list_feedsxhs_desktop_searchxhs_desktop_get_feedxhs_desktop_go_back
  • 新增xhs_search 支持排序、笔记类型、时间范围、搜索范围筛选
  • 移除:网页端工具的频率限制冷却机制

v2026.2.25

  • 新增:桌面 IM 工具 — 9 个 xhs_desktop_im_* / xhs_desktop_screenshot 工具,通过小红书 macOS App 实现私信回复能力
    • xhs_desktop_im_scan_inboxxhs_desktop_im_scan_strangerxhs_desktop_im_unreadxhs_desktop_im_inboxxhs_desktop_im_openxhs_desktop_im_sendxhs_desktop_im_backxhs_desktop_im_seexhs_desktop_screenshot
  • 修复全屏 Space 切换:activateApp 改用 System Events set frontmost 正确跨 Space 切换
  • 修复跨 Space 截图:screenshot() 先激活 App 等待动画完成(800ms)再截图
  • 校准全屏 1512×949 布局的 UI 坐标(输入框 y=930,返回按钮 y=30)
  • xhs_search 新增 limit 参数(默认 20),控制返回条数

v2026.2.24

  • 全面重构通知解析与评论查找逻辑
  • 新增 injectCommentAPIInterceptor:持续收集评论 API 响应
  • 重写 scrollToCommentexpandAndFindSubComment:停滞检测 + has_more 判断
  • 补全 replyComment 4 级容错路径
  • 修复 followUser ReferenceError
  • 增强 parseCommentApiResponse:返回 subCommentCount / subCommentHasMore

v2026.2.22

  • 初始版本,实现 19 个核心工具
  • 覆盖账号、内容、互动、通知、发布全域能力

License

MIT — 详见 LICENSE

本项目与小红书官方无关,不受其背书。

About

OpenClaw extension for Xiaohongshu (小红书 / RedNote) automation — 19 tools for content, interaction, notifications and publishing

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors