Browser

xiaohongshu-skill

Try it

Drive Xiaohongshu (RedNote) tasks via Python Playwright with confirmation gates on every write.

What it does

Covers QR-code login and session checks, filtered search (sort, note type, publish time, scope, location), post detail and user profile reads, plus publishing in image, video, Markdown-rendered, and long-form formats. Comments, replies, likes, and favorites are supported, with randomized navigation delays, click cooldowns, captcha detection, and daily quota tracking built in. Every command outputs JSON, and all write actions pause for explicit user confirmation through AskUserQuestion before execution. Ships with writing templates, persona/calendar strategy tools, and SOP orchestration for repeat workflows.

When to use it

  • Searching Xiaohongshu with multi-filter queries
  • Drafting image, video, or long-form notes
  • Replying to comments with built-in confirmation
  • Running scheduled publishing and quota-aware SOPs

The skill document

小红书 Skill

用 Python Playwright 驱动浏览器操作小红书。数据从 window.__INITIAL_STATE__(Vue SSR 状态对象)里取。搜索、发布、互动、运营全在这。

写操作安全规则

下面这些命令会真的改动账号数据。跑之前必须让用户确认:

  1. 发布笔记 -- 先展示标题、正文、图片列表。用户说"发"才发。
  2. 评论/回复 -- 先展示要发出去的内容。用户说"发"才发。
  3. 点赞/收藏 -- 先展示目标帖子。用户说"行"才执行。

AskUserQuestion 弹确认框。别自己决定。

前置条件

{baseDir} 目录装依赖:

cd {baseDir}
pip install -r requirements.txt
playwright install chromium

Linux/WSL 还要跑:

playwright install-deps chromium

快速开始

所有命令从 {baseDir} 目录跑。

1. 登录(第一次必须做)

cd {baseDir}

# 弹出浏览器窗口,显示二维码,用微信或小红书 App 扫
python -m scripts qrcode --headless=false

# 检查登录还在不在
python -m scripts check-login

无头环境里二维码存到 {baseDir}/data/qrcode.png。传给别人扫也行。

2. 搜索

cd {baseDir}

# 基本搜索
python -m scripts search "关键词"

# 带条件
python -m scripts search "美食" --sort-by=最新 --note-type=图文 --limit=10

筛选选项:

  • --sort-by:综合、最新、最多点赞、最多评论、最多收藏
  • --note-type:不限、视频、图文
  • --publish-time:不限、一天内、一周内、半年内
  • --search-scope:不限、已看过、未看过、已关注
  • --location:不限、同城、附近

3. 帖子详情

cd {baseDir}

# 用搜索结果里的 id 和 xsec_token
python -m scripts feed  

# 同时加载评论
python -m scripts feed   --load-comments --max-comments=20

4. 用户主页

cd {baseDir}

# 看别人的主页
python -m scripts user  [xsec_token]

# 看自己的主页
python -m scripts me

5. 评论互动

先确认再发。 跑之前用 AskUserQuestion 把评论内容亮出来让用户确认。

cd {baseDir}

# 发评论
python -m scripts comment   --content="好棒的笔记!"

# 回复别人的评论
python -m scripts reply   --comment-id= --reply-user-id= --content="感谢分享"

# 通过通知页回复(更安全)
python -m scripts reply-notification --content="谢谢关注" --index=0

6. 点赞 / 收藏

先确认再操作。AskUserQuestion 把目标帖子亮出来让用户确认。

cd {baseDir}

# 点赞 / 取消
python -m scripts like  
python -m scripts unlike  

# 收藏 / 取消
python -m scripts collect  
python -m scripts uncollect  

7. 首页推荐流

cd {baseDir}
python -m scripts explore --limit=20

8. 发布笔记

先确认再发。 跑之前用 AskUserQuestion 把标题、正文、图片亮出来让用户确认。

cd {baseDir}

# 图文笔记(默认停在发布按钮,加 --auto-publish 自动发)
python -m scripts publish --title="标题" --content="正文" --images="img1.jpg,img2.jpg" --tags="旅行,美食"

# 视频笔记
python -m scripts publish-video --title="标题" --content="描述" --video="video.mp4" --tags="vlog"

# Markdown 渲染成图片再发
python -m scripts publish-md --title="标题" --file=article.md --tags="干货"
python -m scripts publish-md --title="标题" --text="# 正文\n内容..." --width=1080

# 长文笔记(创作者中心"写长文")
python -m scripts publish-longform --title="长文标题" --content="长文正文内容..."

# 定时发布
python -m scripts publish --title="标题" --content="正文" --images="img.jpg" --schedule-time="2025-03-01 12:00"

9. 写作模板

cd {baseDir}

# 生成模板(标题建议 + 内容框架 + 标签推荐)
python -m scripts template --topic="旅行攻略"
python -m scripts template --topic="美食探店" --type=视频
python -m scripts template --topic="学习方法" --type=长文

10. 运营策略

cd {baseDir}

# 设账号定位
python -m scripts strategy-init --persona="旅行博主" --audience="18-35岁旅行爱好者" --direction="旅行攻略,小众目的地"

# 看当前策略
python -m scripts strategy-show

# 查今日互动配额
python -m scripts strategy-check-limit --limit-type=likes
python -m scripts strategy-check-limit --limit-type=comments

# 加内容日历
python -m scripts strategy-add-post --date="2025-03-01" --topic="春日出行攻略" --type=图文

11. SOP 编排

cd {baseDir}

# 发布 SOP(选题分析 -> 内容校验 -> 模板生成 -> 发布准备)
python -m scripts sop --type=publish --topic="旅行攻略" --note-type=图文

# 推荐流互动 SOP(模拟真人浏览行为)
python -m scripts sop --type=explore --feed-count=10 --like-prob=0.3 --collect-prob=0.1

# 评论互动 SOP(逐条回复,带配额控制)
python -m scripts sop --type=comment --replies='[{"feed_id":"abc","xsec_token":"xyz","content":"好棒"}]'

数据提取路径

数据类型JavaScript 路径
搜索结果window.__INITIAL_STATE__.search.feeds
帖子详情window.__INITIAL_STATE__.note.noteDetailMap
互动状态window.__INITIAL_STATE__.note.noteDetailMap[id].note.interactInfo
用户信息window.__INITIAL_STATE__.user.userPageData
用户笔记window.__INITIAL_STATE__.user.notes
推荐流window.__INITIAL_STATE__.feed.feeds

Vue Ref 解包: 始终用 .value._value

const data = obj.value !== undefined ? obj.value : obj._value;

反爬保护

内置多层防护,尽量避免触发验证码:

  • 频率控制:两次导航间自动等 3-6 秒。连续 5 次请求后冷却 10 秒。
  • 真人化延迟:点击前等 1-2.5s,点击后冷却 5-12s。每 3 次交互批次冷却 15-30s。
  • 真人化发布:标题填写延迟 0.5-1.5s。正文逐字输入,每字 20-60ms。步骤间隔随机。
  • 频率检测:自动识别 toast 提示("频繁"、"操作太快"、"稍后再试")。
  • 失败重试:评论提交失败自动重试一次(间隔 2-4s)。
  • 验证码检测:检测到安全验证重定向时抛出 CaptchaError
  • 每日配额:策略模块追踪每天互动次数,防止超。

触发验证码了怎么办:

  1. 等几分钟再试。
  2. cd {baseDir} && python -m scripts qrcode --headless=false 手动过验证。
  3. Cookie 失效了就重新扫码登录。

输出格式

所有命令输出 JSON。搜索结果长这样:

{
  "id": "abc123",
  "xsec_token": "ABxyz...",
  "title": "帖子标题",
  "type": "normal",
  "user": "用户名",
  "user_id": "user123",
  "liked_count": "1234",
  "collected_count": "567",
  "comment_count": "89"
}

文件结构

{baseDir}/
├── SKILL.md              # 本文件
├── README.md             # 项目文档
├── requirements.txt      # Python 依赖
├── LICENSE               # MIT
├── data/                 # 运行时数据(二维码、调试输出)
├── scripts/              # 核心模块
│   ├── __init__.py       # 模块导出(v1.3.0)
│   ├── __main__.py       # CLI 入口(22+ 子命令)
│   ├── client.py         # 浏览器客户端(频率控制 + 验证码检测)
│   ├── login.py          # 二维码登录流程
│   ├── search.py         # 搜索(多条件筛选)
│   ├── feed.py           # 帖子详情提取
│   ├── user.py           # 用户主页提取
│   ├── comment.py        # 评论(发表/回复/通知页 + 延迟 + 重试)
│   ├── interact.py       # 点赞收藏(延迟 + 频率检测 + 批次冷却)
│   ├── explore.py        # 推荐流提取
│   ├── publish.py        # 发布(图文/视频/Markdown/长文 + 延迟)
│   ├── templates.py      # 写作模板引擎
│   ├── strategy.py       # 运营策略(配额/日历/定位)
│   └── sop.py            # SOP 编排引擎
└── tests/                # 单元测试
    ├── test_client.py
    ├── test_login.py
    ├── test_search.py
    ├── test_feed.py
    ├── test_user.py
    ├── test_comment.py
    ├── test_interact.py
    ├── test_publish.py
    ├── test_templates.py
    ├── test_strategy.py
    └── test_sop.py

跨平台兼容

环境无头模式有头(扫码登录)备注
WindowsOKOK主力开发环境
WSL2 (Win11)OK用 WSLg需要 playwright install-deps
Linux 服务器OK不适用二维码存图片文件

注意

  1. Cookie 过期:定期会过期。check-login 返回 false 就重新登录。
  2. 频率限制:猛抓会出验证码。别关内置频率控制。
  3. xsec_token:跟会话绑定的。始终用搜索结果里最新的。
  4. 配额管理:用 strategy-check-limit 查剩余配额,别超过。
  5. 别滥用:会封号。本工具仅供学习研究用。

Related skills

小红书 / Xiaohongshu / RedNote AI Agent Skill。用 Python Playwright 搜索和读取内容、管理登录会话、发布图文/视频/长文、评论、点赞和收藏;默认输出 JSON,任何写操作都必须先获得用户确认。用户提到 xiaohongshu、小红书、rednote、小红书搜索、发到小红书、小红书笔记分析、小红书运营或小红书自动化时触发。

Use for Xiaohongshu/RED hot notes, trends, note generation/rewrite, authorized account weight, login, publish, schedule, and post-publish review. Not for una...

仅处理小红书(xiaohongshu / xhs / 红笔记)平台的公开数据:笔记搜索、详情、评论、博主作品。当用户的任务明确涉及小红书内容时使用本技能;抖音、B站、微博、公众号不适用。即使用户没说"小红书",只要链接是 xiaohongshu.com 或语境是红笔记也适用。不用于跨平台或登录态数据。

1 installs

仅处理小红书(xiaohongshu / xhs / 红笔记)平台的公开数据:笔记搜索、详情、评论、博主作品。当用户的任务明确涉及小红书内容时使用本技能;抖音、B站、微博、公众号不适用。即使用户没说"小红书",只要链接是 xiaohongshu.com 或语境是红笔记也适用。不用于跨平台或登录态数据。

单独获取小红书笔记的评论内容、评论者信息与互动数据,便于观点聚类与情绪分析。当用户想分析某条小红书笔记评论区在讨论什么、识别高频反馈或负面声音时使用本技能;即使用户没说"评论分析",只要给了笔记链接并关心受众反馈也适用。与笔记详情的区别:只取评论不取正文。不用于发评论或互动。

1 installs