Skill: openwaygate/youtube-caption (version 0.10.7-dev)

--- name: youtube-caption description: "Manage YouTube video captions. Use this skill to list, insert, update, download, or delete video captions. Useful when working with YouTube caption — provides commands to delete, download, insert, list, and update caption via the yutu CLI. Includes setup and installation instructions for first-time users. Triggers: delete captions, delete caption, delete my caption, download a caption, download caption, download my caption, insert a caption, insert caption, insert my caption, list captions, list caption, list my caption, update a video caption, update caption, update my caption" metadata: openclaw: requires: env: - YUTU_CREDENTIAL - YUTU_CACHE_TOKEN bins: - yutu config: - client_secret.json - youtube.token.json primaryEnv: YUTU_CREDENTIAL emoji: "\U0001F3AC\U0001F430" homepage: https://github.com/eat-pray-ai/yutu install: - kind: node package: "@eat-pray-ai/yutu" bins: [yutu] --- # YouTube Caption Manage YouTube video captions. Use this skill to list, insert, update, download, or delete video captions. ## Before You Begin yutu requires Google Cloud Platform OAuth credentials and a cached token to access the YouTube API. If you haven't set up yutu yet, read the [setup guide](references/setup.md) first. ## Operations Read the linked reference for full flag details and examples. | Operation | Description | Reference | |-----------|-------------|----------| | delete | Delete captions | [details](references/caption-delete.md) | | download | Download a caption | [details](references/caption-download.md) | | insert | Insert a caption | [details](references/caption-insert.md) | | list | List captions | [details](references/caption-list.md) | | update | Update a video caption | [details](references/caption-update.md) | ## Quick Start ```bash # Show all caption commands yutu caption --help # List caption yutu caption list ```

path: references/caption-delete.md
content: # Caption Delete

Delete captions. Use this skill to delete captions of a video by IDs.

## Usage

```bash
yutu caption delete [flags]
```

## Flags

| Flag | Shorthand | Required | Description |
|------|-----------|----------|-------------|
| `--ids` | `-i` | Yes | IDs of the captions to delete |
| `--onBehalfOf` | `-b` |  | ID of the YouTube account that the content owner is acting on behalf of |
| `--onBehalfOfContentOwner` | `-B` |  | ID of the content owner, for YouTube content partners |

## Examples

```bash
# Delete a caption by ID
yutu caption delete --ids abc123
# Delete multiple captions
yutu caption delete --ids abc123,def456
```


path: references/caption-download.md
content: # Caption Download

Download a caption. Use this skill to download a caption from a video.

## Usage

```bash
yutu caption download [flags]
```

## Flags

| Flag | Shorthand | Required | Description |
|------|-----------|----------|-------------|
| `--file` | `-f` | Yes | Path to save the caption file |
| `--id` | `-i` | Yes | ID of the caption to download |
| `--onBehalfOf` | `-b` |  | ID of the YouTube account that the content owner is acting on behalf of |
| `--onBehalfOfContentOwner` | `-B` |  | ID of the content owner, for YouTube content partners |
| `--tfmt` | `-t` |  | sbv\|srt\|vtt |
| `--tlang` | `-l` |  | Translate the captions into this language |

## Examples

```bash
# Download a caption as SRT
yutu caption download --id abc123 --file subtitle.srt
# Download a caption as VTT
yutu caption download --id abc123 --file subtitle.vtt --tfmt vtt
# Download a caption translated to French
yutu caption download --id abc123 --file subtitle.srt --tlang fr
```


path: references/caption-insert.md
content: # Caption Insert

Insert a caption. Use this skill to insert a caption to a video.

## Usage

```bash
yutu caption insert [flags]
```

## Flags

| Flag | Shorthand | Required | Description |
|------|-----------|----------|-------------|
| `--audioTrackType` | `-a` |  | unknown\|primary\|commentary\|descriptive (default "unknown") |
| `--file` | `-f` | Yes | Path to save the caption file |
| `--isAutoSynced` | `-A` |  | Whether YouTube synchronized the caption track to the audio track in the video (default true) |
| `--isCC` | `-C` |  | Whether the track contains closed captions for the deaf and hard of hearing |
| `--isDraft` | `-D` |  | whether the caption track is a draft |
| `--isEasyReader` | `-E` |  | Whether caption track is formatted for 'easy reader' |
| `--isLarge` | `-L` |  | Whether the caption track uses large text for the vision-impaired |
| `--jsonPath` | `-j` |  | JSONPath expression to filter the output |
| `--language` | `-l` |  | Language of the caption track |
| `--name` | `-n` |  | Name of the caption track |
| `--onBehalfOf` | `-b` |  | ID of the YouTube account that the content owner is acting on behalf of |
| `--onBehalfOfContentOwner` | `-B` |  | ID of the content owner, for YouTube content partners |
| `--output` | `-o` |  | json\|yaml\|silent |
| `--trackKind` | `-t` |  | standard\|ASR\|forced (default "standard") |
| `--videoId` | `-v` | Yes | ID of the video |

## Examples

```bash
# Insert a caption to a video
yutu caption insert --file subtitle.srt --videoId dQw4w9WgXcQ
# Insert a caption with language and name
yutu caption insert --file subtitle.srt --videoId dQw4w9WgXcQ --language en --name English
# Insert a standard caption and publish immediately
yutu caption insert --file subtitle.srt --videoId dQw4w9WgXcQ --trackKind standard --isDraft=false
```


