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.1.tar.gz (27.8 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.1-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: eyeroll-0.2.1.tar.gz
  • Upload date:
  • Size: 27.8 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.1.tar.gz
Algorithm Hash digest
SHA256 21d443278c264d2bcca8de614ed7d43f07ddfc17381fee944be5c88a22f8a3e0
MD5 37195cd34d438a094af7fe614f19ce29
BLAKE2b-256 d9a98a8d1261b0bb3a8490390a8ee239cd571d14eadb1e33d3da96b65be32f15

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: eyeroll-0.2.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6ec2d6ea8b8de69e0390e926bad2d3ded45d44d5c924ce2aca7ade8da7c7419b
MD5 d12af0637dddde82df54973ce5baf0f0
BLAKE2b-256 216912fb13acec58236104d6ac912b93dde78c39cfec1f769decca5c5b225ddb

See more details on using hashes here.

Provenance

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