π xiaohongshu-skill
AI-powered Xiaohongshu (ε°ηΊ’δΉ¦/RED) automation β publish, search, engage, and analyze.
Features β’ Quick Start β’ MCP Tools β’ CDP Scripts β’ OpenClaw β’ Claude Code β’ License
What is this?
A complete toolkit for automating Xiaohongshu (ε°ηΊ’δΉ¦/RED Note) operations through two complementary engines:
| Engine | Technology | Use Cases | Startup |
|---|---|---|---|
| MCP Server | Go binary, JSON-RPC | Publish, search, comment, like, follow | Always-on daemon |
| CDP Scripts | Python, Chrome DevTools | Analytics dashboard, notifications, advanced search | On-demand |
Built as an OpenClaw Skill, but works standalone or with any MCP-compatible client (Claude Code, Cursor, etc.).
Features
- π Publish β Image posts and video posts with tags, scheduling, and visibility control
- π Search β Keyword search with filters (sort, note type, suggested keywords)
- π¬ Engage β Comment, reply, like, favorite on any post
- π€ Profile β Fetch any user's profile and posts
- π Analytics β Creator dashboard data export (CSV), content performance metrics
- π Notifications β Fetch mentions and interaction notifications
- π₯ Multi-Account β Isolated Chrome profiles per account
- π QR Code Login β Scan-to-login, persistent cookie storage
Quick Start
Prerequisites
- macOS (Apple Silicon) β MCP binary is pre-built for
darwin-arm64 - Python 3.9+ (for CDP scripts)
- Google Chrome (for CDP scripts and QR login)
- A proxy/VPN if outside China (MCP requires
-rodproxy flag)
1. Clone
git clone https://github.com/Youhai020616/xiaohongshu-skill.git
cd xiaohongshu-skill
2. Start MCP Server
cd mcp
chmod +x xiaohongshu-mcp-darwin-arm64
# Without proxy (inside China)
./xiaohongshu-mcp-darwin-arm64 -port :18060
# With proxy (outside China)
./xiaohongshu-mcp-darwin-arm64 -port :18060 -rod "proxy=http://127.0.0.1:7897"
3. Login
On first run, get a QR code to scan with your Xiaohongshu app:
curl -s -X POST http://127.0.0.1:18060/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"cli","version":"1.0"}}}'
# Save the Mcp-Session-Id from response headers
curl -s -X POST http://127.0.0.1:18060/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Mcp-Session-Id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
curl -s -X POST http://127.0.0.1:18060/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Mcp-Session-Id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_login_qrcode","arguments":{}}}'
Or use the login helper binary:
cd mcp
./xiaohongshu-login-darwin-arm64
4. Publish Your First Post
curl -s -X POST http://127.0.0.1:18060/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Mcp-Session-Id: YOUR_SESSION_ID" \
-d '{
"jsonrpc":"2.0","id":3,
"method":"tools/call",
"params":{
"name":"publish_content",
"arguments":{
"title":"Hello from API π",
"content":"My first automated post on Xiaohongshu!",
"images":["/path/to/image.jpg"],
"tags":["ζ΅θ―","θͺε¨ε"]
}
}
}'
MCP Tools
The MCP server exposes these tools via the Model Context Protocol:
| Tool | Description | Key Parameters |
|---|---|---|
check_login_status |
Check if logged in | β |
get_login_qrcode |
Get QR code for login (base64) | β |
delete_cookies |
Reset login state | β |
publish_content |
Publish image post | title, content, images, tags?, visibility?, is_original?, schedule_at? |
publish_with_video |
Publish video post | title, content, video (local path), tags?, visibility?, schedule_at? |
search_feeds |
Search posts by keyword | keyword, filters? |
get_feed_detail |
Get post details + comments | feed_id, xsec_token, load_all_comments? |
post_comment_to_feed |
Comment on a post | feed_id, xsec_token, content |
reply_comment_in_feed |
Reply to a comment | feed_id, xsec_token, comment_id, user_id, content |
like_feed |
Like / unlike a post | feed_id, xsec_token, unlike? |
favorite_feed |
Favorite / unfavorite a post | feed_id, xsec_token, unfavorite? |
list_feeds |
Get homepage feed | β |
user_profile |
Get user profile + posts | user_id, xsec_token |
get_self_info |
Get own account info | β |
MCP Session Protocol
The MCP server uses Streamable HTTP transport. Every request must include:
Content-Type: application/json
Accept: application/json, text/event-stream
Mcp-Session-Id: <from initialize response header>
Session lifecycle: initialize β notifications/initialized β tools/call (repeat)
Parameters Reference
publish_content
title(string, required) β Max 20 Chinese characterscontent(string, required) β Post body, max 1000 characters. Do NOT include hashtags hereimages(string[], required) β Local file paths or HTTP URLs (at least 1)tags(string[], optional) β Hashtags, e.g.["ζ θ‘", "ηΎι£"]visibility(string, optional) βε ¬εΌε―θ§(default) /δ» θͺε·±ε―θ§/δ» δΊε ³ε₯½εε―θ§is_original(bool, optional) β Declare as original contentschedule_at(string, optional) β ISO 8601 datetime, e.g.2026-03-15T10:30:00+08:00
publish_with_video
video(string, required) β Local absolute path to video file only
CDP Scripts
For features the MCP server doesn't support (analytics, notifications, suggested keywords), use the Python CDP scripts:
Setup
pip install -r requirements.txt
Chrome Launcher
# Start Chrome with isolated profile
python scripts/chrome_launcher.py
# Headless mode
python scripts/chrome_launcher.py --headless
# Stop Chrome
python scripts/chrome_launcher.py --kill
Available Commands
# Login (scan QR code)
python scripts/cdp_publish.py login
# Creator dashboard data β CSV
python scripts/cdp_publish.py content-data --csv-file output.csv
# Notification mentions
python scripts/cdp_publish.py get-notification-mentions
# Search with filters
python scripts/cdp_publish.py search-feeds --keyword "AIεδΈ" --sort-by ζζ° --note-type εΎζ
# Post detail
python scripts/cdp_publish.py get-feed-detail --feed-id FEED_ID --xsec-token TOKEN
# Comment
python scripts/cdp_publish.py post-comment-to-feed --feed-id FEED_ID --xsec-token TOKEN --content "Great post!"
# Publish via CDP (alternative to MCP)
python scripts/publish_pipeline.py --headless \
--title-file title.txt --content-file content.txt \
--image-urls "https://example.com/img.jpg"
Multi-Account
python scripts/cdp_publish.py add-account work --alias "Work Account"
python scripts/cdp_publish.py --account work login
python scripts/cdp_publish.py --account work content-data
python scripts/cdp_publish.py list-accounts
OpenClaw Integration
Install as an OpenClaw skill:
# Copy to skills directory
cp -r xiaohongshu-skill ~/.openclaw/skills/xiaohongshu
# Start MCP server
cd ~/.openclaw/skills/xiaohongshu/mcp
./start.sh
The SKILL.md file provides full instructions for OpenClaw's AI agent to use the tools automatically.
Claude Code Integration
See docs/claude-code-integration.md for setup instructions with Claude Code.
Tips & Known Issues
- Login verification:
check_login_statushas a DOM detection bug β usesearch_feedswith any keyword to verify login state - Post ID:
publish_contentmay return an empty PostID β this is normal. Usesearch_feedswith your username to verify - Don't retry publishing β A timeout doesn't mean failure. Always verify before retrying
- Proxy required: Outside China, the MCP server needs
-rod "proxy=..."flag - Concurrent sessions: Don't log in to the same account from both MCP and web browser simultaneously
visibilityvalues: Must be in Chinese:ε ¬εΌε―θ§,δ» θͺε·±ε―θ§,δ» δΊε ³ε₯½εε―θ§schedule_atrange: Must be between 1 hour and 14 days from now
Platform Support
| Component | macOS ARM64 | macOS x86 | Linux | Windows |
|---|---|---|---|---|
| MCP Server | β | β | β | β |
| Login Helper | β | β | β | β |
| CDP Scripts | β | β | β | β |
The MCP binary is currently only built for macOS ARM64 (Apple Silicon). Other platform builds can be added on request.
Project Structure
xiaohongshu-skill/
βββ README.md # This file
βββ SKILL.md # OpenClaw skill definition
βββ manifest.json # Skill metadata
βββ LICENSE # MIT License
βββ requirements.txt # Python dependencies
βββ .gitignore
βββ mcp/
β βββ xiaohongshu-mcp-darwin-arm64 # MCP server binary
β βββ xiaohongshu-login-darwin-arm64 # Login helper binary
β βββ start.sh # Startup script
βββ scripts/
β βββ cdp_publish.py # Main CDP automation (2700 lines)
β βββ chrome_launcher.py # Chrome lifecycle management
β βββ publish_pipeline.py # High-level publish workflow
β βββ feed_explorer.py # Feed browsing utilities
β βββ account_manager.py # Multi-account management
β βββ image_downloader.py # Image download helper
β βββ run_lock.py # Process locking
βββ config/
β βββ accounts.json.example # Account config template
βββ docs/
βββ claude-code-integration.md # Claude Code setup guide
Contributing
Issues and PRs welcome! Areas where help is needed:
- Cross-platform MCP builds (Linux, Windows, macOS x86)
- MCP Go source code release
- Video upload improvements
- Rate limiting and retry logic
- Test suite
License
MIT
Built with β€οΈ by Youhai