关于 scraping-youtube-channel-data
用于从 YouTube 频道网址或句柄收集频道统计数据,并可选获取视频目录的技能。它运行 Apify YouTube 抓取器,支持搜索和趋势结果。
主要功能
- 01收集频道统计数据
- 02可选获取视频目录
- 03按关键词和筛选条件搜索
- 04获取趋势视频
- 05将结果保存为 CSV
适用场景
- 01比较多个频道的订阅者数和观看量
- 02收集频道的视频目录
- 03按关键词、日期或时长查找视频
- 04获取指定国家的趋势视频
MCP 相关
如有 Apify MCP 服务,可通过其 `apify:run-actor` 工具运行抓取器;文档也介绍了脚本和 REST API 调用方式。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ apidojo-io/ apidojo-skills --skill scraping-youtube-channel-data安装后在 Claude Code 中输入/scraping-youtube-channel-data确认已加载。
详细介绍
抓取 YouTube 频道数据
导出任意 YouTube 频道网址或账号名的频道级统计数据,以及可选的视频目录。
前提条件
- 已设置
APIFY_TOKEN环境变量 - 可选:已安装 Apify MCP 服务
输入
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
startUrls | 数组 | 可选 | [] | YouTube 网址——频道、播放列表、Shorts、搜索结果 |
youtubeHandles | 数组 | 可选 | [] | YouTube 频道账号名(例如 @kurzgesagt) |
getTrending | 布尔值 | 可选 | false | 获取热门视频 |
keywords | 数组 | 可选 | [] | 搜索关键词 |
gl | 字符串 | 可选 | us | 结果的国家/地区代码(例如 US、GB) |
hl | 字符串 | 可选 | en | 语言代码(例如 en、de) |
uploadDate | 字符串 | 可选 | all | 上传日期筛选:any、hour、today、week、month、year |
duration | 字符串 | 可选 | all | 时长筛选:any、short、long |
features | 字符串 | 可选 | all | 特征筛选:4k、hd、live、cc、3d、hdr 等 |
sort | 字符串 | 可选 | r | 搜索结果的排序方式 |
maxItems | 数字 | 可选 | 不限 | 要返回的最大视频数 |
customMapFunction | 字符串 | 可选 | — | 用于转换每个输出对象的 JavaScript 函数 |
工作流
Progress:
- [ ] Step 1: Normalize channel URLs
- [ ] Step 2: Run youtube-scraper
- [ ] Step 3: Poll for SUCCEEDED
- [ ] Step 4: Deliver channel dataset
步骤 2:运行 Actor
推荐——run_actor.js(自动处理等待、输出和文件保存):
# Quick answer (prints table to chat)
node scripts/run_actor.js \
--actor "apidojo~youtube-channel-scraper" \
--input '{"param": "value"}'
# Save as CSV
node scripts/run_actor.js \
--actor "apidojo~youtube-channel-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# Save as JSON
node scripts/run_actor.js \
--actor "apidojo~youtube-channel-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.json --format json
必须在环境或
.env文件中设置APIFY_TOKEN。
如果 Apify MCP 可用:
Tool: apify:run-actor
Actor: "apidojo~youtube-channel-scraper"
Input:
{
"channelUrls": ["https://www.youtube.com/@channelhandle"],
"maxVideos": 30
}
REST API 备用方案:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~youtube-channel-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"channelUrls": ["https://www.youtube.com/@channelhandle"], "maxVideos": 30}'
将 id 保存为 RUN_ID。轮询,直到 status = SUCCEEDED:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID?token=$APIFY_TOKEN" | grep '"status"'
获取结果:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN&format=json"
步骤 3:处理边缘情况
- 未找到频道网址:账号名可能已更改——请在 YouTube 上核实。
- 隐藏订阅者数量:部分频道会隐藏订阅者数量;该字段会返回 null——请标记这些情况。
- 受年龄限制的频道:可能只返回有限的元数据。
输出格式
# YouTube Channel Dataset
Channels requested: N | Returned: N
| Channel | Subscribers | Total Views | Videos | Joined | Country | Recent Avg Views |
|---------|-------------|-------------|--------|--------|---------|-----------------|
| ... | ... | ... | ... | ... | ... | ... |
Available fields: channelName, channelId, subscriberCount, viewCount, videoCount,
country, joinedDate, description, channelUrl, recentVideos[]
故障排除
隐藏订阅者数量: YouTube 允许频道隐藏此信息——返回 null 并在输出中注明。
视频目录过大: 将每次运行的 maxVideos 设为不超过 100,以避免超时。
评论
支持 Markdown