# @framers/agentos-ext-channel-youtube 中文文档

规范地址：https://npmcn.com/package/%40framers/agentos-ext-channel-youtube/

版本：0\.1\.9
npm 元数据更新时间：2026-11-13T10:36:17.015Z
中文译文更新时间：2026-11-15T12:17:20.747Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40framers/agentos-ext-channel-youtube
原文对照：https://npmcn.com/package/%40framers/agentos-ext-channel-youtube/?lang=original
项目主页：https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/channels/youtube#readme
源码仓库：https://github.com/framerslab/agentos-extensions

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：148 kB，52 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=22
- 运行依赖：1 个
- peer 依赖：@framers/agentos \>=0\.10\.40
- 首次发布：2026-05-02T11:34:55.641Z
- 最新版本发布：2026-11-13T10:36:16.579Z
- 近 30 天下载量：20476（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：10（近 12 个月 10 个）

## 中文简介

AgentOS的YouTube频道适配器——上传视频,发布Shorts,评论,搜索,跟踪分析,管理播放列表,并通过YouTube Data API v3.

## 安装

```sh
npm install @framers/agentos-ext-channel-youtube
```

也可以使用：`pnpm add @framers/agentos-ext-channel-youtube`、`yarn add @framers/agentos-ext-channel-youtube`、`bun add @framers/agentos-ext-channel-youtube`

## README

# YouTube 频道

此包提供代理视频和短片的上传,评论,搜索,趋势,统计,播放列表管理和通过YouTube Data API的预定发布 `googleapis`. 持有该服务的代码也可以读取一批视频的状态([下级](https://npmcn.com/package/%40framers/agentos-ext-channel-youtube/#readme-reading-the-status-of-videos)) (中文(简体) ).

## 安装

```bash
npm install @framers/agentos-ext-channel-youtube
```

同伴依赖 : `@framers/agentos` `>=0.10.40`。 。 。 .

## 使用量

```ts
import { AgentOS } from '@framers/agentos';

const agentos = await AgentOS.create({
  extensionManifest: {
    packs: [
      {
        package: '@framers/agentos-ext-channel-youtube',
        options: { apiKey: process.env.YOUTUBE_API_KEY },
      },
    ],
  },
});
```

## 配置

| 选项 | 秘密编号 | 环境变量 | 需求 | 默认 |
| --- | --- | --- | --- | --- |
| `apiKey` | `youtube.apiKey` | 变量名称 `apiKeyEnv`,则 `YOUTUBE_API_KEY`,则 `GOOGLE_API_KEY` | 对 | 无 |
| `apiKeyEnv` | 无 | 无 | 没有 | `YOUTUBE_API_KEY` |
| `oauth` | 无 | 无 | 没有 | 全权证书如果填写完毕,则应予以解决,否则无 |
| `oauth.clientId` | `youtube.oauth.clientId` | `YOUTUBE_OAUTH_CLIENT_ID` | 没有 | 无 |
| `oauth.clientSecret` | `youtube.oauth.clientSecret` | `YOUTUBE_OAUTH_CLIENT_SECRET` | 没有 | 无 |
| `oauth.refreshToken` | `youtube.oauth.refreshToken` | `YOUTUBE_OAUTH_REFRESH_TOKEN` | 没有 | 无 |
| `priority` | 无 | 无 | 没有 | `50` |
| `secrets` | `youtube.apiKey`, (中文(简体) ), `youtube.oauth.clientId`, (中文(简体) ), `youtube.oauth.clientSecret`, (中文(简体) ), `youtube.oauth.refreshToken` | 无 | 没有 | 无 |

API 密钥从选项中解析, 那么 `options.secrets`,然后是环境变量。 第一个环境检查用途 `apiKeyEnv`,默认为 `YOUTUBE_API_KEY`明确 `oauth` 对象覆盖 OAuth 秘密和环境分辨率。 否则,每个 OAuth 字段都会在其环境变量之前从秘密中解析出, OAuth 只有在全部字段解析后才能被启用. 这个 `oauth` 界面需要所有提供对象的字段.

## 工具

| 工具 | 它会做什么 |
| --- | --- |
| `youtubeUpload` | 上传带有标题,描述,标签和隐私设置的视频. |
| `youtubeShort` | 上传带有短字的短字 `#Shorts` 标签. |
| `youtubeComment` | 张贴评论或对现有评论的答复. |
| `youtubeSearch` | 按关键词搜索视频,频道或播放列表. |
| `youtubeTrending` | 按地区和类别获取受欢迎的视频. |
| `youtubeAnalytics` | 获取视频或频道性能衡量标准. |
| `youtubePlaylist` | 创建、列出、添加视频或删除播放列表. |
| `youtubeSchedule` | 上传一段私人录像,供预定公开出版. |

### `youtubeUpload`

| 参数 | 类型 | 需求 | 说明 |
| --- | --- | --- | --- |
| `videoUrl` | 字符串 | 对 | 要上传的视频文件的 URL |
| `title` | 字符串 | 对 | 视频标题(最多) `100` 字符数) |
| `description` | 字符串 | 对 | 视频描述(最多) `5000` 字符数) |
| `tags` | 字符串 \[\] | 没有 | 可发现的视频标签 |
| `categoryId` | 字符串 | 没有 | YouTube 分类 ID( 默认 ): `22`、 人与博客) |
| `privacyStatus` | 字符串 : `public`, (中文(简体) ), `private`, (中文(简体) ), `unlisted` | 没有 | 隐私状态( 默认 ): `public`(中文(简体) ) |
| `mimeType` | 字符串 | 没有 | 视频 MIME 类型( 默认 ): `video/mp4`(中文(简体) ) |

