Skip to main content

YT Studio CLI

ascii

CI Coverage PyPI Python

Manage and analyze your YouTube channel from the terminal. Designed for humans and AI agents.

[!NOTE] This is not an official Google product, see disclaimer.

Motivation

I built this because I needed to bulk update video titles for a YouTube channel I manage with 300+ videos. YouTube Studio does not support bulk search-replace operations, which made it a tedious manual process. This tool uses the YouTube Data API to perform bulk operations on video metadata. Furthermore, it provides features for analytics and comment moderation, all accessible from the command line.

Features

  • Bulk update video metadata across hundreds of videos in one pass (search-replace titles, descriptions, tags).
  • Upload videos from a directory using YAML sidecars for metadata and thumbnails.
  • Schedule, start, stop, and update YouTube livestream broadcasts, including RTMP ingest details.
  • Multi-channel profiles: manage several channels from one machine and switch per command.
  • Comments moderation: list, reply, approve, reject, and ban from the CLI.
  • Channel analytics queries via the YouTube Analytics API.
  • Playlists: bulk-add by search and reorder by views with one command.

Documentation

See the full documentation for installation, OAuth setup, and the command reference.

Agent skill

This repo includes a harness-agnostic agent skill that teaches any skill-aware AI agent to operate a channel through this CLI, following the open SKILL standard.

Development

Clone the repo, sync dev dependencies, and install the pre-commit hook so ruff check and ruff format run on every commit (same checks CI runs):

uv sync --group dev
uv run pre-commit install

Run the suite manually with uv run pytest and uv run pre-commit run --all-files.

To preview the docs site locally, install the docs group and serve with mkdocs:

uv sync --group docs
uv run mkdocs serve  # or: uv run mkdocs build

API quota

The YouTube Data API enforces a default quota of 10_000 units per project per day. Most read operations (listing videos, comments, channel info) cost 1 unit, while write operations like updating video metadata or moderating comments cost 50 units each. Bulk updates can consume quota quickly. When exceeded, the API returns a 403 error; quota resets at midnight Pacific Time.

Action Examples Approx. cost
Read list videos, comments, playlists; analytics queries 1 unit
Write update a video, moderate a comment, add or reorder playlist items, schedule a broadcast 50 units
Search search.list, used by playlists add --from-search 100 units
Upload videos.insert ~1600 units

A full per-operation breakdown lives in the API quota docs.

You can request a quota increase via IAM & Admin → Quotas in the Google Cloud Console. See the official quota documentation for full details.

Disclaimer

This is not an officially supported Google or YouTube product. YouTube and YouTube Studio are trademarks of Google. All channel data is accessed exclusively through the official YouTube Data API and YouTube Analytics API.

Metadata

Release files for ytstudio-cli 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ytstudio-cli 0.4.2
File Size Uploaded
ytstudio_cli-0.4.2.tar.gz 163.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ytstudio-cli 0.4.2
File Interpreter ABI Platform
ytstudio_cli-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 214.8 kB

Release files / ytstudio_cli-0.4.2.tar.gz

Download URL ytstudio_cli-0.4.2.tar.gz
Size 163.5 kB
Tags Source
SHA-256 checksum
How to use checksums
079ba10f6e5daf72ddc2eab249cf8ab57f65a5dc5cbefb8dd351ba30d2f599fd
BLAKE2b-256 checksum
How to use checksums
40bd61c5c962205f3ea29a96f643153842a2096e527f3d575ae695d355f2dcff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log

Release files / ytstudio_cli-0.4.2-py3-none-any.whl

Download URL ytstudio_cli-0.4.2-py3-none-any.whl
Size 51.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
468a3dabf8ff7ca658e4d6aff822e17c7440d94096fd5e3cac7b5bc132fc4676
BLAKE2b-256 checksum
How to use checksums
940327218f6f3ab337436e72871f8bae2dc7bc5f9a1bbf816a5dfeafb35bf965
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page