Skip to main content

amagi-watch

Give Claude a video URL and get back something it can read: a timestamped transcript and key frames, merged into one markdown file.

Claude can read text and images but can't play a video. amagi-watch turns a video into those two things on your own machine. It downloads the video with yt-dlp, uses the platform's captions when they exist (and transcribes locally with faster-whisper when they don't), pulls key frames with ffmpeg scene detection, and writes an index.md that puts transcript lines and frame references in timestamp order.

Everything runs locally. There are no API keys and nothing goes to a cloud service, apart from yt-dlp downloading the video itself.

Install

pipx install --python 3.12 amagi-watch

You also need these on your PATH:

Python 3.10 to 3.13. faster-whisper is installed as a dependency, and its audio decoder needs PyAV older than 14, which has no Python 3.14 build. If your default Python is 3.14, keep the --python 3.12 flag (any of 3.10-3.13 works). The first transcription downloads the Whisper model you pick.

Usage

amagi-watch <url> [-o OUTDIR] [--cookies-from-browser chrome] [--model small] [--max-frames 32] [--keep-video]
Option What it does
-o, --outdir Where run folders go (default amagi_watch_out)
--cookies-from-browser Browser to borrow login cookies from (for example chrome), for sites that need a login
--model faster-whisper size: tiny, base, small (default), medium, large-v3
--max-frames Most key frames to keep (default 32)
--keep-video Keep the downloaded video (deleted by default)

Examples:

# A public YouTube video
amagi-watch "https://www.youtube.com/watch?v=aqz-KE-bpKQ" -o runs

# A fast, rough pass on a long video
amagi-watch "<url>" --model tiny --max-frames 16

# A site that needs you to be logged in
amagi-watch "<url>" --cookies-from-browser chrome

The last line of stdout is the path to the run folder, so scripts and agents can pick it up.

Output

Each run writes <outdir>/<video_id>_<title>/:

  • index.md: the file to read. Transcript lines and frame references in time order.
  • transcript.md: the transcript by itself.
  • frames/: JPEG key frames named frame_<seconds>s.jpg, 640 px wide.
  • metadata.json: title, uploader, duration, description and URL.

Excerpt from a run on Big Buck Bunny (Blender Foundation, CC BY 3.0). The film has no dialogue, so this timeline is all frames:

# Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film

- Source: https://www.youtube.com/watch?v=aqz-KE-bpKQ
- Uploader: Blender
- Duration: 635s
- Transcript source: faster-whisper (small)

## Timeline

> see frame: frames/frame_00000s.jpg

> see frame: frames/frame_00019s.jpg

> see frame: frames/frame_00039s.jpg

When a video has speech, lines like **[00:16]** ... appear between the frames.

Use it as a Claude Code skill

The repo includes a SKILL.md. Copy it into your skills folder:

mkdir -p ~/.claude/skills/amagi-watch
cp SKILL.md ~/.claude/skills/amagi-watch/SKILL.md

When you paste a video link and ask what it says or shows, Claude runs amagi-watch, reads index.md, and opens the frames it needs.

Limitations

  • Instagram, TikTok and X often need --cookies-from-browser. Without valid cookies the download fails.
  • Whisper on CPU runs at roughly real time or slower with small. Captions are much faster when the platform has them.
  • Scene detection finds a different number of frames for each video. If it finds too few or too many, the tool takes frames at a fixed interval instead.
  • Frames are stills. Motion, on-screen animation and fast cuts between frames are lost.
  • Platform captions are fetched in English only. Whisper detects the spoken language on its own.

Other people have tackled the same problem, and their tools may suit you better:

amagi-watch is a single small Python file with no API keys, and its output is one markdown file built for an LLM to read.

Only download videos you have the right to download. Follow each platform's terms of service and respect copyright. amagi-watch is for personal research and analysis. It doesn't grant rights to any content it processes.

License

MIT. Copyright (c) 2026 AmagiLabs (Amagisolutionsgroup, Inc.). See LICENSE.

Built by AmagiLabs.

Metadata

Release files for amagi-watch 0.1.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 amagi-watch 0.1.1
File Size Uploaded Provenance
amagi_watch-0.1.1.tar.gz 10.8 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for amagi-watch 0.1.1
File Interpreter ABI Platform
amagi_watch-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.8 kB

Release files / amagi_watch-0.1.1.tar.gz

Download URL amagi_watch-0.1.1.tar.gz
Size 10.8 kB
Tags Source
SHA-256 checksum
How to use checksums
c9954e9f7f754d51efec56d7c240ce9e74839eef9df3c4d3a7dbdb11ad0c78cd
BLAKE2b-256 checksum
How to use checksums
2a5c7585e027729a457e93039a45b562f39acc8eaf2898e63b0aae572f64ea59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 22, 2026.

Transparency log

Release files / amagi_watch-0.1.1-py3-none-any.whl

Download URL amagi_watch-0.1.1-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f22b4532932f75a65fa1b9001c4786c0f9a6347837348754c3e12c9df16bb4d0
BLAKE2b-256 checksum
How to use checksums
c183c839d6059b3b277920d2bc4ad1b5a333806a52b31b2e1bf5df572aa51d37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 22, 2026.

Transparency log

Security for amagi-watch 0.1.1

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for amagi_watch-0.1.1.tar.gz

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 Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

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