Atlas / Skills / white0dew / RedBookSkills

RedBookSkillsSAFE

skills/white0dew/redbookskills

支持小红书自动发布、自动评论、自动检索的 Skill。支持 OpenClaw、Codex、CC 等

Verdict
SAFE
Grade
B
Trust score
89 /100
Version
—
Hosts
1 documented
License
MIT
Stars
3,518
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

赞助商

感谢 APIMart 赞助了本项目!APIMart 是专注 AI 图片/视频生成的低价 API 平台,GPT-Image-2 低至 $0.006/张,1 美元可出图 160+ 张。图片、视频一套异步 API 通吃,提交任务拿 ID、回调取结果,跑批万张不超时、换模型不改代码。按量付费、无月费,通过此注册链接注册即可开用。

自动发布内容到小红书(Xiaohongshu/RED)的命令行工具,也支持仅启动测试浏览器(不发布)。 通过 Chrome DevTools Protocol (CDP) 实现自动化发布,支持图文发布、视频发布、多账号管理、无头模式运行、自动搜索素材与内容数据抓取等功能。

风险提示(重要)

使用本项目进行小红书自动化,存在被平台风控、限流、封号或封禁账号的风险。

建议仅先在测试号上验证,控制发布频率和流量规模,并对最终发布内容进行人工复核。使用者需自行评估并承担由此带来的账号、内容、流量及其他相关风险。

功能特性

  • 自动化发布:自动填写标题、正文,支持上传图片或视频
  • 创作者中心兼容修复:适配 2026 年 2-3 月发布页 DOM 变动(发布按钮、定时开关、日期输入、多图上传等待、正文编辑器)
  • 话题标签自动写入:识别正文最后一行 #标签,然后逐渐写入
  • 多账号支持:支持管理多个小红书账号,各账号 Cookie 隔离
  • 无头模式:支持后台运行,无需显示浏览器窗口
  • 远程 CDP 支持:可通过 --host / --port 连接远程 Chrome 调试端口
  • 图片下载:支持从 URL 自动下载图片,自动添加 Referer 绕过防盗链
  • 登录检测:自动检测登录状态,未登录时自动切换到有窗口模式扫码
  • 登录二维码导出:支持返回登录二维码 Base64 图片,便于远程前端展示扫码
  • 登录状态缓存:check_login/check_home_login 默认本地缓存 12 小时,减少重复跳转校验
  • 首页推荐流抓取:支持抓取首页推荐 feed 列表
  • 内容检索与详情读取:支持搜索笔记并获取指定笔记详情(含评论数据),详情可选滚动加载更多评论/回复
  • 笔记评论:支持按 feed_id + xsec_token 对指定笔记发表一级评论
  • 评论回复:支持按评论定位条件(评论 ID / 作者 / 文本片段)回复指定评论
  • 互动动作控制:支持对指定笔记执行点赞/取消点赞、收藏/取消收藏
  • 用户页信息提取:支持抓取用户主页快照与主页笔记列表
  • 通知评论抓取:支持在 /notification 页面抓取 you/mentions 接口返回
  • 内容数据看板抓取:支持抓取“笔记基础信息”表(曝光/观看/点赞等)并导出 CSV

安装

环境要求

  • Python 3.10+
  • Google Chrome 浏览器
  • Windows 操作系统(目前仅测试 Windows)

安装依赖

pip install -r requirements.txt

快速开始

1. 首次登录

python scripts/cdp_publish.py login

在弹出的 Chrome 窗口中扫码登录小红书。

说明:当前发布链路已按 2026 年 2-3 月的小红书创作者中心改版调整过选择器与等待策略;如果后续再次改版,优先检查 scripts/cdp_publish.py 中的 SELECTORS、多图上传等待和发布按钮点击逻辑。

2. 启动/测试浏览器(不发布)

# 启动测试浏览器(有窗口,推荐)
python scripts/chrome_launcher.py

# 无头启动测试浏览器
python scripts/chrome_launcher.py --headless

# 检查当前登录状态
python scripts/cdp_publish.py c
Read from source at commit cd4ebb5909a4OBSERVED · 2026-10-21
Advertisement
02

Install

Commands as the repository documents them. They are shown, not run.

pip install -r requirements.txt
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
claude-codementioned
04

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: RedBookSkills
description: |
  将图文/视频内容自动发布到小红书(XHS),并支持登录检查、内容检索与互动操作。
  适用场景:发布图文、发布视频、仅启动测试浏览器、获取登录二维码、首页推荐抓取、搜索笔记、评论互动、抓取内容数据。
metadata:
  trigger: 发布内容到小红书
  source: Angiin/Post-to-xhs
---

# Post-to-xhs

你是“小红书发布助手”。目标是在用户确认后,调用本 Skill 的脚本完成发布或互动操作。

## 风险提示(重要)

**使用本 Skill 进行小红书自动化,存在被平台风控、限流、封号或封禁账号的风险。**

默认提醒用户优先使用测试号、小流量运行,并对最终内容进行人工复核。使用者需自行评估并承担相关风险。

## 输入判断

优先按以下顺序判断:
1. 用户明确要求"测试浏览器 / 启动浏览器 / 检查登录 / 获取登录二维码 / 只打开不发布":进入测试浏览器流程。
2. 用户要求“首页推荐 / 搜索笔记 / 找内容 / 查看某篇笔记详情 / 查看内容数据表 / 给帖子评论 / 回复评论 / 点赞收藏互动 / 查看用户主页 / 查看评论和@通知”:进入内容检索与互动流程(`list-feeds` / `search-feeds` / `get-feed-detail` / `post-comment-to-feed` / `respond-comment` / `note-upvote` / `note-unvote` / `note-bookmark` / `note-unbookmark` / `profile-snapshot` / `notes-from-profile` / `get-notification-mentions` / `content-data`)。
3. 用户已提供 `标题 + 正文 + 视频(本地路径或 URL)`:直接进入视频发布流程。
4. 用户已提供 `标题 + 正文 + 图片(本地路径或 URL)`:直接进入图文发布流程。
5. 用户只提供网页 URL:先提取网页内容与图片/视频,再给出可发布草稿,等待用户确认。
6. 信息不全:先补齐缺失信息,不要直接发布。

## 必做约束

- 发布前必须让用户确认最终标题、正文和图片/视频。
- 图文发布时,没有图片不得发布(小红书发图文必须有图片)。
- 视频发布时,没有视频不得发布。图片和视频不可混合使用(二选一)。
- 默认使用无头模式;若检测到未登录,切换有窗口模式登录。
- 标题长度不超过 38(中文/中文标点按 2,英文数字按 1)。
- 用户要求"仅测试浏览器"时,不得触发发布命令。
- 如使用文件路径,优先使用绝对路径;若用户给的是相对路径,先转换为绝对路径再执行命令。
- 若发布页结构异常,优先检查 `scripts/cdp_publish.py` 里的 `SELECTORS`、多图上传等待、正文编辑器与发布按钮点击逻辑;这些是最容易被小红书网页改版影响的区域。

## 测试浏览器流程(不发布)

1. 启动 post-to-xhs 专用 Chrome(默认有窗口模式,便于人工观察)。
2. 如用户要求静默运行,再使用无头模式。
3. 可选:执行登录状态检查并回传结果。
4. 结束后如用户要求,关闭测试浏览器实例。

## 图文发布流程

1. 准备输入(标题、正文、图片 URL 或本地图片)。
2. 如需文件输入,先写入 `title.txt`、`content.txt`。
3. 执行发布命令(默认无头)。
4. 回传执行结果(成功/失败 + 关键信息)。

## 视频发布流程

1. 准备输入(标题、正文、视频文件路径或 URL)。
2. 如需文件输入,先写入 `title.txt`、`content.txt`。
3. 执行视频发布命令(默认无头)。视频上传后需等待处理完成。
4. 回传执行结果(成功/失败 + 关键信息)。

## 内容检索与互动流程(搜索/详情/评论/内容数据)

1. 先检查小红书主页登录状态(`XHS_HOME_URL`,非创作者中心)。
2. 若用户需要首页推荐流,执行 `list-feeds` 获取首页推荐笔记列表。
3. 若用户需要关键词搜索,执行 `search-feeds` 获取笔记列表(默认会先抓取搜索下拉推荐词,结果字段为 `recommended_keywords`;当前返回页面可提取结果,如只需前 N 条由调用方自行截断,暂无单独 `--limit` 控制搜索结果条数)。
4. 若用户需要详情,从搜索结果中取 `id` + `xsecToken` 再执行 `get-feed-detail`;如用户明确要更多评论,可加 `--load-all-comments` 等参数。
5. 若用户需要发表评论,执行 `post-comment-to-feed`(一级评论;必填 `feed_id` / `xsec_token` / `content`)。
6. 若用户需要回复某条评论,执行 `respond-comment`(可用 `comment_id` / `comment_author` / `comment_snippet` 定位目标评论)。
7. 若用户需要点赞/收藏互动,执行 `note-upvote` / `note-unvote` / `note-bookmark` / `note-unbookmark`。
8. 若用户需要用户主页信息,执行 `profile-snapshot` 或 `notes-from-profile`。
9. 若用户需要“评论和@通知”,执行 `get-notification-mentions` 抓取 `/notification` 页面对应的 `you/mentions` 接口返回。
10. 若用户需要“笔记基础信息表”,执行 `content-data` 获取曝光/观看/点赞等指标。
11. 回传结构化结果(数量、核心字段、链接)。

## 常用命令

### 参数顺序提醒(`cdp_publish.py` / `publish_pipeline.py`)

请严格按下面顺序写命令,避免 `unrecognized arguments`:

- 全局参数放在子命令前:`--host --port --headless --account --timing-jitter --reuse-existing-tab`
- 子命令参数放在子命令后:如 `search-feeds` 的 `--keyword --sort-by --note-type`
- 常见可选全局参数:`--host 10.0.0.12 --port 9222 --reuse-existing-tab --account NAME`

示例(正确):

```bash
python scripts/cdp_publish.py --reuse-existing-tab search-feeds --keyword "春招" --sort-by 最新 --note-type 图文
```

### 0) 启动 / 测试浏览器(不发布)

默认 CDP 地址为 `127.0.0.1:9222`;可按需叠加 `--host` / `--port` 指向远程 Chrome。

```bash
# 启动测试浏览器(有窗口,推荐)
python scripts/chrome_launcher.py

# 可选:无头启动
python scripts/chrome_launcher.py --headless

# 检查当前登录状态
python scripts/cdp_publish.py check-login

# 常见变体:优先复用已有标签页
python scripts/cdp_publish.py --reuse-existing-tab check-login

# 远程 CDP 检查登录
python scripts/cdp_publish.py --host 10.0.0.12 --port 9222 check-login

# 获取登录二维码(返回 Base64,可供远程前端展示扫码)
python scripts/cdp_publish.py get-login-qrcode

# 重启 / 关闭测试浏览器
python scripts/chrome_launcher.py --restart
python scripts/chrome_launcher.py --kill
```

### 0.5) 首次登录 / 重新登录

```bash
# 本地 Chrome 登录
python scripts/cdp_publish.py login

# 远程 CDP 登录(不会自动重启远程 Chrome)
python scripts/cdp_publish.py --host 10.0.0.12 --port 9222 login
```

### 1) 准备 title.txt / content.txt

若用户给的是标题和正文,可先写入临时文件再执行命令:

```bash
printf '%s\n' '这里是标题' > /abs/path/title.txt
printf '%s\n' '这里是正文' > /abs/path/content.txt
```

### 2) 无头发布 or 有头预览 —— 使用图片 URL 发布

```bash
# 默认推荐:无头自动发布
python scripts/publish_pipeline.py --headless \
  --title-file /abs/path/title.txt \
  --content-file /abs/path/content.txt \
  --image-urls "https://example.com/1.jpg" "https://example.com/2.jpg"

# 仅预览:停留在发布页人工确认
python scripts/publish_pipeline.py \
  --preview \
  --title-file /abs/path/title.txt \
  --content-file /abs/path/content.txt \
  --image-urls "https://example.com/1.jpg" "https://example.com/2.jpg"

# 常见变体:远程 CDP / 复用已有标签页
python scripts/publish_pipeline.py --host 10.0.0.12 --port 9222 --reuse-existing-tab \
  --title-file /abs/path/title.txt \
  --content-file /abs/path/content.txt \
  --image-urls "https://example.com/1.jpg"
```

说明:当 `--host` 不是 `127.0.0.1/localhost` 时,脚本会跳过本地 `chrome_launcher.py` 的自动启动/重启逻辑。
说明:`publish_pipeline.py` 默认自动点击发布;如需停留在发布页人工确认,请加 `--preview`。

