关于 scraping-youtube-comments
此技能通过 Apify 抓取 YouTube 视频评论数据,供研究者和分析人员进行后续分析。可按视频、频道、搜索词等指定范围,并导出评论文本、作者和互动数据。
主要功能
- 01抓取视频评论及回复
- 02按 URL、频道或关键词搜索
- 03设置地区、语言和筛选条件
- 04限制视频数量并转换输出
- 05获取作者与互动数据
适用场景
- 01分析视频评论反馈
- 02比较不同视频的互动情况
- 03按关键词查找相关视频评论
MCP 相关
可选使用 Apify MCP 的 apify:run-actor 工具调用 apidojo~youtube-comments-scraper;也支持通过脚本或 REST API 运行。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ apidojo-io/ apidojo-skills --skill scraping-youtube-comments安装后在 Claude Code 中输入/scraping-youtube-comments确认已加载。
详细介绍
抓取 YouTube 评论
导出任意 YouTube 视频的完整评论数据集。返回评论文本、作者和互动数据,供后续分析使用。
前提条件
- 已设置
APIFY_TOKEN环境变量 - 可选:已安装 Apify MCP 服务
输入
| 参数 | 类型 | 必填 | 默认值 | 备注 |
|---|---|---|---|---|
startUrls | 数组 | 可选 | [] | YouTube URL——频道、播放列表、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: Validate video URLs
- [ ] Step 2: Run youtube-scraper (comment mode)
- [ ] Step 3: Poll for SUCCEEDED
- [ ] Step 4: Deliver comment dataset
步骤 2:运行 Actor
推荐方式——run_actor.js(自动处理等待、输出和文件保存):
# Quick answer (prints table to chat)
node scripts/run_actor.js \
--actor "apidojo~youtube-comments-scraper" \
--input '{"param": "value"}'
# Save as CSV
node scripts/run_actor.js \
--actor "apidojo~youtube-comments-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# Save as JSON
node scripts/run_actor.js \
--actor "apidojo~youtube-comments-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.json --format json
必须在环境或
.env文件中设置APIFY_TOKEN。
如果 Apify MCP 可用:
Tool: apify:run-actor
Actor: "apidojo~youtube-comments-scraper"
Input:
{
"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"
步骤 3:处理边缘情况
- 已停用评论: 返回 0 条——请告知用户。
- 直播: 直播或首映视频的评论数据可能不完整。
- 已删除的评论: 文本可能为空字符串——请筛除
text: ""的行。
输出格式
# YouTube Comment Dataset
Video: <url> | Comments collected: N | Includes replies: YES/NO
| Comment ID | Author | Text | Likes | Replies | Timestamp |
|------------|--------|------|-------|---------|-----------|
| ... | ... | ... | ... | ... | ... |
Available fields: id, authorDisplayName, textDisplay, likeCount, totalReplyCount,
publishedAt, isReply, parentId
故障排除
已停用评论: 创作者已关闭评论,因此无法获取。 文本被截断: YouTube API 可能会截断特别长的评论;要获取完整文本,需要抓取回复。
评论
支持 Markdown