# Rednote

> Use when the user wants to operate Xiaohongshu (RedNote) from the terminal with the `@skills-store/rednote` CLI, including browser setup, login, environment checks, feed browsing, note inspection, profile lookup, and publishing.

- Skill: `skills-router/rednote` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add skills-router/rednote`
- Raw SKILL.md: https://api.skillmd.com/api/skills/skills-router/rednote/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: skills-router (https://skillmd.com/u/skills-router)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/skills-router/rednote

---


# Rednote Commands

Use this skill only for the CLI command surface of `@skills-store/rednote` when the user wants to operate Xiaohongshu from the terminal.

Focus on:

- the exact command to run
- the minimum required flags
- the correct command order
- practical, copy-paste-ready examples

## Preferred command style

Prefer global-install examples first:

```bash
npm install -g @skills-store/rednote
bun add -g @skills-store/rednote
rednote <command> [...args]
```

Only mention `npx -y @skills-store/rednote ...` if the user explicitly asks for one-off execution without global installation.

Only show local repo commands if the user is explicitly developing the CLI.

Use `rednote --version` when the user wants to confirm the installed `@skills-store/rednote` version before troubleshooting or upgrading.

For Xiaohongshu operation commands, default to omitting `--instance`. Assume the CLI uses the current or default connected instance unless the user explicitly asks to target a named instance.

If `browser list` shows no custom instance yet, tell the user to create one first with `rednote browser create --name <NAME> ...`. A name is required; prefer a short, stable name such as `seller-main`.

## Feature overview

| Command | Purpose | Key required flags | Recommended when | Notes |
| --- | --- | --- | --- | --- |
| `browser` | Manage reusable browser instances | `create` requires `--name` | The user needs to create, inspect, or connect a browser profile | See `references/browser.md` for detailed subcommands |
| `--version` | Show installed CLI version | None | The user is checking install state or troubleshooting | Useful before upgrade/debugging |
| `env` | Check local runtime and dependencies | None | The user is debugging setup or installation | Supports JSON output with `--save` |
| `status` | Check current instance and login state | None | The user wants a quick health check before running other commands | Good after `browser connect` |
| `check-login` | Verify whether the current session is still valid | None | The user only wants to know whether login is still active | Lighter than full login flow |
| `login` | Log in to Xiaohongshu in the connected browser | None | The browser is connected but not authenticated | On success, show the returned QR code image to the user |
| `home` | Read the current recommendation feed | None | The user wants candidate notes from the personalized feed | Good starting point before detail lookup |
| `search` | Search notes by keyword | `--keyword` | The user wants notes for a topic or query | Use before choosing a note to inspect |
| `get-feed-detail` | Fetch structured note detail | Prefer `--id`; `--url` only if the user only has a URL | The user wants title, content, stats, media, or comments for one note | Prefer internal note ID for stability |
| `get-profile` | Fetch author/account profile data | `--id` | The user wants author info or the author's notes | Supports `--mode profile` and `--mode notes` |
| `interact` | Like, collect, or comment on one note | Prefer `--id`; keep `--url` as fallback, plus one of `--like`, `--collect`, `--comment` | The user wants to engage with a note | Use `get-feed-detail` first if they want to inspect before acting |
| `publish` | Publish or save drafts | Depends on content type | The user wants to post image, video, or article content | Usually requires connected and logged-in browser |

## Core workflow

Use this sequence for most live Xiaohongshu operations:

1. `rednote env`
2. `rednote browser list`; if no custom instance exists, create one with `rednote browser create --name seller-main --browser chrome --port 9222`
3. `rednote browser connect`
4. `rednote login` or `rednote check-login`
5. `rednote status`
6. Run `home`, `search`, `get-feed-detail`, `get-profile`, `publish`, or `interact`

If the user needs exact browser subcommands, flags, or examples, open `./references/browser.md`.

If the instance is blocked by a stale profile lock, check `./references/browser.md` for the force reconnect command.

## Common use cases

### Find posts from the home feed

Read the current recommendation feed:

```bash
rednote home --format md
rednote home --format json --save ./output/home.jsonl
```

Use `home` when the user wants to browse candidate posts from the personalized feed before choosing one to inspect or comment on.

### Find posts by keyword

Search by keyword:

```bash
rednote search --keyword 护肤
rednote search --keyword 护肤 --format json --save ./output/search.json
```

Use `search` when the user wants candidate notes for a topic instead of the home feed.

### Get one note's detail

Prefer the internal note ID:

```bash
rednote get-feed-detail --id NOTE_ID
rednote get-feed-detail --id NOTE_ID --format json --save ./output/feed-detail.json
rednote get-feed-detail --id NOTE_ID --comments --format json --save ./output/feed-detail-with-comments.json
rednote get-feed-detail --id NOTE_ID --comments 100 --format json --save ./output/feed-detail-100-comments.json
```

Only use `--url` if the user only has a note URL and does not have the internal ID yet.

```bash
rednote get-feed-detail --url "https://www.xiaohongshu.com/explore/xxx?xsec_token=yyy"
```

Use `get-feed-detail` after `home` or `search` when the user wants the title, content, interaction data, and media before taking an action. Add `--comments` only when comment data is needed.

### Interact with one note

Prefer the internal note ID:

```bash
rednote interact --id NOTE_ID --like --collect
rednote interact --id NOTE_ID --like --collect --comment "内容写得很清楚，步骤也很实用，感谢分享。"
```

Only use `--url` if the user only has a note URL and does not have the internal ID yet.

```bash
rednote interact --url "https://www.xiaohongshu.com/explore/xxx?xsec_token=yyy" --like --collect
```

Use `interact` when the user wants one command entrypoint for like, collect, or comment. Recommend `--id` first because it is the preferred and more stable input; keep `--url` as a fallback. Combine `--like`, `--collect`, and `--comment TEXT` to perform multiple operations in one command. Use `--comment TEXT` for replies; there is no standalone `comment` command.

### Publish content

Publish content for an authenticated instance.

Video note:

```bash
rednote publish --type video --video ./note.mp4 --title 标题 --content 描述 --tag 穿搭 --tag 日常 --publish
```

Image note:

```bash
rednote publish --type image --image ./1.jpg --image ./2.jpg --title 标题 --content 描述 --tag 探店 --publish
```

Article:

```bash
rednote publish --type article --title 标题 --content $'# 一级标题\n\n正文' --publish
```

Use `publish` when the user wants to post or save drafts from an authenticated browser instance.

## End-to-end examples

### Home → detail → interact comment

Find a post, inspect it, then reply:

```bash
rednote home --format md
rednote get-feed-detail --id NOTE_ID
rednote interact --id NOTE_ID --comment "谢谢分享，信息整理得很完整，对我很有帮助。"
```

### Home → detail → like or collect

Inspect a post, then like or collect it:

```bash
rednote home --format md
rednote get-feed-detail --id NOTE_ID
rednote interact --id NOTE_ID --like --collect
```

### Search → detail → interact comment

Start from a keyword, then inspect the note and reply:

```bash
rednote search --keyword 低糖早餐 --format md
rednote get-feed-detail --id NOTE_ID --comments --format json --save ./output/feed-detail-with-comments.json
rednote get-feed-detail --id NOTE_ID --comments 100 --format json --save ./output/feed-detail-100-comments.json
rednote interact --id NOTE_ID --comment "这份搭配看起来很实用，食材和步骤都写得很清楚。"
```

### Inspect profile after finding a post

Check the author before engaging:

```bash
rednote get-feed-detail --id NOTE_ID --format json --save ./output/feed-detail.json
rednote get-profile --id USER_ID --mode profile
rednote get-profile --id USER_ID --mode notes --format json --save ./output/profile-notes.json
```

## Command reference

### `browser`

Use `browser list` to inspect default browsers, custom instances, stale locks, and the current `lastConnect` target.

Use `browser create` to create a reusable named browser profile for later account-scoped commands. Creation requires `--name`; if the user has no custom instance yet, tell them to pick a name first and then create it, for example `rednote browser create --name seller-main --browser chrome --port 9222`.

For exact `browser` subcommands, flags, and examples, open `references/browser.md`.

### `version`

```bash
rednote --version
```

Use `--version` when the user wants to check the installed `@skills-store/rednote` version.

### `env`

```bash
rednote env
rednote env --format json --save ./output/env.json
```

Use `env` when the user is debugging installation or local setup.

### `status`

```bash
rednote status
```

Use `status` to confirm whether the instance exists, is running, and appears logged in.

### `check-login`

```bash
rednote check-login
```

Use `check-login` when the user only wants to verify whether the session is still valid.

### `login`

```bash
rednote login
```

Use `login` after `browser connect` if the account is not authenticated yet.
If `login` succeeds and returns `rednote.qrCodePath`, show the QR code image to the user instead of only repeating the path so they can scan it immediately.

### `home`

```bash
rednote home --format md --save
```

Use `home` when the user wants the current home feed and optionally wants to save it.

### `search`

```bash
rednote search --keyword 护肤
rednote search --keyword 护肤 --format json --save ./output/search.json
```

Use `search` when the user wants notes by keyword.

### `get-feed-detail`

Prefer the internal note ID:

```bash
rednote get-feed-detail --id NOTE_ID
rednote get-feed-detail --id NOTE_ID --format json --save ./output/feed-detail.json
rednote get-feed-detail --id NOTE_ID --comments --format json --save ./output/feed-detail-with-comments.json
rednote get-feed-detail --id NOTE_ID --comments 100 --format json --save ./output/feed-detail-100-comments.json
```

Only fall back to URL input when the user does not have the internal note ID:

```bash
rednote get-feed-detail --url "https://www.xiaohongshu.com/explore/xxx?xsec_token=yyy"
```

Use `get-feed-detail` when the user wants structured detail data for one note. Recommend `--id` first because it is the preferred and more stable input; use `--url` only as a fallback.

- Without `--comments`, the saved JSON contains only the note item array.
- With `--comments`, each item may include a `comments` array with reduced comment fields only, using only the comments already loaded on the page. It does not scroll.
- With `--comments COUNT`, the CLI scrolls `.note-scroller` until it has collected about `COUNT` comments, reaches the end, or times out.
- In JSON mode, `--save PATH` is required, and the saved file contains only the note items array instead of the full wrapper object.

### `get-profile`

```bash
rednote get-profile --id USER_ID
rednote get-profile --id USER_ID --mode profile
rednote get-profile --id USER_ID --mode notes
rednote get-profile --id USER_ID --mode notes --format json --save ./output/profile-notes.json
```

Use `get-profile` when the user wants author or account profile information.

- `--mode profile` returns only the normalized `profile.user` data. This is the default mode.
- `--mode notes` returns only the normalized `profile.notes` list.
- When `--format json` is used, `--save PATH` is required, and the saved JSON contains only the selected mode data instead of the full wrapper object.

### `interact`

Prefer the internal note ID:

```bash
rednote interact --id NOTE_ID --like --collect
rednote interact --id NOTE_ID --like --collect --comment "内容写得很清楚，感谢分享。"
```

Only fall back to URL input when the user does not have the internal note ID:

```bash
rednote interact --url "https://www.xiaohongshu.com/explore/xxx?xsec_token=yyy" --like --collect
```

Use `interact` when the user wants a unified command for like, collect, or comment. Recommend `--id` first because it is the preferred and more stable input; use `--url` only as a fallback. Use `--comment TEXT` for replies.

### `publish`

```bash
rednote publish --type video --video ./note.mp4 --title 标题 --content 描述 --publish
rednote publish --type image --image ./1.jpg --title 标题 --content 描述 --publish
rednote publish --type article --title 标题 --content $'# 一级标题\n\n正文' --publish
```

Use `publish` when the user wants to publish or save a draft.

## JSON save rules

When the user asks for `--format json`, remember these CLI rules:

- `env`, `home`, `search`, `get-feed-detail`, and `get-profile` require `--save PATH` in JSON mode.
- The command prints only the saved file path plus a field-format example; the full payload is written to disk.
- `get-profile --mode profile` saves only the normalized user object.
- `get-profile --mode notes` saves only the normalized notes array.
- `get-feed-detail` saves only the normalized note items array; add `--comments` to include reduced comment data from the currently loaded comments, or `--comments COUNT` to scroll for more comments.

## Flag guidance

- `--instance NAME` picks the browser instance for account-scoped commands.
- `--format json` is best for scripting.
- `--format md` is best for direct reading.
- `--save PATH` is required in JSON mode for `env`, `home`, `search`, `get-feed-detail`, and `get-profile`.
- `--keyword` is required for `search`.
- Prefer `--id` for `get-feed-detail`; use `--url` only when the internal note ID is unavailable.
- Prefer `--id` for `interact`; use `--url` only when the internal note ID is unavailable.
- `interact` uses `--comment TEXT` for comment content; there is no standalone `comment` command.
- `interact` requires either `--id` or `--url`, plus at least one of `--like`, `--collect`, or `--comment TEXT`.
- `--id` is required for `get-profile`.
- `--type`, `--title`, `--content`, `--video`, `--image`, `--tag`, and `--publish` are the main `publish` flags.
- `publish` usually requires a connected and logged-in instance before running; without `--publish`, it saves a draft.

## Response style

When answering users:

- lead with the exact command they should run
- include only the flags needed for that task
- prefer one happy-path example first
- mention `browser connect` and `login` if the command requires an authenticated instance
- if no custom instance exists yet, first tell the user to create one and call out that `--name` is required
- recommend `home` or `search` first when the user still needs to find a post
- recommend `get-feed-detail` before `interact --comment` when the user wants to inspect the post before replying
- for `get-feed-detail`, recommend `--id` first and treat `--url` as a fallback only
- for `interact`, recommend `--id` first and treat `--url` as a fallback only

## Troubleshooting

If a command fails, check these in order:

- the instance name is correct
- the browser instance was created or connected; if no custom instance exists yet, create one first with `rednote browser create --name NAME ...`
- login was completed for that instance
- the profile was not blocked by a stale lock; if it was, run `rednote browser connect --instance NAME --force`
- the user provided the required flag such as `--keyword`, `--id` or `--url`, `--comment`, or `--content`

