xhs-skill
npx skills add https://github.com/leeguooooo/xhs-skill --skill xhs-skill
Agent 安装分布
Skill 文档
æ¬æè½æ¯ xhs-* çåå¹¶çï¼ç®æ æ¯è®©ç¨æ·åªéè¦ clawhub install xhs-skill 䏿¬¡å³å¯å¼å§ä½¿ç¨ã
约æï¼
- æææµè§å¨äº¤äºï¼æå¼é¡µé¢/ç¹å»/è¾å
¥/ä¸ä¼ /æªå¾/ç»å½/导åºï¼å
¨é¨å§æ
agent-browser-stealthã - ç¦æ¢å¨æ¬ä»åºç¼å/ç»´æ¤åå¸ç¼æèæ¬ï¼å¦
publish_from_payloadï¼ï¼åå¸å¨ä½å¿ é¡»å¨ä¼è¯ä¸ç±agent-browser-stealthæ§è¡ã - ç¦æ¢ä½¿ç¨
agent-browserï¼æ§ééç¦ç¨ï¼ç»ä¸ä½¿ç¨agent-browser-stealthï¼ã - æææææ°æ®ï¼cookiesãå¯¼åºæä»¶ãæªå¾ï¼åªè½å°å¨æ¬æº
data/ç®å½ï¼ä¸è¦ç²è´´å°è天éã
æ§è¡ç¡¬çº¦æï¼ç¨³å®æ§ï¼ï¼
- åä¸
agent-browser-stealthsession ç¦æ¢å¹¶åæä½ï¼ä¸²è¡æ§è¡ï¼ï¼å¦å容æè§¦åos error 35å失败ã snapshotç ref 伿¼ç§»ï¼å ³é®å¨ä½ååå¿ é¡»éæsnapshot -iï¼å¹¶ç¨placeholder/role/textåäºæ¬¡å®ä½å åºã- æ«ç ä¸çäºç»å½æåï¼å¿ é¡»ååéªæ ¡éªï¼è§ä¸æ¹ 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ï¼é¿å é¢ç¹éå¤ç»å½ã
- ç¨
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 äºç»´ç ç´æ¥åç»ç¨æ·ã - è¥ä¼è¯æ¯æå¾ç渲æï¼åéä¸äºç»´ç æªå¾ç»å¯¹è·¯å¾ï¼æå¾çéä»¶ï¼ä½ä¸ºè¡¥å ã
- åå®äºç»´ç åå¿ é¡»æåï¼çå¾ ç¨æ·ç¡®è®¤âå·²æ«ç âåç»§ç» cookies 导åºã
æ¨èåä¼ æ¨¡æ¿ï¼
请ç¨å°çº¢ä¹¦ App æ«è¿ä¸ªäºç»´ç ç»å½ã
äºç»´ç ææ¬: <qr_text>
<ASCII QR>
- ç¨å°çº¢ä¹¦ App æ«ç 宿ç»å½åï¼å¯¼åº cookies å°
data/raw_cookies.jsonï¼ä¸èµ° DevToolsï¼ï¼
agent-browser-stealth cookies --json > ./data/raw_cookies.json
- å½ä¸å 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-like 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 åè·³ï¼ï¼ç¦æ¢è¾åºâ已宿âã
- ï¼å¯éï¼çæ
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.2s~7sï¼ã - è¾å
¥ä¼å
type --delayï¼éåï¼ï¼é¿å å ¨éç¬æ¶fillã
- åºå®æçº¹ï¼
- è¿è¡å叿µç¨æ¶ä¼å
åºå®
--profileï¼å¹¶å¯ç¨--headedã - æ¨èåä¸è´¦å·é¿æå¤ç¨åä¸ä¸ª profile ç®å½ï¼ä¸è¦æ¯æ¬¡æ°å»ºä¸´æ¶ç¯å¢ã
- åå¸é¢çé¨ç¦ï¼
- åä¸ profile é»è®¤
24h <= 3ç¯ã - 两次å叿å°é´éé»è®¤
30åéã - å½ä¸é¨ç¦å¿ 须䏿¢ï¼ä¸å 许强åã
- åå¸åé¢çè¡ä¸ºï¼
- å å䏿¬¡çæ¶æ£å¸¸æµè§ï¼é¦é¡µ/åä½è åå°åç + æ»å¨ï¼ï¼åè¿å ¥åå¸é¡µã
- ç¦æ¢âæå¼é¡µé¢åç«å»æäº¤âã
- ç½ç»ä¸è®¾å¤ï¼
- ç¦æ¢æºæ¿ IP / é«é¢åæ¢ä»£çã
- ä¼å å®¶åºç½ç»æææºçç¹ï¼åè´¦å·å°½éä¿æè®¾å¤/IP 稳å®ã
- è¢«éæµåçå¤çï¼
- éæµï¼åèªå¨åï¼å彿卿£å¸¸ä½¿ç¨
3~7天ã - å°å·ï¼ä»
è½ç³è¯ï¼æ¢å·æ¶è¦åæ¶æ´æ¢
profile + IP + 设å¤ç¯å¢ã
B. åå¸ç¬è®°ï¼å¾æ/è§é¢ï¼
è¾å ¥ï¼ç¨æ·æä¾ï¼ï¼
- ç¬è®°ç±»åï¼å¾æ æ è§é¢
- æ é¢ãæ£æãæ ç¾ï¼å¿ å¡«ï¼
- è¯é¢ï¼å¿ å¡«ï¼åçç¹å叿¶å¿ é¡»æ¯âä»å¤©çç¹âï¼
- å¾ç/è§é¢è·¯å¾ï¼æ¬æºç»å¯¹è·¯å¾ä¼å ï¼
- 徿 /é å¾éæ±ï¼å¯éï¼ï¼å ³é®è¯ã飿 ¼ï¼æå¹³/æç©/线æ§ï¼ã主è²ãæ¯å¦éæèæ¯
- çç¹æ¥æºï¼å¿
å¡«ï¼ï¼æ¥æºåãæ¥æº URLãæ¥æºæ¥æï¼
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
- åå¸åå¿ é¡»æ§è¡å å®¹å®¡æ ¸èæ¬ï¼åå±è§å + 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
- åªæå½æ ¡éªåå®¡æ ¸ç»æé½
ok=trueæå 许è¿å ¥åå¸é¡µç¹å»âåå¸/æäº¤âã æ ¡éªçç¥å¨./config/verify_publish_policy.jsonï¼å®¡æ ¸çç¥å¨./config/review_policy.jsonï¼åå±é£é©è·¯å¾å¨./config/review_taxonomy.jsonã - ä»»ä¸é¨ç¦å¤±è´¥å¿ 须䏿¢æµç¨å¹¶æç¤ºè¡¥é½ï¼ç¦æ¢âåªä¼ æªå¾ç´æ¥åâã
ç¦æ¢é¾æ¥ï¼å¼ºå¶ï¼ï¼
- æ é¢/æ£æ/æ ç¾éç¦æ¢åºç°ä»»ä½é¾æ¥æååå½¢æï¼
http/httpsãwww.ãxxx.com/.cn/...ï¼ãå¦åæå°ç¦é£é©ã - 妿å 容çæéå°å°é¾ææ ¡éªä¸éè¿ï¼å®å¯ä¸æ¢ï¼ä¸è¦âé便å䏿¡âã
å AI è¯å«ä¸ç宿 ç¾ï¼å¼ºå¶ï¼ï¼
- 䏿¿è¯ºâ100% ä¸è¢«è¯å«ä¸º AIâï¼ç®æ æ¯æ¾èéä½é£é©ã
- æ£æå¿ é¡»æâ个人è§è§ + å ·ä½äºå®ä¿¡å·ï¼æ°å/æ¥æ/æ¥æºæåï¼âï¼å¹¶è§é¿æ¨¡æ¿è ã
- åå¸åå¿
é¡»éè¿
review_publish_payloadå®¡æ ¸é¨ç¦ï¼è¦æ±decision=passï¼å¹¶è¾åºrisk_pathãè¯æ®åreview_queueä¾å¤æ ¸ã source.evidence_snippetä¸source.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/reviewéok=trueï¼ï¼å¿ 须忢å¨âåå¸åâï¼ç¦æ¢ç»§ç»ç¹å»æäº¤ã
åå¸å¯é æ§ Checklistï¼ç §è¿ä¸ªæ§è¡ï¼é¿å âçä¼¼åäºå ¶å®æ²¡å/åæ®µæ²¡è½åºâï¼ï¼
- æ£ææ¢è¡ï¼åå
¥ç¼è¾å¨åæ
\\nè§èå为ç宿¢è¡ï¼text.replaceAll("\\\\n", "\n")ï¼ï¼å¡«å®ç«å»è¯»åæ ¡éªæ£æinnerTextä¸å å«åé¢é\\nã - æ é¢/æ£æ/æ ç¾åå
¥åé½è¦è¯»åæ ¡éªï¼æ 颿¯å¦åå¨ä¸
<= 20ï¼æ£ææ¯å¦é空ä¸é¿åº¦è¾¾æ ï¼æ ç¾æ¯å¦è³å° 3 个ä¸é½ä»¥#å¼å¤´ãå¹¶æ¥èªtag_registryã - 读åé¨ç¦éæ
post.real_topicsä¸å¹¶æ ¡éªï¼>=3ï¼ä¸é½å½ä¸tag_registryï¼ï¼é¿å âåè¯é¢âã - æ£æç¼è¾åºå¯è½ä¸æ¯æ®é input/textareaï¼å¿
é¡»å
snapshot -i确认å¯ç¼è¾åºåï¼ååå ¥å¹¶è¯»åæ ¡éªã - å叿é®ï¼é¡µé¢å¯è½æå¤ä¸ªâåå¸âå ¥å£ï¼å¿ é¡»ç¹å»âå¯è§ + enabled + ææ¡ä¸¥æ ¼å¹é âç主æé®ï¼ç¹å»åç¨ URL/页é¢ç¶æç¡®è®¤å·²è·³è½¬å°æå/管ç页ã
- å¾çéä¼ ï¼è¥éè¦æ¿æ¢ï¼å ç¹âæ¸ ç©ºâå¹¶å¨å¼¹çªéæ©âéæ°ä¸ä¼ âï¼ä¸ä¼ åçå¾ ç¼©ç¥å¾æ°é稳å®åç»§ç»ã
- å¾çå°ºå¯¸ï¼æªå¾ç±»
1280x720ä¼è®©é¢è§å¾å·®ï¼åå¸åç¨é¨ç¦æ ¡éªå¾ç为ç«ç 3:4ï¼æ¨è1242x1660ï¼ã - 串è¡ï¼åä¸
agent-browser-stealthsession ä¸¥æ ¼ä¸²è¡ï¼å¿ è¦æ¶sleep/waitï¼é¿å os error 35å失败ã
å叿åéç¯ï¼å¼ºå¶ï¼ï¼
- åå¸/æ´æ°ååå°ãç¬è®°ç®¡çãå表页ï¼ç¡®è®¤ç¼©ç¥å¾/æ é¢å·²ååã
- éæ°æå¼è¯¥ç¬è®°çç¼è¾é¡µï¼è¯»åæ ¡éªï¼
title/body/imgCount/tagsé½åå¨ä¸ç¬¦åé¨ç¦ï¼å¦åå¤å¤±è´¥éè¯ï¼ã
ç´ æåå¤ï¼å¯éï¼çå»ç¨æ·èªå·±æ¾å¾æ /é å¾ï¼ï¼
- ç¨æ·åªç»âéæ±æè¿°âï¼ä¾å¦ï¼
- âä¸ä¸ªçº¢è²ç±å¿çº¿æ§ iconï¼éæèæ¯â
- âéåç¾å¦ç¬è®°çæµ è²ç³»è´´çº¸é£å°å¾æ â
- ç¨
agent-browser-stealthæç´¢å¹¶æé 3-5 个åéï¼ä¼å å çæ/å¯å¤ç¨æ¥æºï¼ã 2.1 é å¾âå 容ä¸è´æ§âé¨ç¦ï¼å¼ºç建议ï¼ï¼
- æªå¾å
¥åºåï¼å
ç¨
agent-browser-stealth get title/读h1æ£æ¥é¡µé¢å 容确å®å å«ç®æ å ³é®è¯ï¼å¦åå¯è½æ¯è¯¯ç¹/é页ï¼ã - éè¦æ´å¼ºä¸è´æ§æ¶åä¸ OCRï¼å¯éï¼ï¼ä½é»è®¤å
å
title/h1çä½ææ¬æ ¡éªã
- ç¨
agent-browser-stealthç´æ¥æªå¾ä¿åå°ï¼
data/assets/<YYYY-MM-DD>/icons/<name>.png- ææ¥æº URL 追å å°ï¼
data/assets/<YYYY-MM-DD>/sources.txt
- è¿å ¥åå¸é¡µåæå¸¸è§ä¸ä¼ åªä½ï¼å¹¶å¨ç¹å»âåå¸/æäº¤âå设置人工确认ç¹ï¼é¢è§æ 误ååï¼ã
æµç¨ï¼æµè§å¨ä¾§å
¨é¨ç± agent-browser-stealth 宿ï¼ï¼
- ç¡®ä¿å·²ç»å½ï¼å 宿ä¸é¢ç Aï¼æå·²æææç»å½æï¼ã
- åå¤å¹¶æ ¡éª
data/publish_payload.jsonï¼å¿ é¡»ok=trueï¼ã - æå¼åå¸é¡µé¢ï¼å 许路å¾ååï¼ã
- ä¸ä¼ åªä½ï¼å¾æå¤å¾/è§é¢æä»¶ä¸å°é¢ï¼ã
- å¡«åæ é¢/æ£æ/è¯é¢/æ ç¾ï¼
- æ é¢å¿
é¡»
8~20åï¼è¶ è¿ 20 åå è£åªææç¤ºç¨æ·æ¹çï¼ - æ£æå¿
é¡»
>= 80å - æ ç¾è³å° 3 个ï¼ä¸é½ä»¥
#å¼å¤´ post.real_topicsè³å° 3 个ï¼ä¸ä¸æ ç¾é½å¿ é¡»å½ä¸data/tag_registry.jsonï¼çå®è¯é¢æ± ï¼- ç¦æ¢âä»
æªå¾ç´ æâç´æ¥åå¸ï¼å¦åªå«
screenshot/login_qrçæªå¾æä»¶ï¼ - æ£æç¼è¾åºä¸è¦ææ®é input å设ï¼å
snapshot -iåå®ä½å¯ç¼è¾åº - æ¯æ¬¡ç¹å»/å¡«ååå å·æ° refï¼é¿å ref æ¼ç§»è¯¯æä½
- ç¹å»âåå¸/æäº¤âåæåï¼è¦æ±ç¨æ·ç¡®è®¤æç»é¢è§ã
6.1 åå¸åæå¨éæ©è³å° 3 个çå®è¯é¢ï¼åç±
agent-browser-stealthç¹å»æäº¤ã - åå¸åè®°å½ç»æé¡µ URLï¼å¤±è´¥æ¶æªå¾å¹¶è®°å½éè¯¯ææ¡ã
åå¸ç»æè¾åºå¥çº¦ï¼JSONï¼ï¼
{
"task": "xhs_publish",
"ok": true,
"result_url": "https://creator.xiaohongshu.com/....",
"content_checks": {
"title_len": 18,
"body_len": 136,
"tag_count": 3,
"topic": "仿¥çç¹ï¼xxxx",
"source_date": "2026-02-12"
},
"artifacts": {
"payload_json": "data/publish_payload.json",
"media_inputs": ["..."],
"error_screenshot": null
}
}
åå¸å¤±è´¥æ¶ ok=falseï¼å¹¶è¿å error_messageãerror_screenshot è·¯å¾åæªéè¿ç missing_checksã
C. 导åºåä½è ä¸å¿æ°æ®ï¼CSV/XLSX ææªå¾ï¼
ç®æ ï¼æåä½è
ä¸å¿å
³é®æ°æ®å¯¼åºå° data/exports/<YYYY-MM-DD>/ï¼ç¨äºåç»åæã
- 确认已ç»å½ã
- ç¨
agent-browser-stealthè¿å ¥åä½è ä¸å¿ç常ç¨åæé¡µï¼ä»ªè¡¨ç/å 容åæ/ç²ä¸åæï¼ã - æ¯ä¸ªé¡µé¢ï¼
- ä¼å
使ç¨é¡µé¢èªå¸¦å¯¼åºï¼å¦æï¼å°
data/exports/<date>/ - æ å¯¼åºæ¶ï¼ä¿åå ³é®åºåæªå¾å°åç®å½
- è®°å½ï¼å¯¼åºæ¶é´èå´ãå£å¾è¯´æãé¡µé¢ 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. è½»éåçæµç¨ï¼ç»´æ¤è ï¼
- å è·æ¬å°é¨ç¦ï¼
npm run check:constraintsnpm test
- æ¥çæ¹å¨åªå
å«é¢ææä»¶ï¼
git status --short - ç¨ä¸æ Conventional Commit æäº¤ï¼ç¤ºä¾ï¼ï¼
docs(skill): è¡¥å åçåå¿«éèªæ£æ¸ å
- åå¸å° ClawHubï¼patchï¼ï¼
clawhub sync --all --bump patch --changelog "docs: è¡¥å åçåå¿«éèªæ£æ¸ å"