### `youtubeShort`

| 参数 | 类型 | 需求 | 说明 |
| --- | --- | --- | --- |
| `videoUrl` | 字符串 | 对 | 短式视频文件的 URL |
| `title` | 字符串 | 对 | 短标题(最多) `100` 字符数) |
| `description` | 字符串 | 没有 | 简短说明 |
| `tags` | 字符串 \[\] | 没有 | 附加标记( 除此之外) `#Shorts`(中文(简体) ) |
| `privacyStatus` | 字符串 : `public`, (中文(简体) ), `private`, (中文(简体) ), `unlisted` | 没有 | 隐私状态( 默认 ): `public`(中文(简体) ) |

### `youtubeComment`

| 参数 | 类型 | 需求 | 说明 |
| --- | --- | --- | --- |
| `videoId` | 字符串 | 对 | YouTube 视频标识 |
| `text` | 字符串 | 对 | 注释文本 |
| `parentCommentId` | 字符串 | 没有 | 回复注释的父注释 ID |

### `youtubeSearch`

| 参数 | 类型 | 需求 | 说明 |
| --- | --- | --- | --- |
| `query` | 字符串 | 对 | 搜索查询 |
| `type` | 字符串 : `video`, (中文(简体) ), `channel`, (中文(简体) ), `playlist` | 没有 | 搜索类型( 默认 ): `video`(中文(简体) ) |
| `maxResults` | 编号 | 没有 | 返回的最大结果( 默认值 : `10`,最大值 : `50`(中文(简体) ) |
| `order` | 字符串 : `relevance`, (中文(简体) ), `date`, (中文(简体) ), `rating`, (中文(简体) ), `viewCount`, (中文(简体) ), `title` | 没有 | 排序顺序( 默认 ): `relevance`(中文(简体) ) |
| `regionCode` | 字符串 | 没有 | ISO 3166-1α-2区域代码(例如, `US`, (中文(简体) ), `GB`(中文(简体) ) |

### `youtubeTrending`

| 参数 | 类型 | 需求 | 说明 |
| --- | --- | --- | --- |
| `regionCode` | 字符串 | 没有 | ISO 3166-1 α-2区域代码(默认: `US`(中文(简体) ) |
| `categoryId` | 字符串 | 没有 | YouTube视频类ID(如:, `10` 音乐, `17` 体育部, `20` 游戏) |
| `maxResults` | 编号 | 没有 | 返回的最大结果( 默认值 : `20`,最大值 : `50`(中文(简体) ) |

### `youtubeAnalytics`

| 参数 | 类型 | 需求 | 说明 |
| --- | --- | --- | --- |
| `type` | 字符串 : `video`, (中文(简体) ), `channel` | 对 | 是否为视频或频道获取分析 |
| `videoId` | 字符串 | 没有 | 视频 ID( 当需要时) `type` 实值 `video`(中文(简体) ) |
| `channelId` | 字符串 | 没有 | 频道 ID( 可选 `type` `channel`,默认如果设置了 OAuth 频道) |

### `youtubePlaylist`

| 参数 | 类型 | 需求 | 说明 |
| --- | --- | --- | --- |
| `action` | 字符串 : `create`, (中文(简体) ), `list`, (中文(简体) ), `listItems`, (中文(简体) ), `addVideo`, (中文(简体) ), `delete` | 对 | 要执行的播放列表动作 |
| `title` | 字符串 | 没有 | 播放列表标题( 创建需要) |
| `description` | 字符串 | 没有 | 播放列表描述 |
| `privacyStatus` | 字符串 : `public`, (中文(简体) ), `private`, (中文(简体) ), `unlisted` | 没有 | 隐私状态( 默认 ): `public`(中文(简体) ) |
| `playlistId` | 字符串 | 没有 | 播放列表 ID( 需要 `listItems`, (中文(简体) ), `addVideo`, (中文(简体) ), `delete`(中文(简体) ) |
| `videoId` | 字符串 | 没有 | 视频标识( 需要 `addVideo`(中文(简体) ) |
| `channelId` | 字符串 | 没有 | 频道 ID( 列表可选, 默认为拥有频道) |
| `maxResults` | 编号 | 没有 | 列表操作的最大结果 |

### `youtubeSchedule`

| 参数 | 类型 | 需求 | 说明 |
| --- | --- | --- | --- |
| `videoUrl` | 字符串 | 对 | 要上传的视频文件的 URL |
| `title` | 字符串 | 对 | 视频标题(最多) `100` 字符数) |
| `description` | 字符串 | 对 | 视频描述(最多) `5000` 字符数) |
| `publishAt` | 字符串 | 对 | 预定公布时间的ISO 8601日期时间 |
| `tags` | 字符串 \[\] | 没有 | 可发现的视频标签 |
| `categoryId` | 字符串 | 没有 | YouTube 分类 ID( 默认 ): `22`、 人与博客) |
| `mimeType` | 字符串 | 没有 | 视频 MIME 类型( 默认 ): `video/mp4`(中文(简体) ) |

## 频道适配器

适配器注册平台 `youtube`. 激活初始化API服务,连接状态遵循其运行状态. 视频块触发 HTTPS URL 的上传;元数据来自 `platformOptions.title`, (中文(简体) ), `platformOptions.tags`, (中文(简体) ), `platformOptions.categoryId` 财务报告和审定财务报表 `platformOptions.privacyStatus`。标题回到视频字幕,然后 `Untitled`; 文本块在标题倒置前提供描述.

没有视频屏蔽, 发送评论使用 `conversationId` 作为视频标识和 `replyToMessageId` 作为可选父注释 ID。 空视频ID或评论文本抛出. 适配器存储事件处理器,但不会发出入境事件. 打字指标无用.

## 读取视频状态

`YouTubeService.getVideosStatus(videoIds)` 立即读取许多视频的状态并需要API密钥。 它召唤 `videos.list` 带部分 `snippet`, (中文(简体) ), `status` 财务报告和审定财务报表 `contentDetails` 每50个身份证一次,每个电话要一个配额单位,所以120个身份证要三个单位.

它为API返回的每段视频返回一行,顺序为所要求的ID. 两次被问到的id被读过一次,并有一行. 一个 ID API 返回什么也没有, 例如一个删除的或私有的视频, 没有行 。 一行人拿着录像 `id` 和这些字段,每个值如API给它,所以一个呼叫者检查一个值的类型本身:

| 编 | 字段 |
| --- | --- |
| `snippet` | `channelId`, (中文(简体) ), `channelTitle`, (中文(简体) ), `title`, (中文(简体) ), `description` |
| `status` | `embeddable`, (中文(简体) ), `madeForKids`, (中文(简体) ), `privacyStatus` |
| `contentDetails` | `caption`, (中文(简体) ), `duration`, (中文(简体) ), `contentRating` |

排行中未包含 API 的字段 。 空列表不打电话。 一次失败的呼叫,其中被拒绝的配额,用API自己的错误拒绝,没有回行. 该方法存储什么也没有记录什么.

```ts
import { YouTubeService, type VideoStatusRow } from '@framers/agentos-ext-channel-youtube';

const youtube = new YouTubeService({ apiKey: process.env.YOUTUBE_API_KEY! });
await youtube.initialize();
const rows: VideoStatusRow[] = await youtube.getVideosStatus(['video-id-1', 'video-id-2']);
```

## 页:1

如果没有 API 密钥解析, 则创建包丢 。 上传,评论,播放列表创建,播放列表添加和播放列表删除需要OAuth认证,并在账户上更改内容. 列出账户自己的播放列表也需要OAuth. 通道分析需要 `channelId` 当OAuth不在的时候.

上传工具获取 HTTP 或 HTTPS 视频 URL 和对 API 的流响应 。 他们没有设置下载超时,检查没有HTTP响应状态,也没有执行方向处理. 服务默认上传到 `public`, (中文(简体) ), `video/mp4` 和博客类别 `selfDeclaredMadeForKids` 改为 `false`。 。 。 .

短片上传后添加 `Shorts` 转到标签和附件 `#Shorts` 在描述。 代码不验证持续时间或方向. 排程拒绝无效或过去的日期,然后上传到 `private` 隐私和 `publishAt`;它不使用本地出版计时器.

搜索、趋势和播放列表列名请求上限为 `50` 结果。 播放列表默认为 `25` 结果。 工具失败返回 `success: false` 和一个错误消息。 特定动作播放列表字段和视频分析ID在执行过程中被检查,尽管在他们的计划中是可选的.

## 释放

新版本发表于 [架设层/剂-外延](https://github.com/framerslab/agentos-extensions) 由 GitHub Actions 通过 npm 信任的出版, 并附有出处声明 .

## 许可证

阿帕奇 - 2.0

## 常见问题

### @framers/agentos-ext-channel-youtube 是什么？

AgentOS的YouTube频道适配器——上传视频,发布Shorts,评论,搜索,跟踪分析,管理播放列表,并通过YouTube Data API v3\.

### 如何安装 @framers/agentos-ext-channel-youtube？

在项目目录运行 npm install @framers/agentos-ext-channel-youtube，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@framers/agentos（\>=0\.10\.40）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @framers/agentos-ext-channel-youtube 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @framers/agentos-ext-channel-youtube 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @framers/agentos-ext-channel-youtube 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @framers/agentos-ext-channel-youtube 可以商用吗？

@framers/agentos-ext-channel-youtube 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @framers/agentos-ext-channel-youtube 的下载量有多少？

根据 npm 官方下载统计，@framers/agentos-ext-channel-youtube 在 2026/10/16 – 2026/11/14 这 30 天内被下载 20,476 次，日均约 683 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @framers/agentos-ext-channel-youtube 还在维护吗？

最新版本 0\.1\.9 发布于 2026/11/13（2 天前）；至今共发布 10 个版本，其中过去 12 个月发布了 10 个；首次发布于 2026/05/02。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

