with one click
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.
// 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.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | xiaohongshu-content-benchmark |
| description | 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. |
| metadata | {"postplus":{"familyId":"xiaohongshu","familyName":"Xiaohongshu / Rednote"}} |
Follow shared public skill rules in:
postplus-shared public skill rulesLegacy alias: xhs-content-benchmark.
Use this skill when the user wants to:
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.mdStart from account-based benchmarking, not broad keyword search.
Default starting surface:
Do not use this as the default first 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.
Default actor for this skill:
rednote-xiaohongshu-user-posts-scraperUse it when the user provides:
profileUrlsprofileIdsThis is the current default because it returns the post-level fields this benchmark flow needs:
Keyword route:
rednote-xiaohongshu-search-scraperUse it only when the user explicitly wants keyword or topic benchmarking.
Current operational rule:
maxItems >= 100Do not pretend keyword benchmarking succeeded when the actor returned an empty dataset.
Route those later to dedicated XHS skills.
Validated account route:
Experimental keyword route:
<work-folder>/.postplus/xiaohongshu-content-benchmark/.postplus/1-3 profiles for the validated account routescripts/build_xhs_benchmark_actor_input.mjsscripts/normalize_xhs_benchmark_dataset.mjsscripts/rank_xhs_benchmark_posts.mjsscripts/analyze_xhs_benchmark_dataset.mjsUse the shared collection runner for actor calls:
${CLAUDE_SKILL_DIR}/_postplus_shared/00-core/shared-collection/scripts/collection_actor_run.mjsBuild 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
Use the same build script, but provide keywords in the brief.
Operational constraint:
limit >= 100Return:
skills/40-creative/xiaohongshu-card-notesprofileUrls, profileIds, or keywords are provided