> Xhs Draft Pusher · 出品 · v1.0.0
xhs-draft-pusher · 小红书草稿箱填充
把「小红书图文」技能产出的 9 宫格卡片 + 发布文案,自动填进小红书创作者平台(creator.xiaohongshu.com)的草稿箱。填完不发布,留给你登录后人工确认、微调、点发布。
源码位置(本地根目录)
- 技能目录:
~/.workbuddy/skills/xhs-draft-pusher/ - 输入源(默认):
~/workbench/小红书图文/<日期>-<主题>/(含cards/*.jpg+发布文案.md) - 运行环境:Node 22(托管
~/.workbuddy/binaries/node/versions/22.22.2-6/node.exe)+ 本机 Chrome - 跑任何脚本前先
cd到技能目录
红线(不可破)
- 只「存草稿」,脚本永不自动点「发布」。发布动作必须由你本人完成。
- 复用本机已登录的 Chrome 登录态(
user-data-dir),绝不记录/读取账号密码。 - 小红书禁止纯 AI 托管发布,必须保留人工终审——草稿箱模式天然满足。
- 首次运行是「校准阶段」:脚本打印页面诊断,把真实选择器回填
selectors.json后再稳定使用。
前置条件
- 本机 Chrome 已登录小红书创作者平台(creator.xiaohongshu.com),能正常看到发布页。
- 因同一 Chrome 用户目录不能同时开两个实例:运行本技能前,请先关闭所有 Chrome 窗口(脚本会用独立调试端口复用你的登录态目录)。
- 已用「小红书图文」技能生成好
cards/+发布文案.md。
怎么跑
cd ~/.workbuddy/skills/xhs-draft-pusher
# 第一次:仅诊断,不填表,打印页面结构用于校准选择器
node push_draft.mjs "~/workbench/小红书图文/2026-10-05-IP与AI" --diag
# 校准 selectors.json 后,正式填入草稿箱
node push_draft.mjs "~/workbench/小红书图文/2026-10-05-IP与AI"
# 只填不存(你自己在浏览器里看一眼再手动点存草稿)
node push_draft.mjs "<主题目录>" --dry
- 不传目录参数时,默认用输入源根目录里「最新修改」的小红书图文子目录。
--diag:只连浏览器、打印可填元素清单(placeholder / button 文本),不动手,方便回填空selectors.json。--dry:填完所有内容但不点存草稿,你在浏览器确认无误后手动点。
输入怎么解析(发布文案.md)
- 标题:取「## 二、标题」下第一个候选(带「推荐」字样优先;没有则取第一行非空),去掉
**、序号。 - 正文:取「## 三、正文」内 ``` 代码块纯文本。
- 标签:取「## 四、话题标签」内
`` 代码块,拆成单标签(去#`),默认取前 7 个(3 大流量 + 4 精准长尾,平台上限 10)。 - 图片:
cards/下所有*.jpg,按文件名升序。
标签写入策略:先试 selectors.json 的 tagInput 候选(命中则单独填入话题区);否则把 #标签 拼到正文末尾(小红书编辑器会识别成可点话题)。
实现要点(给后续维护者)
- 零依赖:仅用 Node 22 内置
WebSocket+ Chrome DevTools Protocol(CDP)。复用本机已登录 Chrome 的--remote-debugging-port(默认 9222);连不上则由脚本拉起一个带该端口的 Chrome 实例(复用你的user-data-dir)。 - 连接页面级 WebSocket:通过
http://127.0.0.1:9222/json/new?<url>开新 tab,直接拿该 tab 的webSocketDebuggerUrl(避免浏览器级 WS 超时)。 - 文本输入:小红书是 React 受控组件,必须用原生 setter +
dispatchEvent('input')写入,否则状态不更新(见脚本内setVal)。 - 图片上传:浏览器禁止 JS 设 file input,统一走
DOM.setFileInputFiles(先Runtime.evaluate取 input 的objectId)。上传后轮询等待缩略图数量达标再存草稿。 - 存草稿:选中文本含「存草稿」的按钮
click;脚本显式断言不会点中文本含「发布」的按钮。
排错
- 连不上 9222:确认 Chrome 已关、端口未被占;脚本会尝试自动拉起,失败则提示先关 Chrome 再重跑。
- 填不进:多半是
selectors.json选择器过期(小红书前端常改)。跑--diag看真实结构,回填即可。 - 登录态失效:脚本检测到登录页会停下,请你在浏览器手动扫码,再重跑。
- 图片漏传:上传后等小红书处理完(脚本默认等 8 秒 + 数量校验),网络慢可调大
selectors.json的uploadWaitMs。
<!-- xhs-draft-pusher | 归属:小段笔记 | 品牌:小段笔记(安粉传媒) | 改编/二次分发请保留本标识 -->