SuperAPI AI 工具集

youtube-connect

数据与分析

查看项目

更新于 10-30 16:16

技能介绍

用途

YouTube Connect 用于把 YouTube 频道接入只读的 Google API,让后续其他技能读取真实数据,而不是用户手动粘贴的数字。配置一次后,每个视频会生成一份本地指标文件,供其他技能直接读取。

主要能力

  • 在浏览器中完成一次 Google Cloud 项目配置,启用 YouTube Data API v3 与 YouTube Analytics API。
  • 在终端完成一次 OAuth 授权,申请只读的 youtube.readonly 与 yt-analytics.readonly 权限。
  • 按需拉取单个视频或最近上传视频的指标,包括标题、时长、发布时间、播放量、展现量、点击率、平均观看时长、平均观看时长占比、订阅增减、点赞、评论、分享、流量来源和留存曲线。
  • 将结果写入 ~/.youtube-skills/metrics/<VIDEO_ID>.json,并生成 channel.json,包含频道名称、订阅数、播放量中位数以及每个视频一行。
  • 把拉取到的数据交给其他技能:youtube-retention 读取留存与曲线,youtube-channel-audit 读取 channel.json,youtube-description 读取流量来源,youtube-comments-to-ideas 读取已抓取的评论。

使用方式

步骤一:Google Cloud 配置(浏览器,一次)

可用浏览器或计算机操作工具操作 Cloud Console;遇到任何 Google 登录页面时停下来请用户自行登录,绝不输入密码。没有浏览器工具时,把以下清单以文本形式交给用户:

  1. 打开 console.cloud.google.com/projectcreate,将项目命名为 youtube-skills,创建并选中它。
  2. 打开 console.cloud.google.com/apis/library,启用 YouTube Data API v3 和 YouTube Analytics API。
  3. 打开 console.cloud.google.com/auth/overview,受众选 External,应用名 youtube-skills,两个联系人都填用户邮箱,保存。
  4. 打开 console.cloud.google.com/auth/audience,在 Test users 下添加用户邮箱,保持应用处于 Testing 状态,不要发布。
  5. 打开 console.cloud.google.com/auth/clients,创建 Desktop app 类型的客户端,下载 JSON。
  6. 将下载文件保存为 ~/.youtube-skills/client_secret.json。
  7. 用 Clients 页面截图确认,并打印保存路径。

步骤二:授权(终端,一次)

在用户目录中编写 youtube_auth.py,运行前先展示脚本。要点:

  • 依赖包:google-api-python-client、google-auth-oauthlib。
  • 权限范围:https://www.googleapis.com/auth/youtube.readonly 与 https://www.googleapis.com/auth/yt-analytics.readonly。
  • 流程:InstalledAppFlow.from_client_secrets_file(...).run_local_server(port=0, prompt="consent")。
  • 将令牌保存为 ~/.youtube-skills/token.json,权限模式 600,后续运行用 Request() 刷新。
  • 通过 youtube.channels().list(part="snippet,statistics,contentDetails", mine=True) 打印频道。

用户在账号选择器中选择账号或品牌频道并点击允许。Testing 状态的应用会显示“未验证应用”页面,提示用户点击继续。若打印的频道不对,删除令牌后重新运行。

步骤三:拉取(终端,随时)

在同一目录编写 youtube_pull.py。每次调用使用 ids="channel==<CHANNEL_ID>"、startDate 取发布日期、endDate 取今天、filters="video==<VIDEO_ID>"。各项数据对应的 API 调用:

  • 最近上传:Data v3,playlistItems.list,基于 contentDetails.relatedPlaylists.uploads。
  • 标题、时长、发布日期:Data v3,videos.list(part="snippet,contentDetails,statistics")。
  • 播放量、平均观看时长、平均观看时长占比、订阅、点赞、评论、分享:Analytics v2,metrics="views,averageViewDuration,averageViewPercentage,subscribersGained,likes,comments,shares"。
  • 展现量、点击率、流量拆分:Analytics v2,metrics="views,impressions,impressionsClickThroughRate",dimensions="insightTrafficSourceType"。
  • 留存曲线 101 个点:Analytics v2,metrics="audienceWatchRatio,relativeRetentionPerformance",dimensions="elapsedVideoTimeRatio",sort="elapsedVideoTimeRatio"。
  • 评论:Data v3,commentThreads.list(part="snippet", videoId=..., order="relevance", maxResults=100)。

写入 ~/.youtube-skills/metrics/<VIDEO_ID>.json,包含标题、时长、发布日期、统计窗口、播放量、展现量、点击率、平均观看时长、平均观看时长占比、订阅增减、点赞、评论、分享、流量来源、曲线,以及 0:30、25%、50%、75%、结尾处的观看比例和 3 段最陡且不重叠的 5 点下降时间戳。同时写入 channel.json,包含频道名称、订阅数、播放量中位数和每个视频一行。每个视频打印 4 行摘要。

适用场景

  • 需要基于真实频道数据做视频留存分析、频道审计、描述优化或评论选题。
  • 希望避免手动复制粘贴指标数字,让分析流程自动读取本地 JSON。
  • 需要在一个账号下管理多个视频的指标归档。

限制与注意事项

  • Analytics 数据仅对已登录账号拥有的频道可用;竞争对手数据仍只能来自公开的 Data API 字段或手动粘贴。
  • 发布时间不足 48 小时或播放量极少的视频,展现量、点击率和曲线可能不返回数据;此时应写“未返回”,不得写零。
  • Data API 配额为每天 10,000 单位;20 个带评论的视频约消耗 60 单位;Analytics 调用不占用 Data API 配额。
  • 令牌与客户端密钥应保存在用户主目录下,不要放进代码仓库;若用户移动它们,需将 client_secret.json 与 token.json 加入 .gitignore。
  • 每个数字都应标注统计窗口;最后 2 天的数据可能与 Studio 相差几个百分点。

常见错误

  • access_denied、“app has not completed verification”:邮箱不是测试用户,重做步骤一第 4 项。
  • invalid_client:客户端类型错误,重做步骤一第 5 项,选择 Desktop app。
  • accessNotConfigured:有 API 未启用,重做步骤一第 2 项。
  • 曲线查询报 insufficientPermissions:令牌只有一个权限范围,删除令牌并重做步骤二。
  • 打印的频道不对:用户选了个人账号,删除令牌后改选品牌账号。