mcpField
T
tracking-brand-sentiment-across-platforms

tracking-brand-sentiment-across-platforms

github.com/apidojo-ioマーケティング・グロース1800 回インストール24 週間前に更新
リポジトリ

tracking-brand-sentiment-across-platforms について

Twitter、Reddit、TikTokの投稿からブランドの感情を集め、各プラットフォームの結果を統合した健全性スコアとレポートを作る監視スキルです。

主な機能

  1. 013つのプラットフォームから投稿を収集
  2. 02ポジティブ・ネガティブ・中立に分類
  3. 03エンゲージメントに応じた重み付け
  4. 04統合ブランドスコアの算出
  5. 05急激なスコア変化の検知

活用シーン

  1. 01ソーシャルプラットフォーム間の評判比較
  2. 02キャンペーンや告知への反応の追跡
  3. 03大きな感情変化の確認

MCP 対応

Apify MCP サーバー経由で各プラットフォームのスクレイパー Actor を実行できます。REST API による代替手順も記載されています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/apidojo-io/apidojo-skills --skill tracking-brand-sentiment-across-platforms

インストール後、Claude Code で/tracking-brand-sentiment-across-platformsを入力して読み込まれたか確認します。

詳細

プラットフォーム横断のブランドセンチメント追跡

Twitter、Reddit、TikTok のブランドセンチメントを並行して監視し、統合されたブランド健全性スコアを生成します。各プラットフォームは異なる役割を担います。Twitter はリアルタイムのニュースや意見、Reddit はコミュニティでの深い議論、TikTok は Z 世代の製品カルチャーです。

前提条件

  • APIFY_TOKEN 環境変数が設定されていること
  • 任意:Apify MCP サーバーがインストールされていること

入力

パラメーター型必須デフォルト備考
searchTerms配列✅[]Twitter の高度な検索クエリ(例:["#AI lang:en", "from:NASA"])
sort文字列任意Top並べ替え順:Latest、Top、または Latest+Top
tweetLanguage文字列任意—ISO 639-1 言語コード(例:en)
maxItems数値任意無制限取得するツイートの最大数
onlyVerifiedUsersブール値任意false認証済みユーザーのツイートのみ
onlyTwitterBlueブール値任意falseTwitter Blue の登録者のみ
onlyImageブール値任意false画像付きのツイートのみ
onlyVideoブール値任意false動画付きのツイートのみ
onlyQuoteブール値任意false引用ツイートのみ
author文字列任意—特定の投稿者のハンドルに絞り込み
inReplyTo文字列任意—特定のハンドルへの返信ツイート
mentioning文字列任意—特定のハンドルに言及しているツイート
geotaggedNear文字列任意—特定の場所付近のツイート
withinRadius文字列任意—geotaggedNear を中心とする半径
geocode文字列任意—緯度/経度と半径を指定する文字列
placeObjectId文字列任意—場所がタグ付けされたツイート
minimumRetweets数値任意—リツイート数の最小値
minimumFavorites数値任意—いいね数の最小値
minimumReplies数値任意—返信数の最小値
start文字列任意—この日付以降のツイート(YYYY-MM-DD)
end文字列任意—この日付以前のツイート(YYYY-MM-DD)
includeSearchTermsブール値任意false一致した検索語を各ツイートに追加
customMapFunction文字列任意—各出力オブジェクトを変換する JavaScript 関数

ワークフロー

Progress:
- [ ] Step 1: Run scrapers for all three platforms in parallel
- [ ] Step 2: Classify sentiment per platform
- [ ] Step 3: Calculate cross-platform brand health score
- [ ] Step 4: Identify top themes and alerts
- [ ] Step 5: Deliver unified report
ステップ 1:3 つのスクレイパーを実行

Twitter(Apify MCP が利用可能な場合):

Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input: {"searchTerms": ["[BRAND_NAME]"], "maxItems": 300, "tweetLanguage": "en"}

Reddit:

Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input: {"searches": ["[BRAND_NAME]"], "maxItems": 200, "sort": "new", "time": "month"}

TikTok:

Tool: apify:run-actor
Actor: "apidojo~tiktok-scraper"
Input: {"keywords": ["#[brandname]", "#[brandname]review"], "maxItems": 200}

REST API のフォールバック — それぞれを順番に実行:

# Twitter
curl -X POST "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"searchTerms": ["[BRAND_NAME]"], "maxItems": 300}'

# Reddit
curl -X POST "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"searches": ["[BRAND_NAME]"], "maxItems": 200, "sort": "new", "time": "month"}'
ステップ 2:センチメント分類

すべてのプラットフォームで同じ語彙モデルを使用します(analyzing-twitter-sentiment-for-topic スキルのポジティブ/ネガティブ/ニュートラル指標)。プラットフォーム固有のエンゲージメントで重み付けします。

  • Twitter:likeCount + replyCount * 3
  • Reddit:upvotes + commentCount * 2
  • TikTok:playCount / 1000 + diggCount
ステップ 3:ブランド健全性スコア
platform_sentiment[p] = (positive_count[p] - negative_count[p]) / total_count[p]  # range: -1 to +1

platform_weight = {twitter: 0.35, reddit: 0.40, tiktok: 0.25}  # Reddit = most considered opinion

brand_health_score = sum(platform_sentiment[p] * platform_weight[p] for p in platforms)
brand_health_score = (brand_health_score + 1) / 2 * 100  # normalize to 0-100

スコアの解釈: 0–40 = 危機的、40–55 = 懸念あり、55–70 = 中立、70–85 = ポジティブ、85–100 = 良好。

ステップ 4:エッジケース
  • ブランド名が一般的な単語の場合(例:「Apple」):ノイズを減らすため、検索語に修飾語(「Apple iPhone」、「Apple Inc」)を追加し、曖昧性の解消率を報告します
  • 1 つのプラットフォームの投稿数が突出して多い場合(例:TikTok の投稿が Twitter の 10 倍):複合スコアでは投稿数に応じて重み付けします
  • センチメントが急変した場合(スコアが 20 ポイント超変化):ALERT として警告します。PR 危機またはポジティブな話題の急拡散を示している可能性があります
  • Reddit で結果が返されない場合:そのプラットフォームではブランドが話題になっていない可能性があります。reddit_weight = 0 に設定し、他のプラットフォームに再配分します

出力形式

# Cross-Platform Brand Sentiment: [BRAND_NAME]
Period: [DATE_RANGE] | Total posts: [N] | Date: [DATE]

## Brand Health Score: [X]/100 — [INTERPRETATION]

## Per-Platform Breakdown
| Platform | Posts | Positive | Negative | Neutral | Score |
|----------|-------|----------|----------|---------|-------|
| Twitter | [N] | [X%] | [X%] | [X%] | [+/-X] |
| Reddit | [N] | [X%] | [X%] | [X%] | [+/-X] |
| TikTok | [N] | [X%] | [X%] | [X%] | [+/-X] |

## Top Negative Themes (Cross-Platform)
1. [Theme] — [N] posts across [platforms]
2. [Theme]

## Top Positive Themes
1. [Theme] — [N] posts
2. [Theme]

## Most Impactful Posts
🔴 Top negative: [platform] | [handle] | [N engagement] | "[excerpt]"
🟢 Top positive: [platform] | [handle] | [N engagement] | "[excerpt]"

トラブルシューティング

プラットフォーム間でブランドの健全性スコアが一致しない場合:これは有意義なシグナルです。プラットフォーム間で差が生じる理由を出力で説明してください(例:「Reddit のコミュニティでは製品の品質に関する問題が議論されている一方、TikTok では開封動画が好意的に受け止められています」)。 感情分析の信頼性を確保するにはサンプル数が少なすぎる場合(プラットフォームあたり 50 件未満の投稿):日付範囲を広げるか、そのプラットフォームのスコアの信頼度が低いことを記載してください。 プラットフォームでブランド名が見つからない場合:オーガニックな TikTok 上の存在感がないブランドもあります。出力では不足点として記載してください。

推奨 — run_actor.js(待機、出力、ファイル保存を自動で処理します):

# Quick answer (prints table to chat)
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}'

# Save as CSV
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~tweet-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.json --format json

APIFY_TOKEN は環境変数または .env ファイルに設定する必要があります。

コメント