mcpField
S
scraping-youtube-channel-data

scraping-youtube-channel-data

github.com/apidojo-io数据与数据库1751 次安装24 周前更新
代码仓库

关于 scraping-youtube-channel-data

用于从 YouTube 频道网址或句柄收集频道统计数据,并可选获取视频目录的技能。它运行 Apify YouTube 抓取器,支持搜索和趋势结果。

主要功能

  1. 01收集频道统计数据
  2. 02可选获取视频目录
  3. 03按关键词和筛选条件搜索
  4. 04获取趋势视频
  5. 05将结果保存为 CSV

适用场景

  1. 01比较多个频道的订阅者数和观看量
  2. 02收集频道的视频目录
  3. 03按关键词、日期或时长查找视频
  4. 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