https://www.xiaohongshu.com/explore
agent_skill 参数需要指定一个已存在的人物 agent skill,这些 skill 通常通过以下方式创建:
```
Skill(skill="huashu-nuwa", args="帮我蒸馏一个职场毒舌老板的 skill")
Skill(skill="huashu-nuwa", args="蒸馏一个温柔知心姐姐 skill")
Skill(skill="huashu-nuwa", args="造一个热爱生活的旅行博主 skill")
```
在用户级或项目级 skills 目录下创建 SKILL.md 文件
重要:如果配置的 agent_skill 不存在,会报错。先用女娲 skill 蒸馏出需要的人物,再调用本 skill。
女娲 skill 触发词:
click_element(selector="文本", selector_type="text") 比 xpath 可靠,xpath 容易因页面刷新点错帖子
get_dom_tree 用文本选择器会报 not a valid selector,改用 find_elements 或 get_page_text
video 或 play 相关标签,图文帖子只有 img
agent_skill 参数必须指定一个由女娲 skill 蒸馏出来的人物 skill,否则无法使用
通过 args 参数传入配置,格式为 JSON 字符串或自然语言描述:
{
"agent_skill": "naval-perspective",
"comment_length": "20-80字",
"comment_style": "温暖共鸣,像朋友聊天一样给迷茫的人一点方向和安慰",
"avoid_phrases": ["你应该", "你必须"],
"target_audience": ["学生", "年轻人"],
"topics": ["年龄焦虑", "校园学业", "北漂漂泊", "恋爱情感", "社交孤独", "人生困惑"],
"exclude_keywords": ["卖课", "培训", "咨询", "1v1", "私信我", "加我"],
"exclude_authors": ["老师", "教练", "导师"],
"post_types": ["图文"],
"require_personal_details": true
}
注意:agent_skill 参数是必需的,必须先通过女娲 skill 蒸馏出人物 skill 才能使用。
可选参数说明(除 agent_skill 外均可选):
comment_length: 评论字数,默认 20-80 字
comment_style: 评论风格描述,会传递给人物 skill
avoid_phrases: 避免使用的句式,如 ["你应该", "你必须"]
target_audience: 目标受众,如 ["学生", "年轻人"]
topics: 目标话题,如 ["年龄焦虑", "校园学业", "北漂漂泊"]
exclude_keywords: 排除关键词,如 ["卖课", "培训", "咨询"]
exclude_authors: 排除作者类型,如 ["老师", "教练", "导师"]
post_types: 帖子类型,["图文"] / ["视频"] / ["都行"]
require_personal_details: 是否要求真实个人细节,默认 true
navigate("https://www.xiaohongshu.com/explore")
用 find_elements 获取前 30 个帖子:
find_elements(selector=".note-item", limit=30)
返回每个帖子的 index、标题文本、作者、xpath。
从帖子列表中筛选适合评论的帖子,根据配置的筛选规则灵活判断。
根据 post_types 配置:
"图文": 检查 DOM 是否有 video 或 play 标签,无则选中
"视频": 检查 DOM 是否有 video 或 play 标签,有则选中
"都行" 或 null: 不限制类型
根据 exclude_authors 配置,排除职业化账号(如"老师""教练""导师")。
根据 topics 配置,优先选择相关话题的帖子。
常见话题方向参考:
topics 配置
根据 exclude_keywords 配置,排除包含以下内容的帖子:
根据 require_personal_details 配置:
true: 要求帖子有具体生活细节,读起来像真人在说话,普通个人昵称(非职业化命名)
false: 不限制
> 💡 关键判断标准:读完帖子感觉"这是个真人遇到了真实的问题"——就评论。感觉"他想卖我东西"——就跳过。不用每个关键词都对上,相信你的直觉。
⚠️ 必须用 text 选择器,不要用 xpath!
click_element(selector="帖子标题文本", selector_type="text")
验证:用 get_dom_tree(selector="#noteContainer .note-content", depth=8) 确认标题匹配。
点击输入框占位文字:
click_element(selector="说点什么...", selector_type="text")
调用由女娲 skill 蒸馏出来的人物 agent skill(通过 agent_skill 参数指定):
Skill(skill="{agent_skill}", args="在小红书帖子'{帖子标题}'下面写一条评论。要求:{comment_length},{comment_style}。{avoid_phrases_msg}。直接给出评论文字即可。")
其中:
{agent_skill}: 用户通过女娲蒸馏出的人物 skill 名称(如 naval-perspective、toxic-boss-skill 等)
avoid_phrases_msg: 如果配置了 avoid_phrases,拼接成"不要用'XXX''YYY'这类句式"
input_text(selector="#content-textarea", text="评论内容")
click_element(selector="发送", selector_type="text")
用 get_page_text() 检查:
⚠️ 不要点 .note-detail-mask(会放大图片),不要点 .close-circle(无效)。
必须用 JavaScript 点击内部关闭按钮:
document.querySelector('.close-mask-dark').click()
调用方式:
execute_javascript(code="document.querySelector('.close-mask-dark').click(); return 'done'")
验证弹窗已关闭:get_dom_tree(selector="#noteContainer", depth=1) 返回 "Element not found" 即表示已关闭。
⚠️ 不要 navigate 刷新页面,否则帖子列表全变。关闭弹窗后直接重复步骤 2-9 对下一个帖子评论,帖子列表保持不变。
当步骤 2 筛选出的目标帖子全部处理完(全部评论过),说明当前页刷完了,需要滚动加载新帖子:
用 JS 滚动页面到底部:
execute_javascript(code="window.scrollTo(0, document.body.scrollHeight); return 'scrolled'")
等 1-2 秒让新帖子加载出来,然后回到步骤 2 重新获取帖子列表(注意跳过已经评论过的帖子)。
判断帖子是否评论过:在内存中维护一个已评论标题的列表,find_elements 后过滤掉已评论的。
步骤 1(定位探索页)
↓
步骤 2(获取帖子列表)
↓
步骤 3(根据配置筛选目标帖子)
↓
步骤 4-10(逐个点击→评论→关弹窗)
↓
当前页目标帖子全刷完?
├── 是 → 步骤 11(向下滚动)→ 回到步骤 2
└── 否 → 继续步骤 4(下一个目标帖子)
以 Naval Ravikant 风格为例,展示完整流程:
第一步:用女娲蒸馏 Naval 人物 skill
Skill(skill="huashu-nuwa", args="蒸馏 Naval Ravikant 的 skill")
女娲会返回生成的 skill 名称,例如:naval-perspective
第二步:用这个 agent 刷小红书
Skill(skill="rednote-auto-commenter", args='{"agent_skill": "naval-perspective", "topics": ["年龄焦虑", "校园学业", "北漂漂泊"], "post_types": ["图文"]}')
第一步:用女娲蒸馏 agent
Skill(skill="huashu-nuwa", args="帮我蒸馏一个10年互联网大厂高管,毒舌吐槽风格,看不惯职场新人矫情的老板 skill")
第二步:用这个 agent 刷小红书
Skill(skill="rednote-auto-commenter", args='{"agent_skill": "toxic-boss-skill", "comment_style": "毒舌吐槽,直戳痛处,让职场新人认清现实", "topics": ["职场新人", "工作压力", "职业规划"], "target_audience": ["职场人"]}')
第一步:用女娲蒸馏 agent
Skill(skill="huashu-nuwa", args="蒸馏一个温柔知心姐姐 skill,擅长情感咨询,倾听安慰像朋友")
第二步:用这个 agent 刷小红书
Skill(skill="rednote-auto-commenter", args='{"agent_skill": "warm-sister-skill", "comment_style": "温柔知心,像姐姐一样耐心倾听和安慰", "topics": ["恋爱情感", "分手难过", "单身焦虑"], "post_types": ["图文", "视频"]}')
第一步:用女娲蒸馏 agent
Skill(skill="huashu-nuwa", args="造一个热爱生活的旅行博主 skill,热情洋溢喜欢分享")
第二步:用这个 agent 刷小红书
Skill(skill="rednote-auto-commenter", args='{"agent_skill": "life-lover-skill", "comment_style": "热情洋溢,分享生活乐趣,像朋友一样夸赞", "topics": ["旅行", "美食", "探店"], "exclude_keywords": ["广告", "推广"], "require_personal_details": false}')
也可以用自然语言描述配置(系统会自动解析成对应参数):
Skill(skill="rednote-auto-commenter", args="用毒舌吐槽风格刷职场吐槽贴,只评论图文帖子,避开卖课广告")
| 目标 | 选择器 | 类型 |
|------|--------|------|
| 帖子列表 | .note-item | css |
| 帖子详情容器 | #noteContainer | css |
| 帖子内容区 | #noteContainer .note-content | css |
| 帖子标题 | #detail-title | css |
| 帖子正文 | #detail-desc | css |
| 帖子标签 | #detail-desc .tag | css |
| 作者名 | #noteContainer .username | css |
| 发布日期 | .bottom-container .date | css |
| 评论总数 | .comments-container .total | css |
| 评论输入框 | #content-textarea | css |
| 弹窗遮罩层(⚠️ 不要点,会放大图片) | .note-detail-mask | css |
| 内部关闭按钮(✅ 用 JS 点这个) | .close-mask-dark | js |
| 点赞数 | .engage-bar .like-wrapper .count | css |
| 收藏数 | .engage-bar .collect-wrapper .count | css |
| 评论数 | .engage-bar .chat-wrapper .count | css |
| 操作 | 文本 |
|------|------|
| 点击帖子 | 帖子标题文字 |
| 激活评论框 | 说点什么... |
| 发送评论 | 发送 |
| 关闭弹窗 | execute_javascript 点击 .close-mask-dark |
Q: 如何创建自定义的人物 agent?
A: 使用女娲 skill(huashu-nuwa)。例如:
Skill(skill="huashu-nuwa", args="蒸馏一个毒舌老板 skill")
Skill(skill="huashu-nuwa", args="造一个温柔知心姐姐 skill")
Skill(skill="huashu-nuwa", args="造一个热爱生活的旅行博主 skill")
女娲会深度调研 → 提炼思维框架 → 生成可运行的 skill。蒸馏完成后,会返回 skill 名称(如 toxic-boss-skill),然后就能在 rednote-auto-commenter 的 agent_skill 参数中使用了。
Q: 如何查看已存在的人物 agent?
A: 使用 Skill(skill="find-skills", args="人物 agent") 或查看你的 skills 目录:
~/.workbuddy/skills/
{workspace}/.workbuddy/skills/
Q: 如何切换不同的人物 agent?
A: 在 args 中配置 agent_skill 参数,指定你要使用的 skill 名称即可。例如:{"agent_skill": "your-custom-skill"}。
Q: 如何支持刷视频帖子?
A: 配置 post_types: ["图文", "视频"] 或 ["视频"]。
Q: 如何调整评论字数?
A: 配置 comment_length 参数,例如:"100-200字"。
Q: 如何改变评论风格?
A: 配置 comment_style 参数,描述你想要的语气和风格,系统会传递给 agent skill。
Q: xpath 点击总是点错帖子?
A: 探索页每次刷新帖子顺序都会变,xpath 不稳定。用 selector_type="text" 文本匹配点击。
Q: 如何确认帖子是图文不是视频?
A: 对帖子 DOM 用 grep_code 搜索 video|play|播放,没匹配到就是图文。
Q: execute_javascript 返回 None 怎么办?
A: 用 get_dom_tree 或 get_page_text 替代,JS 执行通道偶尔不稳定但不影响点击操作。
Q: 评论发了但没看到?
A: 用 get_page_text() 重新获取页面文字,评论数应该 +1,自己的评论会出现在列表顶部。
Q: 如何关闭帖子弹窗?
A: ⚠️ 不要点 .note-detail-mask(会放大图片),不要点 .close-circle(无效)。用 JS:document.querySelector('.close-mask-dark').click()。
Q: 为什么不能 navigate 刷新来关弹窗?
A: navigate 会刷新探索页,帖子列表全变,之前筛选的目标帖子都丢失了。用 JS 关弹窗后页面保持不变。
Q: 不关弹窗直接点下一个帖子行不行?
A: 不行。弹窗遮罩层会拦截点击事件,后台帖子无法被点到。必须先关弹窗。
Q: 当前页刷完了怎么办?
A: 用 JS 滚到底部加载更多:window.scrollTo(0, document.body.scrollHeight),然后重新获取帖子列表,跳过已评论的。
Q: 怎么知道帖子已经评论过了?
A: 维护一个已评论帖子标题的列表。每次筛选目标帖子时,过滤掉标题已在列表中的。
Q: 配置参数支持自然语言吗?
A: 支持。你可以用自然语言描述配置(如"刷职场贴,幽默风格"),系统会自动解析成对应的 JSON 参数。如果解析失败,会使用默认配置。
共 1 个版本