数据与AI
按关键词批量抓取 YouTube…
当需要按关键词或搜索查询批量获取 YouTube 视频列表及其互动数据时,用 Apify 的 apidojo/youtube-scraper 抓取并导出为表格或 JSON。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
按关键词批量抓取 YouTube 视频元特定
解决思路
- 准备环境:设置 APIFY_TOKEN 环境变量(或写入 .env 文件),可选安装 Apify MCP server。
- 构造输入参数:keywords(搜索关键词数组)、startUrls(YouTube 频道/播放列表/Shorts/搜索结果 URL)、youtubeHandles(如 @kurzgesagt)、getTrending(是否取热门);以及过滤项 gl(国家码,默认 us)、hl(语言码,默认 en)、uploadDate(any/hour/today/week/month/year)、duration(any/short/long)、features(4k/hd/live/cc/3d/hdr 等)、sort(排序,默认 r)、maxItems(最大返回数)、customMapFunction(用 JS 函数转换每条输出对象)。
- 推荐方式:用 scripts/run_actor.js 运行 actor,它会自动等待完成、输出结果并保存文件。快速查看:node scripts/run_actor.js --actor "apidojo~youtube-scraper" --input '{"param": "value"}';存 CSV:加 --output YYYY-MM-DD_results.csv --format csv;存 JSON:加 --output YYYY-MM-DD_results.json --format json。
- 若已装 Apify MCP:调用工具 apify:run-actor,Actor 填 "apidojo~youtube-scraper",Input 传 {"searchKeywords": "<query>", "maxResults": 50, "sortBy": "relevance"}。
- REST API 兜底:POST https://api.apify.com/v2/acts/apidojo~youtube-scraper/runs?token=$APIFY_TOKEN,Header Content-Type: application/json,body 如 {"searchKeywords": "<query>", "maxResults": 50};从响应中取 id 存为 RUN_ID。
- 轮询运行状态直到成功:curl "https://api.apify.com/v2/actor-runs/$RUN_ID?token=$APIFY_TOKEN" | grep '"status"',等待 status = SUCCEEDED。
- 拉取结果:curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN&format=json"。
- 处理边界情况:结果少于 20 条说明查询过窄,需放宽关键词;年龄限制内容元数据可能不全,对缺失 viewCount 的行做标记;按 videoId 去重。
- 按统一格式交付:输出标题为 # YouTube Video Dataset: "<query>",注明 Videos collected: N | Sort: <sortBy>,用表格列出 Video ID、Title、Channel、Views、Likes、Comments、Duration、Published;可用字段包括 videoId、title、channelName、channelId、viewCount、likeCount、commentCount、duration、publishedAt、videoUrl、thumbnailUrl、description。
- 排障:结果少于请求量属正常(冷门查询 YouTube 搜索结果有限);点赞数缺失可能是视频隐藏了计数(YouTube 已隐藏点踩但点赞通常仍可见)。
适用边界 · 注意事项
- 没有 Apify 账号或未配置 APIFY_TOKEN 时无法使用。
- 需要抓取非 YouTube 平台或需要登录/私密内容时不适用。