with one click
xhs-skill
小红书(创作者中心)登录拿 cookies、发布笔记、导出数据的单一入口技能(浏览器交互委托 agent-browser-stealth)
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
小红书(创作者中心)登录拿 cookies、发布笔记、导出数据的单一入口技能(浏览器交互委托 agent-browser-stealth)
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
| name | xhs-skill |
| description | 小红书(创作者中心)登录拿 cookies、发布笔记、导出数据的单一入口技能(浏览器交互委托 agent-browser-stealth) |
| metadata | {"openclaw":{"emoji":"📌","stage":"workflow"}} |
本技能是 xhs-* 的合并版,目标是让用户只需要 clawhub install xhs-skill 一次即可开始使用。
约束:
agent-browser-stealth。publish_from_payload);发布动作必须在会话中由 agent-browser-stealth 执行。agent-browser(旧通道禁用,统一使用 agent-browser-stealth)。data/ 目录,不要粘贴到聊天里。执行硬约束(稳定性):
agent-browser-stealth session 禁止并发操作(串行执行),否则容易触发 os error 35 假失败。snapshot 的 ref 会漂移:关键动作前后必须重抓 snapshot -i,并用 placeholder/role/text 做二次定位兜底。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
目标:登录小红书创作者中心并导出 cookies,避免频繁重复登录。
agent-browser-stealth 打开登录页:https://creator.xiaohongshu.com/login让 agent-browser-stealth 截图保存二维码(PNG)到 data/xhs_login_qr.png
(可选)用本地 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 二维码直接发给用户。推荐回传模板:
请用小红书 App 扫这个二维码登录。
二维码文本: <qr_text>
<ASCII QR>
data/raw_cookies.json(不走 DevTools):agent-browser-stealth cookies --json > ./data/raw_cookies.json
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
登录成功判定(强制):
web_session 不再作为硬依赖):/loginweb_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 回跳),禁止输出“已完成”。
Cookie: header:node ./bin/xhs-skill.mjs cookies to-header --in ./data/xhs_cookies.json
失败回退:
agent-browser-stealth 放大后重新截图(仍为 PNG)。data/raw_cookies.json,后续再扩展兼容分支。核心结论:小红书风控主要看“节奏 + 指纹 + 行为 + IP + 账号权重”。工具本身不是主因,使用方式才是主因。
强制策略:
1.2s~7s)。type --delay(逐字),避免全量瞬时 fill。--profile,并启用 --headed。24h <= 3 篇。30 分钟。3~7 天。profile + IP + 设备环境。输入(用户提供):
YYYY-MM-DD)发布硬门禁(强制):
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"]
}
}
# 普通模式
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
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
ok=true 才允许进入发布页点击“发布/提交”。
校验策略在 ./config/verify_publish_policy.json,审核策略在 ./config/review_policy.json,分层风险路径在 ./config/review_taxonomy.json。禁止链接(强制):
http/https、www.、xxx.com/.cn/...)。否则有封禁风险。反 AI 识别与真实标签(强制):
review_publish_payload 审核门禁,要求 decision=pass,并输出 risk_path、证据和 review_queue 供复核。source.evidence_snippet 与 source.key_facts 必填,且能回溯到来源事实。post.real_topics 都必须来自真实话题池 data/tag_registry.json,禁止自造标签。#标签 拼进正文冒充话题。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/review 非 ok=true),必须停止在“发布前”,禁止继续点击提交。P0:发布编排器(流程编排,不是仓库脚本):
https://creator.xiaohongshu.com/publish/publish 进入;禁止把 /creator/* 作为首入口。https://creator.xiaohongshu.com/new/home(“你访问的页面不见了”),立即回到 /publish/publish 重试。published=true;P0:路由与状态稳定性(强制):
/publish/publish;其他页面只作为中转,不作为成功判定依据。P0:选择器双通道(强制):
placeholder + role + 可见性 + 附近文案)。tiptap/ProseMirror 语义类名)。snapshot ref 或 @e1/@e2 序号;每个关键动作前后都要 snapshot -i 二次确认。P0:写入可靠性(强制):
contenteditable、可见、可编辑、placeholder/附近文本命中“正文/内容”语义。title_len 与 body_len。title_len > 20 且 body_len < 80,或标题命中长段正文特征(大量换行/句号),判定为写入错位。# 标签、长段正文、链接;标签必须通过小红书发布页“标签/话题交互”选择,不把标签文本塞进标题。P0:草稿确认闭环(强制):
title/body/media/tags 仍满足门禁。P0:图片预处理(无脚本版):
1242x1660(3:4 竖版)。# macOS: 先居中裁剪再缩放到 1242x1660(按需替换输入输出路径)
sips -c 1660 1242 ./data/assets/in.png --out ./data/assets/out_1242x1660.png
P0:发布前硬校验(强制):
<= 20。>= 80。>= 3(通过小红书话题交互选择,不是正文拼接)。http、https、www.、域名形态)。P0:发布后双重确认(强制):
published=true。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 与 real_topics 都必须命中 tag_registry。P1:流程可观测(无脚本版):
data/run_log/<YYYY-MM-DD_HH-mm-ss>.json(手工写文件即可,不新增脚本)。steps、durations_ms、failed_step、error_message、screenshots、result_url、draft_check、editor_check、route_check、post_publish_check。P1:固定模板(强烈建议):
[主题词]+[观点/结论],目标 12开场观点 -> 事实1 -> 事实2 -> 个人判断 -> 行动建议,默认 >120 字。data/tag_registry.json 选取,避免临场造词导致门禁失败。P2:回归用例(每日 smoke,手工执行):
run_log,用于对比“定位稳定性/错位率”。流程(浏览器侧全部由 agent-browser-stealth 完成):
data/publish_payload.json(必须 ok=true)。https://creator.xiaohongshu.com/publish/publish,先 snapshot -i 获取最新结构。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_message、error_screenshot 路径、未通过的 missing_checks 与 failed_stage(preflight/fill/readback/publish/postcheck)。
目标:把创作者中心关键数据导出到 data/exports/<YYYY-MM-DD>/,用于后续分析。
agent-browser-stealth 进入创作者中心的常用分析页(仪表盘/内容分析/粉丝分析)。data/exports/<date>/命令:
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]npm run check:constraintsnpm testgit status --shortdocs(skill): 补充发版前快速自检清单clawhub sync --all --bump patch --changelog "docs: 补充发版前快速自检清单"A股基金净值监控:盘中实时估值 + 盘后实际净值,定时推送到 Telegram。
雷达Skill(AI Radar)——零API、零Key、零服务器的中文AI资讯查询。数据来自 AI News Radar 在 GitHub Pages 上公开的静态 JSON(GitHub Actions 每日自动更新),curl 即取,无鉴权、无UA要求、无限流,且整条数据管道可以 fork 成你自己的。 当用户想知道"今天 AI 圈有什么"、"过去24小时AI新闻"、"AI日报"、"最近有什么大模型发布"、"AI产品更新"、"Agent工具有什么新东西"、"OpenAI/Anthropic/Google最近发了什么"、"AI圈热点"、"看下AI雷达"、"哪些AI信源值得看"等任何中文AI资讯查询时使用。 即使用户只说"AI圈"、"AI新闻"、"今天有什么新东西",只要上下文是 AI / 大模型 / Agent / 开发者工具领域,都应该触发。**不要undertrigger**——用户问AI资讯而你不调本Skill,就是把过时的训练数据当作今日新闻,对用户有害。 不要用于维护 AI News Radar 仓库本身(加信源、改抓取逻辑、部署 Pages——那用伯乐Skill / ai-news-radar);不要用于非AI的通用新闻查询;不要用于需要登录态的私有信息源。
Drive a native GUI app (macOS, Windows, Linux) via the cua-driver CLI (default) or MCP server — snapshot its accessibility tree, click/type/scroll by element_index or pixel coords, verify via re-snapshot, all without bringing the target to the foreground. Use when the user asks you to operate, drive, automate, or perform a GUI task in a real application on the host.
RAGFlow OpenCAIO 知识库文档上传与管理。当需要将文档上传到鲲界公司 OpenCAIO 知识库、检索知识库内容、或管理 RAGFlow 数据集时使用此 skill。
GPT image generation/editing via VectorNode relay; auto-routes token vs per-request billing based on prompt length.
微信朋友圈AI雷达 — 自动化采集276+条朋友圈内容,通过AI视觉提取、分类分析、商机发现,生成结构化简报。支持每日定时任务,一键生成热点报告。