Skip to main content
skill CX Codex

monitoring-brand-mentions-on-twitter — Claude Code skill

Collects public brand mentions on Twitter/X via Apify, sorts them by sentiment, and builds an engagement report.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add apidojo-io/apidojo-skills --skill monitoring-brand-mentions-on-twitter -a claude-code
Open on GitHub

What monitoring-brand-mentions-on-twitter does

This skill collects public posts from Twitter/X for a specified brand, handle, or keyword within a set timeframe. It triggers the apidojo/tweet-scraper actor on Apify across multiple search terms, merges the resulting datasets, and removes duplicates using unique tweet IDs.

Mentions are categorized into positive, negative, and neutral groups through keyword matching. The skill highlights the top five positive and negative posts ranked by engagement metrics, providing direct URLs alongside like and retweet counts.

Execution fails without an APIFY_TOKEN environment variable. You can trigger the workflow through the optional Apify MCP server, execute raw HTTP requests with curl, or run scripts/run_actor.js to save outputs directly to CSV or JSON.

What it helps with

  • collect customer feedback and complaints on Twitter/X
  • discover top positive tweets for social proof and retweets
  • track brand sentiment breakdown across recent mentions
  • export filtered tweet datasets to CSV or JSON

Example prompts for the agent

  • Track mentions of @Nike over the last 7 days and group them by sentiment
  • Find the most liked customer complaints about our service on X
  • Monitor our brand keywords on Twitter and save results to results.json

How to install monitoring-brand-mentions-on-twitter

1Skills CLI (Vercel)

npx skills add apidojo-io/apidojo-skills --skill monitoring-brand-mentions-on-twitter -a claude-code

2Manually: put the files in place

~/.claude/skills/monitoring-brand-mentions-on-twitter/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/monitoring-brand-mentions-on-twitter/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about monitoring-brand-mentions-on-twitter

How to install monitoring-brand-mentions-on-twitter in Claude Code?

Run npx skills add apidojo-io/apidojo-skills --skill monitoring-brand-mentions-on-twitter -a claude-code. The skill will be placed in ~/.claude/skills/monitoring-brand-mentions-on-twitter/SKILL.md.

What does monitoring-brand-mentions-on-twitter do?

It queries Twitter/X using Apify scrapers, deduplicates posts, classifies them into sentiment buckets, and outputs a formatted report with engagement stats.

What credentials are required to run this skill?

You must set the APIFY_TOKEN environment variable in your terminal session or .env file. You can also connect the Apify MCP server for direct tool execution.

Source text

SKILL.md · Apache-2.0
---
name: monitoring-brand-mentions-on-twitter
description: >
  Monitors and aggregates brand mentions on Twitter/X using apidojo's Tweet and Search scrapers on Apify.
  Triggers when the user asks to: track mentions of a brand on Twitter, find what people are saying
  about a company on X, monitor brand sentiment on Twitter, set up brand mention tracking, find
  customer complaints or praise about a product on Twitter, analyze brand reputation based on tweets,
  or measure share of voice on X compared to competitors.
  Returns tweet text, author, engagement metrics, sentiment signals, and timestamps per mention.
  Ideal for brand managers, PR teams, community managers, and reputation analysts.
license: Apache-2.0
metadata:
  author: apidojo
  version: "1.0"
  apify-actors: apidojo/tweet-scraper, apidojo/tweet-scraper
---

# Monitoring Brand Mentions on Twitter

Collects all public tweets mentioning a brand, product, or keyword on Twitter/X within a date range. Groups by sentiment, surfaces top complaints and praise, and provides engagement totals.

## Prerequisites

- `APIFY_TOKEN` environment variable set
- Optional: Apify MCP server installed


## Inputs

| Parameter | Type | Required | Default | Notes |
|-----------|------|----------|---------|-------|
| `searchTerms` | array | ✅ | `[]` | Twitter advanced search queries (e.g. `["#AI lang:en", "from:NASA"]`) |
| `sort` | string | Optional | `Top` | Sort order: `Latest`, `Top`, or `Latest+Top` |
| `tweetLanguage` | string | Optional | — | ISO 639-1 language code (e.g. `en`) |
| `maxItems` | number | Optional | Unlimited | Maximum tweets to return |
| `onlyVerifiedUsers` | boolean | Optional | `false` | Only tweets from verified users |
| `onlyTwitterBlue` | boolean | Optional | `false` | Only Twitter Blue subscribers |
| `onlyImage` | boolean | Optional | `false` | Only tweets with images |
| `onlyVideo` | boolean | Optional | `false` | Only tweets with videos |
| `onlyQuote` | boolean | Optional | `false` | Only quote tweets |
| `author` | string | Optional | — | Filter to a specific author handle |
| `inReplyTo` | string | Optional | — | Tweets replying to a specific handle |
| `mentioning` | string | Optional | — | Tweets mentioning a specific handle |
| `geotaggedNear` | string | Optional | — | Tweets near a location |
| `withinRadius` | string | Optional | — | Radius around geotaggedNear |
| `geocode` | string | Optional | — | Lat/lng + radius string |
| `placeObjectId` | string | Optional | — | Tweets tagged with a place |
| `minimumRetweets` | number | Optional | — | Minimum retweet count |
| `minimumFavorites` | number | Optional | — | Minimum like count |
| `minimumReplies` | number | Optional | — | Minimum reply count |
| `start` | string | Optional | — | Tweets after this date (YYYY-MM-DD) |
| `end` | string | Optional | — | Tweets before this date (YYYY-MM-DD) |
| `includeSearchTerms` | boolean | Optional | `false` | Add the matched search term to each tweet |
| `customMapFunction` | string | Optional | — | JavaScript function to transform each output object |
## Workflow

