yutu CLI

yutu runs a YouTube channel from the terminal: videos, playlists, comments. Has an MCP server, a built-in agent and a skill for Claude Code and Codex

  • 703 ★ on the repository
  • Last commit
  • Apache-2.0
CLI

Broad access

Why this level

  • Publishes, changes and deletes videos, playlists, comments and subscriptions on the channel on behalf of the account owner
  • Keeps the channel's OAuth token in `youtube.token.json` and the app key in `client_secret.json`
  • The built-in agent sends the texts it reads to the model provider, and the HTTP mode opens port 8216
All reasons and checks

eat-pray-ai/yutu

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add cli/yutu

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • Publishes, changes and deletes videos, playlists, comments and subscriptions on the channel on behalf of the account owner
  • Keeps the channel's OAuth token in `youtube.token.json` and the app key in `client_secret.json`
  • The built-in agent sends the texts it reads to the model provider, and the HTTP mode opens port 8216

This is third-party code. Review the repository files before installing.

What it does

yutu is a Go program with a command-line interface to the YouTube Data API v3. Each channel resource gets its own command: `video`, `playlist`, `comment`, `caption`, `channel`, `subscription`, `liveBroadcast`, `thumbnail` and others. Subcommands insert, list, update and delete, for example `yutu video insert --file video.mp4 --title ... --privacy unlisted`. Output can be JSON, passed to `jq` or other programs. It needs a Google Cloud project with YouTube Data API v3 enabled and an OAuth client of the Desktop app type. The command `yutu auth --credential client_secret.json` opens a browser, the user grants access and a token is saved to `youtube.token.json`. The paths of both files can be overridden with the `YUTU_CREDENTIAL` and `YUTU_CACHE_TOKEN` variables. There are three modes on top of the same operations. `yutu mcp` starts an MCP server over stdio, and with the `--mode http` flag it listens on port 8216 and accepts OAuth. `yutu agent` starts the built-in Miffy agent, which needs a model provider (`google` or `openai`-compatible), a model name and your own key. The `youtube` skill from the `skills/youtube` folder is installed with `npx skills add eat-pray-ai/yutu --skill youtube`: it teaches the agent the working order, safe steps before deletion and YouTube SEO principles.

Who it is for. For YouTube channel owners and editors and developers who want to hand Claude Code, Codex or Cursor video uploads, comment and playlist work and the preparation of titles and descriptions.

Good fit when

  • You need to upload a video with `yutu video insert` and put it straight into a queue playlist as unlisted so the title and description can be finished later
  • You need to process comments in bulk: export them with the `commentThread-list` tool, mark spam or hide with `comment-setModerationStatus`
  • The agent must upload or update captions and thumbnails of videos through `caption` and `thumbnail`
  • You need an MCP server through which Claude Code or Cursor see YouTube channels, playlists and analytics
  • You want a built-in agent for the channel with your own model key and no separate client, using `yutu agent`

Not a fit when

  • You have no Google Cloud account or cannot create an OAuth client: yutu cannot authorize without it
  • You only need transcripts of other people's videos with no channel sign-in: a server that reads transcripts by link fits better
  • The YouTube Data API daily limit of 10,000 units for shared requests is too tight: `search.list` and `videos.insert` have separate buckets, other operations share the common limit
  • Your channel cannot be trusted to an agent: yutu has commands that delete videos, comments and playlists

Example request

Upload the clip from interview.mp4 to my channel as unlisted, write a title under 60 characters and add it to the playlist Drafts

Limitations

  • The GitHub license is Apache-2.0. The header of the `SKILL.md` file states MIT, so check with the author which applies to the skill. The latest release is v0.11.0, a pre-1.0 version.
  • A Google Cloud project is required: enable YouTube Data API v3 (mandatory), YouTube Analytics API and YouTube Reporting API (optional), create a consent screen with yourself as a test user and an OAuth client of the Desktop type.
  • According to `docs/FEATURES.md` the YouTube quota is 10,000 units a day for most operations, with `search.list` and `videos.insert` in separate buckets. Operation costs in units: caption upload 400, update 450, list 50.
  • The token `youtube.token.json` lies on disk in the current folder by default. Whoever gets the file together with `client_secret.json` controls the channel.
  • The built-in agent calls your chosen model provider with your key, so the descriptions and comments it reads go to that provider.

How to disable. Remove the `yutu` entry from the client's MCP settings and drop the skill. It is best to revoke the token on the Google account access page and then delete `youtube.token.json` and `client_secret.json`. Remove the program itself with the package manager you installed it with.

FAQ

Which install methods does yutu have?

`npm i -g @eat-pray-ai/yutu`, `brew install yutu` on macOS, `winget install yutu` on Windows, the image `ghcr.io/eat-pray-ai/yutu:latest` for Docker, `go install github.com/eat-pray-ai/yutu@latest` and the `scripts/install.sh` script for Linux and macOS. Authenticity is checked with `gh attestation verify`.

How does yutu's MCP mode differ from the agent mode?

In `yutu mcp` mode your own agent (Claude Code, Codex, Cursor) gets the YouTube tools and brings its own model. In `yutu agent` mode the built-in Miffy agent works and needs a provider, a model and an API key. The YouTube operations are the same in both.

What does the http mode of the MCP server mean?

The command `yutu mcp --mode http` listens on port 8216 at `/mcp` and accepts a client through OAuth. The Claude Code example uses the `--client-id` flag and Codex uses `--oauth-client-id`. The stdio mode is simpler and opens no port.

Which operations does the skill treat as dangerous?

The skill divides tools into three groups: read, write and irreversible deletion. The deleting ones, fifteen of them, such as `video-delete`, `playlist-delete`, `comment-delete` and `subscription-delete`, require listing the objects and getting explicit user confirmation.

How is the video publishing workflow arranged?

In `skills/youtube/references/workflows.md` a video is first uploaded as unlisted and placed in a queue playlist, with a short content summary for the AI in the description. The agent then reads the description and prepares a title, description, tags and thumbnail guidance, and only after that is the video published.

What about the YouTube request quota?

The shared YouTube Data API quota is 10,000 units a day, with search and video upload in separate buckets. `docs/FEATURES.md` gives the price of every operation. For example, a channel list request costs 1 unit and a caption upload 400.

Discussion

No questions or reviews yet.

CLI tools

YouTube MCP (Zubeid)

Zubeid YouTube MCP Server

YouTube MCP on a Data API key: an agent searches videos and channels with a subscriber-count filter and reads playlists, statistics and transcripts

MCP serverExtended access588Repository stars

YouTube Data MCP (kirbah)

YouTube Data MCP Server (kirbah)

YouTube MCP with trimmed replies: transcripts without a key, video and channel statistics, trends, comments, a MongoDB cache and growing-channel search

MCP serverExtended access32Repository stars

yt-fts downloads subtitles of YouTube channels and playlists into SQLite and finds phrases with links to the exact second, plus semantic search and chat

CLIBroad access1.8KRepository stars

YouTube Skills

YouTube Skills for AI Agents

A set of skills that gives an agent YouTube transcripts, video and channel search, and playlist extraction over one API

SkillExtended access1.1KRepository stars
Editors’ pick

The /watch skill turns a link or file into frames and captions, or with a Gemini key hands the whole video to Google for the agent to answer from

SkillBroad access19.1KRepository stars

MCP server for YouTube transcripts: an agent gets a video transcript by URL, with timestamps and metadata

MCP serverExtended access492Repository stars

Comparison with similar tools

Entries that share the main search query, and how they differ.

EntryOfficialAuthenticationRepository starsMain difference
yutu (this entry)no703
YouTube Transcript MCP Servernonot required492only reads video transcripts by link and does not manage a channel
MCP publishing connectors without manual OAuthnoOAuth0publishes to YouTube, Instagram, VK and Dzen through a self-hosted Nango, which holds the tokens
YouTube MCP (Zubeid)noAPI key588YouTube MCP on a Data API key

README in short

The front page begins with prerequisites (Google Cloud, OAuth, authorization) and a table of environment variables. Next come install methods with authenticity checks through attestations, the agent mode with its flags, MCP setup for Claude Code, Codex and a manual variant for VS Code, Cursor and OpenCode, and a section on the skill. It ends with a command reference. The repository holds a table of supported operations with quota prices, a contributor guide, agent instructions in `AGENTS.md`, test generators and a Chinese translation.

README badge

Report a problem

Foxx AIyutu
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.