小红书自动发布助手

Draft and publish posts to 小红书 (Xiaohongshu/RED). Use when creating content for 小红书, drafting posts, generating cover images, or publishing via browser automation. Covers the full …

yuf1011

@yuf1011

What This Skill Does

Drafts, formats, and publishes posts to 小红书 (Xiaohongshu/RED) through browser automation. Covers the full workflow from content creation and cover image generation (1080×1440 PNG with Pillow) to browser-based publishing, with a mandatory user review step before posting.

Replaces manual copy-paste and browser navigation for each 小红书 post by automating the entire publishing pipeline from draft to approval to live post.

When to Use It

  • Schedule daily 小红书 posts with cron and an isolated agent session
  • Generate a 小红书 cover image with title, subtitle, and tags using Pillow
  • Draft a 小红书 post following platform-specific style rules (emoji hooks, short paragraphs, hashtags)
  • Publish a 小红书 post via browser automation after user approval
  • Fall back to manual publishing when browser automation is unavailable (e.g., CDP issues on macOS)

Install

$ openclaw skills install @yuf1011/xiaohongshu-publisher

小红书 Publisher

Create, format, and publish posts to 小红书 (Xiaohongshu/RED) through browser automation.

Requirements

  • Python 3 with Pillow (pip install Pillow or apt install python3-pil)
  • CJK fontsfonts-noto-cjk on Linux (apt install fonts-noto-cjk), or Noto Sans CJK via Homebrew on macOS
  • OpenClaw browser tool — access to a browser with the user logged into 小红书 creator portal
  • A connected OpenClaw node (or sandbox browser) with Chrome/Chromium for browser automation

Overview

This skill handles the complete 小红书 publishing pipeline:

  1. Draft — Write post content in 小红书 style
  2. Cover — Generate a cover image (1080×1440)
  3. Review — Send draft to user for approval via messaging channel
  4. Publish — Use browser automation to post (or deliver for manual posting)

Workflow

Step 1: Draft Content

Create post content following 小红书 style. See references/content-guide.md for formatting rules, structure, and examples.

Key rules:

  • Title ≤20 chars, with emoji hook
  • Use --- section breaks, emoji bullets, short paragraphs
  • End with question CTA + hashtags (8-12 tags)
  • Save draft to memory/xiaohongshu-draft.md

Step 2: Generate Cover Image

Run the cover generation script:

python3 <skill-dir>/scripts/gen_cover.py --title "主标题" --subtitle "副标题" --tags "标签1,标签2,标签3" --output /path/to/cover.png

Options:

  • --title — Main title (large text, required)
  • --subtitle — Subtitle line (medium text, optional)
  • --tags — Comma-separated feature tags shown as pills (optional)
  • --badge — Top-right badge text (default: "OpenClaw")
  • --output — Output path (default: cover.png)
  • --gradient — Color scheme: purple (default), blue, green, orange, dark

Output: 1080×1440 PNG with gradient background, decorative elements, CJK text.

Step 3: Send for Review

Send the draft content + cover image to the user's messaging channel for review. Format:

📝 小红书草稿 — [主题]

标题:[标题]

[正文内容]

封面图已生成:[path]

请确认:
✅ 可以发布
✏️ 需要修改
❌ 不发

Never auto-publish. Always wait for explicit user approval.

Step 4: Publish via Browser

After user approval, publish using browser automation on the configured node.

See references/browser-publish.md for the complete browser automation steps.

Summary:

  1. Navigate to https://creator.xiaohongshu.com/publish/publish
  2. Enter title and body text
  3. Upload cover image via browser upload action
  4. Click publish

Fallback: Manual Publishing

If browser automation is unavailable (CDP issues, node offline, etc.), send the complete post to the user's channel with all content formatted for easy copy-paste:

📋 小红书发帖内容(请手动发布)

【标题】[标题]

【正文】
[正文内容]

【标签】[hashtags]

封面图:[path to cover image]

Known Limitations

  • Mac Chrome CDP: Chrome launched via SSH/node may fail to bind --remote-debugging-port on macOS (GUI session required). If browser start fails, fall back to manual publishing.
  • Login state: 小红书 creator portal requires login. If the session has expired, ask the user to re-login in their browser before proceeding.
  • Pillow emoji: Pillow cannot render color emoji (NotoColorEmoji.ttf) — use text/icon alternatives in cover images.

Cron Integration

This skill works with cron jobs for scheduled daily posting. Typical cron setup:

Schedule: 0 8 * * * (Asia/Shanghai)
Session: isolated agentTurn
Delivery: announce to user's channel

The cron job message should reference this skill and include the content plan/topic for the day.

Top skills in this category

Playwright MCP

@spiceman161

Browser automation via Playwright MCP server. Navigate websites, click elements, fill forms, extract data, take screenshots, and perform full browser automation workflows.

15845k

Content Strategy

@jk-0001

Build and execute a content marketing strategy for a solopreneur business. Use when planning what content to create, deciding on content formats and channels, building a content calendar, measuring content performance, or systematizing content production. Covers audience research for content, content pillars, distribution strategy, repurposing workflows, and metrics. Trigger on "content strategy", "content marketing", "what content should I create", "content plan", "content calendar", "content ideas", "content distribution", "grow through content".

1311k

Agent Browser

@matrixy

Headless browser automation CLI optimized for AI agents with accessibility tree snapshots and ref-based element selection

453152k

Browser Use

@shawnpana

Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with w...

11475k

Playwright (Automation + MCP + Scraper)

@ivangdavila

Automates, tests, and debugs browsers with Playwright: locators, auto-waiting, traces, CI runs, and MCP browser control. Use when a test is flaky, times out, or fails only in CI or headless; when a locator matches multiple elements or the wrong one (strict mode violation); when clicks need force, waits become sleeps, or networkidle never settles; for storageState and login setup, request mocking and HAR replay, uploads and downloads, iframes and shadow DOM, popups and dialogs, screenshot diffs that change per machine, trace and report artifacts, sharding a slow suite, device and permission emulation, accessibility checks, driving a real browser through Playwright MCP, extracting data from JS-rendered pages, or porting a Cypress, Puppeteer, or Selenium suite to Playwright. Not for maintaining an existing Cypress or Puppeteer suite (cypress, puppeteer) or for work a plain HTTP request answers (http).

12839k