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.
npx skills add apidojo-io/apidojo-skills --skill analyzing-competitor-instagram-content-strategy -a claude-codeWhat 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-code2Manually: put the files in place
~/.claude/skills/analyzing-competitor-instagram-content-strategy/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/analyzing-competitor-instagram-content-strategy/
1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill analyzing-competitor-instagram-content-strategy -a codex2Manually: put the files in place
.agents/skills/analyzing-competitor-instagram-content-strategy/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill analyzing-competitor-instagram-content-strategy -a cursor2Manually: put the files in place
.cursor/skills/analyzing-competitor-instagram-content-strategy/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install apidojo-io/apidojo-skills analyzing-competitor-instagram-content-strategy2Manually: put the files in place
.github/skills/analyzing-competitor-instagram-content-strategy/SKILL.md1Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill analyzing-competitor-instagram-content-strategy -a gemini-cli2Platform CLI
gemini skills install https://github.com/apidojo-io/apidojo-skills --path skills/intent/analyzing-competitor-instagram-content-strategyManually: put the files in place
.devin/skills/analyzing-competitor-instagram-content-strategy/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill analyzing-competitor-instagram-content-strategy -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
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