mcpField
M
monitoring-instagram-brand-mentions

monitoring-instagram-brand-mentions

github.com/apidojo-ioMarketing & growth1827 installsUpdated 24w ago
Repository

About monitoring-instagram-brand-mentions

A skill for monitoring public Instagram posts that mention a brand through hashtags, @mentions, or product keywords. It classifies mention types and sentiment, then helps identify advocates, critics, and brand-health patterns using Apify’s Instagram scraper.

Key features

  1. 01Collect posts by hashtags and keywords
  2. 02Classify mention type and sentiment
  3. 03Score post reach
  4. 04Identify advocates and critics
  5. 05Generate a brand-health report

Use cases

  1. 01Review public reactions to a product launch
  2. 02Find complaints and positive reviews
  3. 03Compare brand mentions with competitors

MCP support

Optionally uses the Apify MCP server to run the Instagram scraper actor.

Install

Copy the command and run it in a terminal.

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

After installing, type/monitoring-instagram-brand-mentionsin Claude Code to confirm it loaded.

Details

From the project README

Monitoring Instagram Brand Mentions

Tracks all public Instagram posts mentioning a brand — via branded hashtags, @mentions, or product name keywords. Classifies mentions by sentiment and type (UGC, complaint, press coverage, competitor comparison).

Prerequisites

  • APIFY_TOKEN environment variable set
  • Optional: Apify MCP server installed

Inputs

ParameterTypeRequiredDefaultNotes
startUrlsarray✅[]Instagram URLs — profiles, hashtags, locations, audio pages, reels
untilstringOptional—Scrape posts until this date (YYYY-MM-DD)
maxItemsnumberOptionalUnlimitedMaximum posts to return
customMapFunctionstringOptional—JavaScript function to transform each output object

Workflow

Progress:
- [ ] Step 1: Build hashtag and keyword list
- [ ] Step 2: Run instagram-scraper for each hashtag
- [ ] Step 3: Classify mention type and sentiment
- [ ] Step 4: Identify top advocates and critics
- [ ] Step 5: Deliver brand health report
Step 1 & 2: Run instagram-scraper

Recommended — run_actor.js (handles waiting, output, and file saving automatically):

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

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

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~instagram-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~instagram-scraper"
Input:
{
  "keywords": ["#[BRAND]", "#[BRAND]review", "#[BRAND]community"],
  "maxItems": 100
}

REST API fallback:

curl -X POST   "https://api.apify.com/v2/acts/apidojo~instagram-scraper/runs?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"keywords": ["#[brand]", "#[brand]review"], "maxItems": 100}'

Run for each hashtag cluster. Merge results and deduplicate by postUrl.

Step 2: Classify Mentions

Mention type:

UGC = post contains product photo + brand mention; author is not verified
COMPLAINT = caption contains negative indicators: "broken", "disappointed", "scam", "refund", "terrible", "never again"
POSITIVE_REVIEW = caption contains: "love", "amazing", "best", "recommend", "obsessed"
PRESS/EDITORIAL = author is verified OR follower_count > 100K
COMPETITOR_COMPARISON = caption mentions competitor brand alongside this brand

Sentiment: Apply same lexical classification as Twitter sentiment skill (positive/negative/neutral indicators).

Step 3: Score Reach
mention_reach = likes + comments * 5 + (followers_of_author / 100)
Step 4: Edge Cases
  • Official brand account's own posts in results: Drop posts where ownerUsername = brand's own handle
  • Hashtag is overloaded (> 1M posts): Use long-tail branded hashtags instead; or filter by date
  • Sentiment misclassified for complex posts: Flag posts with both positive and negative indicators as MIXED; report count
  • Foreign language mentions dominant: Report language distribution; flag non-English mentions separately

Output Format

# Instagram Brand Mention Monitor: [BRAND]
Posts collected: [N] | Period: [DATE_RANGE] | Date: [DATE]

## Mention Type Distribution
UGC: [N] | Positive Reviews: [N] | Complaints: [N] | Press: [N] | Comparisons: [N]

## Sentiment Summary
Positive: [X%] | Negative: [X%] | Neutral: [X%]
Weighted by reach: Positive [X%] | Negative [X%]

## Top UGC Posts (Most Liked)
| Creator | @Handle | Likes | Type | Caption Excerpt | Post URL |
|---------|---------|-------|------|----------------|---------|

## Complaints to Address
| Creator | Likes | Complaint Summary | Post URL |
|---------|-------|------------------|---------|

## Top Brand Advocates (Most Frequent Positive Posters)
1. @[handle] — [N] positive posts | [N] avg likes

Troubleshooting

Hashtag returns generic posts: The brand hashtag may be ambiguous (e.g. "#apple"). Use #[brand]official or #[brand][product] for precision. Mostly competitor posts: This may indicate your brand is being used in comparison posts — analyze COMPETITOR_COMPARISON category for positioning insights. Sentiment skewed by a single viral negative post: Check weighted sentiment vs. raw sentiment; one viral post can shift the raw numbers.

Comments

Markdown supported