xiaohongshu-content-benchmark
Benchmark Xiaohongshu posts from validated public account surfaces first, then extract reusable title hooks, cover patterns, content-type splits, and candidate angles for future XHS card production.
How do I install this agent skill?
npx skills add https://github.com/postplusai/postplus-skills --skill xiaohongshu-content-benchmarkIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill benchmarks Xiaohongshu content by scraping public profile or search data via a vendor-provided cloud bridge. It includes standard data normalization, ranking, and analysis scripts, and uses established shared libraries for network operations and runtime logging.
- Socketpass
No alerts
- Snykwarn
Risk: MEDIUM · 1 issue
What does this agent skill do?
XHS Content Benchmark
Follow shared public skill rules in:
postplus-sharedpublic skill rules
Legacy alias: xhs-content-benchmark.
Use this skill when the user wants to:
- benchmark competitor or inspiration accounts on Xiaohongshu
- identify repeated Xiaohongshu title hooks and cover patterns
- shortlist strong note examples before adapting them into local XHS cards
- compare recent post output from one or more known Xiaohongshu profiles
Read these references before implementation:
skills/20-research/xhs-content-benchmark/references/actor-selection.mdskills/20-research/xhs-content-benchmark/references/brief-schema.mdskills/20-research/xhs-content-benchmark/references/normalized-schema.md
Default posture
Start from account-based benchmarking, not broad keyword search.
Default starting surface:
- known profile URLs -> recent post benchmark pool
Do not use this as the default first surface:
- keyword or topic search as the first collection surface
Do not silently switch between surfaces. If the user asks for keyword search, use the keyword-search route explicitly and fail visibly if it returns no items.
Validated actor path
Default actor for this skill:
rednote-xiaohongshu-user-posts-scraper
Use it when the user provides:
- one or more Xiaohongshu
profileUrls - one or more Xiaohongshu
profileIds
This is the current default because it returns the post-level fields this benchmark flow needs:
- note URL
- note id
- title
- post type
- like count
- author metadata
- cover image metadata
Experimental route
Keyword route:
rednote-xiaohongshu-search-scraper
Use it only when the user explicitly wants keyword or topic benchmarking.
Current operational rule:
- require
maxItems >= 100 - fail if the actor returns zero items
Do not pretend keyword benchmarking succeeded when the actor returned an empty dataset.
Not part of this skill
- comment mining
- audience language extraction
- media downloading
- profile health snapshots
- publishing or scheduling notes
Route those later to dedicated XHS skills.
Recommended workflow
- classify the request:
- account benchmark
- keyword benchmark
- compile a small benchmark brief into actor input
- run the chosen actor through the shared collection runner
- normalize into one local post dataset
- rank by like signal plus theme relevance
- summarize:
- recurring hooks
- title pattern families
- cover aspect patterns
- content-type split
- strongest benchmark examples
Cost discipline
Validated account route:
- start with 8-15 recent posts per profile
- benchmark 1-3 profiles at a time
Experimental keyword route:
- the actor currently enforces a much higher minimum item count
- do not hide that constraint
- keep keyword batches narrow and specific
Public Skill Execution Contract
- keep benchmark briefs, actor inputs, raw datasets, normalized datasets,
rankings, and analysis outputs under
<work-folder>/.postplus/xiaohongshu-content-benchmark/ - keep only final user-facing benchmark summaries or shortlists outside
.postplus/ - start with a bounded first pass:
1-3profiles for the validated account route- narrow keyword batches only when the user explicitly requests search
- if PostPlus Cloud service is unavailable, unauthorized, or returns a stable network error, stop immediately instead of switching to ad hoc shell glue
Main scripts
scripts/build_xhs_benchmark_actor_input.mjsscripts/normalize_xhs_benchmark_dataset.mjsscripts/rank_xhs_benchmark_posts.mjsscripts/analyze_xhs_benchmark_dataset.mjs
Use the shared collection runner for actor calls:
${CLAUDE_SKILL_DIR}/_postplus_shared/00-core/shared-collection/scripts/collection_actor_run.mjs
Minimal workflow
Account benchmark
Build actor input from a brief:
node ${CLAUDE_SKILL_DIR}/scripts/build_xhs_benchmark_actor_input.mjs \
--brief <work-folder>/.postplus/xhs-benchmark-brief.json \
--output <work-folder>/.postplus/xhs-benchmark-actor-input.json
Run the validated actor:
node ${CLAUDE_SKILL_DIR}/_postplus_shared/00-core/shared-collection/scripts/collection_actor_run.mjs \
--collection-key xhs-account-posts \
--input <work-folder>/.postplus/xhs-benchmark-actor-input.json \
--output <work-folder>/.postplus/xhs-benchmark-raw.json
Normalize, rank, analyze:
node ${CLAUDE_SKILL_DIR}/scripts/normalize_xhs_benchmark_dataset.mjs \
--input <work-folder>/.postplus/xhs-benchmark-raw.json \
--output <work-folder>/.postplus/xhs-benchmark-normalized.json
node ${CLAUDE_SKILL_DIR}/scripts/rank_xhs_benchmark_posts.mjs \
--input <work-folder>/.postplus/xhs-benchmark-normalized.json \
--theme "workplace,office workers,office" \
--output <work-folder>/.postplus/xhs-benchmark-ranking.json
node ${CLAUDE_SKILL_DIR}/scripts/analyze_xhs_benchmark_dataset.mjs \
--input <work-folder>/.postplus/xhs-benchmark-normalized.json \
--output <work-folder>/.postplus/xhs-benchmark-analysis.json
Keyword benchmark
Use the same build script, but provide keywords in the brief.
Operational constraint:
- keep
limit >= 100 - expect a visible failure if the actor returns zero items
Good output
Return:
- benchmark shortlist
- top note URLs
- recurring title hooks
- title pattern breakdown
- cover-shape breakdown
- observed content-type split
- data-quality warnings when fields are missing
- suggested card angles that can later feed
skills/40-creative/xiaohongshu-card-notes
Failure posture
- fail if the request mixes profile benchmarking and keyword benchmarking without saying which should be primary
- fail if no
profileUrls,profileIds, orkeywordsare provided - name the missing input in the failure copy: either a Xiaohongshu profile URL, profile id, or explicit keyword route
- fail if the keyword-search actor returns zero items
- fail if the normalized dataset has no note URLs
- keep raw actor output for debugging
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/postplusai/postplus-skills/xiaohongshu-content-benchmark">View xiaohongshu-content-benchmark on skillZs</a>