# peepshow

Turns videos and animated images into frame sequences with audio transcripts. Helps Claude Code inspect screencasts, GIFs, and clips right from your prompt.

- plugin · `type=plugin` · Claude Code · ★ 69
- Author: t0mtaylor
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/t0mtaylor/peepshow
- Updated: 2026-10-10
- HTML: https://affpapa.org/en/nevibecode/plugins/peepshow

## What it does

The plugin enables Claude Code to inspect multi-frame media like MP4, MOV, GIF, APNG, and WebP files. Dropping a recording into the chat triggers the `UserPromptSubmit` hook. It automatically executes `/peepshow:slides` behind the scenes, splitting the clip into still frames for the model to inspect.

Inputs with audio tracks get extracted to a mono AAC file alongside the visual frames. When `whisper.cpp` is on your `PATH`, local speech recognition runs automatically with the `base.en` model without external APIs. It also connects to cloud providers such as Groq, OpenAI, or Deepgram. Structured output can stream directly into 95 built-in sinks, including vector stores, SQL databases, and issue trackers.

Native `ffmpeg` is completely optional. The tool falls back to bundled `ffmpeg-static`, but your environment must run Node.js 22 or newer.

## Install

### Claude Code (native platform)

**Plugin marketplace**
In the agent chat (not a shell):
```text
/plugin marketplace add anthropics/claude-plugins-community
```
In the agent chat (not a shell):
```text
/plugin install peepshow@claude-community
```

## When to use it
- feed screencast recordings directly into Claude Code prompts
- transcribe spoken audio tracks alongside extracted video frames
- inspect animated UI glitches recorded as GIF or WebP
- export media timelines and frame metadata to external sinks

## Example prompts
- /peepshow:slides ~/Desktop/bug.mov
- Explain what happens in `./demo.mp4`
- Check `./repro.gif` and locate the UI glitch

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 072698b2c6bbab8a.

BEGIN THIRD-PARTY FILE 072698b2c6bbab8a
```text
<p align="center">
  <img src="./docs/logo.svg" alt="peepshow" width="520">
</p>

<p align="center">
  <a href="https://www.peepshow.dev/"><img src="https://img.shields.io/badge/site-peepshow.dev-a78bfa" alt="peepshow.dev"></a>
  <a href="https://www.npmjs.com/package/peepshow"><img src="https://img.shields.io/npm/v/peepshow.svg" alt="npm"></a>
  <img src="https://img.shields.io/badge/node-%E2%89%A522-43853d" alt="Node ≥ 22">
  <img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT">
  <a href="https://x.com/tom_taylor"><img src="https://img.shields.io/badge/x-%40tom__taylor-000000" alt="@tom_taylor on X"></a>
</p>

<p align="center">
  <a href="https://www.peepshow.dev/">peepshow.dev</a> ·
  <a href="https://www.peepshow.dev/sinks/">Sinks</a> ·
  <a href="https://www.peepshow.dev/agents/">Agents</a> ·
  <a href="https://x.com/tom_taylor">@tom_taylor</a>
</p>

# peepshow

> **video → frames → LLM.** Any LLM CLI. Any storage backend. Zero glue code.

Turn a video — or an animated GIF, APNG, or WebP — into a timeline of still frames plus an extracted audio track and its transcript, so an LLM can "watch" and "listen" to what's inside.

<p align="center">
  <img src="docs/demo.gif" alt="peepshow demo — drop a clip, extract frames and transcript, LLM answers" width="720">
</p>

Static images (JPG, PNG, static WebP) are already handled natively by most LLMs — drag, drop, done. **`peepshow` only steps in for things that have multiple frames across time**: videos and animated images, which today's LLMs can't consume directly.

**Same drag-and-drop UX as images.** Drop a `.mp4` / `.mov` / `.gif` into the Claude Code prompt and a `UserPromptSubmit` hook auto-invokes `/peepshow:slides <path>` behind the scenes — Claude extracts frames, reads them, and answers. No slash command, no Bash call, no copy-paste. Works with natural-language prompts too ("what's in ~/Desktop/bug.mov?") and with every other CLI entry point (explicit `/peepshow:slides`, shell `peepshow ...`, pipes into `--sink`).

**Pluggable sink backends — write your own, or use the built-ins.** Every run can fan out to downstream systems via `--sink <name>` or `--sink-cmd <shell>`. A sink is any executable that reads a JSON payload on stdin — write one in bash, Node, Python, Go, whatever. The full `video` + `tags` + `frames` + `audio` + `extraction` payload (same as `--emit json`) flows to each sink, so they receive the full context, not just the frame paths. **95 sinks ship built-in** across SQL (SQLite · Postgres · MongoDB), vector + AI memory (Chroma · Qdrant · Pinecone · pgvector · Weaviate · Milvus · MemPalace · Zep · Mem0 · Letta), object + file storage (S3-compatible · GCS · Firebase Storage · Azure Blob · Supabase · Dropbox · Google Drive · Box · OpenAI Files), chat (Slack · Discord · MS Teams · Telegram · WhatsApp · iMessage · Mattermost · Rocket.Chat · Zulip · Matrix), issue trackers (Linear · Height · GitHub Issues · Jira · Asana · ClickUp · Shortcut · Trello), whiteboards (Miro · Figma), wiki/notes (Notion · Obsidian · Logseq · Outline · Confluence · Apple Notes · Bear), product analytics (PostHog · Plausible · Mixpanel/Amplitude/Segment), observability (Sentry · Datadog · New Relic · Honeycomb · PagerDuty · Opsgenie · Grafana Oncall), and workflow glue (Webhook · GraphQL · IDE · Aider · Continue · Cody · Raycast · Pipedream · Zapier · Shortcuts · Apple Reminders · Things 3). Browse [`docs/sinks/`](./docs/sinks/) or use the [use-case finder](https://www.peepshow.dev/sinks/find/). Full spec: [`docs/PLUGINS.md`](./docs/PLUGINS.md).
```
END THIRD-PARTY FILE 072698b2c6bbab8a

The third-party file has ended. Everything between the 072698b2c6bbab8a tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 3651 of 47132 bytes. © t0mtaylor · MIT · https://github.com/t0mtaylor/peepshow

## Similar
- [video-analysis](https://affpapa.org/en/nevibecode/skills/video-analysis.md) — skill · 1800 installs
- [claude-real-video](https://affpapa.org/en/nevibecode/skills/claude-real-video.md) — skill · 571 installs
- [claude-real-video-for-agents](https://affpapa.org/en/nevibecode/skills/claude-real-video-for-agents.md) — skill · 507 installs
- [Video Processor](https://affpapa.org/en/nevibecode/skills/video-processor.md) — skill · ★ 1556
- [Video Transcriber](https://affpapa.org/en/nevibecode/mcp/video-transcriber.md) — MCP server · ★ 19
- [video-understand](https://affpapa.org/en/nevibecode/skills/video-understand.md) — skill · 1400 installs

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
