网淘吧来吧,欢迎您!

Xhs Skill技能使用说明

2026-03-30 新闻来源:网淘吧 围观:15
电脑广告
手机广告

This skill isthe merged version of xhs-*, with the goal that users only need toclawhub install xhs-skillonce to start using it.

Constraints:

Xhs Skill

  • All browser interactions (opening pages/clicking/typing/uploading/screenshots/logging in/exporting) are delegated toagent-browser-stealth.
  • It is prohibited to write/maintain publishing orchestration scripts (such aspublish_from_payload) in this repository; publishing actions must be executed during sessions byagent-browser-stealth.
  • The use ofagent-browseris prohibited (the old channel is disabled; uniformly useagent-browser-stealth).
  • All sensitive data (cookies, exported files, screenshots) are only stored locally in thedata/directory and must not be pasted into chats.

Enforce hard constraints (stability):

  • The sameagent-browser-stealthsession 禁止并发操作(串行执行),否则容易触发操作系统错误 35假失败。
  • 快照的引用会漂移:关键动作前后必须重新抓取快照 -i,并用占位符/角色/文本做二次定位兜底。
  • 扫码不等于登录成功;必须做后验校验(见下方 A 节“登录成功判定”)。

安装

clawhub install xhs-skill
cd skills/xhs-skill
npm i

说明:npm i仅用于本技能自带的本地 CLI(二维码解码、cookies 工具)。如果你不需要解码二维码/转换 cookies,也可以只用agent-browser-stealth完成扫码与导出。

目录约定(本机)

建议在你运行命令的工作目录下准备:

  • data/xhs_login_qr.png:登录页二维码截图(PNG)
  • data/raw_cookies.json:导出的原始 cookies(JSON)
  • data/xhs_cookies.json:归一化后的 cookies(JSON)
  • data/exports/<YYYY-MM-DD>/:导出数据(CSV/XLSX/截图)
  • data/assets/<YYYY-MM-DD>/:发布笔记用的图标/配图素材与来源记录
mkdir -p data

A. 登录(扫码)并保存 cookies

目标:登录小红书创作者中心并导出 cookies,避免频繁重复登录。

  1. agent-browser-stealth打开登录页:
  • https://creator.xiaohongshu.com/login
  • 若默认展示「手机号/验证码登录」,点击「扫码」切换到二维码视图
  1. agent-browser-stealth截图保存二维码(PNG)到data/xhs_login_qr.png

  2. (可选)用本地 CLI 解码二维码文本并打印 ASCII 二维码:

node ./bin/xhs-skill.mjs qr show --in ./data/xhs_login_qr.png

OpenClaw 回传规范(强制):

  • 禁止只回传文件路径(例如仅说data/xhs_login_qr.png)。
  • 必须先执行node ./bin/xhs-skill.mjs qr show --in ./data/xhs_login_qr.png,然后把输出的二维码文本 + ASCII 二维码直接发给用户。
  • 如果会话支持图片渲染,请附上二维码截图的绝对路径(或图片附件)作为补充。
  • 发送二维码后必须暂停,等待用户确认“已扫码”再继续导出 cookies。

推荐回传模板:

请用小红书 App 扫这个二维码登录。
二维码文本: <qr_text>
<ASCII QR>
  1. 使用小红书 App 扫码完成登录后,将 cookies 导出到data/raw_cookies.json(不通过 DevTools):
agent-browser-stealth cookies --json > ./data/raw_cookies.json
  1. 将 cookies 归一化并保存到data/xhs_cookies.json
node ./bin/xhs-skill.mjs cookies normalize --in ./data/raw_cookies.json --out ./data/xhs_cookies.json
node ./bin/xhs-skill.mjs cookies status --in ./data/xhs_cookies.json

5.1 推荐使用脚本进行后验校验(可作为准入检查):

# 例:先让 agent-browser-stealth 记录当前 URL 与后台探测后的 URL
CURRENT_URL="$(agent-browser-stealth get url)"
agent-browser-stealth open https://creator.xiaohongshu.com/creator/home
PROBE_FINAL_URL="$(agent-browser-stealth get url)"

node ./scripts/verify_login.mjs \
  --cookies ./data/xhs_cookies.json \
  --current-url "$CURRENT_URL" \
  --probe-final-url "$PROBE_FINAL_URL" \
  --json

登录成功判定(强制要求):

  • 必须同时满足以下 2 个条件才能回报“登录完成”(web_session不再作为硬性依赖):
  • 当前 URL 已离开/login
  • 可以访问创作者后台页面,且不会返回 401 错误或跳转回登录页
  • 加分项:cookies 中存在“类 session cookie”(例如web_session,或 cookie 名称包含session)。没有也可能可用,但稳定性较差。
  • 任一强制条件不满足,必须回报“登录失败/未完成”,并重试登录流程;禁止误报成功。

登录结果输出契约(JSON):

{
  "task": "xhs_login",
  "ok": true,
  "checks": {
    "left_login": true,
    "backend_not_rejected": true,
    "has_session_like_cookie": true
  },
  "artifacts": {
    "qr_png": "data/xhs_login_qr.png",
    "raw_cookies": "data/raw_cookies.json",
    "normalized_cookies": "data/xhs_cookies.json"
  }
}

失败时ok=false,并给出失败项(例如仍在/login、或 probe 回跳),禁止输出“已完成”。

  1. (可选)生成Cookie:header:
node ./bin/xhs-skill.mjs cookies to-header --in ./data/xhs_cookies.json

失败回退:

  • 二维码解码失败:通常是没有切到扫码视图或二维码太小,让agent-browser-stealth放大后重新截图(仍为 PNG)。
  • cookies 归一化失败:保留原始data/raw_cookies.json,后续再扩展兼容分支。

A1. 防封/限流运行规范(强制)

核心结论:小红书风控主要看“节奏 + 指纹 + 行为 + IP + 账号权重”。工具本身不是主因,使用方式才是主因。

强制策略:

  1. 真人节奏:
  • 禁止连续无停顿点击/填写;关键动作之间必须随机停顿(建议1.2s~7s)。
  • 输入优先type --delay(逐字),避免全量瞬时fill固定指纹:
  1. 运行发布流程时优先固定
  • --profile,并启用--headed推荐同一账号长期复用同一个 profile 目录,不要每次新建临时环境。
  • 发布频率门禁:
  1. 同一 profile 默认
  • 24h <= 3篇。两次发布最小间隔默认
  • 30分钟。命中门禁必须中止,不允许强发。
  • 发布前预热行为:
  1. 先做一次短时正常浏览(首页/创作者后台停留 + 滚动),再进入发布页。
  • 禁止“打开页面后立刻提交”。
  • 网络与设备:
  1. 禁止机房 IP / 高频切换代理。
  • 优先家庭网络或手机热点;同账号尽量保持设备/IP 稳定。
  • 被限流后的处理:
  1. 限流:停自动化,回归手动正常使用
  • 3~7天。天。
  • 封号:仅能申诉;换号时要同时更换账号资料 + IP + 设备环境

B. 发布笔记(图文/视频)

输入(用户提供):

  • 笔记类型:图文 或 视频
  • 标题、正文、标签(必填)
  • 话题(必填;做热点发布时必须是“今天热点”)
  • 图片/视频路径(本机绝对路径优先)
  • 图标/配图需求(可选):关键词、风格(扁平/拟物/线性)、主色、是否透明背景
  • 热点来源(必填):来源名称、来源 URL、来源日期(YYYY-MM-DD

发布硬性要求(强制):

  1. 先把发布素材整理为data/publish_payload.json(示例):
{
  "topic": "今日热点:xxxx",
  "source": {
    "name": "央视新闻",
    "url": "https://example.com/news",
    "date": "2026-02-12",
    "evidence_snippet": "2月12日该媒体报道提到:......",
    "key_facts": ["关键事实1(含日期/数字)", "关键事实2(含日期/数字)"]
  },
  "post": {
    "title": "20字内标题示例",
    "body": "不少于 80 字的正文......",
    "tags": ["#热点", "#今日新闻", "#小红书运营"],
    "real_topics": ["#人工智能", "#AI资讯", "#科技观察"],
    "media": ["/abs/path/cover.png", "/abs/path/card_1.png"]
  }
}
  1. 发布前必须执行校验脚本:
# 普通模式
node ./scripts/verify_publish_payload.mjs --in ./data/publish_payload.json --policy ./config/verify_publish_policy.json --tag-registry ./data/tag_registry.json --min-registry-tags 12 --require-source-evidence on --strict-anti-ai on --json

# 今天热点模式(强制 source.date = 今天)
node ./scripts/verify_publish_payload.mjs --in ./data/publish_payload.json --policy ./config/verify_publish_policy.json --tag-registry ./data/tag_registry.json --min-registry-tags 12 --require-source-evidence on --strict-anti-ai on --mode hot --json
  1. 发布前必须执行内容审核脚本(分层规则 + AI):
node ./scripts/review_publish_payload.mjs --in ./data/publish_payload.json --policy ./config/review_policy.json --taxonomy ./config/review_taxonomy.json --ai-provider auto --require-ai off --mode hot --json
  1. 只有当校验和审核结果都ok=true才允许进入发布页点击“发布/提交”。 校验策略在./config/verify_publish_policy.json,审核策略在./config/review_policy.json,分层风险路径在./config/review_taxonomy.json
  2. 任一门禁失败必须中止流程并提示补齐,禁止“只传截图直接发”。

禁止链接(强制):

  • 标题/正文/标签里禁止出现任何链接或域名形态(http/httpswww.xxx.com/.cn/...)。否则有封禁风险。
  • 如果内容生成遇到困难或校验不通过:宁可中止,不要“随便发一条”。

反 AI 识别与真实标签(强制):

  • 不承诺“100% 不被识别为 AI”;目标是显著降低风险。
  • 正文必须有“个人视角 + 具体事实信号(数字/日期/来源提及)”,并规避模板腔。
  • 发布前必须通过review_publish_payload审核门禁,要求decision=pass,并输出risk_path、证据和review_queue供复核。
  • source.evidence_snippetsource.key_facts必填,且能回溯到来源事实。
  • 标签与post.real_topics都必须来自真实话题池data/tag_registry.json,禁止自造标签。
  • 禁止自动把#标签拼进正文冒充话题。
  • 发布前必须在小红书发布页手动选择至少 3 个真实话题,然后由agent-browser-stealth执行最终点击发布。

示例:准备真实标签池(建议每天更新):

cat > ./data/tag_registry.json <<'JSON'
{
  "updated_at": "2026-02-24",
  "source": {
    "platform": "xiaohongshu",
    "method": "manual_from_publish_topic_picker",
    "url": "https://creator.xiaohongshu.com/creator/publish"
  },
  "tags": ["#AI热点", "#人工智能", "#行业观察", "#科技新闻", "#AI资讯", "#科技观察"]
}
JSON

发布执行方式(唯一):

  • 本仓库只负责“数据准备 + 门禁校验 + 审核校验”;不再提供发布自动化脚本。
  • 浏览器动作必须由agent-browser-stealth串行执行:预检 -> 填充 -> 读回校验 -> 发布 -> 回查。
  • 若任一门禁失败(verify/reviewok=true),必须停止在“发布前”,禁止继续点击提交。

P0:发布编排器(流程编排,不是仓库脚本):

  1. 预检:
  • 入口路由固定从https://creator.xiaohongshu.com/publish/publish进入;禁止把/creator/*作为首入口。
  • 若被跳到https://creator.xiaohongshu.com/new/home(“你访问的页面不见了”),立即回到/publish/publish重试。
  • 进入发布页后先切到“图文”模式,再上传图片;未切图文不进入后续步骤。
  1. 填充:
  • 写标题、正文、标签/话题、可见性。
  1. 读回校验:
  • 校验通过才允许点击发布。
  1. 发布:
  • 点击发布后等待页面状态稳定并记录 URL。
  1. 回查:
  • 先检查 URL 参数包含published=true
  • 再从页面菜单进入“笔记管理”做二次确认,不允许硬编码管理页直链回查。

P0: Routing and State Stability (Mandatory):

  • Only recognize stable entry points as/publish/publish; other pages serve only as transitions and are not used as criteria for success determination.
  • "Publish page is available" does not equal "Management page is available": after publishing, menu navigation must be used for secondary verification.
  • If elements on the publish page do not appear, first check if the state is "Text & Image Mode + Images Uploaded" before determining failure.

P0: Selector Dual-Channel (Mandatory):

  • First Channel (Default): Semantic Positioning (placeholder + role + visibility + nearby text content).
  • Second Channel (Fallback): DOM Structure Cue Positioning (e.g., title input field placeholder semantics + main text editortiptap/ProseMirrorsemantic class names).
  • Prohibited to rely solely onsnapshot refor@e1/@e2sequence numbers; each key action must besnapshot -idouble-checked before and after.
  • DOM fallback serves only as a temporary measure at the session level; after a hit, "read-back verification" is still required to confirm field correctness. Do not treat fragile selectors as hard dependencies.

P0: Write Reliability (Mandatory):

  • Title fields must satisfy: single line, visible, editable, placeholder matches "title" semantics.
  • Body text fields must satisfy: multi-line or可编辑可见、可编辑、占位符/附近文本命中“正文/内容”语义。
  • 写入后必须进行“双向读回校验”:同时读取标题和正文,计算标题长度正文长度
  • 错位判定:若标题长度 > 20正文长度 < 80,或标题命中长段正文特征(大量换行/句号),则判定为写入错位。
  • 错位自愈:自动执行“交换重写”一次(清空标题与正文 -> 标题写入短标题 -> 正文写入正文 -> 读回再校验);若仍失败则中止并上报失败,不允许继续提交。
  • 强制规则:标题禁止包含#标签、长段正文、链接;标签必须通过小红书发布页的“标签/话题交互”功能选择,不得将标签文本直接塞入标题。

P0:草稿确认闭环(强制):

  1. 点击“暂存离开”后,必须等待并验证出现“保存成功/已保存草稿”类提示。
  2. 进入草稿列表,验证出现“新草稿条目”。
  3. 新条目校验最少需包含:
  • 标题前缀匹配本次标题;
  • 时间戳在本次运行窗口内(建议 2 分钟内);
  • 打开草稿后读回标题/正文/媒体/标签Still meets access control requirements.
  1. Any verification failure is judged as "draft save failed," with 1 retry allowed; if it still fails after retry, the process is aborted.

P0: Image preprocessing (scriptless version):

  • No new repository scripts will be added; uniformly adopt "local preprocessing before release + read back for size confirmation."
  • Recommended target dimensions:1242x1660(3:4 vertical format).
  • Optional commands (single execution, not saved as repository scripts):
# macOS: 先居中裁剪再缩放到 1242x1660(按需替换输入输出路径)
sips -c 1660 1242 ./data/assets/in.png --out ./data/assets/out_1242x1660.png
  • After uploading, the thumbnail proportions must be confirmed as normal on the release page; if stretching/cropping is abnormal, replace the material first before proceeding.

P0: Pre-release hard verification (mandatory):

  • Title length<= 20.
  • Body text length>= 80.
  • Images have been uploaded (at least 1 image for text and images, and the thumbnail is visible).
  • Real topics have been selected>= 3(selected through Xiaohongshu topic interaction, not concatenated in the body text).
  • No link words in title/body text/tags (http,https,www.、域名形态)。
  • 任一不满足直接中止,不允许“先发再修”。

P0:发布后双重确认(强制):

  1. 第一重:发布后 URL 含published=true
  2. 第二重:从发布页菜单进入“笔记管理”,确认列表出现新笔记(标题前缀 + 时间窗口)。
  3. 管理页若被重定向或不可达,判定“回查未完成”,记录run_log并提示人工复核。

P1:热点到 payload 半自动(无脚本版):

  • 不新增newsnow -> payload代码生成器;改为会话模板填充。
  • 采集热点后,按以下模板生成data/publish_payload.json,人工只改“观点段”:
{
  "topic": "今日热点:<主题>",
  "source": {
    "name": "<来源名>",
    "url": "<来源URL>",
    "date": "YYYY-MM-DD",
    "evidence_snippet": "<原文证据摘录>",
    "key_facts": ["<事实1:含日期/数字>", "<事实2:含日期/数字>"]
  },
  "post": {
    "title": "<8-20字标题,不含标签>",
    "body": "<观点段+事实段,不少于80字>",
    "tags": ["#标签1", "#标签2", "#标签3"],
    "real_topics": ["#真实话题1", "#真实话题2", "#真实话题3"],
    "media": ["/abs/path/1.png"]
  }
}

P1:标签/话题池维护(无脚本版):

  • 每天第一次发布前,手动刷新一次data/tag_registry.json(从小红书发布页话题选择器抄录)。
  • 若当天未刷新,流程必须回报风险提示并建议先刷新后再发布。
  • 门禁保持不变:tags真实主题都必须命中标签注册表

P1:流程可观测性(无脚本版):

  • 每次运行结束都产出data/run_log/<YYYY-MM-DD_HH-mm-ss>.json(手工写文件即可,不新增脚本)。
  • 建议字段:步骤持续时间(毫秒)失败步骤错误信息截图结果URL草稿检查编辑器检查路由检查文章发布前检查

P1:固定模板(强烈建议):

  • 固定标题模板:[主题词]+[观点/结论],目标 1218 字,留 28 字缓冲避免超长。
  • 固定正文模板:开场观点 -> 事实1 -> 事实2 -> 个人判断 -> 行动建议,默认 >120 字。
  • 固定标签与话题池:仅从data/tag_registry.json选取,避免临场造词导致门禁失败。

P2:回归用例(每日 smoke,手工执行):

  • 场景 1:仅存草稿(不发布)。
  • 场景 2:草稿后二次编辑再存草稿。
  • 场景 3:正式发布(通过全部门禁)。
  • 每个场景都输出一份run_log,用于对比“定位稳定性/错位率”。

流程(浏览器侧全部由agent-browser-stealth完成):

  1. 确保已登录(先完成上面的 A,或已有有效登录态)。
  2. 准备并校验data/publish_payload.json(必须ok=true)。
  3. 打开https://creator.xiaohongshu.com/publish/publish,先snapshot -i获取最新结构。
  4. 切图文模式并上传媒体(确认缩略图比例与数量)。
  5. 用“语义定位优先 + DOM 兜底”填写标题与正文,写入后执行“双向读回校验 + 错位自愈”。
  6. 通过小红书标签交互选择标签与真实话题(至少 3 个),不要把标签写进标题。
  7. 执行发布前硬校验(标题、正文、图片、话题、无链接词)。
  8. 点击“暂存离开”并执行草稿闭环校验(toast + 列表新条目 + 读回)。
  9. 点击“发布/提交”前暂停,要求用户确认最终预览。
  10. 发布后执行双重确认(published=true+ 菜单进入笔记管理二次查验),并写入run_log

发布结果输出契约(JSON):

{
  "task": "xhs_publish",
  "ok": true,
  "result_url": "https://creator.xiaohongshu.com/....",
  "content_checks": {
    "title_len": 18,
    "body_len": 136,
    "tag_count": 3,
    "real_topic_count": 3,
    "editor_alignment_ok": true,
    "draft_saved_ok": true,
    "publish_precheck_ok": true,
    "published_param_ok": true,
    "manage_menu_check_ok": true,
    "topic": "今日热点:xxxx",
    "source_date": "2026-02-12"
  },
  "artifacts": {
    "payload_json": "data/publish_payload.json",
    "media_inputs": ["..."],
    "run_log_json": "data/run_log/2026-02-27_14-36-00.json",
    "error_screenshot": null
  }
}

发布失败时ok=false,并返回error_messageerror_screenshot路径、未通过的missing_checksfailed_stagepreflight/fill/readback/publish/postcheck)。