path: references/caption-list.md
content: # Caption List

List captions. Use this skill to list captions of a video.

## Usage

```bash
yutu caption list [flags]
```

## Flags

| Flag | Shorthand | Required | Description |
|------|-----------|----------|-------------|
| `--ids` | `-i` |  | IDs of the captions to list |
| `--jsonpath` | `-j` |  | JSONPath expression to filter the output |
| `--onBehalfOf` | `-b` |  | ID of the YouTube account that the content owner is acting on behalf of |
| `--onBehalfOfContentOwner` | `-B` |  | ID of the content owner, for YouTube content partners |
| `--output` | `-o` |  | json\|yaml\|table (default "table") |
| `--parts` | `-p` |  | Comma separated parts (default [id,snippet]) |
| `--videoId` | `-v` |  | ID of the video |

## Examples

```bash
# List captions of a video
yutu caption list --videoId dQw4w9WgXcQ
# List captions in JSON format
yutu caption list --videoId dQw4w9WgXcQ --output json
# List specific captions by IDs
yutu caption list --ids abc123,def456 --videoId dQw4w9WgXcQ
```


path: references/caption-update.md
content: # Caption Update

Update a video caption. Use this skill to update a video caption.

## Usage

```bash
yutu caption update [flags]
```

## Flags

| Flag | Shorthand | Required | Description |
|------|-----------|----------|-------------|
| `--audioTrackType` | `-a` |  | unknown\|primary\|commentary\|descriptive (default "unknown") |
| `--file` | `-f` |  | Path to save the caption file |
| `--isAutoSynced` | `-A` |  | Whether YouTube synchronized the caption track to the audio track in the video (default true) |
| `--isCC` | `-C` |  | Whether the track contains closed captions for the deaf and hard of hearing |
| `--isDraft` | `-D` |  | whether the caption track is a draft |
| `--isEasyReader` | `-E` |  | Whether caption track is formatted for 'easy reader' |
| `--isLarge` | `-L` |  | Whether the caption track uses large text for the vision-impaired |
| `--jsonpath` | `-j` |  | JSONPath expression to filter the output |
| `--language` | `-l` |  | Language of the caption track |
| `--name` | `-n` |  | Name of the caption track |
| `--onBehalfOf` | `-b` |  | ID of the YouTube account that the content owner is acting on behalf of |
| `--onBehalfOfContentOwner` | `-B` |  | ID of the content owner, for YouTube content partners |
| `--output` | `-o` |  | json\|yaml\|silent |
| `--trackKind` | `-t` |  | standard\|ASR\|forced (default "standard") |
| `--videoId` | `-v` | Yes | ID of the video |

## Examples

```bash
# Publish a draft caption
yutu caption update --videoId dQw4w9WgXcQ --isDraft=false
# Update caption language and name
yutu caption update --videoId dQw4w9WgXcQ --language en --name English
# Update caption file
yutu caption update --videoId dQw4w9WgXcQ --file updated.srt
```


path: references/setup.md
content: <!-- Keep in sync with README.md Prerequisites and Installation sections. -->

# Yutu Setup Guide

Before using any yutu skill, you need to install `yutu` and configure YouTube API credentials.

## Prerequisites

An account on [Google Cloud Platform](https://console.cloud.google.com/) is required. Set up the following:

1. **Create a GCP Project** and enable these APIs under `APIs & Services -> Enable APIs and services`:
   - [YouTube Data API v3](https://console.cloud.google.com/apis/api/youtube.googleapis.com/overview) (Required)
   - [YouTube Analytics API](https://console.cloud.google.com/apis/api/youtubeanalytics.googleapis.com/overview) (Optional)
   - [YouTube Reporting API](https://console.cloud.google.com/apis/api/youtubereporting.googleapis.com/overview) (Optional)

2. **Create OAuth credentials**:
   - Go to `APIs & Services -> OAuth consent screen`, create a consent screen with yourself as a test user
   - Go to `Credentials -> Create Credentials -> OAuth Client ID`, select `Web Application`
   - Add `http://localhost:8216` as an authorized redirect URI
   - Download the credential file and save it as `client_secret.json`

3. **Authenticate**:

   ```bash
   yutu auth --credential client_secret.json
   ```

   A browser window will open for you to grant YouTube access. After granting permission, a token is saved to `youtube.token.json`.

## Installation

Install `yutu` using one of these methods:


```bash
# Node.js (all platforms)
npm i -g @eat-pray-ai/yutu

# macOS
brew install yutu

# Linux
brew install yutu

# Windows
winget install yutu

# Gopher
go install github.com/eat-pray-ai/yutu@latest
```

### Other platforms

Download a prebuilt binary from the [releases page](https://github.com/eat-pray-ai/yutu/releases/latest) and place it in your PATH.

## Environment Variables

| Variable | Description | Default |
|----------|-------------|---------|
| `YUTU_CREDENTIAL` | Path, base64, or JSON of OAuth client secret | `client_secret.json` |
| `YUTU_CACHE_TOKEN` | Path, base64, or JSON of cached OAuth token | `youtube.token.json` |
| `YUTU_ROOT` | Root directory for file resolution | Current working directory |
| `YUTU_LOG_LEVEL` | Log level: `DEBUG`, `INFO`, `WARN`, `ERROR` | `INFO` |

For more details, see the [yutu README](https://github.com/eat-pray-ai/yutu#readme).


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)