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 コメントセンチメントスキル
デフォルトでは、ユーザーの言語で回答します。
moomoo プラットフォーム上の議論を対象とした、HTTP による単一銘柄または複数銘柄のリアルタイムコミュニティセンチメント集計です。
このスキルは、次のようなユーザーのリクエストを想定しています。
- 「NVDA のコミュニティセンチメントを確認して」
- 「過去 24 時間の Tesla のコメントが強気寄りか弱気寄りか確認して」
- 「この銘柄グループのコミュニティセンチメントを分析して」
- 「米国テック株ポートフォリオのコミュニティセンチメントの概要を作成して」
このスキルは、対象銘柄ごとに最近のコミュニティ投稿を取得し、質の低いコンテンツを除外して、強気/弱気/中立の分布を算出したうえで、次の内容を生成します。
- 対象が 1 銘柄のみの場合は、単一銘柄のセンチメントを出力します
- 対象が複数銘柄の場合は、ポートフォリオ全体のセンチメント概要を出力します
- グループ全体から、コミュニティの主な意見を紹介します
- 比較用に、銘柄ごとのセンチメントの内訳を示します
ベース 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 以外)を返した場合は、次のメッセージを表示します。
- 英語:「現在、利用可能なデータはありません。しばらくしてからもう一度お試しください。」
- 中国語:「現在、関連データがありません。しばらくしてからもう一度お試しください。」
位置付け
このスキルは、コミュニティでの議論の論調に焦点を当てており、ファンダメンタルズ評価、公式発表、株価予測を扱うものではありません。
次のような情報をユーザーが求めている場合に使用します。
- 個人投資家の議論のムード
- コミュニティのコンセンサスと意見の相違
- 銘柄ごとのセンチメントをすばやく比較すること
- ポートフォリオのセンチメントを構造化して概観すること
次のような用途には適していません。
- 公式発表のみを対象とする場合
- コミュニティの解釈を伴わない、ニュースの単なるまとめ
- 金融アドバイス、目標株価、取引の実行
ワークフロー
1. ユーザー入力を解析する
ユーザーのリクエストから次の情報を抽出します。
symbol_list:1 つ以上の銘柄コード、企業名、または認識可能な銘柄の別名group_name:ユーザーが指定した場合の、ポートフォリオ/グループの表示名(例:US Tech Portfolio)lang:ユーザーの言語から推定します。通常はzh-CN、zh-HK、またはenです
解析ルール:
- 銘柄を特定できない場合は、対象を 1 つ以上指定するようユーザーに依頼します。
- 特定した銘柄が 1 つだけの場合は、単一銘柄モードを実行します。
- 特定した銘柄が複数の場合は、複数銘柄モードを実行します。
- 上流 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 シンボルの場合:
- そのシンボルのセンチメント結果を直接出力します。
- 1 行の要約を作成します。
- そのシンボルの主な見解を
3件抽出します。
複数シンボルの場合:
- 全シンボルの残した投稿を対象に、グループ全体のセンチメントを計算します。
- グループ全体の要約を 1 行で作成します。
- グループ全体のセンチメントが 1 つまたは複数のシンボルに左右されているかを特定します。
- 次に、シンボルごとの内訳を提示します。
- 結合したサンプル全体から、グループ全体の主な見解を
3件抽出します。
5. 情報を整理する
回答には必ず次の内容を含めます。
- 対象/グループ名を含む見出し
- センチメントの割合
- 残した投稿の合計件数
- 簡潔な要約文
- 主な見解
- 免責事項
6. 構造化された結果を返す
後続の呼び出し元が確実に解析できるよう、正規化されたオブジェクトを返します。
7. 免責事項を追加する
ユーザー向けの回答はすべて、投資に関する免責事項で締めくくる必要があります。
取得パラメーター
必須の論理入力
symbol_list:1 つ以上の対象を含む配列
任意の論理入力
group_name:任意のポートフォリオ名またはグループ名lang:任意の言語ヒントsize_per_symbol:上流 API で明示的な件数が必要な場合の、シンボルごとの任意の取得件数。デフォルトは30、範囲は1-50
検証ルール
| チェック | ルール |
|---|---|
symbol_list が欠落または空 | 拒否し、シンボルを 1 つ以上指定するよう求めます。 |
| トリミング後のシンボルが空 | 削除し、内部で記録します。 |
| シンボルの重複 | 元の順序を維持して重複を削除します。 |
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 | 任意のディープリンク |
実際の上流エンドポイントで、インタラクション数、いいね数、コメント数、ヒートスコアなどの追加フィールドが公開されている場合、エージェントはそれらを活用して低品質な投稿のフィルタリングを改善してください。
センチメント分類ルール
投稿レベルでは、次の3つのラベルのみを使用します。
bullishbearishneutral
必要に応じて、集計レベルでは次の4つのラベルを使用します。
bullishbearishneutralmixed
強気の兆候
例:
- 上昇、反発、ブレイクアウト、上値余地への期待
- 業績、製品サイクル、AI需要、受注、利益率の拡大への自信
- 株価を支えるバリュエーションに関する議論
- 楽観的な押し目買いや長期保有の根拠
弱気の兆候
例:
- 下落、調整、弱い見通し、需要の軟化への予想
- 業績未達、競争、規制、希薄化、納品上の問題への懸念
- 否定的なバリュエーション評価
- パニック、投げ売り、または強いリスク回避の姿勢
中立の兆候
例:
- 方向性に関する意見を伴わない事実の更新
- 様子見のコメント
- 賛否が混在する、または曖昧な姿勢
- 方向性に明確な偏りのない、確信度の低い内容
混合集計ルール
強気派と弱気派の割合がどちらも無視できず、いずれにも明確な優勢がない場合、集計結果に mixed を使用できます。
推奨ルール:
abs(bull_pct - bear_pct) < 15%の場合- かつ、
bull_pct >= 25%とbear_pct >= 25%の両方を満たす場合 - 集計ラベルに
mixedを使用できます
それ以外の場合:
- 強気派の割合が優勢 ->
bullish - 弱気派の割合が優勢 ->
bearish - 方向性を示す証拠が弱い ->
neutral
低品質投稿のフィルタリングルール
この手順は必須です。取得した投稿をすべて同等に扱わないでください。
除外または重みを下げる投稿
- 絵文字のみ、「to the moon」のみ、「nice」のみ、ティッカーの繰り返しのみなど、極端に短い埋め草の内容
- 意見を伴わない単なる再投稿の表示
- 明らかなスパム、広告、紹介文、または話題から外れた内容
- 新たな情報を含まない、スローガン風の反復的な内容
- 機械的な定型文のような投稿
- インタラクションのシグナルが利用可能な場合、インタラクションが極端に少ない投稿
優先的に残す投稿
- 明確な方向性の見解が示されている投稿
- 具体的な理由、きっかけ、または懸念が示されている投稿
- 市場の意見が割れている理由を説明する、明確な反対意見を含む投稿
- 意味のあるインタラクション、または認識できる議論上の価値がある投稿
重要なガードレール
上流でインタラクションのフィールドが利用できない場合も、テキスト品質のフィルタリングは実施してください。インタラクションに基づくしきい値を捏造しないでください。
グループレベルの集計ルール
複数の銘柄が指定されている場合は、次の順序を厳守してください。
- まず銘柄ごとにフィルタリングとセンチメントの集計を完了する
- 残したすべての投稿を銘柄横断で統合し、1つのサンプルにまとめる
- 次の値を算出する:
group_bull_pctgroup_bear_pctgroup_neutral_pctgroup_post_count
- 1行の
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}}
表示ルール
- シンボルが1つだけ指定されている場合、グループレベルのラッパーフィールドは表示しません。
- 有効な意見が
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に短縮し、日付は1回だけ表示してもかまいません。
正規化された出力契約
次のトップレベルフィールドを持つ、1つの構造化オブジェクトを返します。
| フィールド | 型 | 説明 |
|---|---|---|
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 | 1行のグループ概要 |
symbols[]
| フィールド | 型 | 説明 |
|---|---|---|
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 | YYYY-MM-DD HH:mm(UTC+8)形式の { earliest: string, latest: string }。フィルタリング前の全バッチから算出 |
summary | string | 銘柄ごとの1行要約 |
top_opinions | Opinion[] | この銘柄の主な見解。それぞれに text と published_at を含む |
signals | object | 任意の推論根拠 |
symbols[].signals
| フィールド | 型 | 説明 |
|---|---|---|
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)