Extract video context (transcripts, metadata) for AI CLI consumption
Project description
VideoContext
Extract video context (transcripts, metadata) for AI CLI consumption.
YouTube is the largest developer knowledge base — tutorials, talks, demos — but AI CLI tools can't access it. VideoContext bridges that gap: extract video content into structured text that any AI CLI can consume via piping.
Documentation
- Architecture:
docs/ARCHITECTURE.md - Development workflow:
docs/DEVELOPMENT.md - Troubleshooting:
docs/TROUBLESHOOTING.md - Release setup:
docs/RELEASE_SETUP.md
Install
pip install -e .
# Optional: frame extraction support
pip install -e ".[vision]"
Testing
# Use test extras (pytest available if preferred)
pip install -e ".[test]"
# Built-in test run (works without pytest)
python -m unittest discover -s tests -v
# Or use shortcuts
make test
Linting & Pre-commit
# Install dev tooling (ruff, pre-commit, packaging helpers)
pip install -e ".[dev,test]"
make dev-install
# Run lint checks
make lint
make lint-fix
# Install git hooks, then run them across the repo
make precommit-install
make precommit-run
make precommit-run is scoped to tracked files under projects/videocontext.
Release
# Bump version in pyproject + __init__ and seed changelog entry
python scripts/bump_version.py 0.2.0
# Or with Makefile
make bump V=0.2.0
# Validate tests before tagging
python -m unittest discover -s tests -v
make release-check
# Create release tag (triggers publish workflow)
git tag videocontext-v0.2.0
git push origin videocontext-v0.2.0
The release workflow uses trusted publishing (.github/workflows/videocontext-release.yml), so configure your PyPI project to trust this repository/workflow.
Detailed setup steps are in docs/RELEASE_SETUP.md.
Live Smoke Test (Optional)
# Requires network + YouTube access
./scripts/smoke_e2e.sh
make smoke URL="https://www.youtube.com/watch?v=dQw4w9WgXcQ" OUT=./smoke_out
# Custom URL/output directory
./scripts/smoke_e2e.sh "https://www.youtube.com/watch?v=dQw4w9WgXcQ" ./smoke_out
Usage
# Full context — metadata + transcript (default: markdown)
videocontext context "https://youtube.com/watch?v=abc123"
# Pipe directly to Claude Code
videocontext context "https://youtube.com/watch?v=abc123" | claude
# Transcript only
videocontext transcript "https://youtube.com/watch?v=abc123"
# Metadata only
videocontext metadata "https://youtube.com/watch?v=abc123"
# Extract key frames (scene-detect default)
videocontext frames "https://youtube.com/watch?v=abc123" --output-dir ./frames
# Extract frames at fixed interval
videocontext frames "https://youtube.com/watch?v=abc123" --interval 15 --max-frames 12
# Short alias
vc context "https://youtube.com/watch?v=abc123"
# JSON output
vc context "https://youtube.com/watch?v=abc123" -f json
# Save to file
vc context "https://youtube.com/watch?v=abc123" -o notes.md
Commands
| Command | Description |
|---|---|
context |
Full video context (metadata + transcript) |
transcript |
Transcript only |
metadata |
Metadata only (title, description, chapters) |
frames |
Key frame extraction (scene-detect or fixed-interval, requires [vision] extra) |
No API Keys Required
VideoContext uses youtube-transcript-api and yt-dlp — no Google API key needed.
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 videocontext-0.1.0.tar.gz.
File metadata
- Download URL: videocontext-0.1.0.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5326471747fdde61eac50890c9ecd5cf9740c0e1f85f5eef9f9c836b6b51a7b8
|
|
| MD5 |
2cffc03d264bff12f51d74f9d57522b1
|
|
| BLAKE2b-256 |
66236255ec89d3a520c51ed0e68bff29a9941c5d5d5a9a400bc52a4ce6419b6f
|
Provenance
The following attestation bundles were made for videocontext-0.1.0.tar.gz:
Publisher:
release.yml on osiristech/videocontext
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
videocontext-0.1.0.tar.gz -
Subject digest:
5326471747fdde61eac50890c9ecd5cf9740c0e1f85f5eef9f9c836b6b51a7b8 - Sigstore transparency entry: 969458436
- Sigstore integration time:
-
Permalink:
osiristech/videocontext@790102427187c62ea90eefb7ae31f5be0d560294 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/osiristech
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@790102427187c62ea90eefb7ae31f5be0d560294 -
Trigger Event:
push
-
Statement type:
File details
Details for the file videocontext-0.1.0-py3-none-any.whl.
File metadata
- Download URL: videocontext-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.2 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 |
48cbbd396405595e3cf83bf02f62592a6f005dbf2c1e05dd71d881c939702e8c
|
|
| MD5 |
0179e4aad9fb6f42c09f8d8714d772d1
|
|
| BLAKE2b-256 |
6893c4ddc0b03b8c4f946c5af75789544fd9be62f04c794a46dc6ed52409c544
|
Provenance
The following attestation bundles were made for videocontext-0.1.0-py3-none-any.whl:
Publisher:
release.yml on osiristech/videocontext
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
videocontext-0.1.0-py3-none-any.whl -
Subject digest:
48cbbd396405595e3cf83bf02f62592a6f005dbf2c1e05dd71d881c939702e8c - Sigstore transparency entry: 969458444
- Sigstore integration time:
-
Permalink:
osiristech/videocontext@790102427187c62ea90eefb7ae31f5be0d560294 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/osiristech
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@790102427187c62ea90eefb7ae31f5be0d560294 -
Trigger Event:
push
-
Statement type: