analyzing-competitor-youtube-content-strategy

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Analyzing Competitor YouTube Content Strategy

分析竞争对手YouTube内容策略

Reverse-engineers a competitor's YouTube channel by analyzing their last 20-50 videos. Identifies which video topics, formats, and lengths drive the most views and engagement.
通过分析竞争对手最近20-50个视频,逆向解析其YouTube频道。确定哪些视频话题、格式和时长能带来最高的浏览量与互动量。

Prerequisites

前置条件

  • APIFY_TOKEN
    environment variable set
  • Optional: Apify MCP server installed
  • 设置
    APIFY_TOKEN
    环境变量
  • 可选:安装Apify MCP服务器

Inputs

输入参数

ParameterTypeRequiredDefaultNotes
startUrls
arrayOptional
[]
YouTube URLs — channels, playlists, Shorts, search results
youtubeHandles
arrayOptional
[]
YouTube channel handles (e.g.
@kurzgesagt
)
getTrending
booleanOptional
false
Retrieve trending videos
keywords
arrayOptional
[]
Search keywords
gl
stringOptional
us
Country code for results (e.g.
US
,
GB
)
hl
stringOptional
en
Language code (e.g.
en
,
de
)
uploadDate
stringOptional
all
Upload date filter:
any
,
hour
,
today
,
week
,
month
,
year
duration
stringOptional
all
Duration filter:
any
,
short
,
long
features
stringOptional
all
Feature filter:
4k
,
hd
,
live
,
cc
,
3d
,
hdr
, etc.
sort
stringOptional
r
Sort order for search results
maxItems
numberOptionalUnlimitedMaximum videos to return
customMapFunction
stringOptionalJavaScript function to transform each output object
参数类型是否必填默认值说明
startUrls
array可选
[]
YouTube链接 — 频道、播放列表、Shorts、搜索结果
youtubeHandles
array可选
[]
YouTube频道账号(例如
@kurzgesagt
getTrending
boolean可选
false
获取热门视频
keywords
array可选
[]
搜索关键词
gl
string可选
us
结果对应的国家代码(例如
US
GB
hl
string可选
en
语言代码(例如
en
de
uploadDate
string可选
all
上传日期筛选:
any
hour
today
week
month
year
duration
string可选
all
时长筛选:
any
short
long
features
string可选
all
特性筛选:
4k
hd
live
cc
3d
hdr
sort
string可选
r
搜索结果的排序方式
maxItems
number可选无限制返回的最大视频数量
customMapFunction
string可选用于转换每个输出对象的JavaScript函数

Workflow

工作流程

Progress:
- [ ] Step 1: Scrape competitor's recent videos
- [ ] Step 2: Classify video types and topics
- [ ] Step 3: Calculate performance metrics
- [ ] Step 4: Identify patterns and top performers
- [ ] Step 5: (Optional) Compare with own channel
- [ ] Step 6: Deliver strategy report
Progress:
- [ ] Step 1: Scrape competitor's recent videos
- [ ] Step 2: Classify video types and topics
- [ ] Step 3: Calculate performance metrics
- [ ] Step 4: Identify patterns and top performers
- [ ] Step 5: (Optional) Compare with own channel
- [ ] Step 6: Deliver strategy report

Step 1: Scrape Channel

步骤1:爬取频道数据

Recommended — run_actor.js (handles waiting, output, and file saving automatically):
bash
undefined
推荐方式 — run_actor.js(自动处理等待、输出和文件保存):
bash
undefined

Quick answer (prints table to chat)

Quick answer (prints table to chat)

node scripts/run_actor.js
--actor "apidojo~youtube-scraper"
--input '{"param": "value"}'
node scripts/run_actor.js
--actor "apidojo~youtube-scraper"
--input '{"param": "value"}'

Save as CSV

Save as CSV

node scripts/run_actor.js
--actor "apidojo~youtube-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
node scripts/run_actor.js
--actor "apidojo~youtube-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~youtube-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~youtube-scraper" Input: { "startUrls": [{"url": "[COMPETITOR_CHANNEL_URL]"}], "maxResults": 30, "type": "video" }

**REST API fallback:**
```bash
curl -X POST   "https://api.apify.com/v2/acts/apidojo~youtube-scraper/runs?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"startUrls": [{"url": "https://www.youtube.com/@competitorhandle"}], "maxResults": 30, "type": "video"}'
node scripts/run_actor.js
--actor "apidojo~youtube-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
> 必须在环境变量或`.env`文件中设置`APIFY_TOKEN`。

**若Apify MCP可用:**
Tool: apify:run-actor Actor: "apidojo~youtube-scraper" Input: { "startUrls": [{"url": "[COMPETITOR_CHANNEL_URL]"}], "maxResults": 30, "type": "video" }

**REST API备选方案:**
```bash
curl -X POST   "https://api.apify.com/v2/acts/apidojo~youtube-scraper/runs?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"startUrls": [{"url": "https://www.youtube.com/@competitorhandle"}], "maxResults": 30, "type": "video"}'

Step 2: Classify Videos

步骤2:视频分类

video_type:
  TUTORIAL = title contains "how to", "step by step", "guide", "tutorial"
  LIST = title contains "top [N]", "[N] best", "[N] things", "mistakes"
  REVIEW = title contains "review", "tested", "worth it", "vs"
  THOUGHT_LEADERSHIP = opinion, trend analysis, "the future of", "why"
  NEWS = title contains news, announcement, breaking
  CASE_STUDY = "how [brand] grew", "inside", "behind the scenes"

video_length_tier:
  SHORT = < 5 min
  MEDIUM = 5–15 min
  LONG = 15–30 min
  DEEP_DIVE = > 30 min
video_type:
  TUTORIAL = title contains "how to", "step by step", "guide", "tutorial"
  LIST = title contains "top [N]", "[N] best", "[N] things", "mistakes"
  REVIEW = title contains "review", "tested", "worth it", "vs"
  THOUGHT_LEADERSHIP = opinion, trend analysis, "the future of", "why"
  NEWS = title contains news, announcement, breaking
  CASE_STUDY = "how [brand] grew", "inside", "behind the scenes"

video_length_tier:
  SHORT = < 5 min
  MEDIUM = 5–15 min
  LONG = 15–30 min
  DEEP_DIVE = > 30 min

Step 3: Performance Metrics

步骤3:表现指标

view_ratio = viewCount / subscriberCount  # corrected by subscriberCount at time of analysis

engagement_rate = (likeCount + commentCount) / viewCount * 100

publish_cadence = total_videos / (date_range_weeks)  # videos per week
Top performer: Sort by
viewCount
; also identify
hidden gems
where engagement_rate > 2× channel average despite lower views.
view_ratio = viewCount / subscriberCount  # corrected by subscriberCount at time of analysis

engagement_rate = (likeCount + commentCount) / viewCount * 100

publish_cadence = total_videos / (date_range_weeks)  # videos per week
高表现视频:
viewCount
排序;同时识别「潜力视频」——即浏览量较低但互动率超过频道平均水平2倍的视频。

Step 4: Edge Cases

步骤4:边缘情况

  • Channel is very new (< 6 months, < 20 videos): Reduce
    videos_to_analyze
    to all available; note limited sample
  • Views are all very low (< 1K per video): Channel may be struggling or niche is very small; provide absolute numbers, not just ratios
  • One mega-viral video skews averages: Report median views alongside mean; flag outlier
  • Channel posts in multiple languages: Group by language; analyze each cohort separately
  • 频道非常新(成立不足6个月,视频少于20个):将
    videos_to_analyze
    调整为所有可用视频;注明样本量有限
  • 所有视频浏览量极低(每个视频不足1000次):该频道可能发展困难或所处领域非常小众;提供绝对数值,而非仅展示比率
  • 单个爆款视频拉低平均值:同时报告浏览量中位数与平均值;标记异常值
  • 频道发布多语言内容:按语言分组;分别分析每个群组

Output Format

输出格式

undefined
undefined

Competitor YouTube Strategy: [CHANNEL_NAME]

Competitor YouTube Strategy: [CHANNEL_NAME]

Videos analyzed: [N] | Subscribers: [N] | Avg Views: [N] | Avg Eng Rate: [X%] | Date: [DATE]
Videos analyzed: [N] | Subscribers: [N] | Avg Views: [N] | Avg Eng Rate: [X%] | Date: [DATE]

Content Mix

Content Mix

Video Type% of VideosAvg ViewsAvg Eng RateBest Example
Tutorial[X%][N][X%][title]
List[X%][N][X%]
Review[X%][N][X%]
Video Type% of VideosAvg ViewsAvg Eng RateBest Example
Tutorial[X%][N][X%][title]
List[X%][N][X%]
Review[X%][N][X%]

Video Length Performance

Video Length Performance

Length Tier%Avg ViewsAvg Eng Rate
Short (< 5min)[X%][N][X%]
Length Tier%Avg ViewsAvg Eng Rate
Short (< 5min)[X%][N][X%]

Top 5 Videos (by Views)

Top 5 Videos (by Views)

#TitleTypeViewsLikesCommentsLengthEng Rate
#TitleTypeViewsLikesCommentsLengthEng Rate

Publishing Cadence

Publishing Cadence

Videos/week: [X] | Best day to publish: [Day] | Monthly trend: [↑/↓/flat]
Videos/week: [X] | Best day to publish: [Day] | Monthly trend: [↑/↓/flat]

Key Opportunities vs. Their Strategy

Key Opportunities vs. Their Strategy

  1. [Gap: e.g. "No case studies — this format gets 3× their avg views when they do it"]
  2. [Opportunity]
  3. [Their weakness]
undefined
  1. [Gap: e.g. "No case studies — this format gets 3× their avg views when they do it"]
  2. [Opportunity]
  3. [Their weakness]
undefined

Troubleshooting

故障排除

Scraper returns channel page but no videos: Try direct video search for channel name as keyword; some channel URLs need the
/videos
suffix. View counts are very low for an established channel: Channel may have declined — check publish date of latest video; may be dormant. Can't determine channel subscriber count from scrape: Use the video view-to-video count ratio as a proxy for channel health when subscriber count is unavailable.
爬虫返回频道页面但无视频数据:尝试以频道名称为关键词直接搜索视频;部分频道URL需要添加
/videos
后缀。 成熟频道的浏览量极低:该频道可能已衰退——查看最新视频的发布日期;可能已停止更新。 无法从爬取数据中获取频道订阅数:当订阅数不可用时,使用视频浏览量与视频数量的比率作为频道健康状况的替代指标。