analyzing-competitor-youtube-content-strategy
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAnalyzing 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
前置条件
- environment variable set
APIFY_TOKEN - Optional: Apify MCP server installed
- 设置环境变量
APIFY_TOKEN - 可选:安装Apify MCP服务器
Inputs
输入参数
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
| array | Optional | | YouTube URLs — channels, playlists, Shorts, search results |
| array | Optional | | YouTube channel handles (e.g. |
| boolean | Optional | | Retrieve trending videos |
| array | Optional | | Search keywords |
| string | Optional | | Country code for results (e.g. |
| string | Optional | | Language code (e.g. |
| string | Optional | | Upload date filter: |
| string | Optional | | Duration filter: |
| string | Optional | | Feature filter: |
| string | Optional | | Sort order for search results |
| number | Optional | Unlimited | Maximum videos to return |
| string | Optional | — | JavaScript function to transform each output object |
| 参数 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| array | 可选 | | YouTube链接 — 频道、播放列表、Shorts、搜索结果 |
| array | 可选 | | YouTube频道账号(例如 |
| boolean | 可选 | | 获取热门视频 |
| array | 可选 | | 搜索关键词 |
| string | 可选 | | 结果对应的国家代码(例如 |
| string | 可选 | | 语言代码(例如 |
| string | 可选 | | 上传日期筛选: |
| string | 可选 | | 时长筛选: |
| string | 可选 | | 特性筛选: |
| string | 可选 | | 搜索结果的排序方式 |
| number | 可选 | 无限制 | 返回的最大视频数量 |
| 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 reportProgress:
- [ ] 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 reportStep 1: Scrape Channel
步骤1:爬取频道数据
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~youtube-scraper"
--input '{"param": "value"}'
--actor "apidojo~youtube-scraper"
--input '{"param": "value"}'
node scripts/run_actor.js
--actor "apidojo~youtube-scraper"
--input '{"param": "value"}'
--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
--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
--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
--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
--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 minvideo_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 minStep 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 weekTop performer: Sort by ; also identify where engagement_rate > 2× channel average despite lower views.
viewCounthidden gemsview_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高表现视频: 按排序;同时识别「潜力视频」——即浏览量较低但互动率超过频道平均水平2倍的视频。
viewCountStep 4: Edge Cases
步骤4:边缘情况
- Channel is very new (< 6 months, < 20 videos): Reduce to all available; note limited sample
videos_to_analyze - 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
输出格式
undefinedundefinedCompetitor 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 Videos | Avg Views | Avg Eng Rate | Best Example |
|---|---|---|---|---|
| Tutorial | [X%] | [N] | [X%] | [title] |
| List | [X%] | [N] | [X%] | |
| Review | [X%] | [N] | [X%] |
| Video Type | % of Videos | Avg Views | Avg Eng Rate | Best Example |
|---|---|---|---|---|
| Tutorial | [X%] | [N] | [X%] | [title] |
| List | [X%] | [N] | [X%] | |
| Review | [X%] | [N] | [X%] |
Video Length Performance
Video Length Performance
| Length Tier | % | Avg Views | Avg Eng Rate |
|---|---|---|---|
| Short (< 5min) | [X%] | [N] | [X%] |
| Length Tier | % | Avg Views | Avg Eng Rate |
|---|---|---|---|
| Short (< 5min) | [X%] | [N] | [X%] |
Top 5 Videos (by Views)
Top 5 Videos (by Views)
| # | Title | Type | Views | Likes | Comments | Length | Eng Rate |
|---|
| # | Title | Type | Views | Likes | Comments | Length | Eng 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
- [Gap: e.g. "No case studies — this format gets 3× their avg views when they do it"]
- [Opportunity]
- [Their weakness]
undefined- [Gap: e.g. "No case studies — this format gets 3× their avg views when they do it"]
- [Opportunity]
- [Their weakness]
undefinedTroubleshooting
故障排除
Scraper returns channel page but no videos: Try direct video search for channel name as keyword; some channel URLs need the 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.
/videos爬虫返回频道页面但无视频数据:尝试以频道名称为关键词直接搜索视频;部分频道URL需要添加后缀。
成熟频道的浏览量极低:该频道可能已衰退——查看最新视频的发布日期;可能已停止更新。
无法从爬取数据中获取频道订阅数:当订阅数不可用时,使用视频浏览量与视频数量的比率作为频道健康状况的替代指标。
/videos