SuperAPI AI 工具集

scraping-youtube-comments

数据与分析

查看项目

更新于 10-15 11:51

技能介绍

用途

该技能用于从任意 YouTube 视频导出完整评论数据集,返回评论正文、作者及互动数据,供后续分析使用。当用户提出获取某 YouTube 视频全部评论、导出评论等需求时触发。

主要能力

  • 抓取指定 YouTube 视频的评论,输出字段包括:id、authorDisplayName、textDisplay、likeCount、totalReplyCount、publishedAt、isReply、parentId。
  • 支持通过 videoUrls 指定视频,并可设置 maxComments(最大评论数)与 includeReplies(是否包含回复)。
  • 输出可保存为 CSV 或 JSON 文件,也可直接在对话中打印表格。

使用方式

前置条件:设置 APIFY_TOKEN 环境变量;可选安装 Apify MCP 服务器。

工作流程:

  1. 校验视频 URL。
  2. 运行 youtube-scraper(评论模式)。
  3. 轮询直至状态为 SUCCEEDED。
  4. 交付评论数据集。

推荐使用 run_actor.js 脚本(自动处理等待、输出与文件保存):

# 快速回答(在对话中打印表格)
node scripts/run_actor.js \
  --actor "apidojo~youtube-comments-scraper" \
  --input '{"param": "value"}'

# 保存为 CSV
node scripts/run_actor.js \
  --actor "apidojo~youtube-comments-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# 保存为 JSON
node scripts/run_actor.js \
  --actor "apidojo~youtube-comments-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.json --format json

APIFY_TOKEN 必须在环境变量或 .env 文件中设置。

若可用 Apify MCP:

工具:apify:run-actor Actor:"apidojo~youtube-comments-scraper" 输入:

{
  "videoUrls": ["https://www.youtube.com/watch?v=<VIDEO_ID>"],
  "maxComments": 200,
  "includeReplies": false
}

REST API 备用方式:

curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~youtube-comments-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"videoUrls": ["<url>"], "maxComments": 200}'

保存返回的 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"

输入参数

参数 类型 必填 默认值 说明
startUrls array 可选 [] YouTube URL——频道、播放列表、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 函数

输出格式

# YouTube Comment Dataset
Video: <url> | Comments collected: N | Includes replies: YES/NO

| Comment ID | Author | Text | Likes | Replies | Timestamp |
|------------|--------|------|-------|---------|-----------|
| ...        | ...    | ...  | ...   | ...     | ...       |

可用字段:id、authorDisplayName、textDisplay、likeCount、totalReplyCount、publishedAt、isReply、parentId。

边界情况与限制

  • 评论已关闭:返回 0,需告知用户。
  • 直播:直播/首映视频的评论数据可能不完整。
  • 已删除评论:可能显示为空文本字符串,建议过滤掉 text 为 "" 的行。
  • 文本截断:YouTube API 可能截断超长评论,获取完整文本需要额外抓取回复。

故障排查

  • 评论已关闭:创作者已关闭评论,无法获取。
  • 文本截断:YouTube API 可能截断超长评论,完整文本需通过回复抓取获取。