monitoring-instagram-hashtag-trends
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMonitoring Instagram Hashtag Trends
监控Instagram Hashtag趋势
Analyzes hashtag performance on Instagram to identify which tags drive the best engagement for a content category. Builds a tiered hashtag strategy (broad/mid/niche) based on actual post data.
分析Instagram上hashtag的表现,找出哪些标签能为特定内容品类带来最佳互动效果。基于真实帖子数据构建分层hashtag策略(宽泛/中等/垂直细分)。
Prerequisites
前置条件
- environment variable set
APIFY_TOKEN - Optional: Apify MCP server installed
- 设置环境变量
APIFY_TOKEN - 可选:安装Apify MCP服务器
Inputs
输入参数
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
| array | ✅ | | Instagram URLs — profiles, hashtags, locations, audio pages, reels |
| string | Optional | — | Scrape posts until this date (YYYY-MM-DD) |
| number | Optional | Unlimited | Maximum posts to return |
| string | Optional | — | JavaScript function to transform each output object |
| 参数 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| array | ✅ | | Instagram URL — 主页、hashtag、地点、音频页面、Reels |
| string | 可选 | — | 抓取截止日期(格式:YYYY-MM-DD) |
| number | 可选 | 无限制 | 返回的最大帖子数量 |
| string | 可选 | — | 用于转换每个输出对象的JavaScript函数 |
Workflow
工作流程
Progress:
- [ ] Step 1: Scrape recent posts for each hashtag
- [ ] Step 2: Calculate per-hashtag metrics
- [ ] Step 3: Tier hashtags by competition/opportunity
- [ ] Step 4: Build recommended hashtag setProgress:
- [ ] Step 1: Scrape recent posts for each hashtag
- [ ] Step 2: Calculate per-hashtag metrics
- [ ] Step 3: Tier hashtags by competition/opportunity
- [ ] Step 4: Build recommended hashtag setStep 1: Scrape Hashtags
步骤1:抓取Hashtag数据
Recommended — run_actor.js (handles waiting, output, and file saving automatically):
bash
undefined推荐方式 — run_actor.js(自动处理等待、输出和文件保存):
bash
undefinedQuick answer (prints table to chat)
Quick answer (prints table to chat)
node scripts/run_actor.js
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
node scripts/run_actor.js
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
Save as CSV
Save as CSV
node scripts/run_actor.js
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
node scripts/run_actor.js
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
Save as JSON
Save as JSON
node scripts/run_actor.js
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
--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": ["[HASHTAG_1]", "[HASHTAG_2]", "..."],
"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 '{"keywords": ["#[hashtag1]", "#[hashtag2]"], "maxItems": 50}'Run per hashtag (or in batch if MCP supports multiple hashtags in one run).
node scripts/run_actor.js
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
--actor "apidojo~instagram-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
> `APIFY_TOKEN`必须在环境变量或`.env`文件中配置。
**若Apify MCP可用:**Tool: apify:run-actor
Actor: "apidojo~instagram-scraper"
Input:
{
"keywords": ["[HASHTAG_1]", "[HASHTAG_2]", "..."],
"maxItems": 50
}
**REST API备选方案:**
```bash
curl -X POST "https://api.apify.com/v2/acts/apidojo~instagram-scraper/runs?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{"keywords": ["#[hashtag1]", "#[hashtag2]"], "maxItems": 50}'针对每个hashtag单独运行(若MCP支持一次运行多个hashtag则可批量处理)。
Step 2: Calculate Metrics
步骤2:计算指标
For each hashtag:
avg_likes = mean(likesCount for all sampled posts)
avg_comments = mean(commentsCount for all sampled posts)
engagement_per_post = avg_likes + avg_comments
post_volume_estimate = total posts shown (from platform, if available)
opportunity_score = engagement_per_post / (post_volume_estimate / 10000 + 1)Higher score = better engagement relative to competition.
Hashtag tier:
- HIGH_COMPETITION: > 1M posts — hard to rank; use rarely
- MID_TIER: 100K–1M posts — good reach/competition balance
- NICHE: < 100K posts — easier to rank, less reach but more targeted
针对每个hashtag:
avg_likes = mean(likesCount for all sampled posts)
avg_comments = mean(commentsCount for all sampled posts)
engagement_per_post = avg_likes + avg_comments
post_volume_estimate = total posts shown (from platform, if available)
opportunity_score = engagement_per_post / (post_volume_estimate / 10000 + 1)分数越高,意味着相对竞争环境下的互动表现越好。
Hashtag层级:
- HIGH_COMPETITION(高竞争):帖子数超过100万——难以获得高排名;尽量少用
- MID_TIER(中等层级):帖子数10万至100万——覆盖范围与竞争程度平衡较好
- NICHE(垂直细分):帖子数少于10万——更容易获得高排名,覆盖范围较小但受众更精准
Step 3: Edge Cases
步骤3:异常情况处理
- Hashtag is banned: If scrape returns 0 posts, hashtag may be banned by Instagram — drop from strategy
- Very new hashtag (< 1K posts): Can't calculate reliable metrics; flag as
EMERGING — LOW DATA - Same posts appear across multiple hashtags: Deduplicate when calculating engagement metrics; report true unique post count
- Hashtag被封禁:如果抓取返回0条帖子,该hashtag可能已被Instagram封禁——从策略中移除
- 全新Hashtag(帖子数<1000):无法计算可靠指标;标记为
EMERGING — LOW DATA - 同一帖子出现在多个Hashtag下:计算互动指标时去重;报告真实的唯一帖子数量
Output Format
输出格式
undefinedundefinedInstagram Hashtag Strategy: [NICHE]
Instagram Hashtag Strategy: [NICHE]
Hashtags tested: [N] | Date: [DATE]
Hashtags tested: [N] | Date: [DATE]
Performance by Hashtag
Performance by Hashtag
| Hashtag | Est. Posts | Avg Likes/Post | Avg Comments | Tier | Opportunity Score |
|---|---|---|---|---|---|
| #[tag] | [N] | [N] | [N] | MID_TIER | [0.XX] |
| Hashtag | Est. Posts | Avg Likes/Post | Avg Comments | Tier | Opportunity Score |
|---|---|---|---|---|---|
| #[tag] | [N] | [N] | [N] | MID_TIER | [0.XX] |
Recommended Hashtag Set (Mix Strategy)
Recommended Hashtag Set (Mix Strategy)
Use 20-30 hashtags per post in this ratio:
- 5 HIGH_COMPETITION tags: [list]
- 10 MID_TIER tags: [list]
- 10 NICHE tags: [list]
Use 20-30 hashtags per post in this ratio:
- 5 HIGH_COMPETITION tags: [list]
- 10 MID_TIER tags: [list]
- 10 NICHE tags: [list]
Banned / Restricted Hashtags
Banned / Restricted Hashtags
Avoid: [list of any hashtags that returned 0 results]
undefinedAvoid: [list of any hashtags that returned 0 results]
undefinedTroubleshooting
故障排除
Engagement data varies widely: Normal for Instagram; use median, not mean, to reduce outlier impact.
Hashtag has many posts but low engagement: High volume + low engagement = dominated by bots or spam — low-value for reach; deprioritize.
Niche hashtag auto-generation produces no results: Not all niches have well-established hashtag communities — focus on the ones that exist and perform.
互动数据波动大:这在Instagram上属于正常现象;使用中位数而非平均值来降低异常值的影响。
Hashtag帖子多但互动量低:高帖子量+低互动量意味着该标签被机器人或垃圾内容占据——对提升覆盖范围价值低;降低优先级。
垂直细分Hashtag自动生成无结果:并非所有垂直领域都有成熟的hashtag社群——专注于已存在且表现良好的标签。