Youhai020616

πŸ“• xiaohongshu-skill

Community Youhai020616
Updated

AI-powered Xiaohongshu (小纒书/RED) automation β€” publish, search, engage, analyze. MCP + CDP.

πŸ“• 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 -rod proxy 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 characters
  • content (string, required) β€” Post body, max 1000 characters. Do NOT include hashtags here
  • images (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 content
  • schedule_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_status has a DOM detection bug β€” use search_feeds with any keyword to verify login state
  • Post ID: publish_content may return an empty PostID β€” this is normal. Use search_feeds with 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
  • visibility values: Must be in Chinese: 公开可见, δ»…θ‡ͺ己可见, δ»…δΊ’ε…³ε₯½ε‹ε―见
  • schedule_at range: 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

MCP Server Β· Populars

MCP Server Β· New