Skip to main content

AI eyes that roll through video footage — watch, understand, turn into code actions.

Project description

eyeroll

AI eyes that roll through video footage — watch, understand, act.

eyeroll is a collection of AI coding agent skills that analyze screen recordings, Loom videos, YouTube links, and screenshots, then turn them into code actions.

Skills

Skill What it does
watch-video Watch a video and produce structured notes
video-to-pr Watch a bug video → diagnose → fix → raise PR
video-to-skill Watch a tutorial/demo → generate a Claude Code skill

Install

# Install all skills
npx skills add mnvsk97/eyeroll

# Install a specific skill
npx skills add mnvsk97/eyeroll@video-to-pr
npx skills add mnvsk97/eyeroll@video-to-skill
npx skills add mnvsk97/eyeroll@watch-video

Setup

pip install eyeroll
brew install yt-dlp    # for URL downloads (Loom, YouTube)

Option A: Gemini (default, API-based)

eyeroll init           # or: export GEMINI_API_KEY=your-key

Get a free key at aistudio.google.com/apikey. Supports direct video upload, audio transcription. ~$0.15 per analysis.

Option B: Ollama + Qwen3-VL (local, private, free)

brew install ollama    # install Ollama
ollama serve           # start the server

No API key needed. The model is pulled automatically on first use (~6GB for qwen3-vl:8b). Runs entirely on your machine.

Usage

In Claude Code (via skills)

User: fix this bug: https://loom.com/share/abc123
      → video-to-pr skill activates, watches video, finds code, fixes, raises PR

User: watch this tutorial and create a skill from it: ./demo.mp4
      → video-to-skill skill activates, watches video, generates SKILL.md

User: look at this recording, what's going on?
      → watch-video skill activates, produces structured notes

Standalone CLI

# Gemini (default)
eyeroll watch https://loom.com/share/abc123
eyeroll watch ./bug.mp4 --context "checkout broken after PR #432"

# Ollama (local)
eyeroll watch ./bug.mp4 --backend ollama
eyeroll watch screenshot.png -b ollama -m qwen3-vl:2b

# Or set as default
export EYEROLL_BACKEND=ollama
eyeroll watch ./recording.mp4

Backends

Backend Video Audio API Key Cost Best for
gemini Direct upload Yes Required ~$0.15/video Best quality, short videos
ollama Frame-by-frame No None Free Privacy, offline, no API limits

Ollama models

Model Size Notes
qwen3-vl (default) 6.1GB Best quality, needs 8GB+ RAM
qwen3-vl:2b 1.9GB Lighter, works on 8GB machines
qwen3-vl:32b 21GB Higher quality, needs 32GB+ RAM

How it works

Video (Loom / YouTube / local file / screenshot)
    ↓
eyeroll extracts: frames, audio, on-screen text
    ↓
Backend analyzes: Gemini Flash (API) or Qwen3-VL (local via Ollama)
    ↓
Structured notes → skill decides what to do next
    ↓
video-to-pr:    search codebase → fix → PR
video-to-skill: extract workflow → generate SKILL.md
watch-video:    return notes to the agent

Supported inputs

Input Notes
Loom URLs Requires yt-dlp
YouTube URLs Requires yt-dlp
Local video files (.mp4, .webm, .mov) Direct analysis
Screenshots (.png, .jpg, .gif) Single-frame analysis
Any yt-dlp supported URL 1000+ sites

Requirements

  • Python 3.11+
  • ffmpeg (brew install ffmpeg)
  • yt-dlp (brew install yt-dlp) — for URL downloads
  • Gemini backend: Gemini API key (free)
  • Ollama backend: Ollama installed and running

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eyeroll-0.2.0.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eyeroll-0.2.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file eyeroll-0.2.0.tar.gz.

File metadata

  • Download URL: eyeroll-0.2.0.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for eyeroll-0.2.0.tar.gz
Algorithm Hash digest
SHA256 20daba9c0f6cc042d4243e85f18ff6a044af52f06305aa58089c201a0774d529
MD5 66e273a4378f5b06bd1751dc28c2d1f3
BLAKE2b-256 018dc7b0934a9b15c0d948dc3b8e60a6ba0065fb623acad05c29faee5d8f97ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for eyeroll-0.2.0.tar.gz:

Publisher: ci.yml on mnvsk97/eyeroll

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eyeroll-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: eyeroll-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for eyeroll-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 25eb8bfed77059d097a34e555a955ed69d0f3e021ca3850ddcf17edb554bf223
MD5 8796cdcd8e1a55ea0cec09ea4633a345
BLAKE2b-256 ffe695106ba5b880f95041159c9064501072fb84939f6b4168382764ccd9165a

See more details on using hashes here.

Provenance

The following attestation bundles were made for eyeroll-0.2.0-py3-none-any.whl:

Publisher: ci.yml on mnvsk97/eyeroll

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page