Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

videocontext-0.1.0.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

videocontext-0.1.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

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

Hashes for videocontext-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5326471747fdde61eac50890c9ecd5cf9740c0e1f85f5eef9f9c836b6b51a7b8
MD5 2cffc03d264bff12f51d74f9d57522b1
BLAKE2b-256 66236255ec89d3a520c51ed0e68bff29a9941c5d5d5a9a400bc52a4ce6419b6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for videocontext-0.1.0.tar.gz:

Publisher: release.yml on osiristech/videocontext

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for videocontext-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48cbbd396405595e3cf83bf02f62592a6f005dbf2c1e05dd71d881c939702e8c
MD5 0179e4aad9fb6f42c09f8d8714d772d1
BLAKE2b-256 6893c4ddc0b03b8c4f946c5af75789544fd9be62f04c794a46dc6ed52409c544

See more details on using hashes here.

Provenance

The following attestation bundles were made for videocontext-0.1.0-py3-none-any.whl:

Publisher: release.yml on osiristech/videocontext

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page