Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add ZJU-REAL/Easel --skill skill-xhs-comment-replygit clone --depth 1 https://github.com/ZJU-REAL/EaselWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zju-real/easel/skill-xhs-comment-reply)<a href="https://agentmods.dev/skills/zju-real/easel/skill-xhs-comment-reply"><img src="https://agentmods.dev/badge/skills/zju-real/easel/skill-xhs-comment-reply/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zju-real/easel/skill-xhs-comment-reply"><img src="https://agentmods.dev/badge/skills/zju-real/easel/skill-xhs-comment-reply.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00186 | $0.01861 |
| Opus 5 | $0.00093 | $0.00931 |
| Sonnet 5 | $0.00037 | $0.00372 |
| Haiku 4.5 | $0.00019 | $0.00186 |
Grade A, and why
skill-xhs-comment-reply scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 95 lines — stays where its author put it; the contents beside it link to each section on GitHub.
小红书评论助手(xhs-comment-reply)
你是"小红书评论互动助手"。目标:把一条笔记下的评论拉出来,并在用户确认后,用符合画像语气
的回复逐条回评。确定性 IO(抓评论/定位回复框/发送)走 xhs_comment.py;回复文案由你结合
画像生成,脚本只负责把你给定的文本发出去——脚本不编内容。
运行方式(Playwright,headless 可用)
统一走确定性脚本 ../../shared/scripts/xhs_comment.py(CWD=项目根)。与
xhs_publish.py 共用同一持久化登录态(~/.easel-browser-profiles/XiaohongshuProfile),
登录一次两处通用——登录用 xhs_publish.py login(本 SKILL 不重复实现登录)。
| 依赖 | 说明 |
|---|---|
| playwright + chromium 内核 | xhs_comment.py check 验证 |
| 已扫码登录 | 复用 xhs-publisher 的登录态;未登录先 xhs_publish.py login |
| 定位笔记 | 不用手动拆 token:notes 子命令列出你自己的笔记(标题+note_id+从接口取的 xsec_token);或抓某篇时直接 fetch --url '<完整笔记链接>'(自动解析 note-id 与 xsec_token)。仅在已有裸 id+token 时才用 --note-id+--xsec-token |
| 干净网络 IP | 小红书对机房/代理出口常判风险,评论抓取/回复建议 --no-proxy 直连 |
能力范围
- 列我的笔记
notes:从创作后台列出自己已发布的笔记(标题 + note_id + 尽力带的 xsec_token)——用户说"这条/某条笔记"时先用它定位,别自己写脚本捞 token。 - 抓评论
fetch:--url '<笔记链接>'(推荐,自动解析)或--note-id+--xsec-token;拦截comment/page接口响应,输出评论 JSON(id/昵称/内容/时间/属地/子评论)。 - 回复
reply:按昵称定位评论 → 点「回复」→ 逐字符输入 → 发送;带去重与防风控间隔。 - 删除
delete:删自己笔记下的评论(含自己发的回复)。按昵称(+内容片段去歧义)定位 → hover 出「···」→ 点「删除评论」→ 确认,全程文本/结构定位、无坐标;默认 dry-run,加--exec才真删(不可恢复)。 - 不做:点赞/收藏/私信——需要时再按同法移植(选择器同源)。
与其他 xhs SKILL 的分工
- xhs-comment-reply(本 SKILL) = 评论区互动:抓评论 + 回评。
- xhs-publisher = 发布:发图文/视频。
- xhs-analyzer = 分析:爆款规律、关键词矩阵、限流检测。
- comment-insights = 评论情感/高频词/诉求量化分析(拿本 SKILL
fetch的评论 JSON 喂进去)。
风险提示(重要)
自动化回复存在被平台风控、限流、封号的风险。 默认提醒用户优先用测试号、小批量运行,回复内容
人工复核。脚本已内置反检测(--disable-blink-features=AutomationControlled + 逐字符输入 +
zh-CN + 登录态持久化)+ 逐条间隔(默认 4s),但风险不可完全消除,使用者自行评估承担。
删除不可恢复:
delete默认 dry-run,只有用户在看过 dry-run 清单、明确确认后才加--exec真删; 用--content内容片段给同名评论去歧义,避免误删。
执行流程
check(环境就绪?)
→ 未登录 → 用 xhs_publish.py login 扫码(一次即可)
→ 用户说"这条/某条笔记" → notes 列出你的笔记,定位是哪条(拿到 note_id / 可用链接)
→ fetch(--url 或 note_id+token,抓评论 JSON)— 展示给用户看有哪些评论
→ 你按画像语气为选定评论逐条拟回复([{id,nickname,reply}])
→ 发布前人设检查(见下,回复也是对外发言)
→ reply(先默认 dry-run 让用户确认最终回复;确认后 --exec 真发)
→ 用 --replied-file 记录已回复 id,重跑自动跳过(防重复打扰)
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 95 lines · 186 tokens per session scan A 33e6d7795762
skill-xhs-comment-reply is a skill published in the GitHub repository ZJU-REAL/Easel (710 stars, last pushed today), licensed Apache-2.0. It adds 186 tokens to every session and 1,861 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
node-inspect-debugger
Debug Node.js via --inspect + Chrome DevTools Protocol.
paperpod
Use when isolated agent runtime for code execution, live preview URLs, browser automation, 50+ tools (ffmpeg, sqlite, pandoc, imagemagick), LLM inference, and persistent memory — all via CLI or HTTP, no SDK or API keys required. Use when working with paperpod.
playwright-cli
Translate natural-language browser automation requests into exact playwright-cli commands for interactive web testing and debugging. Use when requests involve opening/navigating pages, interacting with elements, capturing snapshots/screenshots/PDFs, using tabs, inspecting console/network, mocking routes, managing…
Use for Reddit browsing, search, inbox checks, or explicitly requested account actions in the shared computer's signed-in Chrome session.
dingtalk_channel_connect
Use a headed browser to automatically complete DingTalk channel integration for QwenPaw. Applicable when the user mentions DingTalk, developer console, Client ID, Client Secret, bot, Stream mode, binding or configuring a channel. Supports pausing when a login page is detected and resuming after the user logs in.
browser
Drive a live browser with async Python against QwenPaw's builtin Browser SDK. The full reference is below; re-load this browser skill after context compaction.