小红书社交互动技能。发表评论、回复评论、点赞、关注。当用户要求评论、回复、点赞或关注小红书用户时触发。
64
78%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
Fix and improve this skill with Tessl
tessl review fix ./crews/main/skills/xhs-interact/SKILL.md通过 camoufox-cli 完成(纯浏览器操作技能)——复用 xhs-browse 持久化 session(消费者域 www.xiaohongshu.com,与 xhs-content-ops / viral-chaser / published-track 共用)。同一 session 一个且只有一个持久化实例,fail-first 队列:同 session 已有命令在跑时新命令直接 fail,浏览器操作 skill 串行排队。
关键边界:本技能是纯 camoufox-cli 浏览器操作技能,登录态直接复用 xhs-browse 持久化 session(登录态 + 指纹冻结在 session profile 里)——不开独立临时 session、不 import cookie。每次登录后导出的 cookie + UA 是给其他脚本类技能(xhs-content-ops / viral-chaser / published-track 等)做 raw HTTP 抓取用的,本技能自身不消费 cookie 文件。
走 login-manager skill 流程,复用 xhs-browse 持久化 session(消费者域 www.xiaohongshu.com):
camoufox-cli --session xhs-browse --persistent --headed --json open "https://www.xiaohongshu.com/"
# 告知用户在窗口里手动扫码登录,确认后:
login-manager --platform xhs-browselogin-manager 一条命令闭环导出+验证+落中央存储(供其他脚本类技能消费,非本技能自用)+ close session。
互动操作直接在 xhs-browse 持久化 session 上跑——不开独立 session、不 import cookie(camoufox-cli 浏览器方案严禁 cookies import 造会话)。下文所有 camoufox-cli 命令统一用 --session xhs-browse --persistent,若该 session 正被其他浏览器操作 skill 占用(fail-first 拒绝 → 命令报 session 正忙),等其完成再串行接力,不要自动 close 正在跑的 session。
# 全文下方 $SESSION 一律指 xhs-browse 持久化 session
SESSION="xhs-browse"任务结束后close 该 session——持久化 session 登录态在磁盘 profile,不留进程占内存;后续自己 / 其他浏览器操作技能用 --session <平台 key> --persistent 重起无头即恢复。互动过程中任何时候发现登录已失效则走 login-manager 有头重登流。
所有互动操作需要 feed_id 和 xsec_token,从浏览器地址栏获取(snapshot eval):
笔记 URL 格式:
https://www.xiaohongshu.com/explore/{feed_id}?xsec_token={xsec_token}&xsec_source=pc_feed
示例:
https://www.xiaohongshu.com/explore/64abc123def456?xsec_token=ABxxxxxx&xsec_source=pc_feed
→ feed_id = 64abc123def456
→ xsec_token = ABxxxxxxcamoufox 拿当前 URL:
camoufox-cli --session "$SESSION" --json eval "window.location.href"https://www.xiaohongshu.com/explore/{feed_id}?xsec_token={xsec_token}&xsec_source=pc_feed模式说明:以下每条操作都用
camoufox-cli的snapshot/eval/click/type子命令实现,统一在xhs-browse持久化 session 上跑($SESSION=xhs-browse,见上文「互动流程」段,不开独立 session、不 import cookie)。找不到元素时不要盲试:先
snapshot看 DOM 真实结构,再决定 selector 改写。
1. 导航到 feed 详情页:
camoufox-cli --session "$SESSION" --persistent open <feed_url>
2. 等待 2-3 秒加载(sleep 3),调 snapshot 看 .access-wrapper / .error-wrapper
是否出现 → 出现则笔记不可访问,停止并告知用户
3. 找评论输入框 .content-input,触发 input 事件(用 type 子命令):
camoufox-cli --session "$SESSION" --json type ".content-input" "评论内容"
4. 触发 input 事件(camoufox type 已隐含触发,确认 snapshot 看到值变化)
5. 找发送按钮并 click:
camoufox-cli --session "$SESSION" --json click "<send-btn-selector>"
6. 等待 1-2 秒(sleep 2),调 snapshot 确认评论出现在评论区1. 导航到 feed 详情页(camoufox-cli open)
2. 等待 2-3 秒加载,确认页面可访问
3. 滚动到目标评论:
- 已知 comment_id:eval "document.querySelector('#comment-${comment_id}').scrollIntoView()"
- 已知 user_id:eval "document.querySelector('[data-user-id=\"${user_id}\"]').scrollIntoView()"
- 若需滚动加载更多评论:eval 多次 window.scrollBy(0, 800) + sleep 1
观察 .end-container 出现即到底(最多 7 次)
4. 点击目标评论的回复按钮(.interactions .reply):
camoufox-cli --session "$SESSION" --json click ".interactions .reply"
5. 输入回复内容到 .content-input(camoufox type 子命令)
6. 点击发送按钮(camoufox click)
7. sleep 1-2s,snapshot 确认回复已发出选择器:.like-wrapper(推荐)或 .interact-container .left .like-wrapper
1. 导航到 feed 详情页
2. 等待 2-3 秒加载
3. 检查当前点赞状态(eval):
camoufox-cli --session "$SESSION" --json eval \
"document.querySelector('.like-wrapper').classList.contains('like-active')"
4. 若需点赞,click 点赞按钮(推荐 JS 方式,最稳):
camoufox-cli --session "$SESSION" --json eval \
"document.querySelector('.like-wrapper').click(); 'ok'"
5. sleep 1-2s,eval 验状态:
camoufox-cli --session "$SESSION" --json eval \
"document.querySelector('.like-wrapper').classList.contains('like-active')"
6. 若状态未变化,重试一次;仍失败则报告若
click/eval触发风控:等 60s 后在同一xhs-browse持久化 session 上重试(不开新 session、不 import cookie);仍触发则报告用户该平台当日风控未解,转其他笔记或择日再试。
1. 导航到用户主页:camoufox-cli ... open "https://www.xiaohongshu.com/user/profile/${user_id}"
2. sleep 3 加载
3. 找关注按钮:snapshot 找文本为"关注"的按钮 / eval ".user-actions .follow-btn"
4. click 关注按钮
5. sleep 1-2s,snapshot 确认按钮变为"已关注"1. 导航到用户主页
2. 找"已关注"按钮(同上 selector)
3. click 后确认弹出确认框,click"取消关注"
4. sleep 1-2s,确认按钮变为"关注"/explore/{feed_id} 裸路径,没带 xsec_tokenerror_code=300017 或 300031)2.1w、1.5万、1.2k 等压缩格式而非数字w = 万 = ×10000,万 = ×10000,k = ×1000。例:2.1w = 21000,1.5万 = 15000,1.2k = 1200.end-container 说明到底部;最多滚动 7 次www.xiaohongshu.com 找发布/草稿入口creator.xiaohongshu.comxhs-browse 持久化 session 正被其他浏览器操作技能(xhs-content-ops 等)占用,新命令撞 fail-first 队列xhs-browse 持久化 session 上 --headed open + 用户手动扫码 + 导出 cookie+UA 落中央存储给其他脚本技能用)→ 在同一 session 上重试;不要盲 retry、不要开独立 session import cookie| 情况 | 处理 |
|---|---|
| 页面出现登录墙 | 同上重走 login-manager 登录流 |
| 点赞状态未变化 | 重试一次,仍未变化则报告错误 |
| camoufox click/eval 失败 / 超时 | 改用 eval 走 JS 方式(最稳);再失败 → 等 60s 后在同一 session 上重试(不开新 session、不 import cookie) |
xhs-browse session 正忙(fail-first 拒绝) | 这是预期行为(原则 1),等当前占用方完成再串行接力,不自动 close 正在跑的 session |
| xsec_token 缺失/无效 | 从搜索结果链接中重新获取 signed URL,不要手拼 |
| 安全限制/访问异常 | 停止操作 60 秒后重试,或换笔记操作 |
fdc03d6
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.