```
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
```

### Step 1: Clarify Parameters

Ask the user for:
- **Brand terms** — brand name, handle, product name, hashtag, and common misspellings. Build a list.
  Example: `["@Nike", "Nike", "#Nike", "Nike shoes"]`
- **Date range** — e.g., "last 7 days" or specific dates
- **Exclude retweets?** (default: yes — filters noise)
- **Min engagement** (optional — e.g., tweets with ≥10 likes only)
- **Language** (default: all)

### Step 2: Run tweet-scraper

Run once per major search term to maximize coverage. Combine results after.


**Recommended — run_actor.js (handles waiting, output, and file saving automatically):**
```bash
# 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` must be set in environment or `.env` file.

**If Apify MCP is available:**
```
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]"
}
```

**If Apify MCP is not available:**
```bash
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]"
  }'
```

Run for each brand term in the list. Wait for `SUCCEEDED`, collect all results.

### Step 3: Fetch and Merge Results

```bash
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN"
```

Merge datasets from all runs. Deduplicate by tweet `id`. Result: unified list of all mentions.

### Step 4: Classify Sentiment

For each tweet's `text` field, apply a simple classification pass:

**Positive signals:** words like "love", "great", "amazing", "best", "recommend", "thank", "perfect"
**Negative signals:** words like "hate", "awful", "broken", "scam", "worst", "never again", "disappointed", "avoid"
**Neutral:** everything else (announcements, news, questions)

Group tweets into three buckets: Positive, Negative, Neutral.

Identify top 5 most-engaged negative tweets (these need the fastest response).
Identify top 5 most-engaged positive tweets (retweet candidates / testimonial material).

### Step 5: Format Report

Use the output template below.

## Output Format

```
# 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
```

## Troubleshooting

**Too many results for popular brands:** Increase `minLikes` filter to 5 or 10 to focus on influential mentions.
**Missing mentions:** Twitter search API has ~7-10 day lookback limit for free tier. For historical data, reduce date range.
**Sentiment misclassification:** Sarcasm is hard to catch with keyword matching — flag high-engagement tweets for manual review.

© apidojo · Apache-2.0 · apidojo-io/apidojo-skills

Similar skills

All skills for Browser and scraping →

From the same set82

finding-ecommerce-brands-for-outreach Builds a list of e-commerce and DTC brands on Instagram and TikTok by product-category hashtags. Useful when you need an outreach list instead of scrolling profiles by hand. CX Codex +1 776installs finding-hospitality-brands-on-instagram Finds hotels and resorts on Instagram via Apify, scoring hospitality accounts into lead tiers for B2B sales. CX Codex +1 774installs analyzing-competitor-tiktok-content-strategy This skill examines a competitor’s TikTok account, covering videos, posting cadence, hashtags, hooks, and engagement. Use it for content strategy research. CX Codex +1 771installs tracking-competitor-social-media-growth Pulls follower counts and engagement for competitor accounts on Twitter/X, TikTok and Instagram, then lines them up side by side. Useful when you need to compare how accounts grow. CX Codex +1 771installs scraping-twitter-profiles Extracts Twitter/X profile metadata through Apify actors. Useful for pulling follower counts, bios, and verification flags across user lists. CX Codex +1 770installs finding-affiliate-marketers-on-social-media Finds affiliate marketers and performance creators on Instagram and TikTok through apidojo scrapers. Useful when you are building a recruitment list for an affiliate program. CX Codex +1 770installs discovering-tiktok-shop-sellers-by-niche Maps TikTok Shop sellers and products in a niche: who promotes what, which items move, where the gaps are. CX Codex +1 770installs tracking-startup-founders-on-twitter Finds startup founders on Twitter by industry or niche and gathers details about their companies and activity. Use it to build a list of accounts to follow. CX Codex +1 769installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor