mcpField
M
monitoring-brand-mentions-on-twitter

monitoring-brand-mentions-on-twitter

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

monitoring-brand-mentions-on-twitter について

ブランド、製品、キーワードに一致する Twitter/X の公開投稿を収集し、モニタリング用に整理するリサーチスキルです。感情別に分類し、反応の多い称賛や苦情を抽出します。

主な機能

  1. 01語句と日付による公開ポスト検索
  2. 02言語、投稿者、反応数による絞り込み
  3. 03結果の統合と重複削除
  4. 04言及の感情別分類
  5. 05反応の多い称賛や苦情の抽出

活用シーン

  1. 01期間を指定したブランド言及の追跡
  2. 02対応が必要な苦情の発見
  3. 03推薦文候補となる好意的な投稿の特定

MCP 対応

Apify MCP サーバーが利用可能な場合、Apify tweet-scraper を実行できます。コマンドラインと REST API による方法も記載されています。

インストール

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

$npx skills add https://github.com/apidojo-io/apidojo-skills --skill monitoring-brand-mentions-on-twitter

インストール後、Claude Code で/monitoring-brand-mentions-on-twitterを入力して読み込まれたか確認します。

詳細

Twitterでのブランドへの言及をモニタリングする

指定した期間内に、Twitter/Xでブランド、製品、またはキーワードに言及したすべての公開ツイートを収集します。感情別にグループ化し、主な苦情や称賛を抽出して、エンゲージメントの合計を提示します。

前提条件

  • 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: Define brand terms and date range
- [ ] Step 2: Run tweet-scraper
- [ ] Step 3: Retrieve dataset
- [ ] Step 4: Classify sentiment (positive/negative/neutral)
- [ ] Step 5: Deliver structured report
ステップ1:パラメーターを確認する

ユーザーに次の内容を尋ねます。

  • ブランド関連語 — ブランド名、ユーザー名、製品名、ハッシュタグ、よくあるスペルミスを確認し、リストを作成します。 例:["@Nike", "Nike", "#Nike", "Nike shoes"]
  • 期間 — 例:「過去7日間」または具体的な日付
  • リツイートを除外するか?(デフォルト:はい — ノイズを除去します)
  • エンゲージメントの最小値(任意 — 例:いいねが10件以上のツイートのみ)
  • 言語(デフォルト:すべて)
ステップ2:tweet-scraperを実行する

カバー範囲を最大化するため、主要な検索語ごとに1回実行します。実行後に結果をまとめます。

推奨 — 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 ファイルに設定する必要があります。

Apify MCPが利用可能な場合:

Tool: apify:run-actor
Actor: "apidojo~tweet-scraper"
Input:
{
  "searchTerms": ["[BRAND_TERM]"],
  "maxItems": 500,
  "includeReplies": true,
  "tweetLanguage": "en",
  "since": "[YYYY-MM-DD]",
  "until": "[YYYY-MM-DD]"
}

Apify MCPが利用できない場合:

curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchTerms": ["[BRAND_TERM]"],
    "maxItems": 500,
    "includeReplies": true,
    "since": "[YYYY-MM-DD]",
    "until": "[YYYY-MM-DD]"
  }'

リスト内のブランド関連語ごとに実行します。SUCCEEDED になるまで待機し、すべての結果を収集します。

ステップ3:結果を取得して統合する
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN"

すべての実行結果のデータセットを統合します。ツイートの id に基づいて重複を除外します。結果は、すべての言及をまとめた統一リストになります。

ステップ4:感情を分類する

各ツイートの text フィールドに対して、簡易的な分類を行います。

肯定的なシグナル:「love」、「great」、「amazing」、「best」、「recommend」、「thank」、「perfect」などの単語 否定的なシグナル:「hate」、「awful」、「broken」、「scam」、「worst」、「never again」、「disappointed」、「avoid」などの単語 **中立:**その他すべて(告知、ニュース、質問)

ツイートを肯定的、否定的、中立の3つのグループに分類します。

エンゲージメントが最も高い否定的なツイートを上位5件特定します(優先的に迅速な対応が必要です)。 エンゲージメントが最も高い肯定的なツイートを上位5件特定します(リツイート候補/お客様の声として活用できます)。

ステップ5:レポートを作成する

以下の出力テンプレートを使用します。

出力形式

# Brand Mention Report: [BRAND]
Period: [START_DATE] – [END_DATE] | Total mentions: [N] | Analyzed: [DATE]

## Sentiment Summary
| Sentiment | Count | % of Total | Avg Engagement |
|-----------|-------|------------|----------------|
| Positive  | [N]   | [X%]       | [likes+RT avg] |
| Negative  | [N]   | [X%]       | [likes+RT avg] |
| Neutral   | [N]   | [X%]       | [likes+RT avg] |

## 🔴 Top Negative Mentions (Action Required)
1. @[handle] ([likes] likes): "[tweet text excerpt]" → [url]
2. @[handle] ([likes] likes): "[tweet text excerpt]" → [url]
3. @[handle] ([likes] likes): "[tweet text excerpt]" → [url]

## 🟢 Top Positive Mentions (Amplify These)
1. @[handle] ([likes] likes): "[tweet text excerpt]" → [url]
2. @[handle] ([likes] likes): "[tweet text excerpt]" → [url]
3. @[handle] ([likes] likes): "[tweet text excerpt]" → [url]

## Volume Over Time
[Day 1]: [N] mentions | [Day 2]: [N] mentions | [Day 3]: [N] mentions...

## Key Themes in Negative Mentions
- [Theme 1]: [N] tweets (e.g., "shipping delays")
- [Theme 2]: [N] tweets (e.g., "customer service")

## Key Themes in Positive Mentions
- [Theme 1]: [N] tweets
- [Theme 2]: [N] tweets

トラブルシューティング

人気ブランドの検索結果が多すぎる場合: 影響力のある言及に絞り込むには、minLikes フィルターを 5 または 10 に増やしてください。 言及が見つからない場合: Twitter 検索 API の無料プランでは、検索可能な期間は約 7~10 日です。過去のデータを検索するには、日付範囲を短くしてください。 センチメントの誤分類: キーワードマッチングでは皮肉を検出しにくいため、エンゲージメントの高いツイートにフラグを付けて手動で確認してください。

コメント