# How to Use Claude Video with Captions Only to Save Costs

> Save money running Claude Video by using the --no-whisper flag. This disables AI transcription and uses native YouTube captions, cutting costs while keeping transcript features.

- Repository: [bradautomates/claude-video](https://github.com/bradautomates/claude-video)
- Tags: how-to-guide
- Published: 2026-07-13

---

**Run Claude Video with the `--no-whisper` flag to disable AI transcription and extract only native YouTube captions, eliminating Whisper API fees while preserving transcript functionality.**

The `bradautomates/claude-video` repository provides a Python-based video analysis tool that can extract transcripts using either native platform captions or AI-powered transcription. When you use Claude Video with captions only to save costs, you bypass external Whisper API calls that incur per-minute charges, relying instead on free, existing VTT subtitles provided by sources like YouTube. This approach is ideal for budget-conscious automation workflows where native captions are sufficient for analysis.

## How Claude Video Processes Video Transcripts

Claude Video extracts spoken content through two distinct pipelines. The **native captions pipeline** queries metadata via `yt-dlp` to retrieve existing VTT subtitle files without downloading the full video. The **Whisper transcription pipeline** sends audio to external APIs (OpenAI or Groq) when captions are unavailable, incurring usage fees per audio minute.

According to the source code in [[`skills/watch/scripts/watch.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/watch.py)](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/watch.py), the application checks for captions at lines 98-104 via the `fetch_captions` function before considering any AI transcription. When captions exist, they become the primary transcript source.

## Disabling Whisper with the `--no-whisper` Flag

To eliminate all Whisper-related costs, invoke the watch skill with the **`--no-whisper`** command-line argument. This flag forces Claude Video to skip the Whisper transcription step entirely, restricting the pipeline to caption-only extraction.

The decision logic resides in lines 239-251 of [`watch.py`](https://github.com/bradautomates/claude-video/blob/main/watch.py), where the application evaluates whether to fall back to Whisper. When `--no-whisper` is present, this fallback path is disabled. If no captions are found, the system returns **frames-only** output rather than attempting paid transcription, as noted in line 381.

### Caption Extraction Implementation

The `fetch_captions` function interfaces with `yt-dlp` to identify available subtitle tracks. This process extracts only the text metadata, avoiding the bandwidth and storage costs of full video downloads. The implementation in [[`skills/watch/scripts/download.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/download.py)](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/download.py) handles the VTT retrieval without invoking any external AI services.

## Practical Usage Examples

Run Claude Video in captions-only mode with the following command structure:

```bash
python -m skills.watch.scripts.watch \
    https://www.youtube.com/watch?v=example_id \
    --no-whisper

```

When captions are available, the output indicates the free source:

```

[watch] checking metadata/captions via yt-dlp…
[watch] using captions (via captions)
[watch] transcript source: captions

```

If the video lacks native captions, the system defaults to visual analysis only:

```

[watch] checking metadata/captions via yt-dlp…
[watch] no captions found – returning frames only

```

You can combine frame extraction with captions-only mode for multimodal analysis:

```bash
python -m skills.watch.scripts.watch \
    https://youtu.be/example \
    --frames \
    --no-whisper

```

## Key Source Files

Understanding the implementation requires examining these specific modules:

- **[[`skills/watch/scripts/watch.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/watch.py)](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/watch.py)** – Main entry point that parses `--no-whisper`, orchestrates the caption vs. Whisper decision at lines 239-251, and manages the `fetch_captions` logic at lines 98-104.
- **[[`skills/watch/scripts/download.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/download.py)](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/download.py)** – Retrieves video metadata and captures VTT captions via `yt-dlp` without downloading video content.
- **[[`skills/watch/scripts/whisper.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/whisper.py)](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/whisper.py)** – Implements the Whisper fallback API calls that are bypassed when `--no-whisper` is set.
- **[[`tests/test_watch.py`](https://github.com/bradautomates/claude-video/blob/main/tests/test_watch.py)](https://github.com/bradautomates/claude-video/blob/main/tests/test_watch.py)** – Validates that the `--no-whisper` flag correctly suppresses Whisper usage and respects captions-only constraints.

## Summary

- **Use the `--no-whisper` flag** to disable AI transcription and avoid API costs.
- **Captions are extracted via `yt-dlp`** metadata queries, requiring no external AI services.
- **When captions are unavailable**, the system returns frames-only instead of falling back to paid transcription.
- **Source logic** resides primarily in [`skills/watch/scripts/watch.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/watch.py) at lines 98-104 and 239-251.

## Frequently Asked Questions

### What happens if I use `--no-whisper` but the video has no captions?

Claude Video returns frames-only output, extracting visual frames for analysis while omitting the transcript entirely. It does not attempt to transcribe the audio, ensuring zero Whisper API costs.

### Does captions-only mode affect video download speed?

Yes, caption extraction is significantly faster because it retrieves only VTT metadata via `yt-dlp` rather than downloading the full video file or processing audio through an AI model. This reduces both bandwidth usage and processing time.

### Can I use `--no-whisper` with local video files?

The `--no-whisper` flag works with any video source, but local files without embedded subtitle tracks will result in frames-only output unless external caption files are provided. The tool prioritizes native captions over transcription regardless of the video source.

### Is there a way to force captions-only mode without passing the flag every time?

Currently, the repository requires explicit flag invocation per command. You can create wrapper scripts or shell aliases that include `--no-whisper` by default to ensure consistent cost-saving behavior across your workflow.