关于 moomoo-comment-sentiment
moomoo-comment-sentiment 用于分析 moomoo 上一只或多只股票的近期社区帖子。它会筛除低质量内容、分类情绪,并汇总个股或投资组合的观点。
主要功能
- 01获取近期股票讨论
- 02筛除低质量帖子
- 03分类看涨、看跌和中性情绪
- 04汇总个股及群组情绪
- 05提取代表性观点
适用场景
- 01查看单只股票的社区情绪
- 02比较多只股票的情绪
- 03生成投资组合情绪概览
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ moomooopen/ moomoo-agent-hub --skill moomoo-comment-sentiment安装后在 Claude Code 中输入/moomoo-comment-sentiment确认已加载。
详细介绍
moomoo 评论情绪技能
默认使用用户的语言作答。
通过 HTTP 汇总 moomoo 平台上单只或多只股票的实时社区情绪。
此技能适用于以下用户请求:
- “查看 NVDA 社区情绪”
- “帮我看看过去 24 小时 Tesla 的评论是看涨还是看跌”
- “分析这组股票的社区情绪”
- “为美股科技股投资组合生成社区情绪摘要”
此技能会检索每个目标股票代码的近期社区帖子,过滤低质量内容,计算看涨/看跌/中性情绪的分布,然后生成:
- 仅提供一个目标时,输出单只股票的情绪
- 提供多个目标时,生成投资组合层面的情绪摘要
- 汇总整个股票组中最具代表性的社区观点
- 提供各股票的情绪明细以供比较
基础 URL: https://ai-news-search.moomoo.com
更新此技能
使用 npx 添加或更新此技能。运行任一命令前,请先征求用户同意。
npx skills add -y -g MoomooOpen/moomoo-agent-hub --skill moomoo-comment-sentiment
npx skills update moomoo-comment-sentiment -g -y
空结果处理
当此技能的 API 返回空结果(data 为空或 code 不是 0)时,显示:
- 英文:"No data available at the moment. Please try again later."
- 中文:"暂无相关数据,请稍后再试。"
定位
此技能关注社区讨论倾向,不涉及基本面估值、官方文件或价格预测。
当用户想了解以下内容时,应使用此技能:
- 散户讨论情绪
- 社区共识与分歧
- 快速比较各股票代码的情绪
- 结构化的投资组合情绪概览
以下情况不适用:
- 仅关注官方公告
- 不进行社区解读的纯新闻汇总
- 财务建议、目标价或交易执行
工作流
1. 解析用户输入
从用户的请求中提取以下内容:
symbol_list:一个或多个股票代码、公司名称或常见股票别名group_name:可选的投资组合/分组显示名称(如果用户提供),例如US Tech Portfoliolang:根据用户使用的语言推断,通常为zh-CN、zh-HK或en
解析规则:
- 如果无法识别股票代码,请用户至少提供一个目标。
- 如果只识别出一个股票代码,则运行单只股票模式。
- 如果识别出多个股票代码,则运行多只股票模式。
- 忽略用户提供的时间范围,除非上游 API 明确支持这些范围,因为此技能定义为实时快照工作流。
2. 调用社区数据 API
针对 symbol_list 中的每个股票代码,检索与之相关的近期讨论/动态帖子。
首选检索策略:
- 使用 moomoo 动态/社区端点,获取近期与股票相关的讨论内容。
- 按时间倒序保留结果。
- 保留每个股票代码的上游元数据。
- 如果某个股票代码的上游请求失败,记录失败信息并继续处理其他股票代码,不要中止整个批次。
3. 信息处理
针对每个标的,分别执行:
- 清理文本:
- 从标题 / 描述中剥离 HTML 标签
- 将可见的标题 + 描述合并为一段分析文本
- 转换时间戳:
- 将
publish_time视为 Unix 纪元值(秒);如果数值看起来是毫秒(> 1e12),则除以 1000 - 使用 UTC+8(Asia/Shanghai)将时间转换为格式为
YYYY-MM-DD HH:mm的易读字符串,除非用户的区域设置另有要求 - 将转换后的字符串作为
published_at存储在每篇帖子上 - 处理完某个标的的所有帖子后,根据完整的(筛选前)批次记录
time_range_earliest和time_range_latest,以便标题反映实际数据时间范围
- 将
- 筛除低质量内容:
- 移除垃圾内容或近乎空白的文本
- 移除明显的水帖 / 重复的填充短语
- 降低信息密度极低帖子的权重,或将其排除
- 如果有互动信号,则降低互动极少内容的权重,或将其排除
- 对每篇保留的帖子进行分类:
bullishbearishneutral
- 汇总每个标的:
bull_pctbear_pctneutral_pctpost_count
- 提取具有代表性的观点:
- 优先选取具体观点、催化因素、担忧、估值看法和交易解读
- 避免措辞重复和信息量低的评论
4. 汇总分析
如果只有 1 个标的:
- 直接输出该标的的情绪分析结果
- 生成一句话摘要
- 提取该标的的前
3条观点
如果有多个标的:
- 计算所有标的保留帖子整体的群组情绪。
- 生成一句话群组摘要。
- 判断群组情绪是由一个还是多个标的驱动。
- 然后提供各标的细分结果。
- 从合并样本中提取前
3条群组观点。
5. 组织信息
回复始终应包含:
- 包含目标 / 群组名称的标题
- 情绪百分比
- 保留帖子的总数
- 简洁的摘要句
- 主要观点
- 免责声明
6. 返回结构化结果
返回规范化对象,以便下游调用方可靠地解析结果。
7. 附加免责声明
每条面向用户的回答都必须以非投资建议免责声明结尾。
检索参数
必需的逻辑输入
symbol_list:包含一个或多个目标的数组
可选的逻辑输入
group_name:可选的投资组合或群组标签lang:可选的语言提示size_per_symbol:上游 API 要求显式指定数量时,每个标的的可选检索数量;默认值为30,限制在1-50之间
验证规则
| 检查 | 规则 |
|---|---|
symbol_list 缺失或为空 | 拒绝请求,并要求至少提供一个标的。 |
| 去除首尾空白后标的为空 | 移除该标的,并在内部记录。 |
| 标的重复 | 去重,同时保留原有顺序。 |
未提供 size_per_symbol | 默认值为 30。 |
size_per_symbol < 1 | 限制为 1。 |
size_per_symbol > 50 | 限制为 50,除非部署环境允许更高的值。 |
上游数据约定
此技能假定上游提供类似 stock_feed 的 moomoo 讨论区 / 信息流端点,或可检索近期股票相关帖子的社区信息流搜索端点。
典型请求结构:
curl -sG 'https://ai-news-search.moomoo.com/stock_feed' \
-H 'User-Agent: moomoo-comment-sentiment/0.0.3 (Skill)' \
--data-urlencode 'keyword=NVDA' \
--data-urlencode 'size=30'
常见的顶层响应:
| 字段 | 类型 | 描述 |
|---|---|---|
code | int32 | 0 表示成功 |
message | string | 错误消息或空字符串 |
data | array | 信息流 / 社区条目列表 |
常见条目字段:
| 字段 | 类型 | 描述 |
|---|---|---|
id | string | 唯一帖子 ID |
title | string | 帖子标题 |
desc | string | 帖子内容或摘要,可能包含 HTML |
publish_time | string | int64 | 发布时间戳 |
url | string | 可选的深层链接 |
如果实际的上游端点提供互动次数、点赞数、评论数或热度分等额外字段,Agent 应利用这些字段改进低质量内容筛选。
情绪分类规则
仅在帖子级别使用以下三种标签:
bullishbearishneutral
必要时在汇总级别使用以下四种标签:
bullishbearishneutralmixed
看涨线索
示例:
- 预期上涨、反弹、突破或有上行空间
- 对收益、产品周期、AI 需求、订单或利润率扩张有信心
- 对估值的看法具有支撑性
- 乐观地逢低买入,或看好长期持有
看跌线索
示例:
- 预期下跌、回调、前景疲软或需求走弱
- 担忧业绩不及预期、竞争、监管、稀释或交付问题
- 负面的估值观点
- 恐慌、投降式抛售或强烈规避风险的语气
中性线索
示例:
- 不带方向性观点的事实更新
- 持观望态度的评论
- 立场混杂或模糊
- 内容可信度低,且没有明确的方向性倾向
混合汇总规则
如果看涨和看跌占比都较高,且双方均无明显优势,汇总结果可以使用 mixed。
建议规则:
- 若
abs(bull_pct - bear_pct) < 15% - 且
bull_pct >= 25%和bear_pct >= 25% - 汇总标签可以为
mixed
否则:
- 看涨占比占主导 ->
bullish - 看跌占比占主导 ->
bearish - 方向性证据较弱 ->
neutral
低质量内容筛选规则
此步骤为必需。不要将检索到的所有帖子一视同仁。
过滤掉或降低权重
- 极短的填充内容,例如只有表情符号、只有“to the moon”、只有“nice”或只有重复股票代码
- 没有观点的纯转发标记
- 明显的垃圾信息、广告、推荐文本或无关内容
- 没有新增信息、重复口号式的内容
- 机器生成式的模板帖子
- 互动极少的帖子(如果有互动信号)
优先保留
- 明确表达方向性观点的帖子
- 提供具体理由、催化因素或担忧的帖子
- 清楚解释市场为何分歧的帖子
- 有显著互动或具备讨论价值的帖子
重要限制
如果上游没有提供互动字段,仍应进行文本质量筛选。不要虚构基于互动情况的阈值。
群组级汇总规则
提供多个标的时,请严格按以下顺序操作:
- 先完成每个标的的筛选和情绪计数
- 将所有保留的帖子合并为一个综合样本
- 计算:
group_bull_pctgroup_bear_pctgroup_neutral_pctgroup_post_count
- 生成一行
group_summary - 确定哪些标的对当前群组整体情绪影响最大
- 在总体结果之后输出各标的明细
群组摘要风格
好的示例:
整体情绪看涨,乐观情绪主要由 NVDA 带动,而 TSLA 的观点则更加分化。投资组合情绪整体中性偏谨慎,看跌观点主要集中在需求和估值压力上。整体样本呈现明显分歧,AAPL 的观点相对稳定,而 TSLA 和 NVDA 的观点则更加两极化。
避免:
- 数据不支持的虚假精确度
- 对未来价格做出强因果判断
- 投资建议
热门观点提取规则
从保留的帖子中提取前 3 条观点。
要求:
- 使用简短、符合用户表达习惯的观点摘要,最好可直接引用。
- 排序前合并重复或近似重复的观点。
- 优先选择以下观点:
- 在多篇帖子中重复出现
- 具体且易于理解
- 能代表当前情绪
- 避免使用泛泛的填充内容,例如:
- “仍在观望”
- “等等看”
- “今天波动很大”
- 最终热门观点按
published_at降序排列(最新的在前)。
多标的模式下:
- 先提取前 3 条群组级观点
- 如有需要,可在摘要中注明带动该观点的标的
面向用户的输出模板
单标的模板
{{symbol}} Community Sentiment · Real Time
Data window: {{time_range_earliest}} ~ {{time_range_latest}}
Community:
Bullish {{bull_pct}}% · Bearish {{bear_pct}}% · Neutral {{neutral_pct}}%
(Based on {{post_count}} posts)
Summary:
{{summary}}
Top viewpoints:
1. "{{opinion_1}}" · {{opinion_1_time}}
2. "{{opinion_2}}" · {{opinion_2_time}}
3. "{{opinion_3}}" · {{opinion_3_time}}
This content is compiled from public information and does not constitute investment advice.
{{platform_source_footer}}
多标的模板
{{group_name}} Community Sentiment · Real Time
Data window: {{time_range_earliest}} ~ {{time_range_latest}}
Overall community:
Bullish {{group_bull_pct}}% · Bearish {{group_bear_pct}}% · Neutral {{group_neutral_pct}}%
(Based on {{group_post_count}} posts)
Overall summary:
{{group_summary}}
Per-symbol sentiment:
- {{symbol_1}}: Bullish {{bull_pct_1}}% · Bearish {{bear_pct_1}}% · Neutral {{neutral_pct_1}}%
- {{symbol_2}}: Bullish {{bull_pct_2}}% · Bearish {{bear_pct_2}}% · Neutral {{neutral_pct_2}}%
- {{symbol_3}}: Bullish {{bull_pct_3}}% · Bearish {{bear_pct_3}}% · Neutral {{neutral_pct_3}}%
Top viewpoints:
1. "{{opinion_1}}" · {{opinion_1_time}}
2. "{{opinion_2}}" · {{opinion_2_time}}
3. "{{opinion_3}}" · {{opinion_3_time}}
This content is compiled from public information and does not constitute investment advice.
{{platform_source_footer}}
显示规则
- 如果只提供一个标的,不显示群组级包装字段。
- 如果有效观点少于
3条,只显示实际可用的数量。 - 如果某个标的在过滤后有效数据过少,须明确说明证据有限。
- 面向普通用户的输出中,绝不显示上游原始 ID。
- 英文输出的标签和摘要统一使用
Bullish / Bearish / Neutral / Mixed。 - 观点中
published_at的时间显示格式为:MM-DD HH:mm(例如:04-01 19:45)。如果所有观点相对于generated_at都来自当天,则省略日期部分。 Data window标题的起止时间均使用MM-DD HH:mm。如果最早和最晚时间在同一个日历日,格式可简写为HH:mm ~ HH:mm,日期只显示一次。
规范化输出约定
返回一个具有以下顶层字段的结构化对象:
| 字段 | 类型 | 说明 |
|---|---|---|
request | object | 生效的请求参数 |
generated_at | string | ISO-8601 完成时间戳 |
mode | string | single 或 multi |
group | object | null | mode=multi 时的整体投资组合情绪 |
symbols | array | 各标的的情绪结果 |
top_opinions | Opinion[] | 面向用户展示的前 3 条整体观点 |
disclaimer | string | 固定免责声明 |
Opinion
| 字段 | 类型 | 说明 |
|---|---|---|
text | string | 观点摘要文本 |
published_at | string | 易读的时间字符串,YYYY-MM-DD HH:mm(UTC+8) |
request
| 字段 | 类型 |
|---|---|
symbol_list | string[] |
group_name | string | null |
lang | string | null |
size_per_symbol | int32 |
group
仅在 mode=multi 时必需。
| 字段 | 类型 | 说明 |
|---|---|---|
label | string | bullish / bearish / neutral / mixed |
bull_pct | string | 百分比字符串 |
bear_pct | string | 百分比字符串 |
neutral_pct | string | 百分比字符串 |
post_count | int32 | 保留的群组帖子数 |
summary | string | 群组摘要(一句话) |
symbols[]
| Field | Type | Description |
|---|---|---|
symbol | string | 目标标的 |
status | string | ok / error / empty |
upstream_code | int32 | 上游原始状态 |
upstream_message | string | 上游原始消息 |
label | string | bullish / bearish / neutral / mixed |
bull_pct | string | 百分比字符串 |
bear_pct | string | 百分比字符串 |
neutral_pct | string | 百分比字符串 |
post_count | int32 | 保留的帖子数量 |
time_range | object | { earliest: string, latest: string },格式为 YYYY-MM-DD HH:mm(UTC+8),根据筛选前的完整批次得出 |
summary | string | 对该标的一句话总结 |
top_opinions | Opinion[] | 该标的的主要观点,每项包含 text 和 published_at |
signals | object | 可选的推理依据 |
symbols[].signals
| Field | Type | Description |
|---|---|---|
bullish_signals | string[] | 重复出现的正面信号 |
bearish_signals | string[] | 重复出现的负面信号 |
uncertainties | string[] | 证据薄弱或含糊之处 |
最简 JSON 示例
{
"request": {
"symbol_list": ["NVDA", "TSLA", "AAPL"],
"group_name": "US Tech Portfolio",
"lang": "en",
"size_per_symbol": 30
},
"generated_at": "2026-04-01T10:00:00.000Z",
"mode": "multi",
"group": {
"label": "bullish",
"bull_pct": "61%",
"bear_pct": "27%",
"neutral_pct": "12%",
"post_count": 842,
"summary": "Overall sentiment is bullish, with optimism driven mainly by NVDA while TSLA remains more divided."
},
"symbols": [
{
"symbol": "NVDA",
"status": "ok",
"upstream_code": 0,
"upstream_message": "",
"label": "bullish",
"bull_pct": "68%",
"bear_pct": "22%",
"neutral_pct": "10%",
"post_count": 286,
"time_range": { "earliest": "2026-04-01 17:32", "latest": "2026-04-01 19:57" },
"summary": "Community sentiment is broadly bullish, with optimism centered on AI demand and earnings follow-through.",
"top_opinions": [
{ "text": "AI demand is still accelerating, and NVDA's run may not be over", "published_at": "2026-04-01 19:45" },
{ "text": "The pullback looks more like trading noise than a change in the medium-term thesis", "published_at": "2026-04-01 18:51" },
{ "text": "Valuation is not cheap, but the fundamentals are still delivering", "published_at": "2026-04-01 18:03" }
],
"signals": {
"bullish_signals": ["AI demand", "earnings momentum"],
"bearish_signals": ["valuation concern"],
"uncertainties": ["short-term momentum can reverse quickly"]
}
},
{
"symbol": "TSLA",
"status": "ok",
"upstream_code": 0,
"upstream_message": "",
"label": "mixed",
"bull_pct": "49%",
"bear_pct": "38%",
"neutral_pct": "13%",
"post_count": 301,
"time_range": { "earliest": "2026-04-01 16:10", "latest": "2026-04-01 19:55" },
"summary": "Bullish and bearish views are clearly split, with optimism coexisting alongside demand concerns.",
"top_opinions": [
{ "text": "This TSLA move feels more like a sentiment rebound than a solid reset", "published_at": "2026-04-01 19:30" },
{ "text": "The new narrative is still alive, but delivery pressure has not gone away", "published_at": "2026-04-01 18:22" },
{ "text": "If deliveries improve, sentiment could recover quickly", "published_at": "2026-04-01 17:48" }
],
"signals": {
"bullish_signals": ["narrative rebound"],
"bearish_signals": ["delivery pressure", "demand concern"],
"uncertainties": ["opinion split is large"]
}
}
],
"top_opinions": [
{ "text": "AI demand is still accelerating, and NVDA's run may not be over", "published_at": "2026-04-01 19:45" },
{ "text": "This TSLA move feels more like a sentiment rebound than a solid reset", "published_at": "2026-04-01 19:30" },
{ "text": "Apple has limited near-term upside and looks more like a defensive allocation", "published_at": "2026-04-01 18:10" }
],
"disclaimer": "This content is compiled from public information and does not constitute investment advice."
}
行为规则
- 始终先将请求解析为
symbol_list。不要将投资组合请求简化为单关键词任务。 - 始终先过滤低质量内容,再计算百分比。
- 结论应基于检索到的讨论文本,而非既有市场知识。
- 如果某个标的的上游请求失败,应保留批次结果,并将该标的标记为失败。
- 如果某个标的筛选后有效帖子过少,应说明证据有限,而不是过度解读。
- 在多标的模式下,先输出整体结果,再逐个标的展开。
- 热门观点应为去重后的总结,而不是直接复制的垃圾内容。
- 绝不提供买卖建议,也不暗示未来价格走势必然如何。
身份验证
- 使用公开网关时,通常不需要文档约定中明确的 API 密钥。
- 如果后续内部部署添加了身份验证,请使用环境变量或机密存储,切勿在此技能中硬编码机密。
安全
请求与数据
- 将所有标的视为用户输入,并进行 URL 编码。
- 显示前移除 HTML。
- 非必要时避免记录大量原始帖子正文。
- 不要泄露内部网关详情、Cookie 或机密。
免责声明
- 社区情绪仅是对讨论样本的总结。
- 情绪不等于未来价格走势。
- 回复仅供参考,不构成投资建议。
User Agent 标头
包含一个 User-Agent 标头,其值为:moomoo-comment-sentiment/0.0.3 (Skill)