peepshow/ how-to/ video-to-graphify

Reel #H-16 peepshow run → Graphify knowledge graph

peepshow how-to / video-to-graphify

Index videos into Graphify — semantic memory for Claude / Cursor / Gemini agents

<a href="https://github.com/safishamsi/graphify" rel="noopener external">Graphify</a> turns a folder (code, docs, PDFs, images, video) into a queryable knowledge graph and serves it to agents via MCP. peepshow extracts video into the exact folder shape Graphify ingests — frames as JPEGs, transcript as text, metadata as JSON. One pass through peepshow then one Graphify run and your coding agent has persistent semantic memory of the clip.

Steps

  1. 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
  2. Extract the video

    peepshow drops frames + transcript + manifest into a single folder.

    peepshow ./demo.mp4 --output ./peepshow-run
  3. 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
  4. 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?"
  5. 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.

Works with these LLMs

Pairs with these sinks