← back to Clipreviewbydave
README.md
67 lines
# ClipReviewbyDave
A fully-local, browser-based video clip-review tool (authored by Dave). Load your
own video files, scrub each one frame-by-frame, stamp **IN / OUT / ★** points and
plain-language notes, then export a markdown notes file. **Nothing uploads** —
clips stay on your computer (blob URLs + `localStorage`).
Sourced from `http://lebron.tailb77ba2.ts.net:3333/review-docs/clip-review/` and
vendored here so it works offline and forever.
## Run
```sh
cd ~/Projects/clipreviewbydave
npm start # serves http://127.0.0.1:9736/ (override with PORT=xxxx)
```
Then open http://127.0.0.1:9736/ — add videos, scrub, stamp, export.
`GET /healthz` returns `200 ok` for keepalive / uptime probes.
> **Origin note:** notes autosave to `localStorage`, which is **per-origin**.
> Notes taken under this `http://127.0.0.1:9736` server are a separate bucket
> from notes taken by opening the file directly (`file://`). Pick one and stick
> with it for a given review pass.
## Load from server (no drag needed)
The server also exposes your own local videos so you can pick them from the
**From server** dropdown instead of dragging. It lists video files (mp4/mov/m4v/
webm/mkv/mpg/mpeg) from `~/Videos`, `~/Downloads`, `~/Movies`, `~/Desktop`
(override with `MEDIA_DIRS=/a:/b`), newest first, with a filter box (type e.g.
`rentv`). Files stream with HTTP byte-range so scrubbing/seeking works. Still
100% local — files are read off disk and streamed to the same-origin browser,
never uploaded. Endpoints: `GET /api/videos`, `GET /media?p=<abs-path>` (path
allow-listed to the media dirs). This picker is an **additive layer** on top of
Dave's original tool (`public/server-load.js` + a small toolbar control); the
drag-drop path is untouched.
## Using it
1. **Add videos** — **From server** dropdown (pick, no drag), the button, or drag-drop. They never leave the machine.
2. **Frame rate** — set to match your footage (24/25/30/60) for accurate frame-stepping.
3. **Stamp** — **IN**/**OUT** mark a keeper segment (pair them); **★** marks a single great frame. Add notes freely.
4. **Transport** — ▶︎/⏸ · −3s/−1s · ◀︎ fr / fr ▶︎ · ½×/1×/2×.
5. **Keyboard** (after clicking a video's buttons): `space` play/pause · `←`/`→` ±1s (`shift`=±3s) · `,`/`.` frame · `i`/`o`/`s` = IN/OUT/★.
6. **Export notes** / **Copy notes** when done.
## Notes format
The exported `clip-notes.md` groups per file with machine-parseable stamps:
```
## take_03.mp4
[IN 4.20s] [OUT 9.85s] use this take, tighten the head
[★ 12.40s] thumbnail frame
```
Each `[IN t]…[OUT t]` pair is a cut range; each `[★ t]` is a still to grab, e.g.:
```sh
ffmpeg -i take_03.mp4 -ss 4.20 -to 9.85 -c copy clip_01.mp4
```
## Related
Also wired as the Claude Code skill `clipreviewbydave` (say "ClipReviewbyDave"
or "review these clips"), which can launch this and read the notes back into a
cut plan. This project is the canonical copy; the skill carries a portable
`file://` fallback of the same HTML.