skill-xhs-publisher

skill-xhs-publisher is a skill for Claude Code, Codex from ZJU-REAL/Easel. It costs 106 tokens per session (1,460 once invoked), scanned A, original, Apache-2.0.

A browser-based publisher for posting image-and-text notes or videos to Xiaohongshu, a Chinese social media platform. It supports saved login sessions and checks that uploads and publishing complete.

In plain words
What is it for?
Log in by QR code, preview a publishing plan, upload images or a video, and publish a post.
Why use it?
It removes repetitive uploading and posting steps for Xiaohongshu content.

Skill for Claude CodeCodex

Which agent this was written for is unclear — built for openclaw. Also seen: mentions AGENTS.md; built for openclaw.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is python skills/shared/scripts/persona_gate.py record --topic 露营攻略 --profile 户外达人 \.

Good fit Log in by QR code, preview a publishing plan, upload images or a video, and publish a post.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/ZJU-REAL/Easel
agentmods
npx agentmods add skills/zju-real/easel/skill-xhs-publisher

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for skill-xhs-publisher

README.md
[![agentmods](https://agentmods.dev/badge/skills/zju-real/easel/skill-xhs-publisher/github.svg)](https://agentmods.dev/skills/zju-real/easel/skill-xhs-publisher)
Your own site
<a href="https://agentmods.dev/skills/zju-real/easel/skill-xhs-publisher"><img src="https://agentmods.dev/badge/skills/zju-real/easel/skill-xhs-publisher/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.

agentmods 80×15 button for skill-xhs-publisher

Your own site · 80×15
<a href="https://agentmods.dev/skills/zju-real/easel/skill-xhs-publisher"><img src="https://agentmods.dev/badge/skills/zju-real/easel/skill-xhs-publisher.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 106 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,460 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00106 $0.01460
Opus 5 $0.00053 $0.00730
Sonnet 5 $0.00021 $0.00292
Haiku 4.5 $0.00011 $0.00146

Measured 8d ago against content hash e3a0bcfd1312, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

skill-xhs-publisher 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 8d 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.

skills/openclaw/skill-xhs-publisher/SKILL.md · 96 lines

How it starts

The opening of the file, as written. The whole thing — 96 lines — stays where its author put it; the contents beside it link to each section on GitHub.

小红书发布助手(xhs-publisher)

你是"小红书发布助手"。目标是在用户确认后,调用 xhs_publish.py 完成图文/视频发布

运行方式(Playwright,headless 可用)

统一走确定性脚本 ../../shared/scripts/xhs_publish.py(CWD=项目根)。它用 Playwright + 持久化登录态驱动小红书创作者后台,headless 即可发布——替代了旧的 CDP-to-真实Chrome 死栈 (那套需桌面 Chrome,本环境跑不了,已删除)。

依赖 说明
playwright + chromium 内核 本环境已装(xhs_publish.py check 验证)
已扫码登录 login 把二维码抠成 PNG(默认 outputs/_login/xhs-login-qrcode.png,Web UI 可看)→ 扫码 → cookie 持久化到 ~/.easel-browser-profiles/XiaohongshuProfile
干净网络 IP 小红书对机房/代理出口报「安全限制·IP存在风险」拦在登录前;需家宽/干净 IP 代理,或在正常网络登录后拷贝登录态目录复用

能力范围

  • 本 SKILL 现做:图文发布、视频发布、扫码登录、发布前预检(plan)。
  • 评论区互动(抓评论 + 回复)已拆分到 skill-xhs-comment-reply(与本 SKILL 共用登录态)。
  • 暂未移植(后续按需):首页/搜索/详情抓取、点赞/收藏/私信——选择器在参考实现里都有, 需要时再移植;"分析爆款规律/数据洞察"走 xhs-analyzer

与 xhs-analyzer 的分工边界

  • xhs-publisher(本 SKILL) = 发布:发图文/视频。
  • xhs-comment-reply = 评论区互动:抓评论 + 回复粉丝评论。
  • xhs-analyzer = 分析:搜索规律、爆款拆解、关键词矩阵、创作者画像、限流检测。
  • 需要"实际发布"用本 SKILL;需要"回评/维护评论区"用 xhs-comment-reply;需要"分析/爆款规律"用 xhs-analyzer。

风险提示(重要)

小红书自动化发布存在被平台风控、限流、封号的风险。 默认提醒用户优先用测试号、小流量运行, 最终内容人工复核。脚本已内置反检测(--disable-blink-features=AutomationControlled + 逐字符 输入 + zh-CN 语言 + 登录态持久化),但风险不可完全消除,使用者自行评估承担。

输入判断(按顺序)

  1. "检查环境 / 能不能发":xhs_publish.py check
  2. "登录 / 扫码 / 换账号":xhs_publish.py login(有头,扫码)。
  3. 已提供 标题 + 视频:视频发布流程。
  4. 已提供 标题 + 图片:图文发布流程。
  5. 只给网页 URL:先提取内容与图片/视频,产出可发布草稿,等确认。
  6. 信息不全:先补齐,不要直接发布。

执行流程

check(环境就绪?)
  → 未登录 → login(有头扫码,一次即可)
  → plan(dry-run 预检:标题长度/媒体路径/步骤)— 给用户确认最终标题、正文、图片/视频
  → 发布前人设检查(见下)
  → publish / publish-video --exec(首次建议加 --headed 校验选择器,OK 后 headless 复跑)
  → 成功校验(脚本内置:URL 离开 /publish/publish 才算成功)
  → 发布后留痕(见下)

发布前人设检查(有 Profile 时)

按 AGENTS.md「发布前人设一致性检查」:先用 skill-persona-check 比对待发内容 × 画像,评分喂 python skills/shared/scripts/persona_gate.py check --score 85——低于 80 分时告知分数、偏离点和 修改建议,但不阻断发布;用户已明确要发布就继续执行。

发布后留痕(供监控/归因)

python skills/shared/scripts/persona_gate.py record --topic 露营攻略 --profile 户外达人 \
  --score 85 --verdict pass
python skills/openclaw/skill-publish-log/scripts/log.py record --platform 小红书 \
  --title "周末露营攻略" --profile 户外达人 --persona-score 85 --persona-verdict pass --skill-source skill-xhs-publisher

Read the full file on GitHub · 96 lines

Files

What ships with it

5 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.

Changes

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.

  1. 8d ago First seen · 96 lines · 106 tokens per session scan A e3a0bcfd1312

Subscribe to this mod's changes

skill-xhs-publisher is a skill published in the GitHub repository ZJU-REAL/Easel (794 stars, last pushed yesterday), licensed Apache-2.0. It adds 106 tokens to every session and 1,460 once invoked, about $0.0005 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.

Related

Other skills, from other repositories

node-inspect-debugger

Debug Node.js via --inspect + Chrome DevTools Protocol.

HezaoHezao/poirot · 18 tokens

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.

oyi77/1ai-skills · 64 tokens

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…

IvanCampos/agents · 74 tokens

reddit

Use for Reddit browsing, search, inbox checks, or explicitly requested account actions in the shared computer's signed-in Chrome session.

jssblck/agents · 27 tokens

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.

agentscope-ai/QwenPaw · 69 tokens

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.

agentscope-ai/QwenPaw · 35 tokens