What Happens When Transcripts Are Missing and Whisper Is Disabled in claude-video

When transcripts are missing and Whisper is disabled, the tool prints a "no transcript available" notice and proceeds with frames-only extraction, bypassing transcription entirely while still processing video frames.

The claude-video repository provides a /watch skill for video analysis that normally relies on Whisper-based transcription when captions are unavailable. When users explicitly disable Whisper or the API is unavailable, the skill implements a graceful fallback mechanism that maintains core functionality while clearly communicating the limitation.

How the /watch Skill Handles Missing Transcripts

When you run the /watch skill against a video without embedded captions and Whisper is disabled, the execution follows a specific four-step fallback path.

Caption Fetch Failure

The process begins with fetch_captions, which attempts to retrieve subtitle files for the target video. When no captions are available, this function returns subtitle_path=None. Consequently, parse_vtt (located in transcribe.py) is never invoked, leaving the transcript_segments variable empty.

Whisper Fallback Bypass

In skills/watch/scripts/watch.py, the main logic checks transcription status with the condition:

if not transcript_segments and not args.no_whisper:
    # Whisper transcription block

When you supply the --no-whisper flag (or Whisper is otherwise unavailable), this block is skipped entirely. The combination of empty transcript segments and disabled Whisper triggers the alternative execution path.

The No-Transcript Output Path

The final report generation reaches the else branch designed for missing transcripts. This branch outputs a specific console notice:

"No transcript available — proceed with frames only. Captions were missing and the Whisper fallback was unavailable (no API key set, or --no-whisper was used). Run python3 skills/watch/scripts/setup.py to enable Whisper, then re-run."

This message explicitly references skills/watch/scripts/setup.py, which provides the routine for configuring Whisper API credentials.

Frame Extraction Continues

Despite the missing transcript, the tool continues processing the video. Frame extraction proceeds normally unless you explicitly requested --detail transcript, which skips frame extraction entirely. The video (or audio-only stream if detail == "transcript" and no timestamps were supplied) is still downloaded and processed according to your specified parameters.

Key Source Files

Understanding the flow requires examining these specific implementation files:

  • skills/watch/scripts/watch.py – Contains the main entry point and conditional logic that checks for captions, invokes Whisper, and handles the "no transcript" case when Whisper is disabled.

  • skills/watch/scripts/whisper.py – Implements the Whisper fallback transcription service; its absence in the execution chain explains why transcription is skipped when --no-whisper is set.

  • skills/watch/scripts/transcribe.py – Handles WebVTT caption parsing via parse_vtt; only executed when captions are successfully fetched.

  • skills/watch/scripts/setup.py – Provides the configuration interface for storing Whisper API keys; referenced in user-facing error messages when transcription services are unavailable.

Practical Examples

The following commands demonstrate the behavior when transcripts are missing and Whisper is disabled:


# Process video with missing captions, Whisper disabled

watch https://example.com/video.mp4 --no-whisper

# Request frames only mode without transcription

watch https://example.com/video.mp4 --detail transcript --no-whisper

In both cases, the output contains a processed frames list (unless detail is set to transcript) and the console notice indicating that no transcript is available.

Summary

  • Missing captions trigger fetch_captions to return None, preventing parse_vtt from executing.
  • Disabled Whisper bypasses the transcription fallback block in watch.py when --no-whisper is present.
  • Graceful degradation occurs via the else branch that prints a specific "no transcript available" message referencing setup.py.
  • Continuous operation means frames are still extracted and processed unless the user explicitly requested transcript-only mode.

Frequently Asked Questions

Does the skill fail completely if no transcripts are found?

No, the skill does not fail. When transcript_segments remains empty and Whisper is disabled, the code executes the alternative branch that logs the missing transcript notice and continues with frame extraction. This ensures the video analysis completes with available visual data even without textual transcription.

Can I still extract frames without Whisper?

Yes. Frame extraction proceeds normally when transcripts are missing and Whisper is disabled, unless you specify --detail transcript. In that specific mode, the tool skips frame extraction entirely and attempts to work with audio-only content, but will still report the unavailability of transcripts.

How do I enable Whisper after seeing the error message?

Run the setup script referenced in the error output: python3 skills/watch/scripts/setup.py. This script configures the Whisper API credentials required for transcription. After completing the setup, re-run your original watch command without the --no-whisper flag to enable the transcription fallback.

What happens if I use --detail transcript with no Whisper?

When using --detail transcript with missing captions and disabled Whisper, the tool downloads the audio stream but cannot generate transcript segments. It outputs the standard "no transcript available" notice and produces minimal output since frame extraction was explicitly skipped by the detail parameter.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →