Skip to main content
Glama

Yutu

yutu

Static Badge Go Report Card GitHub License Go Reference Go Coverage

GitHub Repo stars GitHub Downloads GitHub Actions build Status GitHub Actions CodeQL Status GitHub Actions test Status Trust Score

GitHub Release Homebrew Formula Version WinGet Package Version npm Version

yutu - build a fully automated YouTube Channel!

yutu is a CLI, MCP server, and AI agent for YouTube that automates your entire YouTube workflow — from uploading and optimizing videos to managing comments, playlists, and channel branding — so you can get more views, higher click-through rates, and stronger audience engagement with less manual effort. 中文文档

mcp demo

Table of Contents

Related MCP server: YouTube MCP Server

Prerequisites

An account on Google Cloud Platform is required. Set up the following:

  1. Create a GCP Project and enable these APIs under APIs & Services -> Enable APIs and services:

  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, it should look like

    {
      "web": {
        "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:8216"
        ]
      }
    }
  3. 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"
    }

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.

Global 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

Installation

You can download yutu from releases page directly, or use the following methods as you prefer.

GitHub Actions

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.

Node.js

❯ npm i -g @eat-pray-ai/yutu

Docker

❯ 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

Gopher

❯ go install github.com/eat-pray-ai/yutu@latest

Linux

❯ curl -sSfL https://raw.githubusercontent.com/eat-pray-ai/yutu/main/scripts/install.sh | bash

macOS

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

Windows

❯ winget install yutu

Verifying Installation

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

Agent

yutu provides an agent mode to automate YouTube workflows. The system uses a multi-agent architecture where a central orchestrator delegates tasks to specialized agents:

Agent

Role

Capabilities

Orchestrator

Coordinates the entire workflow, plans strategy, and delegates to sub-agents

YouTube growth strategy, SEO optimization, task routing

Retrieval

Gathers data from YouTube and the web (read-only)

List/search videos, channels, playlists, comments, captions, subscriptions, members, and more; Google Search

Modifier

Creates and updates YouTube content

Upload videos, create playlists, update metadata, post comments, set thumbnails, manage captions and watermarks

Destroyer

Handles destructive operations with extra caution

Delete videos, playlists, comments, captions, subscriptions, channel sections, and watermarks

Currently, the agent mode is under active development, only supports Google's Gemini models with the following environment variables set:

❯ export YUTU_ADVANCED_MODEL=google:gemini-3.1-pro-preview
❯ export YUTU_LITE_MODEL=google:gemini-3-flash-preview
❯ export YUTU_LLM_API_KEY=your_gemini_api_key
// Optional settings
❯ export GOOGLE_GEMINI_BASE_URL=https://generativelanguage.googleapis.com/
❯ export YUTU_AGENT_INSTRUCTION=Your custom instruction here

YUTU_ADVANCED_MODEL is used by the orchestrator agent, while YUTU_LITE_MODEL is used by all other agents. Both use the provider:modelName format (only google is supported). If only one is set, the other defaults to the same value.

Agent Environment Variables

Variable

Description

Required

YUTU_ADVANCED_MODEL

Model for orchestrator agent (format: provider:modelName)

At least one of YUTU_ADVANCED_MODEL or YUTU_LITE_MODEL

YUTU_LITE_MODEL

Model for sub-agents (format: provider:modelName)

At least one of YUTU_ADVANCED_MODEL or YUTU_LITE_MODEL

YUTU_LLM_API_KEY

API key for the model provider

Yes

GOOGLE_GEMINI_BASE_URL

Base URL for Gemini API

No

YUTU_AGENT_INSTRUCTION

Custom instruction for orchestrator agent

No

YUTU_RETRIEVAL_INSTRUCTION

Custom instruction for retrieval agent

No

YUTU_MODIFIER_INSTRUCTION

Custom instruction for modifier agent

No

YUTU_DESTROYER_INSTRUCTION

Custom instruction for destroyer agent

No

Then run the following command for detail usage:

❯ yutu agent --help
❯ yutu agent --args "help"
# console mode
❯ yutu agent --args "console"
# web mode with three sub-launchers: api, a2a and webui
❯ yutu agent --args "web api a2a webui"

MCP Server

Install in VS Code Install in Cursor

