mcpField
M
moomoo-comment-sentiment

moomoo-comment-sentiment

github.com/moomooopen数据与数据库2163 次安装2 天前更新
代码仓库

关于 moomoo-comment-sentiment

moomoo-comment-sentiment 用于分析 moomoo 上一只或多只股票的近期社区帖子。它会筛除低质量内容、分类情绪,并汇总个股或投资组合的观点。

主要功能

  1. 01获取近期股票讨论
  2. 02筛除低质量帖子
  3. 03分类看涨、看跌和中性情绪
  4. 04汇总个股及群组情绪
  5. 05提取代表性观点

适用场景

  1. 01查看单只股票的社区情绪
  2. 02比较多只股票的情绪
  3. 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 的评论是看涨还是看跌”
  • “分析这组股票的社区情绪”
  • “为美股科技股投资组合生成社区情绪摘要”

此技能会检索每个目标股票代码的近期社区帖子,过滤低质量内容,计算看涨/看跌/中性情绪的分布,然后生成:

  1. 仅提供一个目标时,输出单只股票的情绪
  2. 提供多个目标时,生成投资组合层面的情绪摘要
  3. 汇总整个股票组中最具代表性的社区观点
  4. 提供各股票的情绪明细以供比较

基础 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 Portfolio
  • lang:根据用户使用的语言推断,通常为 zh-CN、zh-HK 或 en

解析规则:

  1. 如果无法识别股票代码,请用户至少提供一个目标。
  2. 如果只识别出一个股票代码,则运行单只股票模式。
  3. 如果识别出多个股票代码,则运行多只股票模式。
  4. 忽略用户提供的时间范围,除非上游 API 明确支持这些范围,因为此技能定义为实时快照工作流。
2. 调用社区数据 API

针对 symbol_list 中的每个股票代码,检索与之相关的近期讨论/动态帖子。

首选检索策略:

  1. 使用 moomoo 动态/社区端点,获取近期与股票相关的讨论内容。
  2. 按时间倒序保留结果。
  3. 保留每个股票代码的上游元数据。
  4. 如果某个股票代码的上游请求失败,记录失败信息并继续处理其他股票代码,不要中止整个批次。
3. 信息处理

针对每个标的,分别执行:

  1. 清理文本:
    • 从标题 / 描述中剥离 HTML 标签
    • 将可见的标题 + 描述合并为一段分析文本
  2. 转换时间戳:
    • 将 publish_time 视为 Unix 纪元值(秒);如果数值看起来是毫秒(> 1e12),则除以 1000
    • 使用 UTC+8(Asia/Shanghai)将时间转换为格式为 YYYY-MM-DD HH:mm 的易读字符串,除非用户的区域设置另有要求
    • 将转换后的字符串作为 published_at 存储在每篇帖子上
    • 处理完某个标的的所有帖子后,根据完整的(筛选前)批次记录 time_range_earliest 和 time_range_latest,以便标题反映实际数据时间范围
  3. 筛除低质量内容:
    • 移除垃圾内容或近乎空白的文本
    • 移除明显的水帖 / 重复的填充短语
    • 降低信息密度极低帖子的权重,或将其排除
    • 如果有互动信号,则降低互动极少内容的权重,或将其排除
  4. 对每篇保留的帖子进行分类:
    • bullish
    • bearish
    • neutral
  5. 汇总每个标的:
    • bull_pct
    • bear_pct
    • neutral_pct
    • post_count
  6. 提取具有代表性的观点:
    • 优先选取具体观点、催化因素、担忧、估值看法和交易解读
    • 避免措辞重复和信息量低的评论
4. 汇总分析

如果只有 1 个标的:

  • 直接输出该标的的情绪分析结果
  • 生成一句话摘要
  • 提取该标的的前 3 条观点

如果有多个标的:

  1. 计算所有标的保留帖子整体的群组情绪。
  2. 生成一句话群组摘要。
  3. 判断群组情绪是由一个还是多个标的驱动。
  4. 然后提供各标的细分结果。
  5. 从合并样本中提取前 3 条群组观点。
5. 组织信息

回复始终应包含:

  1. 包含目标 / 群组名称的标题
  2. 情绪百分比
  3. 保留帖子的总数
  4. 简洁的摘要句
  5. 主要观点
  6. 免责声明
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'

常见的顶层响应:

字段类型描述
codeint320 表示成功
messagestring错误消息或空字符串
dataarray信息流 / 社区条目列表

常见条目字段:

字段类型描述
idstring唯一帖子 ID
titlestring帖子标题
descstring帖子内容或摘要,可能包含 HTML
publish_timestring | int64发布时间戳
urlstring可选的深层链接

如果实际的上游端点提供互动次数、点赞数、评论数或热度分等额外字段,Agent 应利用这些字段改进低质量内容筛选。


情绪分类规则

仅在帖子级别使用以下三种标签:

  • bullish
  • bearish
  • neutral

必要时在汇总级别使用以下四种标签:

  • bullish
  • bearish
  • neutral
  • mixed
看涨线索

示例:

  • 预期上涨、反弹、突破或有上行空间
  • 对收益、产品周期、AI 需求、订单或利润率扩张有信心
  • 对估值的看法具有支撑性
  • 乐观地逢低买入,或看好长期持有
看跌线索

示例:

  • 预期下跌、回调、前景疲软或需求走弱
  • 担忧业绩不及预期、竞争、监管、稀释或交付问题
  • 负面的估值观点
  • 恐慌、投降式抛售或强烈规避风险的语气
中性线索

示例:

  • 不带方向性观点的事实更新
  • 持观望态度的评论
  • 立场混杂或模糊
  • 内容可信度低,且没有明确的方向性倾向
混合汇总规则

如果看涨和看跌占比都较高,且双方均无明显优势,汇总结果可以使用 mixed。

建议规则:

  • 若 abs(bull_pct - bear_pct) < 15%
  • 且 bull_pct >= 25% 和 bear_pct >= 25%
  • 汇总标签可以为 mixed

否则:

  • 看涨占比占主导 -> bullish
  • 看跌占比占主导 -> bearish
  • 方向性证据较弱 -> neutral

低质量内容筛选规则

此步骤为必需。不要将检索到的所有帖子一视同仁。

过滤掉或降低权重
  • 极短的填充内容,例如只有表情符号、只有“to the moon”、只有“nice”或只有重复股票代码
  • 没有观点的纯转发标记
  • 明显的垃圾信息、广告、推荐文本或无关内容
  • 没有新增信息、重复口号式的内容
  • 机器生成式的模板帖子
  • 互动极少的帖子(如果有互动信号)
优先保留
  • 明确表达方向性观点的帖子
  • 提供具体理由、催化因素或担忧的帖子
  • 清楚解释市场为何分歧的帖子
  • 有显著互动或具备讨论价值的帖子
重要限制

如果上游没有提供互动字段,仍应进行文本质量筛选。不要虚构基于互动情况的阈值。


群组级汇总规则

提供多个标的时,请严格按以下顺序操作:

  1. 先完成每个标的的筛选和情绪计数
  2. 将所有保留的帖子合并为一个综合样本
  3. 计算:
    • group_bull_pct
    • group_bear_pct
    • group_neutral_pct
    • group_post_count
  4. 生成一行 group_summary
  5. 确定哪些标的对当前群组整体情绪影响最大
  6. 在总体结果之后输出各标的明细
群组摘要风格

好的示例:

  • 整体情绪看涨,乐观情绪主要由 NVDA 带动,而 TSLA 的观点则更加分化。
  • 投资组合情绪整体中性偏谨慎,看跌观点主要集中在需求和估值压力上。
  • 整体样本呈现明显分歧,AAPL 的观点相对稳定,而 TSLA 和 NVDA 的观点则更加两极化。

避免:

  • 数据不支持的虚假精确度
  • 对未来价格做出强因果判断
  • 投资建议

热门观点提取规则

从保留的帖子中提取前 3 条观点。

要求:

  1. 使用简短、符合用户表达习惯的观点摘要,最好可直接引用。
  2. 排序前合并重复或近似重复的观点。
  3. 优先选择以下观点:
    • 在多篇帖子中重复出现
    • 具体且易于理解
    • 能代表当前情绪
  4. 避免使用泛泛的填充内容,例如:
    • “仍在观望”
    • “等等看”
    • “今天波动很大”
  5. 最终热门观点按 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}}
显示规则
  1. 如果只提供一个标的,不显示群组级包装字段。
  2. 如果有效观点少于 3 条,只显示实际可用的数量。
  3. 如果某个标的在过滤后有效数据过少,须明确说明证据有限。
  4. 面向普通用户的输出中,绝不显示上游原始 ID。
  5. 英文输出的标签和摘要统一使用 Bullish / Bearish / Neutral / Mixed。
  6. 观点中 published_at 的时间显示格式为:MM-DD HH:mm(例如:04-01 19:45)。如果所有观点相对于 generated_at 都来自当天,则省略日期部分。
  7. Data window 标题的起止时间均使用 MM-DD HH:mm。如果最早和最晚时间在同一个日历日,格式可简写为 HH:mm ~ HH:mm,日期只显示一次。

规范化输出约定

返回一个具有以下顶层字段的结构化对象:

字段类型说明
requestobject生效的请求参数
generated_atstringISO-8601 完成时间戳
modestringsingle 或 multi
groupobject | nullmode=multi 时的整体投资组合情绪
symbolsarray各标的的情绪结果
top_opinionsOpinion[]面向用户展示的前 3 条整体观点
disclaimerstring固定免责声明
Opinion
字段类型说明
textstring观点摘要文本
published_atstring易读的时间字符串,YYYY-MM-DD HH:mm(UTC+8)
request
字段类型
symbol_liststring[]
group_namestring | null
langstring | null
size_per_symbolint32
group

仅在 mode=multi 时必需。

字段类型说明
labelstringbullish / bearish / neutral / mixed
bull_pctstring百分比字符串
bear_pctstring百分比字符串
neutral_pctstring百分比字符串
post_countint32保留的群组帖子数
summarystring群组摘要(一句话)
symbols[]
FieldTypeDescription
symbolstring目标标的
statusstringok / error / empty
upstream_codeint32上游原始状态
upstream_messagestring上游原始消息
labelstringbullish / bearish / neutral / mixed
bull_pctstring百分比字符串
bear_pctstring百分比字符串
neutral_pctstring百分比字符串
post_countint32保留的帖子数量
time_rangeobject{ earliest: string, latest: string },格式为 YYYY-MM-DD HH:mm(UTC+8),根据筛选前的完整批次得出
summarystring对该标的一句话总结
top_opinionsOpinion[]该标的的主要观点,每项包含 text 和 published_at
signalsobject可选的推理依据
symbols[].signals
FieldTypeDescription
bullish_signalsstring[]重复出现的正面信号
bearish_signalsstring[]重复出现的负面信号
uncertaintiesstring[]证据薄弱或含糊之处

最简 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."
}

行为规则

  1. 始终先将请求解析为 symbol_list。不要将投资组合请求简化为单关键词任务。
  2. 始终先过滤低质量内容,再计算百分比。
  3. 结论应基于检索到的讨论文本,而非既有市场知识。
  4. 如果某个标的的上游请求失败,应保留批次结果,并将该标的标记为失败。
  5. 如果某个标的筛选后有效帖子过少,应说明证据有限,而不是过度解读。
  6. 在多标的模式下,先输出整体结果,再逐个标的展开。
  7. 热门观点应为去重后的总结,而不是直接复制的垃圾内容。
  8. 绝不提供买卖建议,也不暗示未来价格走势必然如何。

身份验证

  • 使用公开网关时,通常不需要文档约定中明确的 API 密钥。
  • 如果后续内部部署添加了身份验证,请使用环境变量或机密存储,切勿在此技能中硬编码机密。

安全

请求与数据
  • 将所有标的视为用户输入,并进行 URL 编码。
  • 显示前移除 HTML。
  • 非必要时避免记录大量原始帖子正文。
  • 不要泄露内部网关详情、Cookie 或机密。
免责声明
  • 社区情绪仅是对讨论样本的总结。
  • 情绪不等于未来价格走势。
  • 回复仅供参考,不构成投资建议。

User Agent 标头

包含一个 User-Agent 标头,其值为:moomoo-comment-sentiment/0.0.3 (Skill)

评论

支持 Markdown