Facebook 评论分析
简介
输入 Facebook 帖子链接即可获取评论数据,支持 翻页。在对话中展示当前页全部评论及 AI 总结分析,同时生成包含当前页数据和总结的交互式 HTML 报告。
功能特性
| 功能模块 | 能力描述 | 核心价值 |
|---|
| 评论获取 | 粘贴帖子链接即可获取评论 | 实时拉取帖子评论区数据 |
| 分页浏览 | 支持翻页 | 逐页浏览大量评论 |
| AI 总结 | 四维情感分析(积极/负面/需求/竞品) | 快速了解评论舆情全貌 |
| HTML 报告 | Facebook色主题交互式报告 | 离线保存/分享分析结果/可视化报告 |
| 合并报告 | 多页合并,超3页自动折叠 | 一次导出全部评论分析 |
鉴权
前往 红狐hub 获取 API Key,通过环境变量配置:
export REDFOX_API_KEY="ak_xxxx..."
工作流程
Step 1:理解用户意图,获取帖子链接
⚠️ 核心规则:用户只需提供帖子链接,Agent 读取完整链接传给脚本
- 用户提供帖子链接(如
https://www.facebook.com/reel/1746412686633900、https://www.facebook.com/Meta/posts/123456789012345),原样使用,不做任何解析、截取或改写
- 若用户未提供帖子链接,主动询问:「请提供 Facebook 帖子链接」
- 若用户在上一轮对话中查询过某帖子的数据,且本轮输入模糊(如"下一页"、"评论分析"),沿用上一轮的帖子链接
Step 2:调用评论获取脚本(自动生成 HTML)
⚠️ 每次调用仅请求一页数据(一次 API 请求),不可擅自发起多次调用拉取多页。
脚本每次调用自动生成 HTML 报告(含占位符,未回填分析数据)。终端展示与 HTML 基于同一次 API 调用,确保数据一致。
python scripts/facebook_comment_search.py "<post_url>" [--cursor <cursor>] [--page <page>]
Windows 注意: 若脚本中文日志乱码,使用 PYTHONIOENCODING=utf-8 python ... 前缀运行。
参数说明:
| 参数 | 说明 | 默认值 |
|---|
post_url | Facebook 帖子链接(必填,原样传入) | — |
--cursor | 游标,首页传空字符串,次页传上一页返回的 next_cursor | "" |
--page | 当前页码(仅用于 HTML 文件名和输出标记) | 1 |
--output-dir | HTML 输出目录 | ~/Downloads/QoderReports |
脚本返回 JSON 字段:post_url、current_page、next_cursor、total_fetched、has_next、comments[](每条含 comment_id、content、like_count、create_time 北京时间 MM-DD HH:MM、user_name、user_avatar)、html_path。
注意: HTML 报告此时仅含评论原始数据,分析占位符待用户确认后回填。
Step 3:对话中展示评论数据 + AI 总结
⚠️ 每次操作仅调用一次 API,获取一页数据。
A1. 告知查询范围
📊 帖子「{post_url}」共获取 N 条评论(第 {page} 页),以下是详细数据:
A2. 渲染评论表格(展示当前页全部评论)
格式规则:
- 表格列:评论人 | 评论内容 | 👍 点赞 | 时间
- 评论人列只显示昵称,不展示头像、不生成超链接
- 评论内容超过 40 字截断加 ...;空文本评论显示「(无文字)」
- 时间使用脚本已转换好的北京时间(MM-DD HH:MM)
- 点赞数 ≥ 10000 使用 x.xw 格式
- 每页全部展示,不得截断
A3. AI 评论总结(⚠️ 每次查询(含翻页)必须输出)
首页:基于当前页评论,四维情感分析。
翻页后:基于目前已获取的所有页面累计数据综合分析,标注累计总条数。
分析前需理解 Facebook 社区文化(全球用户、英文/繁中/简中/东南亚语言评论混杂;Reaction 表情文化 😆😢😮❤️👍;常见网络缩写 lol/tbh/omg;引用代表评论时保留用户原始语言关键词)。
📈 评论总结分析(基于 {total} 条评论)
✅ 积极评价({positive_ratio}%)
⚠️ 负面评价({negative_ratio}%)
💡 用户需求({demand_ratio}%)
🔍 竞品对比舆情({competitor_ratio}%)
分析要求:
- 每条要点引用代表评论关键词/短语
- 百分比为该类型评论占比,四类总和可能超 100%
- 必须理解 Facebook 社区文化
A4. 翻页提示(⚠️ 紧接在 A3 之后)
- 若 has_next 为 true:
📄 当前第 {page} 页(共 {total_fetched} 条)。回复「下一页」继续查看。
- 若 has_next 为 false:
📄 当前第 {page} 页,已无更多数据。
⚠️ A1~A4 必须在同一轮输出中连续完成,不可省略任何一步。
A4 输出完毕后,询问用户是否需要生成 HTML 可视化报告:
📊 是否需要生成 HTML 可视化报告?
若用户确认,根据已浏览页数选择方式:
仅 1 页 → 单页 HTML(backfill_html.py)
HTML 文件已在 Step 2 生成,直接回填分析数据并打开:
python scripts/backfill_html.py "<html_path>" --analysis-json '<分析JSON>'
回填后打开报告:Windows 用 start "" "<html_path>",macOS 用 open "<html_path>"。
2 页及以上 → 合并报告(consolidate_report.py)
收集所有已浏览页面的 JSON 数据,生成一份包含全部评论和累计分析的完整 HTML。按页码分区展示,超过 3 页时自动折叠,提示用户点击展开(脚本生成后自动在浏览器打开)。
python scripts/consolidate_report.py "<post_url>" \
--pages-json '[{"page":1,"total":31,"comments":[...]},{"page":2,"total":20,"comments":[...]}]' \
--analysis-json '<累计分析JSON>'
| 参数 | 说明 |
|---|
| post_url | 帖子链接(位置参数,原样传入) |
| --pages-json | 多页数据 JSON 数组,每项含 page、total、comments |
| --analysis-json | 累计分析 JSON(字段同 backfill) |
pages 数据从各次脚本调用输出中收集;累计分析基于 A3 翻页后综合分析。
分析 JSON 字段说明:
| 字段 | 类型 | 说明 |
|---|
| positive_ratio | string | 积极评价占比(纯数字,如 "62",模板自动追加 %) |
| negative_ratio | string | 负面评价占比 |
| demand_ratio | string | 用户需求占比 |
| competitor_ratio | string | 竞品对比占比 |
| positive_summary | string | 积极评价摘要(HTML ul 格式) |
| negative_summary | string | 负面评价摘要 |
| demand_summary | string | 用户需求摘要 |
| competitor_summary | string | 竞品对比摘要 |
Step 4:翻页处理(用户回复「下一页」等时)
- 沿用帖子链接
- 使用上一页的 next_cursor
- 重新调用脚本:
python scripts/facebook_comment_search.py "<post_url>" --cursor "<next_cursor>" --page <page>
- 完整执行 A1~A4,A3 基于累计综合分析
- A4 后询问是否需要 HTML
翻页规则: has_next true → 用 next_cursor 翻页;false → 已无更多。cursor 原样传递,不可修改。
Step 5:错误处理
| 错误类型 | 处理方式 |
|---|
| 无 API Key | 提示配置 REDFOX_API_KEY |
| 帖子链接无效 | 提示「未找到该帖子的评论,请检查帖子链接是否正确」 |
| 接口返回错误 | 显示错误码和错误信息 |
| 获取 0 条评论 | 提示「该帖子暂无评论」 |
| 网络请求超时 | 提示「网络请求超时,请稍后重试」 |
注意: 接口返回的 total 字段为 null,不可依赖其做总数统计;页数判断只认 paginationToken。
依赖
脚本使用 urllib(Python 标准库),无需额外安装依赖。
使用示例
示例 1:通过链接查询
用户:https://www.facebook.com/reel/1746412686633900 这个帖子的评论分析下
助手:传链接 → 调用脚本 → 获取评分 + AI总结 → 生成HTML