Files
hot_comment_radar/docs/RequirementsDoc.md
T

17 KiB
Raw Blame History

RequirementsDoc.md:小红书 / 抖音热榜评论抓取 + AI 分析报告工具

1. 文档信息

  • 文档阶段:RequirementsDoc(需求规格说明)
  • 项目类型:学习型小工具 / 全栈流程演示项目
  • MVP 周期:约 4 天(单人开发)
  • 目标用户:组内成员 / 演示使用
  • 当前状态:需求已确认,小红书 / 抖音最小抓取链路已通过 API Spike 跑通
  • 核心目标说明:本项目首要目标是完整跑通「热点榜单抓取 → 内容条目拆分 → 评论抓取 → 存储 → AI 分析 → 展示 → 导出」的全栈闭环流程,功能深度和规模服从于流程完整性。

2. 项目背景

组内希望有一个内部工具,用于:

  • 获取小红书和抖音的热点榜单;
  • 将每个热点拆分为相关内容条目,其中抖音内容条目为视频,小红书内容条目统一称为笔记;
  • 抓取内容条目下的一级评论;
  • 使用 AI 对评论的情绪和讨论方向进行结构化分析;
  • 在 Web 页面查看分析结果,并支持导出。

现状:

  • 已有小红书和抖音相关抓取 API 及 Key;
  • 小红书最小链路已通过 docs/API-Spike-Xiaohongshu.md 验证:热榜 → 相关笔记 → 笔记一级评论;
  • 抖音最小链路已通过 docs/API-Spike-Douyin.md 验证:热点榜单 → 相关视频 → 视频一级评论;
  • 本文档只定义业务目标、范围与验收标准;
  • 字段映射、分页、限流、异常码、规模稳定性等调用细节在后续技术文档和开发阶段继续确认。

3. 产品目标

3.1 总体目标

在 4 天单人开发周期内,完成一个可本机/局域网部署的演示型产品,体现从数据抓取到 AI 分析再到可视化与导出的完整技术链路。

3.2 MVP 目标

MVP 首要目标:流程跑通,而非功能完备或大规模数据处理。

需要覆盖的环节:

  1. 获取小红书和抖音的热点榜单(每平台少量热点即可,具体见 5.1)。
  2. 将每个热点拆分为相关内容条目,并抓取内容条目下的一级评论。
  3. 使用 AI 对评论进行情绪与方向标签的结构化分析。
  4. 在 Web 页面展示热点列表、热点级汇总报告、内容条目列表、内容条目详情与评论明细。
  5. 支持导出评论明细、热点级汇总报告与内容条目级分析报告。

设计原则:

  • 首先保证各环节功能打通;
  • 规模、性能与健壮性在 MVP 阶段从简;
  • 代码结构明确,便于后续扩展。

4. 用户与使用场景

4.1 目标用户

  • 组内成员(包括开发者、产品、数据分析人员);
  • 技术演示或课堂讲解场景。

MVP 阶段:

  • 不区分角色类型;
  • 默认所有访问者具有相同功能权限。

4.2 核心使用场景

  1. 用户打开系统的 Web 页面。
  2. 用户选择平台(小红书 / 抖音),手动触发一次抓取任务。
  3. 系统调用外部 API
    • 获取该平台的热点榜单(Top N)。
    • 获取每个热点下的相关内容条目。
    • 获取这些内容条目下的一级评论。
  4. 系统调用 AI 对已抓取评论进行结构化分析:
    • 情绪分类;
    • 方向标签;
    • 可选简短理由。
  5. 用户在页面查看:
    • 热点列表与内容条目列表(含抓取与分析状态);
    • 单个热点的汇总分析报告;
    • 单个内容条目的分析报告;
    • 评论明细。
  6. 用户可将:
    • 评论明细导出为 CSV
    • 热点级汇总报告导出为 Markdown;
    • 内容条目级分析报告导出为 Markdown。

5. MVP 范围

5.1 热点榜单获取与内容条目拆分

功能范围:

  • 支持两个平台:小红书、抖音。
  • 每平台每次默认抓取 Top 5 条热点:
    • 热点数量可配置到 Top 10
    • MVP 不追求 Top 50 或更大规模。
  • 每个热点默认最多拆分 5 条相关内容条目:
    • 内容条目数量可配置到 10 条;
    • 如果某个热点下内容条目不足 5 条,则抓取全部可获得内容条目;
    • MVP 不追求穷尽单个热点下所有视频/笔记。
    • 抖音内容条目为视频;
    • 小红书内容条目统一称为笔记,不区分图文笔记和视频笔记。
  • 默认抓取规模约为:5 个热点 × 每热点 5 条内容条目 × 每条内容条目 50 条一级评论 = 1,250 条评论 / 平台 / 任务。
  • 对每次抓取操作记录:
    • 平台;
    • 抓取执行时间(或日期);
    • 热点排名;
    • 热点基础信息(如热点标题、热度值、榜单来源等,可根据 API 字段实际决定);
    • 内容条目基础信息(如标题/内容摘要、内容 ID、URL 等,可根据 API 字段实际决定);
    • 抓取状态(成功 / 失败)。

技术约束:

  • 热点榜单和内容条目数据源来自已有外部 API;
  • API 字段映射与数据结构以 API Spike 结果为基础,由后续技术文档继续细化。

5.2 评论抓取

功能范围:

  • 仅抓取一级评论,不抓取二级评论或回复链。
  • 每条内容条目默认最多抓取 50 条一级评论:
    • 评论数量可配置到 100 条;
    • 不足上限时抓取全部可获得的评论。
  • 抓取顺序:
    • 以 API 默认顺序为主(如时间顺序或热度顺序);
    • 不强制排序要求。

数据字段(视 API 支持情况而定):

  • 评论内容;
  • 评论 ID(用于去重与关联);
  • 评论作者基础信息(如昵称或用户 ID);
  • 点赞数(如有);
  • 评论时间;
  • 所属平台;
  • 所属热点 ID/信息;
  • 所属内容条目 ID/信息。

去重逻辑:

  • 对同一内容条目重复抓取时,以评论 ID 做基本去重;
  • 最简单策略为:同一内容条目同一评论 ID 不重复入库或更新已有记录。

5.3 任务触发

功能范围:

  • MVP 仅支持用户手动触发抓取任务:
    • 从前端点击按钮触发后端调用;
    • 不做自动定时任务。
  • 一次任务流程:
    • 抓取热点榜单;
    • 拆分热点下的相关内容条目;
    • 抓取对应内容条目的一级评论;
    • 调用 AI 分析评论;
    • 生成内容条目级分析数据,供页面展示与导出。
  • 不处理并发控制与多任务调度问题:
    • 同一用户可重复触发任务;
    • 同平台的多次任务视为独立执行,后续由开发计划决定是否覆盖或追加数据。

5.4 AI 评论分析

功能范围:

  • 对每条评论进行结构化分析,输出结构包括:
    • 情绪倾向:正向 / 负向 / 中性;
    • 方向标签:AI 自动生成的开放标签,如:
      • 价格争议;
      • 外观种草;
      • 使用体验;
      • 质量吐槽;
      • 求购买链接;
      • 玩梗讨论;
      • 等等;
    • 可选简短理由:一句话解释该分类与标签的原因(非必需字段)。

标签体系:

  • 不预设固定的标签字典;
  • 允许模型自由生成标签;
  • 标签主要用于:
    • 后续统计汇总;
    • 筛选典型评论。

约束说明:

  • 近义标签合并不作为 MVP 强制要求:
    • 如果实现方便,允许简单合并(如手动规则);
    • 未实现不影响 MVP 验收。

5.5 热点级汇总报告

功能范围:

  • 对每个热点生成一份轻量热点级汇总报告;
  • 报告基于该热点下已抓取内容条目的评论级分析结果聚合生成;
  • MVP 不做平台级日报,也不做跨热点汇总报告。

报告至少包含:

  1. 热点基础信息;
  2. 该热点下内容条目数量;
  3. 总评论样本数量;
  4. 正向 / 负向 / 中性评论整体数量和占比;
  5. Top 5 方向标签及数量;
  6. 典型评论若干;
  7. AI 生成的简短热点总结。

5.6 内容条目级分析报告

功能范围:

  • 对每个内容条目生成一份内容条目级分析报告;

  • 报告至少包含:

    1. 样本评论数量;
    2. 正向 / 负向 / 中性评论数量和占比;
    3. 主要方向标签及占比(可按标签聚合统计);
    4. 典型评论:
      • 典型正向评论 1~2 条;
      • 典型负向评论 1~2 条;
      • 典型中性评论 1~2 条;
      • 典型的挑选可基于情绪+点赞数或由 AI 挑选;
    5. AI 生成的简短内容条目级总结:
      • 强调事实性统计、常见观点;
      • 不要求深度运营洞察。

5.7 页面查看

功能范围:

  • 热点与内容条目列表页:

    • 展示抓取到的热点列表;
    • 展示每个热点下的相关内容条目列表;
    • 包含平台、热点标题、内容条目标题/摘要、抓取时间、分析状态等基本信息。
    • 支持进入单个热点的汇总报告。
  • 内容条目详情页:

    • 展示内容条目级分析报告(见 5.6);
    • 展示评论明细列表:
      • 评论内容;
      • 情绪与方向标签;
      • 点赞数等基础信息。
  • 任务状态查看:

    • 任务级状态:运行中 / 成功 / 失败;
    • 每次任务的基本信息(时间、平台、热点数、内容条目数)。

UI 不要求精细设计,MVP 以简洁可用为目标。

5.8 导出

功能范围:

  • 热点级汇总报告导出为 Markdown:

    • 字段包括:热点基础信息、内容条目数量、评论样本量、情绪分布、方向标签分布、典型评论、总结;
    • 以结构化 Markdown 文本输出,便于阅读和版本管理。
  • 内容条目级报告导出为 Markdown:

    • 字段包括:所属热点信息、内容条目基础信息、评论样本量、情绪分布、方向标签分布、典型评论、总结;
    • 以结构化 Markdown 文本输出,便于阅读和版本管理。
  • 内容条目评论明细导出为 CSV

    • 字段包括:平台、抓取日期/任务标识、热点信息、内容条目信息、评论内容、情绪、方向标签、点赞数、评论时间等;
    • 用于后续本地分析或导入其他工具。

5.9 部署

部署目标:

  • 使用 Docker Compose 实现一键启动:
    • 后端服务;
    • 前端服务;
    • 数据库(如 PostgreSQL / MySQL / SQLite 服务化);
  • 支持在开发者本机或组内服务器部署;
  • 通过浏览器访问 Web 页面进行操作。

具体技术选型:

  • 在后续 DevelopmentPlan.md 中确定;
  • MVP 要求 docker-compose.yml 能将所需组件统一编排。

6. 任务状态与异常处理(精简版)

功能范围:

  • 任务状态:

    • 运行中;
    • 成功;
    • 失败。
  • 进度展示(可选,建议实现):

    • 已处理内容条目数 / 总内容条目数(例如“3 / 8”);
    • 简单数值即可,不做复杂进度条。
  • 错误信息:

    • 在任务详情中展示失败原因简要说明,例如:
      • API 请求失败;
      • API 响应异常;
      • AI 调用失败或超时;
      • 数据入库失败等。
  • 容错行为:

    • 单个热点或内容条目抓取或分析失败时:
      • 记录错误;
      • 尝试继续处理剩余热点或内容条目;
    • 不要求严格保证“所有内容条目都成功”,但整体任务不因单个内容条目失败直接终止。

约束说明:

  • 不做复杂任务编排和恢复机制;
  • 不实现:
    • 部分成功状态;
    • 自动补跑;
    • 分布式锁;
    • 阶段拆分与单独重试。

7. 非功能需求

7.1 可用性

  • 页面结构简单清晰,用户能快速理解:
    • 当前有哪些抓取任务;
    • 每个任务的状态;
    • 热点、内容条目分析的结果与评论明细。
  • 错误信息可见,方便调试与排查。

7.2 可维护性

  • 核心流程模块化:
    • 外部 API 调用;
    • 数据存储;
    • AI 分析;
    • 报告生成;
    • 前端展示与导出。
  • 抓取参数可配置:
    • 平台;
    • 每次抓取的热点数量(Top N);
    • 单条内容条目评论上限。
  • AI 提示词与输出 schema 单独管理,便于后续迭代。

7.3 数据质量

  • 保留原始评论内容,不对原文做不可逆修改。
  • AI 结构化结果(情绪、标签、理由)要与原始评论关联(如通过评论 ID)。
  • 报告中的统计数据由结构化结果计算,而不是仅依赖模型自由生成的总体总结。

7.4 安全与配置

  • API Key、AI Key 等敏感信息不写入代码仓库:
    • 使用环境变量或配置文件(不纳入版本控制)。
  • 系统默认用于内部环境,不开放公网访问。
  • 登录鉴权:
    • MVP 默认不做登录与权限控制;
    • 如教学或审阅要求访问控制,再追加单管理员账号方案。

8. MVP 成功标准

必须达成的验收点:

  1. 系统能通过 Docker Compose 启动,并在浏览器访问。
  2. 用户可以从页面手动触发抓取任务,指定平台(小红书 / 抖音)。
  3. 系统能从外部 API 获取该平台默认 Top 5 热点。
  4. 系统能从每个热点拆分出相关内容条目,并对每条内容条目抓取一级评论(默认规模为 5 × 5 × 50,配置上限为 10 × 10 × 100)。
  5. 系统能对评论生成:
    • 情绪分类;
    • 方向标签;
    • (可选)简短理由。
  6. 系统能生成并展示热点级汇总报告与内容条目级分析报告:
    • 情绪分布;
    • 标签分布;
    • 典型评论;
    • 简短总结。
  7. 用户可以在页面查看:
    • 热点列表;
    • 热点级汇总报告;
    • 内容条目列表;
    • 内容条目详情;
    • 评论明细。
  8. 用户可导出:
    • CSV 评论明细;
    • Markdown 热点级汇总报告;
    • Markdown 内容条目级分析报告。
  9. 任务失败时,能看到任务状态为“失败”,并能看到简要错误原因。

质量与稳定性目标(尽力达成,不作为硬性阻塞):

  • 情绪分类与方向标签抽查时方向基本合理。
  • 报告中的统计数据与评论结构化结果一致。
  • 单个热点或内容条目失败不导致整批任务完全不可用。

9. 暂不纳入 MVP 的范围(Out of Scope

以下能力明确不在 4 天 MVP 内:

  • 定时自动抓取任务(如每日定时调度)。
  • 任务并发控制、分布式锁、复杂任务调度。
  • 自动补跑、任务阶段粒度显示(获取热点榜单、拆分内容条目、抓取评论、AI 分析等细粒度阶段)。
  • 大规模批量抓取:
    • Top 50 及以上热点;
    • 单条内容条目 200 条及以上评论。
  • 平台级每日汇总报告:
    • 小红书整体 / 抖音整体的汇总分析;
    • 跨热点聚合的 Top 话题、平台层总结等(降为后续 P1)。
  • 多用户与角色权限管理:
    • 注册、登录、角色控制、操作审计。
  • 登录鉴权(除非明确教学需要)。
  • Excel 导出、用户侧正式 JSON 导出。
  • 二级评论抓取、评论回复功能、自动发布、私信运营。
  • 长期趋势分析(跨天、跨周、跨月趋势)。
  • 品牌专题分析、关键词筛选热点。
  • 移动端适配、复杂 BI 大屏可视化。
  • 评论人工标注校正工作台。
  • 自动形成运营建议或营销动作。
  • 外部分享链接、公开访问和权限控制。

10. 待确认事项

以下事项不阻塞本需求文档,在 PRD、DevelopmentPlan 或开发阶段逐步确认。小红书 / 抖音最小抓取链路已通过 API Spike 验证,后续重点是把已验证链路产品化、工程化:

  1. 小红书 / 抖音热点榜单、内容条目与评论 API 的工程化细节:
    • 字段映射与字段兼容策略;
    • 原始 JSON 保存方式;
    • 热点与内容条目的关联落库方式。
  2. 评论 API 的:
    • 分页策略;
    • 排序规则(时间 / 热度);
    • 限流策略;
    • 异常码定义。
  3. AI 服务的选型:
    • 提供商;
    • 模型名称;
    • 费用和调用速率限制;
    • 是否需要批量调用或并发控制。
  4. AI 输出结构的具体 schema
    • 字段名称;
    • 枚举值规范(情绪、标签字段的格式约定)。
  5. Docker Compose 的架构:
    • 是否引入任务队列组件(如 Celery / Redis);
    • 或在 MVP 阶段采用简单同步处理。

11. 文档开发与审阅流程

采用 Spec 先行的文档驱动开发流程,文档顺序:

  1. RequirementsDoc.md(当前文档)
  2. PRD.md(产品需求文档)
  3. FeatureSummary.md(功能拆解与优先级)
  4. DevelopmentPlan.md(技术方案与实现路径)
  5. UIDesign.md(关键页面与交互草图)
  6. TDD.md(测试设计文档)
  7. Tasks.md(任务拆解与排期)

审阅要求:

  • 不直接修改主文档,每个审阅方生成独立审阅文件:
    • 文件命名建议:review-<文档名>-<审阅方>.md
  • 审阅语言为中文,采用结构化形式。
  • 审阅重点:
    • 缺失需求;
    • 模糊或冲突需求;
    • 过度设计风险;
    • 验收标准是否充分;
    • 后续文档与实现的风险点。
  • 审阅发现需要用户决策的问题时:
    • 以问题或建议形式提出;
    • 不擅自更改主文档。
  • 主 AI 负责汇总多方审阅意见,形成修订建议;
  • 用户确认修订后的主文档后,方可进入下一阶段文档编写。