Steps
- Install peepshow + Graphify
peepshow runs via npm; Graphify ships as a uv tool (PyPI: `graphifyy`).
npm install -g peepshow uv tool install graphifyy graphify install # registers the Claude Code / Cursor / Gemini skill - Extract the video
peepshow drops frames + transcript + manifest into a single folder.
peepshow ./demo.mp4 --output ./peepshow-run - Graphify the folder
Graphify reads JPEGs, transcript text, and the JSON manifest as separate nodes — connects them by scene order and timestamps.
graphify ./peepshow-run - Query from your agent
Inside Claude Code / Cursor / Gemini CLI, the Graphify skill is now available — your agent gets `query_graph`, `get_node`, `get_neighbors`, `shortest_path` against the video graph.
# In Claude Code chat: /graphify . # Then: "Walk me through the scene changes in demo.mp4 — what happens at frame 12?" - Serve as MCP for other tools
Graphify exposes the graph as an MCP server — point any MCP-aware agent at it.
python -m graphify.serve ./peepshow-run/graph.json
Why it works
Graphify is the codebase/document side of agent memory — semantic graph over files, served via MCP. It already accepts video via its faster-whisper extra, but peepshow does scene-aware frame extraction Graphify doesn't: motion-based picking, perceptual-hash dedup, animated-format unwrapping. peepshow handles the timeline-to-frames step; Graphify handles the frames-to-graph step. They're complementary halves of the same workflow — extract once with peepshow, graph once with Graphify, query forever from your agent.
When it helps
- Coding agents that need to recall a tutorial / screen-recording / demo across sessions.
- Research / journalism where the same clip is referenced by multiple agent conversations.
- Bug repros where the agent needs to reason about which frame triggered the issue, weeks later.
- Multi-agent setups (Claude + Cursor + Gemini) sharing a single video memory via MCP.
Pitfalls
- Graphify expects a folder — use `peepshow --output <dir>` so frames + transcript + manifest land in one place.
- Graph rebuilds on every `graphify` run by default — pass the folder path consistently to avoid duplicate graphs.
- Graphify uses your IDE's existing model session for extraction; set `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `GEMINI_API_KEY` headless.
- MCP server reads `graph.json` directly — no separate auth token, so don't bind it to a non-loopback port.