Skip to main content
skill CX Codex

analyzing-competitor-instagram-content-strategy — Claude Code skill

This skill pulls a competitor's recent Instagram posts and shows which formats and themes earn them engagement. Useful when you need to read someone else's content plan.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add apidojo-io/apidojo-skills --skill analyzing-competitor-instagram-content-strategy -a claude-code
Open on GitHub

What analyzing-competitor-instagram-content-strategy does

The skill scrapes an account's recent posts through apidojo/instagram-scraper on Apify and sorts them into content types: product, lifestyle, educational, social proof, entertainment, promotional, behind the scenes. For each type it averages the engagement rate, works out the share of total posts, and picks a best-performing example. Format distribution — images, carousels, videos and reels — comes in the same report.

Posting cadence follows from the post timestamps: posts per week, best day of the week, best hour. The output includes a top-5 table ranked by engagement, where comments count triple against likes, plus a short list of observations and content gaps. Under twenty posts, the skill flags the small sample and extends the window to 180 days.

You need APIFY_TOKEN set in the environment or in a .env file. The bundled scripts/run_actor.js waits for the run and saves results as CSV or JSON; Apify MCP or the REST API work too. One catch: Instagram only exposes recent posts, so a request for 50 may come back with roughly a dozen. Check the actual count in the report before you draw conclusions about posting frequency.

What it helps with

  • see which post formats earn a competitor the most engagement
  • calculate posting frequency and find the best day of the week
  • compare how much promo versus educational content a competitor runs
  • spot themes a competitor leaves uncovered
  • check whether a competitor's engagement looks bought

Example prompts for the agent

  • analyze the Instagram content strategy of [COMPETITOR_HANDLE], pull the last 50 posts
  • compare posting frequency and themes across two Instagram accounts
  • show which content types perform best for this competitor and list the top 5 posts

How to install analyzing-competitor-instagram-content-strategy

1Skills CLI (Vercel)

npx skills add apidojo-io/apidojo-skills --skill analyzing-competitor-instagram-content-strategy -a claude-code

2Manually: put the files in place

~/.claude/skills/analyzing-competitor-instagram-content-strategy/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/analyzing-competitor-instagram-content-strategy/

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

Questions about analyzing-competitor-instagram-content-strategy

How do I install analyzing-competitor-instagram-content-strategy in Claude?

Run npx skills add apidojo-io/apidojo-skills --skill analyzing-competitor-instagram-content-strategy -a claude-code. The skill then lands at ~/.claude/skills/analyzing-competitor-instagram-content-strategy/SKILL.md.

What does analyzing-competitor-instagram-content-strategy do?

It scrapes a competitor's recent Instagram posts and measures posting frequency, content type mix, top posts, hashtag strategy and engagement benchmarks. The result is a strategy report with the gaps spelled out.

What do I need before running the skill?

An APIFY_TOKEN environment variable, which can live in a .env file. Optionally install the Apify MCP server and run it through the apify:run-actor tool instead.

Source text

SKILL.md · Apache-2.0
---
name: analyzing-competitor-instagram-content-strategy
description: >
  Analyzes a competitor's Instagram content strategy and performance using apidojo's Instagram
  scraper on Apify. Triggers when the user asks to: analyze what a competitor posts on Instagram,
  benchmark a competitor's Instagram engagement, see what content types perform best for a
  competitor on Instagram, reverse-engineer a competitor's Instagram content calendar, identify
  content gaps vs. a competitor on Instagram, compare posting frequency or content themes, or
  understand why a competitor's Instagram is growing.
  Returns post frequency, content type mix, top-performing posts, hashtag strategy, and engagement benchmarks.
  Ideal for social media managers, brand strategists, and content marketing teams.
license: Apache-2.0
metadata:
  author: apidojo
  version: "1.0"
  apify-actor: apidojo/instagram-scraper
---

# Analyzing Competitor Instagram Content Strategy

Reverse-engineers a competitor's Instagram content strategy by analyzing their last 50+ posts. Identifies what content formats, themes, and posting patterns drive their highest engagement.

## Prerequisites

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

## Inputs

| Parameter | Type | Required | Default | Notes |
|-----------|------|----------|---------|-------|
| `startUrls` | array | ✅ | `[]` | Instagram URLs — profiles, hashtags, locations, audio pages, reels |
| `until` | string | Optional | — | Scrape posts until this date (YYYY-MM-DD) |
| `maxItems` | number | Optional | Unlimited | Maximum posts to return |
| `customMapFunction` | string | Optional | — | JavaScript function to transform each output object |

## Workflow

```
Progress:
- [ ] Step 1: Scrape competitor's recent posts
- [ ] Step 2: Classify content types
- [ ] Step 3: Calculate engagement metrics per content type
- [ ] Step 4: Analyze posting patterns
- [ ] Step 5: (Optional) Compare to your account
- [ ] Step 6: Deliver strategy report
```

### Step 1: Scrape Competitor Profile


**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~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:
{
  "usernames": ["[COMPETITOR_HANDLE]"],
  "maxItems": 50
}
```

**REST API fallback:**
```bash
curl -X POST   "https://api.apify.com/v2/acts/apidojo~instagram-scraper/runs?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"usernames": ["competitor_handle"], "maxItems": 50}'
```

### Step 2: Content Classification

For each post, classify:
```
content_type:
  PRODUCT = post primarily shows product
  LIFESTYLE = product in context / aspirational
  EDUCATIONAL = tips, how-to, facts (carousel with text)
  SOCIAL_PROOF = testimonial, user tag, press feature
  ENTERTAINMENT = meme, trending audio, humor
  PROMOTIONAL = sale, discount, CTA-heavy
  BEHIND_SCENES = team, office, process
```

Format: `IMAGE` | `VIDEO` | `CAROUSEL`

### Step 3: Calculate Metrics

```
engagement_rate = (likes + comments) / follower_count * 100

per_type_avg_engagement = avg(engagement_rate for all posts of that type)

content_type_share = count(posts of type) / total_posts * 100
```

Top performing post: highest `(likes + comments * 3)` — comments weighted higher as active signal.

**Posting cadence:**
```
posts_per_week = total_posts / (date_range_days / 7)
best_day = day_of_week with highest avg engagement
best_hour = hour_of_day with highest avg engagement (use post `timestamp`)
```

### Step 4: Edge Cases

- **Competitor has very few posts** (< 20): Report available data; note low sample size; extend to 180-day window
- **Engagement rate << 1%**: Account may have bot followers or inactive audience; note this as "audience quality concern"
- **All posts are product/promo**: This competitor is over-indexed on promotional content — opportunity for content that educates or entertains
- **Carousel shows as single image**: Some scrapers return first image only; note when `type = CAROUSEL` for accurate content type count

## Output Format

```
# Competitor Instagram Strategy: @[COMPETITOR_HANDLE]
Posts analyzed: [N] | Followers: [N] | Overall Eng Rate: [X%] | Date: [DATE]

## Content Mix
| Type | % of Posts | Avg Eng Rate | Best Post Example |
|------|-----------|-------------|------------------|
| Product | [X%] | [X%] | [post excerpt] |
| Lifestyle | [X%] | [X%] | |
| Educational | [X%] | [X%] | |

## Format Distribution
Images: [X%] | Carousels: [X%] | Videos/Reels: [X%]
Best format by engagement: [FORMAT] ([X%] eng rate)

## Top 5 Posts (by Engagement)
| # | Type | Format | Likes | Comments | Eng Rate | Caption Preview |
|---|------|--------|-------|----------|----------|----------------|

## Posting Cadence
Frequency: [X] posts/week | Best day: [Day] | Best hour: [HH:00]

## Key Observations
1. [Pattern observation — e.g. "Carousel educational posts get 2× engagement of product posts"]
2. [Observation]
3. [Opportunity gap]
```

## Troubleshooting

**Scraper returns only recent 12 posts**: Instagram limits API access to recent posts. For 50-post analysis, run scraper and note actual count returned.
**Engagement rate seems wrong**: Verify `follower_count` is current — scraper may return the follower count at time of scrape, which could differ from post-date count for historical posts.
**Competitor has very high engagement**: Distinguish between genuine engagement and pods/bought engagement — genuine engagement shows variety in commenters; pod engagement shows the same accounts commenting repeatedly.

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

Similar skills

Everything for Marketing and content →

From the same set22

scraping-tiktok-profile-data Pulls TikTok profile stats and metadata for a batch of accounts: followers, following, total likes, video count, bio. Handy when you need to vet a creator list. CX Codex +1 834installs finding-instagram-creators-by-location Finds Instagram creators who post from a given city, venue or neighborhood. Useful for geo-targeted campaigns and regional partnerships. CX Codex +1 833installs scraping-instagram-location-content Pulls public Instagram posts tagged at one place and returns post URLs, captions, handles, likes and dates. Useful when you want to see what visitors post about a venue. CX Codex +1 810installs extracting-youtube-comments-for-research Pulls YouTube comments from videos and channels through Apify, then sorts them into themes, questions and sentiment. Useful when you need to know what viewers actually say. CX Codex +1 794installs monitoring-vc-investor-activity-on-twitter This skill pulls investor tweets through apidojo's scraper, classifies the accounts and scores deal signals. Useful when you are raising. CX Codex +1 789installs tracking-twitter-thought-leaders Finds Twitter/X accounts whose posts on a topic actually get shared, then hands back a ranked list for PR and partnerships. CX Codex +1 786installs monitoring-twitter-for-competitor-job-posts Tracks competitor hiring tweets on X and turns them into growth signals: who is hiring, for what role, and when. CX Codex +1 786installs analyzing-competitor-twitter-profile-content This skill pulls a competitor's or brand's tweet history through Apify and ranks posts by engagement. Useful when you need to see what a rival actually posts. CX Codex +1 784installs

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