yutu is a Claude Code plugin with 1 hand-picked skill, indexed on Flowy in the Video & Audio category.
$ npx -y skills add eat-pray-ai/yutu --agent claude-code
yutuyutu is a CLI, MCP server, and AI agent to automate YouTube workflows — from uploading and optimizing videos to managing comments, playlists, and channel branding — and provides a skill for AI agents, so you can get more views, higher click-through rates, and stronger audience engagement with less manual effort. 中文文档
An account on Google Cloud Platform is required. Set up the following:
Create a GCP Project and enable these APIs under APIs & Services -> Enable APIs and services:
Create OAuth credentials:
APIs & Services -> OAuth consent screen, create a consent screen with yourself as a test userCredentials -> Create Credentials -> OAuth Client ID, select Desktop appclient_secret.json, it should look like{
"installed": {
"client_id": "11181119.apps.googleusercontent.com",
"project_id": "yutu-11181119",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "XXXXXXXXXXXXXXXX",
"redirect_uris": [
"http://localhost"
]
}
}
Authenticate:
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.
{
"access_token": "ya29.XXXXXXXXX",
"token_type": "Bearer",
"refresh_token": "1//XXXXXXXXXX",
"expiry": "2024-05-26T18:49:56.1911165+08:00",
"expires_in": 3599
}
By default, yutu will read client_secret.json and youtube.token.json from the current directory, --credential/-c and --cacheToken/-t flags are available only in auth subcommand. To modify the default path in all subcommands, set these 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 |
If you're using an AI agent, copy and paste the following prompt to finish the installation:
Install and configure yutu by following https://raw.githubusercontent.com/eat-pray-ai/yutu/main/internal/tools/skillgen/setup.md
You can download yutu from releases page directly, or use the following methods as you prefer.
There are two actions available for yutu, one is for general purpose and the other is for uploading video to YouTube. Refer to youtube-action and youtube-uploader for more information.
❯ npm i -g @eat-pray-ai/yutu
❯ docker pull ghcr.io/eat-pray-ai/yutu:latest
❯ docker run --rm ghcr.io/eat-pray-ai/yutu:latest
# make sure client_secret.json is in the current directory
❯ docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/app -p 8216:8216 ghcr.io/eat-pray-ai/yutu:latest
❯ go install github.com/eat-pray-ai/yutu@latest
❯ curl -sSfL https://raw.githubusercontent.com/eat-pray-ai/yutu/main/scripts/install.sh | bash
Install yutu using Homebrew🍺(recommended), or run the shell script.
❯ brew install yutu
# or
❯ curl -sSfL https://raw.githubusercontent.com/eat-pray-ai/yutu/main/scripts/install.sh | bash
❯ winget install yutu
Verify the integrity and provenance of yutu using its associated cryptographically signed attestations.
# Docker
❯ gh attestation verify oci://ghcr.io/eat-pray-ai/yutu:latest --repo eat-pray-ai/yutu
# Linux and macOS(if installed using shell script)
❯ gh attestation verify $(which yutu) --repo eat-pray-ai/yutu
# Windows
❯ gh attestation verify $(where.exe yutu.exe) --repo eat-pray-ai/yutu
yutu provides an agent mode (Miffy) to automate YouTube workflows. The agent can retrieve, create, update, and delete YouTube content, with built-in YouTube growth strategy and SEO expertise.
# Gemini(compatible) (default)
❯ yutu agent --provider google --model gemini-3.8-flash --api-key "YOUR_KEY"
❯ yutu agent --provider google --model gemini-3.8-flash --api-key "YOUR_KEY" --base-url "https://custom.endpoint.com/"
# OpenAI(compatible) (OpenAI, DeepSeek, Ollama, vLLM, etc.)
❯ yutu agent --provider openai --model gpt-5.6-terra --api-key "YOUR_KEY"
❯ yutu agent --provider openai --model deepseek-flash --api-key "YOUR_KEY" --base-url "https://api.deepseek.com/"
# web mode with sub-launchers
❯ yutu agent --args "web api a2a webui" --api-key "YOUR_KEY"
# show available launcher args
❯ yutu agent --args ""
| Flag | Description | Default |
|---|---|---|
-a, --args | Launcher arguments as a single string | console |
-p, --provider | LLM provider: google for Gemini(compatible), openai for OpenAI(compatible) | google |
-m, --model | Model name | gemini-3.8-flash |
--api-key | API key for the model provider | |
--base-url | Base URL for the model provider's API endpoint | |
-i, --instruction | Override the built-in agent instruction | INSTRUCTION.md |
Before using yutu as an MCP server, make sure yutu is installed(see Installation section), and you have a valid client_secret.json and youtube.token.json files(refer to Prerequisites section).
You can configure yutu as an MCP server for your preferred tool using the instructions below.
# Stdio mode
❯ claude mcp add --env YUTU_CREDENTIAL=/absolute/path/to/client_secret.json \
--env YUTU_CACHE_TOKEN=/absolute/path/to/youtube.token.json \
yutu -- yutu mcp
# HTTP mode (start the server first: yutu mcp --mode http)
❯ claude mcp add --transport http \
--client-id YOUR_CLIENT_ID.apps.googleusercontent.com \
--client-secret \
yutu http://localhost:8216/mcp
# Stdio mode
❯ codex mcp add --env YUTU_CREDENTIAL=/absolute/path/to/client_secret.json \
--env YUTU_CACHE_TOKEN=/absolute/path/to/youtube.token.json \
yutu -- yutu mcp
# HTTP mode (start the server first: yutu mcp --mode http)
❯ codex mcp add --url http://localhost:8216/mcp \
--oauth-client-id YOUR_CLIENT_ID.apps.googleusercontent.com \
yutu
Add the following to your MCP settings. Remember to replace the values of YUTU_CREDENTIAL and YUTU_CACHE_TOKEN with correct paths on your local machine.
yutu is a Claude Code plugin with 1 hand-picked skill, indexed on Flowy in the Video & Audio category. Install it with the command on its page. It includes youtube. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it