Skip to main content

video-to-claude

Translate video files into a format Claude can experience.

Claude can't watch videos, but it can view images and read data. This tool extracts sequential frames, generates spectrograms, and produces audio analysis - everything Claude needs to "experience" your video.

PyPI Python Version License

Quick Start

# 1. Install dependencies
brew install ffmpeg  # macOS (or apt install ffmpeg on Ubuntu/Debian)
pip install video-to-claude[mcp]

# 2. Convert a video
video-to-claude convert ~/Videos/my_video.mp4

# 3. Upload to share with Claude
video-to-claude upload ~/Videos/my_video_for_claude --name "My Video"

# 4. Access via MCP server in Claude Desktop (see setup below)

Installation

# Requires ffmpeg
brew install ffmpeg  # macOS
apt install ffmpeg   # Ubuntu/Debian

# Install the tool
pip install video-to-claude[mcp]

MCP Server Setup

Local MCP Server (Claude Code)

Process videos locally on your machine:

{
  "mcpServers": {
    "video-to-claude": {
      "command": "video-to-claude-mcp"
    }
  }
}

Then ask Claude:

  • "Convert the video at ~/Videos/wilson.mov"
  • "Show me frame 10"
  • "What does the audio look like?"

Available Tools:

Tool Description
convert_video Process a video into frames + audio analysis
get_video_info Get video metadata without processing
view_frame View a specific frame
view_all_frames View multiple frames at once
view_spectrogram View audio frequency visualization
view_waveform View audio amplitude visualization
get_audio_analysis Get detailed audio metrics
get_manifest Get the full manifest

Remote MCP Server (Access Uploaded Videos)

Access your uploaded videos from anywhere using the remote MCP server at https://api.ai-media-tools.dev:

{
  "mcpServers": {
    "video-to-claude-remote": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://api.ai-media-tools.dev/mcp"
      ],
      "env": {
        "MCP_AUTH_TOKEN": "your-github-token-here"
      }
    }
  }
}

Authentication Required: The remote MCP endpoint requires a Bearer token. Use the token you received during upload authentication, or get a new one:

# Get your token
video-to-claude upload --get-token

Available Tools:

Tool Description
list_videos List all your uploaded videos
get_manifest Get video manifest and metadata
get_frame View a specific frame
get_frames View multiple frames
get_spectrogram View audio frequency visualization
get_waveform View audio amplitude visualization
get_audio_analysis Get detailed audio metrics

CLI Usage

Convert Videos

# Convert a video (20 frames + audio analysis)
video-to-claude convert ~/Videos/my_video.mp4

# Custom frame count
video-to-claude convert ~/Videos/my_video.mp4 --frames 30

# Skip audio analysis
video-to-claude convert ~/Videos/my_video.mp4 --no-audio

# Get video info
video-to-claude info ~/Videos/my_video.mp4

Upload and Share Videos

Upload processed videos to share them with Claude or access them from anywhere:

# Upload a processed video (uses GitHub OAuth)
video-to-claude upload ~/Videos/my_video_for_claude --name "My Video"

Authentication Flow:

  1. First upload opens your browser for GitHub authentication
  2. Authorize the app to get a token
  3. Token is saved automatically for future uploads
  4. Set VIDEO_TO_CLAUDE_TOKEN environment variable to use the same token across sessions

Direct Upload (Advanced):

If you have R2 credentials, you can upload directly without authentication:

# Set environment variables
export CLOUDFLARE_ACCOUNT_ID=your-account-id
export CLOUDFLARE_R2_ACCESS_KEY_ID=your-access-key
export CLOUDFLARE_R2_SECRET_ACCESS_KEY=your-secret-key

# Upload with --direct flag
video-to-claude upload ~/Videos/my_video_for_claude --name "My Video" --direct

Output

my_video_for_claude/
├── manifest.json          # Metadata and viewing instructions
├── frame_001.jpg          # Sequential frames
├── frame_002.jpg
├── ...
├── spectrogram.png        # Audio frequency visualization
├── waveform.png           # Audio amplitude visualization
└── audio_analysis.json    # Detailed audio metrics

Troubleshooting

Authentication Issues

Browser doesn't open or callback hangs:

  • Check if port 8765 is available: lsof -i :8765
  • Try using the --token flag with an existing token
  • Check firewall settings for localhost connections

Already have a token? Skip the browser flow:

video-to-claude upload ./output --name "Video" --token YOUR_TOKEN
# Or set it as an environment variable
export VIDEO_TO_CLAUDE_TOKEN="your-token"

Upload Issues

"error code: 1010" during upload:

This typically means a required header is missing. Ensure you're using the latest version:

pip install --upgrade video-to-claude

Processing Issues

ffmpeg not found:

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Verify installation
ffmpeg -version

Why?

Videos contain moments worth sharing - a pet's greeting, a child's first steps, a sunset. Claude can understand these moments through sequential frames and audio analysis, experiencing the motion and sound in its own way.

This tool is a codec for Claude.

License

MIT

Metadata

Release files for video-to-claude 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for video-to-claude 0.2.1
File Size Uploaded
video_to_claude-0.2.1.tar.gz 73.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for video-to-claude 0.2.1
File Interpreter ABI Platform
video_to_claude-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 100.2 kB

Release files / video_to_claude-0.2.1.tar.gz

Download URL video_to_claude-0.2.1.tar.gz
Size 73.9 kB
Tags Source
SHA-256 checksum
How to use checksums
23d070a7dba3a8022af2cdb2f405a001deccf4466b915d653643363761320853
BLAKE2b-256 checksum
How to use checksums
ba1c1be0fac43d11090de25d454b32c9d5ddb2e40786ce0b347095d48a835c27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 30, 2026.

Transparency log

Release files / video_to_claude-0.2.1-py3-none-any.whl

Download URL video_to_claude-0.2.1-py3-none-any.whl
Size 26.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30f58599a4d01115dd454344042a4b2450b13b7ee5bad2974aeead38f36918f7
BLAKE2b-256 checksum
How to use checksums
1c4fb8043497e71d678a3b405ffffd082e635a05e6cb243c903f6f0e3e65a749
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page