采集说明

数据口径与更新流程

当前方案以本机 SQLite 底账为来源,导出标准 CSV 和本机快照后由网站集中展示、缓存缩略图、呈现评论证据并保存人工处理状态。

帖子 CSV 字段

产品ID产品名称平台关键词采集批次采集日期帖子ID发布人发帖人ID帖子链接标题全文内容笔记类型情绪等级发布时间点赞数评论数收藏数分享数处理状态缩略图链接缓存缩略图链接图片链接列表图片数量媒体类型差评整理

评论 CSV 字段

产品ID产品名称平台帖子ID评论ID父评论ID根评论ID评论层级回复评论ID被回复评论摘录评论顺序评论内容评论点赞数评论时间采集日期是否负面问题类型

楼中楼字段没有时,详情页会按普通评论列表展示;有这些字段时,会自动缩进为一级评论和回复。

关键词配置 CSV 字段

产品ID产品名称平台关键词是否启用

后续新增 OpenDots 2、OpenDots Air 或其他平台时,优先在配置表里增加产品和关键词。

热度计算公式

网站所有热度、热度指数和讨论指数统一使用下面这套公式,最终结果按 100 分封顶。P90 是当前统计范围内该指标的 90 分位值,用来避免单个大流量帖子把其他帖子完全压低。

发帖数得分 = min(发帖数 / P90发帖数, 1.2) * 100

评论数得分 = min(sqrt(评论数) / sqrt(P90评论数), 1.2) * 100

点赞数得分 = min(ln(点赞数 + 1) / ln(P90点赞数 + 1), 1.2) * 100

收藏数得分 = min(ln(收藏数 + 1) / ln(P90收藏数 + 1), 1.2) * 100

原始指数 = 0.45 * 发帖数得分 + 0.35 * 评论数得分 + 0.15 * 点赞数得分 + 0.05 * 收藏数得分

最终热度 = min(100, round(原始指数 / 1.2))

单帖热度计算时,发帖数固定按 1 计;某个指标的 P90 为 0 时,该项得分按 0 计。评论数用开方处理,点赞数和收藏数用 ln 处理,都是为了降低极端大数值的影响。

  • · 趋势图可选择两个指标对比,原始点赞数、评论数、收藏数仍保留并在 tooltip 展示。
  • · 为了避免单日高互动帖子把坐标轴拉得过高,趋势图只在展示层按当前点位分布做封顶;封顶不会写回 CSV,也不会影响讨论指数、榜单或详情页。
  • · 某天数值被封顶时,tooltip 会额外显示图上封顶阈值,方便区分真实值和显示值。

采集与处理流程

  1. 1从关键词配置 CSV 读取启用的产品、平台和关键词,关键词表是采集入口。
  2. 2MediaCrawler 按小红书最新排序抓取搜索结果;默认每个关键词抓前 100 条,也可用命令参数临时改为 50 条。
  3. 3搜索阶段只刷新帖子详情和互动数;新帖有平台评论数时,再进入详情页补抓评论和楼中楼。
  4. 4近 30 天内的重复帖只在平台评论数变多时补抓评论;超过 30 天的旧帖默认跳过,除非人工要求复查。
  5. 5采集完成后从 SQLite 底账导出标准帖子 CSV、评论 CSV、关键词配置 CSV,并刷新本机页面快照。
  6. 6在本页导入本机快照,系统合并去重、保留处理状态,并缓存帖子首图。
  7. 7用研、客服在列表或详情页打开原帖核查,并标记未查看、已查看、需跟进或无关。

采集异常处理

  1. 1SQLite 是本地唯一底账,CSV 只是给网站导入和人工查看的导出结果。
  2. 2遇到登录失效、二维码、验证码、风控或平台接口异常时,采集任务应停止或转人工处理,不记录账号、密码、验证码或 Cookie。
  3. 3评论补抓可能因为平台响应结构变化出现 RetryError、KeyError 或缺少 Verifytype 等异常;已写入 SQLite 的数据不会丢失,可先运行导出命令刷新快照,再单独续抓评论。
  4. 4采集和续抓日志写入 logs 目录;对话和文档只汇总数量、错误类型和日志路径,不展开真实帖子正文或评论内容。

无关内容排除规则

  1. 1帖子被人工标记为无关后,会立即从帖子列表、详情页入口、首页看板、热度榜和统计口径中隐藏。
  2. 2无关帖子会进入排除名单,后续重新上传 CSV 或重新采集到同一帖子 ID 时,网站仍然不再展示它及对应评论。
  3. 3无关处理先做隐藏和排除,不建议立刻物理删除原始采集底账;如需永久清理,应在管理动作中单独确认后再删除。

本地判断规则

不需要 API Key。导出脚本会按关键词和问题类型规则给评论补充是否负面和问题类型,网页只把这些结果作为疑似风险线索,仍以人工核查为准。

线上同步方式

当前站点仍然静态导出,上传、读取数据、图片缓存和处理状态通过 Netlify Functions 与 Netlify Blobs 完成。

安全注意事项

不要把小红书账号、密码、验证码、Cookie、私信、手机号或订单号写入 CSV 或提交到项目。判断脚本会做基础脱敏,但采集时仍应只处理公开可见内容。

管理上传

上传采集 CSV

支持标准 CSV,也支持直接上传 MediaCrawler 的小红书帖子和评论 CSV。上传后会合并去重,并缓存帖子首图。

自动读取本机 MediaCrawler 数据

网页实际读取:public/local-mediacrawler-snapshot.json

快照由 SQLite 底账生成,源头是:MediaCrawler/MediaCrawler-main/database/sqlite_tables.db

重新采集或补评论后,先运行导出命令更新快照,再点击这里导入页面。

上传前请确认 CSV 不含手机号、订单号、私信、账号密码、验证码或 Cookie。涉及授权登录、发送消息、删除数据前必须人工确认。

本地快照生成命令

当前页面的一键导入读取快照文件;采集或补评论结束后,在项目根目录运行:

npm run xhs:export-sqlite

这个命令会从 MediaCrawler 的 SQLite 底账导出标准 CSV,并刷新public/local-mediacrawler-snapshot.json