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.2.tar.gz (28.3 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.2-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: eyeroll-0.2.2.tar.gz
  • Upload date:
  • Size: 28.3 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.2.tar.gz
Algorithm Hash digest
SHA256 71c2e0c7cad4897ed81c03ca4b519757317be864404cee6735d5cfd65bdf300c
MD5 db542745b44357cf5dd36f1d673effb4
BLAKE2b-256 5696aa407f9c4f8033f0433369d4f6295235bd11719c7b114174530ad308bdde

See more details on using hashes here.

Provenance

The following attestation bundles were made for eyeroll-0.2.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: eyeroll-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 17.4 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6070e1260f49ebb7b4091907c991e39e1b039c06a279eb8c5bb00e132a4262b1
MD5 5918dc67e568e22cd0bbd419529ea2fe
BLAKE2b-256 b252132c528e0f1090587bff797c5039bf86816f2056fbb7a0fa394d06c52e5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for eyeroll-0.2.2-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