As a MCP server, yutu can be used in MCP clients like Claude Desktop, VS Code or Cursor, which allows you to interact with YouTube resources in a chat-like interface.

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 add yutu as a MCP server in VS Code or Cursor by clicking corresponding badge above, or add the following configuration manually to your MCP client. Remember to replace the values of YUTU_CREDENTIAL and YUTU_CACHE_TOKEN with correct paths on your local machine.

{
  "yutu": {
    "type": "stdio",
    "command": "yutu",
    "args": [
      "mcp"
    ],
    "env": {
      "YUTU_CREDENTIAL": "/absolute/path/to/client_secret.json",
      "YUTU_CACHE_TOKEN": "/absolute/path/to/youtube.token.json"
    }
  }
}

Skills

yutu provides a set of skills that extend AI agents with YouTube domain knowledge. Install individual skills to give your agent specialized capabilities for specific YouTube resources.

# Install a single skill (e.g. video management)
❯ npx skills add https://github.com/eat-pray-ai/yutu/tree/main/skills/youtube-video

# Install all skills at once
❯ npx skills add https://github.com/eat-pray-ai/yutu/tree/main/skills

Skill

Description

youtube-activity

Manage activities on YouTube

youtube-caption

Manage YouTube video captions

youtube-channel

Manage YouTube channels

youtube-channelBanner

Manage YouTube channel banners

youtube-channelSection

Manage YouTube channel sections

youtube-comment

Manage YouTube comments

youtube-commentThread

Manage YouTube comment threads

youtube-i18nLanguage

Manage YouTube i18n languages

youtube-i18nRegion

Manage YouTube i18n regions

youtube-member

Manage YouTube channel members

youtube-membershipsLevel

Manage YouTube memberships levels

youtube-playlist

Manage YouTube playlists

youtube-playlistImage

Manage YouTube playlist images

youtube-playlistItem

Manage YouTube playlist items

youtube-search

Manage YouTube search

youtube-subscription

Manage YouTube subscriptions

youtube-superChatEvent

Manage YouTube Super Chat events

youtube-thumbnail

Manage YouTube video thumbnails

youtube-video

Manage YouTube videos

youtube-videoAbuseReportReason

Manage YouTube video abuse report reasons

youtube-videoCategory

Manage YouTube video categories

youtube-watermark

Manage YouTube watermarks

Usage

❯ yutu        
yutu is a fully functional MCP server and CLI for YouTube, which can manipulate almost all YouTube resources.

Environment variables:
  YUTU_CREDENTIAL    Path/base64/JSON of OAuth client secret (default: client_secret.json)
  YUTU_CACHE_TOKEN   Path/base64/JSON of cached OAuth token (default: youtube.token.json)
  YUTU_ROOT          Root directory for file resolution (default: current working directory)
  YUTU_LOG_LEVEL     Log level: DEBUG, INFO, WARN, ERROR (default: INFO)

Usage:
  yutu [flags]
  yutu [command]

Available Commands:
  activity               Manage activities on YouTube
  agent                  Start an agent to automate YouTube workflows
  auth                   Authenticate with YouTube APIs
  caption                Manage YouTube video captions
  channel                Manage YouTube channels
  channelBanner          Manage YouTube channel banners
  channelSection         Manage YouTube channel sections
  comment                Manage YouTube comments
  commentThread          Manage YouTube comment threads
  completion             Generate the autocompletion script for the specified shell
  help                   Help about any command
  i18nLanguage           Manage YouTube i18n languages
  i18nRegion             Manage YouTube i18n regions
  mcp                    Start MCP server
  member                 Manage YouTube channel members
  membershipsLevel       Manage YouTube memberships levels
  playlist               Manage YouTube playlists
  playlistImage          Manage YouTube playlist images
  playlistItem           Manage YouTube playlist items
  search                 Manage YouTube search
  subscription           Manage YouTube subscriptions
  superChatEvent         Manage YouTube Super Chat events
  thumbnail              Manage YouTube video thumbnails
  version                Show the version of yutu
  video                  Manage YouTube videos
  videoAbuseReportReason Manage YouTube video abuse report reasons
  videoCategory          Manage YouTube video categories
  watermark              Manage YouTube watermarks

Flags:
  -h, --help   help for yutu

Use "yutu [command] --help" for more information about a command.

Features

Please refer to FEATURES.md for more information.

Contributing

Please refer to CONTRIBUTING.md for more information.

Star History

Star History Chart

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eat-pray-ai/yutu'

If you have feedback or need assistance with the MCP directory API, please join our Discord server