yt-research
yt-research is an open source command-line tool for exploring public YouTube channel metadata and upload histories. It produces readable terminal tables for people and stable JSON or CSV for scripts and agents.
[!IMPORTANT] This project is under active development. Version 0.1.0 is the first public interface and may evolve before 1.0.
What it does
- Resolve a channel by handle, channel ID, or channel URL.
- Search for channel candidates without silently choosing an ambiguous match.
- Walk a channel's complete public uploads playlist.
- Filter videos by title text or UTC publication date.
- Sort by publication date, views, or likes.
- Export versioned JSON and fixed-column CSV.
yt-research uses the official YouTube Data API v3. You provide your own API key, and the tool only requests public data.
Install
Python 3.11 or newer is required. The supported platforms are macOS and Linux.
pipx install yt-research
Alternatively, use uv:
uv tool install yt-research
Or run it without a persistent installation:
uvx yt-research --help
For a development checkout:
git clone https://github.com/vedntp/yt-research.git
cd yt-research
uv sync
uv run yt-research --help
Configure an API key
Create an API key for the YouTube Data API v3, then store it in your operating system's native secret store:
yt-research auth set
yt-research auth status
For CI or headless Linux, set the environment variable instead:
export YT_RESEARCH_API_KEY="your-api-key"
The environment variable takes precedence over the native secret store. See API key setup for complete instructions and security guidance.
Quick start
Use a fictional placeholder handle in examples, replacing it with the public channel you want to research:
yt-research channel info @examplecreator
yt-research channel search "Example Creator"
yt-research videos latest @examplecreator --limit 20
yt-research videos top @examplecreator --year 2026 --limit 10
yt-research videos first @examplecreator --match "tutorial"
yt-research videos list @examplecreator --from 2025-01-01 --format json
When stdout is a terminal, results default to a table. Redirected output defaults to JSON:
yt-research videos list @examplecreator > videos.json
yt-research videos list @examplecreator --format csv --output videos.csv
Diagnostics and warnings are written to stderr, so JSON and CSV on stdout remain machine-readable.
Documentation
Privacy and limitations
The tool does not use OAuth or access private account data. Version 0.1.0 does not download videos, retrieve transcripts or comments, classify Shorts, or run as a hosted service. API calls consume quota from the Google Cloud project associated with your key.
Contributing
Contributions are welcome. Read CONTRIBUTING.md, the Code of Conduct, and the Security Policy before opening a contribution.
License
MIT. See LICENSE.
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 yt_research-0.1.0.tar.gz.
File metadata
- Download URL: yt_research-0.1.0.tar.gz
- Upload date:
- Size: 80.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9a425ee0a20c4a1048ef1cbad572b5d5a9b2063ae1d967c51c9ddceb9821cfe
|
|
| MD5 |
445fae88cff9cafe459b9ce5dc232450
|
|
| BLAKE2b-256 |
aca3e894abcb9a289d7056965db6d3ac744909387602213146f8fa51b812e373
|
Provenance
The following attestation bundles were made for yt_research-0.1.0.tar.gz:
Publisher:
release.yml on vedntp/yt-research
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yt_research-0.1.0.tar.gz -
Subject digest:
f9a425ee0a20c4a1048ef1cbad572b5d5a9b2063ae1d967c51c9ddceb9821cfe - Sigstore transparency entry: 2694643540
- Sigstore integration time:
-
Permalink:
vedntp/yt-research@15ae66b78a8e906731d59613fe6ab92419de2bfe -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/vedntp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@15ae66b78a8e906731d59613fe6ab92419de2bfe -
Trigger Event:
push
-
Statement type:
File details
Details for the file yt_research-0.1.0-py3-none-any.whl.
File metadata
- Download URL: yt_research-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3332b4dc04122c095cb0a3368f96fb67b20f71acacbeb864d61f7794954c150
|
|
| MD5 |
f6d8697c01f01feb7188451edda0703f
|
|
| BLAKE2b-256 |
a74b0d62be4daf0b5983687eae226498653e617b2782f3fbfbf65b6302568ee4
|
Provenance
The following attestation bundles were made for yt_research-0.1.0-py3-none-any.whl:
Publisher:
release.yml on vedntp/yt-research
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yt_research-0.1.0-py3-none-any.whl -
Subject digest:
c3332b4dc04122c095cb0a3368f96fb67b20f71acacbeb864d61f7794954c150 - Sigstore transparency entry: 2694643546
- Sigstore integration time:
-
Permalink:
vedntp/yt-research@15ae66b78a8e906731d59613fe6ab92419de2bfe -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/vedntp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@15ae66b78a8e906731d59613fe6ab92419de2bfe -
Trigger Event:
push
-
Statement type: