dsh-xhs-search:在 DSH 里搜索并阅读小红书笔记

前言

在 DeepSeek Harness(DSH)里做调研时,常见需求是:按关键词搜小红书、点开一篇笔记、把正文和评论留下来供后续对话引用。直接用通用爬虫或 Playwright 脚本往往踩平台风控——跳转笔记 URL 会触发安全限制,合成点击很快被识别,详情接口也不稳定。社区维护者 BaxterL 的 dsh-xhs-search(GitHub:BaxterL/dsh-xhs-search,目录:SkillHub 条目)把搜索、点开、DOM 抽取和本地知识库收成一套 DSH 插件,分类为联网工具;运行时除 Node ≥ 22.5 内置能力外不额外依赖 Playwright、Puppeteer 或 ws。

这是什么

dsh-xhs-search 是给 DeepSeek Harness 用的小红书阅读器:通过 CDP 驱动隔离浏览器、尽量用真实输入点击打开卡片、只从 DOM 读正文与评论,结果写入本地知识库。装好后在会话里描述需求,模型会调用名为 xhs 的工具完成检索与阅读;也可使用同名 CLI xhs-search 人工调试。当前 npm 包版本为 0.1.0,许可证 MIT,维护者 BaxterL。

与「普通爬虫」差在哪里

小红书 Web 端对自动化敏感。该插件在实现里固定了几条策略(而非依赖提示词):

问题 常见表现 插件做法
直接打开笔记 URL 安全限制、整页重定向后搜索失效 只点搜索页卡片;卡片不在 DOM 则报 card-not-in-dom,不降级为跳 URL
CDP 合成点击 很快被识别 Windows 上优先 SetCursorPos + 硬件点击;无校准时退回 CDP 并标明降级
详情 API /api/sns/web/v1/feed 易 500 正文与评论只从 DOM 解析
封面格式 URL 为 jpg 实为 WebP 按魔数嗅探,必要时经 Pillow 转码

详情浮层是「先挂载、后填数据」:点开瞬间标题可能为空。阅读前会轮询到浮层数据就绪,避免读到空正文却显示「成功」。

核心功能

插件向 DSH 注册工具 xhs,每次调用指定一个 action:

action 作用
search 搜索,返回当前屏卡片(标题、作者、赞藏评、封面、相对时间等)
read 从当前搜索页点开一篇,返回正文、话题、配图、最多 60 条评论
harvest 搜索后自动打开最新 N 篇并入库
notes / note 只读本地知识库,不联网
status 登录门、限流、验证码、本轮预算
limits 是否还能开下一篇、需等待多久
config 路径与配置

默认工作区为 ~/Desktop/xhs/,内含隔离浏览器配置、kb/notes.json 等;notes.json 采用原子写,重复读同一笔记会合并评论与配图并保留最早 firstSeen。

平台侧按账号频次限流(默认两篇间隔 25 秒、每小时最多 60 篇等),逻辑在 guard.ts 中强制执行;须区分 login gate、rate limit、captcha 三种状态。插件红线为只读:不点赞、不评论、不关注、不发帖、不私信。

安装与启用

在 DSH desktop profile 的 package.json 中加入依赖并声明 bundle,然后完全退出 DSH(含托盘)再重新打开。安装不会自动开浏览器,首次调用工具时才启动独立 --user-data-dir 窗口。

// ~/.dsh/profiles/desktop/package.json
{
  "dependencies": {
    "dsh-xhs-search": "^0.1.0"
  },
  "dsh": { "profile": { "bundles": ["dsh-xhs-search"] } }
}

首次建议依次执行(校准只需一次;窗口移动后需重做 calibrate):

npx xhs-search launch      # 启动窗口,首次在此扫码登录
npx xhs-search calibrate   # 校准视口原点(Windows 硬件点击)
npx xhs-search status      # 确认登录、限流、验证码状态

环境与权限:插件以当前 DSH 进程权限运行,会读写本地工作区与浏览器配置;安装前宜浏览仓库源码与 MIT 许可证,勿共享他人登录态或 cookie。

平台:Windows 上硬件点击依赖 user32.dll;macOS / Linux 可运行但退回 CDP 点击,read 会标明 opened by: cdp,风控风险更高。浏览器需 Chromium 系(Edge / Chrome / Brave),Node ≥ 22.5。

典型用法

会话内由模型调用 xhs 即可;命令行与工具同一套实现,便于复现:

npx xhs-search search "应援物料" --limit 10
npx xhs-search read 6a9b80c3000000002601fb09
npx xhs-search harvest "追星 物料" --limit 5 --max-age 72
npx xhs-search notes "教程"

需要调路径或限速时,可参考 README 中的环境变量:XHS_WORKSPACE、XHS_BROWSER、XHS_PORT、XHS_REAL_INPUT、XHS_PYTHON、XHS_DETAIL_GAP_MS、XHS_SEARCH_GAP_MS、XHS_MAX_DETAILS_PER_HOUR、XHS_BLOCK_COOLDOWN_MS。

适用场景与注意

适合:需要在 DSH 对话中检索小红书公开笔记、沉淀正文与评论到本地 JSON,供后续 notes 离线查询的研究或整理流程。

注意:高频批量抓取易触发平台风控并可能违反服务条款,应使用默认限速且遵守「只读」范围。对外发布整理内容时须注明信息来自小红书用户。DSH 生态理念是「一切皆插件」;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-xhs-search 把隔离浏览器、点击策略、DOM 抽取与本地知识库绑在 DSH 的 xhs 工具上,零额外运行时依赖,适合把「帮我看看小红书上的 xxx」落成可复用的本地资料。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