微博评论分析
SkillSearchWeibo comment analysis tool. Enter a Weibo post link to retrieve first-level comment data, with paginated browsing and four-dimensional sentiment analysis (positive/negative/needs/competitors). Use when the user wants to view Weibo comments, analyze comment sentiment, or understand user feedback. Tr
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the 微博评论分析 skill
What this skill tells your AI
The instructions your AI receives, as published by redfox-data/redfox-community in skills/weibo-comment-search/SKILL.md and read by ahel’s review.
📝 简介
微博评论分析工具,输入微博博文链接,即可查看该博文的一级评论数据,支持分页浏览和 AI 情感分析。在对话中展示当前页全部评论及 AI 总结分析,同时生成包含当前页数据和总结的交互式 HTML 报告。
✨ 功能特性
| 功能模块 | 能力描述 | 核心价值 |
|---|---|---|
| 评论查询 | 输入微博博文链接查询评论 | 一键查看任意博文的评论 |
| 分页浏览 | 支持多页结果浏览 | 逐页探索更多评论 |
| AI 总结 | 四维情感分析(积极/负面/需求/竞品) | 快速了解评论舆情全貌 |
| HTML 报告 | 深色主题交互式报告 | 离线保存/分享分析结果 |
🔑 鉴权
获取 API Key
请前往 红狐hub 获取 API KEY
配置 API Key
方案1: 以 Qoder 为例,将 REDFOX_API_KEY 添加到 ~/.openclaw/openclaw.json 中:
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }
方案2: 终端配置
export REDFOX_API_KEY="ak_xxxx..."
🔄 工作流程
Step 1:理解用户意图,提取 opusId
1. 从微博博文链接中提取 opusId
- 若用户提供了博文链接(如
https://weibo.com/1784473157/R8X4f2lnq),从中提取 opusId(R8X4f2lnq) - 若用户直接提供了 opusId,直接使用
- 若用户意图模糊(如"帮我查下评论"),主动询问:「请提供微博博文链接」
- 不得在用户未提供链接时擅自猜测并调用脚本
- 若用户在上一轮对话中查询过某博文的评论,且本轮输入模糊(如"下一页"、"评论分析"),沿用上一轮的 opusId
2. 识别页码参数
- 用户提到"下一页"、"第2页" → 对应页码,同时使用上一轮返回的 max_cursor
- 用户提到"上一页" → 当前页 - 1
- 未提及页码 → 默认第 1 页
Step 2:调用查询脚本(自动生成 HTML)
⚠️ 每次调用仅请求一页数据(一次 API 请求),不可擅自发起多次调用拉取多页。
脚本每次调用自动生成 HTML 报告(含 {{PLACEHOLDER}} 占位符,未回填分析数据)。终端展示与 HTML 基于同一次 API 调用,确保数据一致。
python3 ~/.agents/skills/weibo-comment-search/scripts/weibo_comment_search.py "<博文链接或opusId>" [--page 页码] [--cursor 游标] [--output-dir 目录]
参数说明:
| 参数 | 说明 | 默认值 |
|---|---|---|
| input | 微博博文链接或 opusId | — |
--page | 页码,从1开始 | 1 |
--cursor | 翻页游标(首页为 0,后续从返回的 max_cursor 传入) | 0 |
--no-html | 跳过 HTML 报告生成 | — |
--output-dir | HTML 输出目录 | ~/Downloads/QoderReports |
脚本以 JSON 格式输出:
| 字段 | 说明 |
|---|---|
opus_id | 博文 opusId |
comments | 评论列表 |
max_cursor | 下一页游标 |
has_next | 是否有下一页(true/false) |
page | 当前页码 |
html_path | 生成的 HTML 报告路径(含占位符,待回填) |
每条评论字段:
| 字段 | 说明 |
|---|---|
nickname | 用户昵称 |
uid | 用户 uid |
user_url | 用户主页链接(https://weibo.com/{uid}) |
content | 评论内容 |
comment_like_num | 点赞数(原始数字) |
comment_like_num_fmt | 点赞数(格式化后) |
create_time | 发布时间 |
注意: HTML 报告此时仅含评论原始数据,分析占位符(
{{PLACEHOLDER}})待用户确认后回填。
Step 3:判断结果并展示
情况 A:comments 数量 > 0(有评论)
A1. 告知用户查询范围
📊 博文
{opus_id}查询到 N 条评论(第 {page} 页),以下是详细数据:
A2. 渲染 Markdown 表格(全部展示)
| # | 用户 | 评论内容 | 点赞 | 发布时间 |
|---|------|----------|------|----------|
| 1 | [nickname](https://weibo.com/uid) | 评论内容 | 305 | 2025-07-10 14:30:25 |
格式规则:
- 用户昵称渲染为超链接:
[nickname](user_url),跳转到用户主页 - 点赞数
< 10000原始数字,≥ 10000显示x.xw - 发布时间完整展示年月日时分秒
- 评论内容超过 50 字截断并加
...,内容为空时显示- - ⚠️ 当前页全部评论均需展示,不得截断
A3. AI 评论总结(⚠️ 每次查询(含翻页)必须输出)
首页:基于当前页获取到的全部评论,进行四维情感分析。
翻页后:基于目前已获取的所有页面累计数据进行综合分析,而非仅分析当前单页。分析时需标注累计总条数。
分析前需理解微博热点话题背景(热搜事件、粉丝文化、明星动态、社会议题语境)。
📈 评论总结分析(基于 {total} 条评论)
✅ 积极评价({positive_ratio}%)
- {要点1}
- {要点2}
- ...
⚠️ 负面评价({negative_ratio}%)
- {要点1}
- {要点2}
- ...
💡 用户需求({demand_ratio}%)
- {要点1}
- {要点2}
- ...
🔍 竞品对比舆情({competitor_ratio}%)
- {仅当评论中提及竞品时输出,否则输出「未提及竞品」}
- {竞品名称}:{舆情要点}
分析要求:
- 每条要点需引用代表评论(截取关键词/短语)
- 百分比为提及该类型评论的数量占总评论数的比例
- 积极/负面/需求/竞品四类占比总和可能超过 100%(一条评论可能同时包含多类信息)
- 必须理解微博语境:识别粉丝话术(如"抱走""纯路人""yyds""打call"等)、热门话题背景、明星相关舆情
A4. 翻页提示(⚠️ 紧接在 A3 之后,每次必须输出)
- 若
has_next为 true:
📄 当前第 {page} 页。回复「下一页」继续查看。
- 若
has_next为 false:
📄 当前第 {page} 页,已无更多数据。
⚠️ A1~A4 必须在同一轮输出中连续完成,不可省略任何一步。
A4 输出完毕后,询问用户是否需要生成 HTML 可视化报告:
📊 是否需要生成 HTML 可视化报告?
若用户回复「是」「需要」「生成」「html」等确认词,则执行以下步骤(无需重新调用脚本,HTML 文件已在 Step 2 生成):
① 回填 AI 分析结果到 HTML
调用 backfill_html.py 将 AI 分析结果回填到 HTML 中的 {{PLACEHOLDER}} 占位符:
python3 ~/.agents/skills/weibo-comment-search/scripts/backfill_html.py "<html_path>" --analysis-json '{
"positive_ratio": <正整数>,
"negative_ratio": <正整数>,
"demand_ratio": <正整数>,
"competitor_ratio": <正整数>,
"positive_summary": "<ul><li>要点1</li><li>要点2</li>...</ul>",
"negative_summary": "<ul><li>要点1</li><li>要点2</li>...</ul>",
"demand_summary": "<ul><li>要点1</li><li>要点2</li>...</ul>",
"competitor_summary": "<ul><li>要点1</li><li>要点2</li>...</ul>"
}'
JSON 字段说明:
| 字段 | 类型 | 说明 | 示例 |
|---|---|---|---|
positive_ratio | int | 积极评价占比(纯数字,不含%) | 45 |
negative_ratio | int | 负面评价占比 | 30 |
demand_ratio | int | 用户需求占比 | 15 |
competitor_ratio | int | 竞品对比占比 | 15 |
positive_summary | string | 积极评价摘要(HTML 格式 <ul><li>...</li></ul>) | 见示例 |
negative_summary | string | 负面评价摘要 | 同上 |
demand_summary | string | 用户需求摘要 | 同上 |
competitor_summary | string | 竞品对比摘要 | 同上 |
注意: JSON 字符串参数包含双引号,Bash 中使用单引号包裹,内部双引号需转义 \"。若内容含单引号则用 stdin 方式传入:echo '...' | python3 backfill_html.py "<html_path>"
② 打开 HTML 报告:
open "<html_path>"
情况 B:comments 数量 = 0(无评论)
B1. 提示
😔 该博文暂无评论数据。
Step 4:翻页处理
当用户回复「下一页」「上一页」「第 N 页」时:
- 沿用 Step 1 中提取的 opusId
- 使用上一轮返回的
max_cursor作为新的--cursor - 计算新页码
- 重新调用脚本(与 Step 2 一致,自动生成 HTML):
python3 .../weibo_comment_search.py "<opusId>" --page <page> --cursor <cursor> - 完整执行 Step 3 的 A1~A4,其中:
- A1/A2:仅展示当前页数据(展示范围不变)
- A3 评论分析:基于目前已获取的所有页面累计数据(第 1 页至当前页)进行综合分析,标题中 {total} 为累计总条数
- A4 后询问用户是否需要生成当前页 HTML(同 Step 3 末尾流程,无需重新调用脚本)
Step 5:错误处理
| 错误类型 | 处理方式 |
|---|---|
| 无 API Key | 提示配置 REDFOX_API_KEY,给出配置指引 |
| 博文链接无效 | 提示「无法提取 opusId,请检查博文链接是否正确」 |
| 接口返回错误 | 显示错误码和错误信息 |
| 获取 0 条评论 | 提示「该博文暂无评论」并建议检查博文是否存在或已删除 |
| 网络请求超时 | 提示「网络请求超时,请稍后重试」 |
📋 依赖
# 脚本使用 urllib(Python 标准库),无需额外安装依赖
🎯 使用示例
示例 1:查看指定博文的评论
用户:查看微博 https://weibo.com/1784473157/R8X4f2lnq 的评论
助手:调用脚本(自动生成HTML) → 展示全部评论 + AI总结 → 询问是否需要HTML → 用户确认 → backfill → open
示例 2:通过 opusId 查询
用户:R8X4f2lnq 这篇博文的评论怎么样
助手:提取 opusId → 调用脚本 → 展示分析 → 询问是否需要HTML
示例 3:翻页
用户:下一页
助手:调用脚本 page=2 cursor=xxx → 展示第2页 + AI累计分析 → 询问是否需要当前页HTML
Signals
- GitHub stars
- 399
- Forks
- 53
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
weibo-comment-search- Source
- github.com/redfox-data/redfox-community