C. 导出创作者中心数据(CSV/XLSX 或截图)

目标:把创作者中心关键数据导出到data/exports/<YYYY-MM-DD>/,用于后续分析。

  1. 确认已登录。
  2. agent-browser-stealth进入创作者中心的常用分析页(仪表盘/内容分析/粉丝分析)。
  3. 每个页面:
  • 优先使用页面自带导出(如有)到data/exports/<date>/
  • 无导出时:保存关键区块截图到同目录
  1. 记录:导出时间范围、口径说明、页面 URL。

本地 CLI(本技能自带)

命令:

  • node ./bin/xhs-skill.mjs qr show --in <pngPath>
  • node ./bin/xhs-skill.mjs cookies normalize --in <jsonPath> --out <outPath>
  • node ./bin/xhs-skill.mjs cookies status --in <cookiesJsonPath>
  • node ./bin/xhs-skill.mjs cookies to-header --in <cookiesJsonPath>
  • node ./scripts/verify_publish_payload.mjs --in <payloadJsonPath> --policy ./config/verify_publish_policy.json --tag-registry ./data/tag_registry.json --min-registry-tags 12 --require-source-evidence on --strict-anti-ai on [--mode hot]
  • node ./scripts/review_publish_payload.mjs --in <payloadJsonPath> --policy ./config/review_policy.json --taxonomy ./config/review_taxonomy.json --ai-provider auto --require-ai off [--mode hot]

D. 轻量发版流程(维护者)

  1. 先跑本地门禁:
  • npm run check:constraints
  • npm test
  1. 查看改动只包含预期文件:git status --short
  2. 用中文 Conventional Commit 提交(示例):
  • docs(skill): 补充发版前快速自检清单
  1. 发布到 ClawHub(patch):
  • clawhub sync --all --bump patch --changelog "docs: 补充发版前快速自检清单"

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第349276名访客 今日有175篇新文章/评论