with one click
xhsou
使用Puppeteer自动化浏览器搜索小红书,获取真实内容并输出洞察报告
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
使用Puppeteer自动化浏览器搜索小红书,获取真实内容并输出洞察报告
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | xhsou |
| version | 1.0.0 |
| description | 使用Puppeteer自动化浏览器搜索小红书,获取真实内容并输出洞察报告 |
| tags | ["crawler","xiaohongshu","xhs","trends","content-analysis","puppeteer"] |
| author | chenyt |
| created | "2026-04-22T00:00:00.000Z" |
| user-invocable | true |
使用Puppeteer自动化浏览器,绕过小红书的反爬机制,获取各行业/内容类型的真实数据。
# 搜索单个关键词
node crawler/xhs-puppeteer.js "K12教育"
# 搜索多个关键词(在JS中调用)
import { searchXhsKeywords } from './crawler/xhs-puppeteer.js';
const results = await searchXhsKeywords(['K12教育', '高途', '作业帮'], {
maxResults: 20,
headless: true,
dateFilter: '2026-04-21' // 可选:只获取指定日期的内容
});
为了提高搜索成功率,建议配置小红书Cookie:
.env 文件:XHS_COOKIE=你的Cookie字符串
import { searchXhsKeywords } from './crawler/xhs-simple.js';
// 搜索热门内容
const results = await searchXhsKeywords(
['始祖鸟', 'Arc\'teryx', '户外穿搭'],
{
maxResults: 50,
headless: true
}
);
import { searchXiaohongshuWithDate } from './crawler/xhs-simple.js';
// 搜索4月发布的内容
const results = await searchXiaohongshuWithDate('迪卡侬穿搭', {
maxResults: 50,
headless: true,
startDate: '2026-04-01',
endDate: '2026-04-30',
fetchPublishDate: true, // 访问详情页获取准确时间
fetchLimit: 30 // 最多访问30个详情页
});
基础搜索(快速,但无准确发布时间)
keyword (string): 搜索关键词options (object):
maxResults (number): 最多返回结果数,默认20headless (boolean): 是否无头模式,默认truestartDate (string): 开始日期,格式 'YYYY-MM-DD',可选endDate (string): 结束日期,格式 'YYYY-MM-DD',可选⚠️ 限制:此方法使用API数据,无法获取准确发布时间,所有结果的 publishDate 为 null。
带发布时间的搜索(访问详情页,较慢但准确)
keyword (string): 搜索关键词options (object):
maxResults (number): 最多返回结果数,默认20headless (boolean): 是否无头模式,默认truestartDate (string): 开始日期,格式 'YYYY-MM-DD',可选endDate (string): 结束日期,格式 'YYYY-MM-DD',可选fetchPublishDate (boolean): 是否访问详情页获取准确发布时间,默认truefetchLimit (number): 最多访问多少个详情页,默认20(避免过长时间)工作流程:
⚠️ 性能提示:每个详情页访问耗时约1.5-2秒,20条需要30-40秒
批量关键词搜索(使用基础搜索)
keywords (string[]): 关键词数组options: 同 searchXiaohongshu[
{
title: "文章标题",
link: "https://www.xiaohongshu.com/explore/xxxxx",
snippet: "文章摘要(前200字)",
author: "作者昵称",
likes: 1234, // 点赞数
comments: 56, // 评论数
collects: 89, // 收藏数
source: "小红书",
noteId: "69e40a4b000000002102c19a", // 笔记ID
date: "2026-04-21T10:30:00.000Z", // ISO格式日期字符串
publishDate: Date对象 或 null // 仅 searchXiaohongshuWithDate 返回准确日期
}
]
发布时间说明:
searchXiaohongshu(): publishDate 为 null,date 为当前时间searchXiaohongshuWithDate(): publishDate 为准确的Date对象(如果成功获取),date 为ISO字符串⚠️ 重要:此过滤规则仅适用于行业简报场景(如K12教育日报),不适用于趋势分析、内容研究等其他场景。
生成K12教育行业简报时,按以下规则判断内容新闻价值:
| 类型 | 示例 | 原因 |
|---|---|---|
| 企业战略动作 | 并购、融资、裁员 | 直接影响行业格局 |
| 产品发布 | AI老师、新功能 | 竞品动态 |
| 热点事件 | 员工猝死、裁员争议 | 行业关注度高 |
| 招聘信息 | 小米招K12PM | 反映战略方向 |
| 类型 | 示例 | 原因 |
|---|---|---|
| 科普文章 | 什么是K12 | 非实时新闻 |
| 个人经验 | 学习方法分享 | 无商业价值 |
| 分析报告 | 竞品分析 | 非一手动态 |
用于生成K12教育日报等行业动态简报。
特点:
调用示例:
import { analyzeNews } from './processor/ai-analyzer.js';
const analysis = await analyzeNews(searchResults, {
mode: 'industry-brief' // 行业简报模式
});
用于摄影趋势、消费趋势等内容研究。
特点:
调用示例:
import { analyzeNews } from './processor/ai-analyzer.js';
const analysis = await analyzeNews(searchResults, {
mode: 'trend-analysis' // 趋势分析模式
});
实际案例参考:
📊 始祖鸟小红书趋势分析 (2026年4月,77条内容,41条高质量)
核心洞察:用户购买决策已从"性能参数"迁移到"色彩-情绪共鸣"和社交可见性
五大趋势识别:
使用场景分布:城市通勤45%、轻度户外/公园30%、运动/健身15%、雨天10%
战略建议:将色彩与情感价值关联;开发单品多场景内容;启动UGC挑战;将争议转化为教育内容
🔗 完整报告
searchXiaohongshu() + sort=time 参数,获取最新内容但无法验证准确日期searchXiaohongshuWithDate(),访问详情页获取准确发布时间/api/sns/web/v1/search/notes)# 1. 安装依赖
npm install puppeteer
# 2. 配置Cookie(.env文件)
echo "XHS_COOKIE=your_cookie_here" >> .env
# 3. 运行搜索
node your-script.js
# 输出示例:
# ✅ 搜索小红书...
# 🔍 搜索小红书: 迪卡侬穿搭...
# 日期筛选: 2026-04-01 至 2026-04-23
# ✓ 找到 71 条结果
# ✓ 日期筛选后: 42 条结果(点赞≥100)
# ...
# ✅ 搜索完成!
生成报告后,可使用 generateContentManifest 工具整理所有被引用的内容链接和数据表现:
import { generateContentManifest } from './utils/content-manifest.js';
// 生成内容清单
const { manifest, markdown } = generateContentManifest(
searchResults, // 搜索结果
analysis, // AI分析结果(可选)
{
title: '迪卡侬穿搭趋势报告 - 内容来源',
outputPath: './reports/decathlon-sources.md'
}
);
// 输出内容:
// 1. JSON格式的数据清单
// 2. Markdown格式的可读清单
// 3. HTML格式的嵌入式组件
清单包含信息:
三种输出格式:
可以扩展为通用小红书爬虫:
// 搜索任意主题
const fashionResults = await searchXiaohongshu('春季穿搭', {
maxResults: 50,
headless: true
});
// 搜索特定日期范围(需要自己实现循环)
const dates = ['2026-04-20', '2026-04-21', '2026-04-22'];
for (const date of dates) {
const results = await searchXiaohongshu('美妆', { dateFilter: date });
console.log(`${date}: ${results.length}条`);
}
症状:返回空结果或401错误
解决:
症状:长时间无响应
解决:
症状:搜索有结果但日期筛选后为空
解决: