CLI tool to manage and analyze your YouTube channel from the terminal
Project description
YT Studio CLI
Manage and analyze your YouTube channel from the terminal. Ideal for automation and AI workflows.
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 accesible from the command line.
Installation
I recommend the excellent uv tool for installation:
uv tool install ytstudio-cli
Setup
- Create a Google Cloud project
- Enable YouTube Data API v3 and YouTube Analytics API
- Configure OAuth consent screen:
- Go to APIs & Services → OAuth consent screen
- Select External and create
- Fill in app name and your email
- Skip scopes, then add yourself as a test user
- Leave the app in "Testing" mode (no verification needed)
- Create OAuth credentials:
- Go to APIs & Services → Credentials
- Click Create Credentials → OAuth client IDhow
- Select Desktop app as application type
- Download the JSON file
- Configure ytstudio:
ytstudio init --client-secrets path/to/client_secret_<id>.json
ytstudio login
Credentials stored in ~/.config/ytstudio/.
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.
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 project is not affiliated with or endorsed by Google. YouTube and YouTube Studio are trademarks of Google. All channel data is accessed exclusively through the official YouTube Data API and YouTube Analytics API.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ytstudio_cli-0.1.1.tar.gz.
File metadata
- Download URL: ytstudio_cli-0.1.1.tar.gz
- Upload date:
- Size: 705.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ab0c655ffb8c234f5644544dd1f4ce21907adbb87bff77c21f7ffaeabbf9c4b
|
|
| MD5 |
682362dd4c0479a2caf523375c689028
|
|
| BLAKE2b-256 |
88bfcd081f969e936aaa1e6f05675cfef2f1ad99d78a779298457d8f4be4c978
|
Provenance
The following attestation bundles were made for ytstudio_cli-0.1.1.tar.gz:
Publisher:
ci.yml on jdwit/ytstudio-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ytstudio_cli-0.1.1.tar.gz -
Subject digest:
1ab0c655ffb8c234f5644544dd1f4ce21907adbb87bff77c21f7ffaeabbf9c4b - Sigstore transparency entry: 973916815
- Sigstore integration time:
-
Permalink:
jdwit/ytstudio-cli@761e64cc601fabeb77f96f2ad79dee95fad51236 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/jdwit
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@761e64cc601fabeb77f96f2ad79dee95fad51236 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ytstudio_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ytstudio_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 33.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe715dbbb39cdaed8c1e8701fa46b7ad7ec3ea707a082f5d5bf4236429e365ad
|
|
| MD5 |
2191d53263a8310786ccd1d9ee94c6f8
|
|
| BLAKE2b-256 |
1b95748d727714b6b5c070befb06d1cbd5bff770aea070d87496870486ce8c2e
|
Provenance
The following attestation bundles were made for ytstudio_cli-0.1.1-py3-none-any.whl:
Publisher:
ci.yml on jdwit/ytstudio-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ytstudio_cli-0.1.1-py3-none-any.whl -
Subject digest:
fe715dbbb39cdaed8c1e8701fa46b7ad7ec3ea707a082f5d5bf4236429e365ad - Sigstore transparency entry: 973916862
- Sigstore integration time:
-
Permalink:
jdwit/ytstudio-cli@761e64cc601fabeb77f96f2ad79dee95fad51236 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/jdwit
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@761e64cc601fabeb77f96f2ad79dee95fad51236 -
Trigger Event:
push
-
Statement type: