Find shipping leads on Xiaohongshu
Every morning it reads Xiaohongshu like a person, finds the people who ask for or complain about shipping to the US, and lists each with a reply a Pindo operator can send.
On Xiaohongshu, the people who need a shipping service say so in public: a post asking who to use for 集运 in New York, a comment under someone else’s haul that asks how it got to the US, a complaint about a service that lost a parcel. Nobody on a small team can search a dozen words every day, open the posts, read the comments and tell the ones who are ready to buy from the ones who are only chatting.
Running for Pindo since Oct 24, 2026 · Xiaohongshu · Risk: Medium. This page is for Pindo’s team. It is not indexed and not linked from the site.
Tasks and outputs
What it takes on
Browse
Searches the keyword library filtered to the last 7 days, scrolls, opens the best-looking posts and reads their comments, with random human-paced pauses between steps.
Judge
Decides for each author of a post or comment whether they are a lead, what they need, what they ship and how strong the intent is.
Draft a reply
Writes a short reply to the client’s voice guide and fact sheet, for a person to send.
Record
Checks every row against the rules and writes it to the ledger and one line to the run log.
Who it is for: A business that sells to overseas Chinese on Xiaohongshu and has people who reply to prospects by hand: it finds the prospects and drafts the reply, and a person sends it.
How it is used for Pindo: We build and run it for our client Pindo, a Taobao 拼邮 and 集运 service for overseas Chinese. It is phase 1 of the brief: collect and draft only. Automatic replies and direct messages are not built, and nothing in this agent can post.
What every lead and reply is held to
01The agent only reads. It never comments, likes, follows, collects or sends a message on Xiaohongshu.
02A lead is a person who, in the last 7 days, asked for or complained about 转运, 拼邮, 集运 or sending goods back to China. A seller’s ad or a competitor’s post is not a lead.
03The nickname, the link and the time come from the page, never from the session. A person already in the ledger within 30 days is skipped.
04A reply is short, in the voice guide’s tone, with no contact detail and no absolute claim, and states only facts that are on the client’s fact sheet.
05The pace is human: random pauses at every step, a fixed cap of keywords, posts and comments per run, a time limit, and a stop at the first captcha, rate-limit page or login wall.
06The agent reads as a dedicated account, never the client’s main one.
The rules the agent’s output is written to, from the file named above. This site prints no example output; what the agent has shipped is in its run log.
Workflow
How a run goes, step by step
Pick a step to see what goes in, what comes out, and where a person is involved.
Step 1 of 5
Check the browser
Confirms the dedicated Chrome is up, signed in to Xiaohongshu and signed in as the account named in the configuration. If not, the run stops here.
The dedicated Chrome on its DevTools port
A go or a stop
None. A person signs in once, and again if the login expires.
Step 2 of 5
Collect
Searches a selection of keywords, filters to the last 7 days, scrolls, opens posts and reads their comments, with a random pause at every step. It stops at a captcha, a rate-limit page, a login wall or its time limit and keeps what it read.
The keyword library and the run size
A candidates file for the day
None. A captcha stops the run; a person solves it in the dedicated window.
Step 3 of 5
Judge
A Claude Code session reads the candidates as data and decides who is a lead, the need, the goods, the city and the intent grade, and writes a reply to the voice guide.
The candidates file, the voice guide and the client’s fact sheet
A list of graded leads with draft replies
None.
Step 4 of 5
Write the ledger
The ledger script checks each lead (reply length, no contact detail, no absolute claim, not already listed within 30 days) and writes the rows. The nickname, link and time are taken from the page.
The graded leads
Rows in leads.md and a line in run-log.md
None.
Step 5 of 5
Publish the record
The wrapper commits the two ledgers, pushes and deploys, so the run shows on the run page.
The two ledgers
This run page
A person at the client opens the row, sends the reply or not, and sets the status.
Before you start
What you’ll need to bring
Company material
The client’s fact sheet (prices, routes, times, what it ships and what it does not), a voice guide and the list of competitors not to name.
Source material
Xiaohongshu search and post pages, read through a signed-in browser.
Platform account
A Xiaohongshu account for the browser to read as. Use one you can afford to lose.
Run environment
A machine with Node.js, Chrome with a DevTools port and Claude Code. The run is slow on purpose, 20 to 60 minutes, and is meant to start from Windows Task Scheduler.
Guides and files
How it is set up
The setup guide, and the files the agent is built from. ClawWorld runs it for the client on its own machine.
- 01
Runtime
- A machine that stays on, with Node.js, Claude Code and Chrome installed, and a scheduler. The collector is slow on purpose, so a run takes 20 to 60 minutes.
- A separate checkout of the repository for the scheduled run, so the wrapper can reset it without touching anyone’s working tree.
- 02
Browser setup
- The debug Chrome our other browser agents already use (DevTools port 9222, started by a small script). It is not the Chrome you browse with.
- Sign in to Xiaohongshu once in that window, as another tab next to the other agents’ logins. The agent never types a password.
- 03
Account setup
- A Xiaohongshu account for the browser to read as. Set its nickname in the configuration so a run stops if the window is signed in as someone else.
- The account is only read from: the agent never comments, likes, follows, collects or sends.
- 04
Configuration
- The keyword groups, the size of one run (keywords, posts, comments), the most rows per run, the time limit, the look-back window (7 days), the cooldown for a person already in the ledger (30 days), the longest reply and a delay multiplier for the pauses.
- The client’s fact sheet and the voice guide, which the reply is written to. A fact not on the sheet is not allowed in a reply.
- 05
First run
- Check the browser: it must report that it is signed in. Then run the collector with --probe on one keyword and read what it saw against the real page.
- Run a dry run (one keyword, two posts, scratch ledgers) and read the rows it would have written. Nothing is committed in a dry run.
- Only then register the daily task. Watch the first three runs and cut or add keywords from the Keyword column.
collect.mjs
Script · Node. The human-paced collector: search, scroll, open posts and read comments, with random pauses and the stop conditions.
human.mjs
Script · Node. The random delays, scrolls and pauses that keep the pace like a person’s.
browser.mjs
Script · Node. Connects to the dedicated Chrome and checks the sign-in.
selectors.mjs
Script · Node. Where the script looks on each Xiaohongshu page. The one file a self-repair may change.
parse.mjs
Script · Node. Turns what the pages showed into candidates, with the post time and the nickname.
ledger.mjs
Script · Node. Checks each lead and writes the ledger and the run log.
ledger-format.mjs
Script · Node. The ledger format, shared with this run page.
config.mjs
Config · Node. The keyword groups, run size, time limit, look-back, cooldown and delay multiplier.
voice.md
Config · Markdown. The voice guide the replies are written to.
xhs-leads.md
Workflow · Markdown. The written workflow a Claude Code session follows.
run-xhs-leads.ps1
Scheduler · PowerShell. What the scheduler calls: checks the browser, collects, runs the session, commits the ledgers and deploys.
The files live in ClawWorld’s repository and are not offered for download. The guide on the left describes what each one does.
Run log
Recent runs, as they happened
The full log is read-only. It holds every run on record, including the ones that stopped to wait for a person, and what each run wrote.
View the full run logGood to know
Where it stops and asks for you
- A captcha, a rate-limit page or a login wall appears. The run stops at once, keeps what it read and records why. It does not try again through it.
- The browser is not signed in, or as another account. The run stops before reading a page.
- The page no longer looks as the script expects. The run stops, may repair its own selectors file after a dry check, and records it.
- A draft has a contact detail, an absolute claim or a fact not on the sheet. That row is not written; the others are.
- The time limit or the row cap is reached. The run ends with what it has.
Risk notice
What to watch for
- Driving Xiaohongshu with a script is against the platform’s terms. The account the browser reads as can be limited or banned. The pace, the cap and the stop at the first captcha reduce the chance; nothing removes it.
- The page can change under the script. A run that finds the page no longer looks as expected stops and may repair its own selectors file, which is checked by a dry probe before it is committed.
- The ledger holds public nicknames and links of people outside the team. The page that shows it is not indexed and not linked from the site, and it is for the client’s team. Do not put it anywhere else.
- The intent grade is a judgement by a model reading short texts. Some “high” leads will be nothing. A person reads every row before replying.
- The reply is a draft for a person. Nothing in this agent contacts anyone.
FAQ
Questions about this agent
Will Xiaohongshu ban the account?
It can, and that is the main risk of this agent. It reads at human speed, a few dozen pages a run, never writes anything, and stops at the first captcha. That lowers the risk; it does not remove it. Use an account you can afford to lose, not the brand’s main one.
Why does it not send the reply itself?
Phase 1 is to prove the leads are real. A person reads each draft and sends it from the client’s account, or does not. Automatic replies and direct messages are phase 2, after the leads have been read for a week.
The run stopped at a captcha.
It records that in the run log as blocked, keeps the partial result and stops. A person solves the captcha in the dedicated window; the next day’s run carries on. Raise the delay multiplier if it repeats.