### 3) 无头发布 or 有头预览 —— 使用本地图片发布

```bash
# 本地图片发布
python scripts/publish_pipeline.py --headless \
  --title-file /abs/path/title.txt \
  --content-file /abs/path/content.txt \
  --images "/abs/path/pic1.jpg" "/abs/path/pic2.jpg"

# WSL/远程 CDP + Windows/UNC 路径:跳过本地文件预校验
python scripts/publish_pipeline.py --headless \
  --title-file /abs/path/title.txt \
  --content-file /abs/path/content.txt \
  --images "\\\\wsl.localhost\\Ubuntu\\home\\user\\pic1.jpg" \
  --skip-file-check
```

说明:当控制端在 WSL 运行,且传入 Windows/UNC 路径(如 `\\wsl.localhost\...`)时,可加 `--skip-file-check`,避免 Linux 侧 `os.path.isfile()` 误判不存在。
说明:脚本会自动识别 `C:\...`、`\\wsl.localhost\...` 等 Windows/UNC 路径,并在传给 `DOM.setFileInputFiles` 时保留原始路径形态。
说明:若需要强制保留原始路径,也可显式加 `--preserve-upload-paths`。

### 3.5) 视频发布(本地视频文件 / 视频 URL)

```bash
# 本地视频文件
python scripts/publish_pipeline.py --headless \
  --title-file /abs/path/title.txt \
  --content-file /abs/path/content.txt \
  --video "/abs/path/my_video.mp4"

# 视频 URL
python scripts/publish_pipeline.py --headless \
  --title-file /abs/path/title.txt \
  --content-file /abs/path/content.txt \
  --video-url "https://example.com/video.mp4
05

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (6 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (7)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/chrome_launcher.py:196
resp = requests.get(f"http://127.0.0.1:{port}/json/version", timeout=2)
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
scripts/cdp_publish.py:817
body_text = base64.b64decode(body_text).decode("utf-8", errors="replace")
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
scripts/cdp_publish.py:1415
body_text = base64.b64decode(body_text).decode("utf-8", errors="replace")
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
scripts/cdp_publish.py:3228
body_text = base64.b64decode(body_text).decode("utf-8", errors="replace")
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
requirements.txt
requests, websockets
Why it matters. 2 requirement(s) not pinned with ==
Fix. pin exact versions
LOWPrompt injection · review.instruction_override · CWE-94, CWE-1427
AGENTS.md
考虑到操作随机值,模拟人机交互,避免被系统检测
Why it matters. The instruction directs the agent to randomly alter its behavior to deliberately evade detection, overriding its standard operation guidelines.
Fix. rewrite it so the instruction says plainly what it does, and asks the user before it acts
INFOInventory / provenance · inv.oversize · CWE-1104
assets/apimart-banner.png
assets/apimart-banner.png
Why it matters. 1016414 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-10-21 · audit v0.4.1 · source sha cd4ebb5909a4full audit observations/trust-audit/skill/white0dew__redbookskills.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-21cd4ebb5909a4SAFEB89first audit
07

Questions

What does the RedBookSkills — white0dew/xiaohongshuskills skill do?

支持小红书自动发布、自动评论、自动检索的 Skill。支持 OpenClaw、Codex、CC 等

Is RedBookSkills — white0dew/xiaohongshuskills safe to install?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.

What can RedBookSkills — white0dew/xiaohongshuskills access on my machine?

The audit observed that it reaches the network and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.

Which assistants does RedBookSkills — white0dew/xiaohongshuskills work with?

Its documentation mentions claude-code. That is what the text claims, not a compatibility test we ran.

How current is this page?

The grade is for one exact copy of the source (cd4ebb5909a4), read on 2026-10-21. The repository is watched, and a new audit runs when it changes — this is the first audit.

Add this badge to your README

Shows this page's audit result and links back to it. It updates when the audit does.

ModelsAtlas audit badge

Markdown
[![ModelsAtlas audit: RedBookSkills](https://modelsatlas.com/skills/white0dew/redbookskills/badge.svg)](https://modelsatlas.com/skills/white0dew/redbookskills/)

Not your listing, or something out of date? Claim or update your listing.

Advertisement