# What Programming Languages Does bradautomates/claude-video Use?

> Discover the programming languages used in bradautomates/claude-video. This project leverages Python for core functionality and Bash for essential automation scripts.

- Repository: [bradautomates/claude-video](https://github.com/bradautomates/claude-video)
- Tags: what-it-uses
- Published: 2026-07-15

---

**The bradautomates/claude-video repository is written primarily in Python, with auxiliary automation scripts in Bash that handle build processes and development workflows.**

The open-source **claude-video** project by bradautomates implements an AI-powered video analysis skill for Claude. Understanding the programming languages bradautomates/claude-video uses reveals a pragmatic split: **Python** handles the runtime video processing logic, while **Bash** manages deployment and development tooling.

## Primary Language: Python for Video Processing

The executable core resides entirely within Python modules under `skills/watch/scripts/`. These files implement the complete pipeline from video download to frame extraction and audio transcription.

### Core Python Modules

The repository organizes functionality into specialized modules:

- **[`skills/watch/scripts/watch.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/watch.py)** — The main orchestrator exposing a `main([url, question])` function that coordinates download, frame extraction, and transcription workflows.
- **[`skills/watch/scripts/download.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/download.py)** — A wrapper around `yt-dlp` that handles video acquisition from platforms like YouTube.
- **[`skills/watch/scripts/frames.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/frames.py)** — Uses `ffmpeg` to extract frames at auto-detected FPS rates for visual analysis.
- **[`skills/watch/scripts/transcribe.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/transcribe.py)** — Manages both caption-based transcription and Whisper-based speech-to-text conversion.
- **[`skills/watch/scripts/whisper.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/whisper.py)** — Provides an optional client interface for OpenAI's Whisper API.
- **[`skills/watch/scripts/config.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/config.py)** — Handles shared configuration settings across the skill.
- **[`skills/watch/scripts/setup.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/setup.py)** — Performs pre-flight environment checks and dependency validation.

You can invoke the watch skill programmatically using the Python API:

```python
from skills.watch.scripts.watch import main

# Download a video, extract frames, and generate a transcript

url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
question = "What is the main topic of the video?"
main([url, question])

```

## Secondary Language: Bash for Build Automation

While Python executes the runtime logic, **Bash** scripts manage the repository's build lifecycle and development synchronization. These scripts reside alongside the Python code but serve distinct operational purposes.

### Key Bash Scripts

- **[`skills/watch/scripts/build-skill.sh`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/build-skill.sh)** — Packages the entire skill into a distributable `.skill` archive ready for upload to Claude.ai.
- **[`dev-sync.sh`](https://github.com/bradautomates/claude-video/blob/main/dev-sync.sh)** — Synchronizes the working tree with the Claude Code plugin cache during active development.

Execute the build process from the repository root:

```bash

# Build the distributable .skill package

./skills/watch/scripts/build-skill.sh

# The resulting archive is placed in the dist/ directory

```

## Configuration and Documentation Files

The repository contains ancillary files in **JSON**, **YAML**, and **Markdown** (including [`README.md`](https://github.com/bradautomates/claude-video/blob/main/README.md), [`AGENTS.md`](https://github.com/bradautomates/claude-video/blob/main/AGENTS.md), and [`SKILL.md`](https://github.com/bradautomates/claude-video/blob/main/SKILL.md)). These define skill manifests and documentation contracts but do not constitute executable programming languages within the codebase.

## Summary

- **Python** powers all video processing, transcription, and orchestration logic within `skills/watch/scripts/`.
- **Bash** handles build automation and development synchronization via [`build-skill.sh`](https://github.com/bradautomates/claude-video/blob/main/build-skill.sh) and [`dev-sync.sh`](https://github.com/bradautomates/claude-video/blob/main/dev-sync.sh).
- The primary entry point is the `main()` function in [`skills/watch/scripts/watch.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/watch.py), accepting URL and question parameters.
- Configuration files use JSON/YAML for skill metadata but contain no executable logic.

## Frequently Asked Questions

### Is bradautomates/claude-video written entirely in Python?

No. While the core video processing functionality is implemented in Python modules under `skills/watch/scripts/`, the repository relies on Bash scripts for build automation and development workflow management. The executable code is split between these two languages based on operational needs.

### What is the main entry point for video processing?

The primary entry point is [`skills/watch/scripts/watch.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/watch.py), specifically its `main([url, question])` function. This function orchestrates the entire workflow by coordinating calls to [`download.py`](https://github.com/bradautomates/claude-video/blob/main/download.py), [`frames.py`](https://github.com/bradautomates/claude-video/blob/main/frames.py), and [`transcribe.py`](https://github.com/bradautomates/claude-video/blob/main/transcribe.py) in sequence.

### How does the repository handle video downloads and audio transcription?

Video downloads are handled by [`skills/watch/scripts/download.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/download.py), which wraps the `yt-dlp` utility. For transcription, [`skills/watch/scripts/transcribe.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/transcribe.py) implements dual strategies: extracting existing captions when available, or falling back to [`skills/watch/scripts/whisper.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/whisper.py) for Whisper API-based speech recognition when captions are absent.

### What role does build-skill.sh play in the repository?

The [`build-skill.sh`](https://github.com/bradautomates/claude-video/blob/main/build-skill.sh) script in `skills/watch/scripts/` packages the Python codebase and configuration files into a distributable `.skill` archive. This bundle format is required for deployment to Claude.ai, making the Bash script critical for the distribution lifecycle despite not being part of the runtime logic.