moda-video-footage
PREREQUISITE — load moda-core once per session (step-0, write contract,
free/metered map). Already loaded? Skip ahead. If you cannot load it, the
non-negotiables: run moda doctor --json before anything; moda brand list
before creating; writes that pin a revision use your last read's — on
stale_revision, re-read and retry once (it heals); send the canvas link the
moment it exists; stuck or failed? moda ask "<question>" — free and fast,
never guess.
What this lane is
The user has REAL clips on disk — a shoot, a trip, screen recordings — and
wants a cut: a film, a reel, a highlight. Analysis stays local (Rushes, the
optional toolkit riding moda rushes, indexes and searches the footage on
this machine and uploads nothing); only the selects that make the cut are
uploaded, and the deliverable is always BOTH the editable Moda timeline and
the rendered mp4. Generating new footage is moda-video-clip's; motion over
designs and type is moda-video-motion's; this lane cuts what already exists.
Read references/footage.md before the first command — it is the whole
workflow with its invariants; references/otio.md carries the timeline
interchange contract the endgame rides. What follows is the shape, not a
substitute for either.
Recipe — folder to film
- Toolkit check:
moda rushes doctor --json. Typed
rushes_not_installed teaches the fix — moda rushes install (it states
what it downloads first; sizes are multi-GiB). Can't install? Degrade
honestly: pick selects by eye with your harness's own tools and skip to
step 5 — say the selection was manual, never pretend an index ran.
- Index:
moda rushes ingest FOOTAGE --project INDEX →
moda rushes analyze INDEX → moda rushes status INDEX --json. The
project directory is persistent memory — keep it, reuse it across
revisions, never wipe it to re-ask a question.
- Brief + probes: one short exchange for target duration, tone,
priorities. Then probe search quality with a few
moda rushes search INDEX "…" --top-k 8 --json queries and
moda rushes show INDEX mom_… --json — look at contact sheets and
transcript evidence; captions can hallucinate and rank is not confidence.
- Choose:
moda rushes highlight INDEX --target-minutes N for the
candidate pool (~2.5× the target, one per duplicate cluster — material,
not a film), then moda rushes select INDEX mom_… --name … --reason … --json
in play order, with exact rational trims via --items when a moment
needs shaving. Reason at duplicate-cluster level; consume returned ids.
- Extract + upload:
moda rushes extract INDEX sel_… --handles 2s --out SELECTS --json (or upload whole originals when the folder is a few small
files), moda file upload each select, rewrite the media map's pending
entries to uploaded with the REAL returned asset ids.
- Timeline: author
cut-v001.otio and dry-run it first —
moda edit import CANVAS_REF cut-v001.otio --media-map media-map.json --dry-run — against a canvas you created (moda canvas create --category animation); then apply the same command with --yes in place of
--dry-run (replace mode clears the existing timeline, so it refuses
unconfirmed). Read the fidelity report; surface every dropped/approximated
item. New versions are new files — v002, v003 — never an overwrite of the
only cut.
- Draft, look, iterate:
moda export CANVAS_REF --format mp4 --scope main_edit -o draft.mp4, sample frames, judge against the brief.
Small fixes are moda edit apply operations against a fresh read;
a recut is the next .otio version.
- Deliver: the live canvas link FIRST — the human always gets an
editable timeline — then the mp4 and the
.otio version file when the
user wants an interchange copy for Resolve/Premiere.
Everything here is unmetered: indexing, uploads, import, export and
iteration are free, so iterate on the cut as much as the piece needs. A
music bed is an upload away (an audio track on the same timeline); a
generated score is moda-audio's lane.
Boundaries stated plainly
- Rushes never uploads, never calls cloud inference, and needs no Moda
account; Moda's cloud renders and exports and never reads local disk. You
are the bridge, and selected media is the only cargo.
- The user chose uploads of SELECTED media — never bulk-upload the folder.
- Supported transitions and visual tracks import and render. Unknown effects,
unpaired overlaps and resource limits decline by name in
validation.diagnostics;
relay them honestly. Never claim an unsupported edit exported without loss.
- An audio-only timeline does not export as mp4 — keep a visual clip on the
cut.
- Full inference is Linux x86_64 and Apple Silicon; elsewhere use the
media-only profile or the manual degraded path, and say which ran.
Errors
Any typed error → moda-core's recovery reference. rushes_not_installed /
rushes_update_required: run moda rushes install, then re-run the SAME
command. otio_import_rejected: the fidelity items name each offender —
fix them (upload + rewrite pending entries; re-reference intermediates
with their own timings), never invent asset ids. stale_revision on an
edit: re-read and retry once — it heals.
Make it recurring
The weekly cut from a growing folder → moda-automate; the finished film's
social variants → moda-social; a designed cover still → moda-image.
See also: moda-video — the family fork · moda-video-motion — type and
motion over the cut · moda-core — contract, recovery, everything Moda can do.
References
| Doc |
Load when |
| references/footage.md |
ALWAYS before the first rushes command — the workflow, its caching/timing invariants, degraded paths |
| references/otio.md |
before authoring or importing a timeline — media maps, fidelity report, exact-time discipline, OTIO vs edit ops |
| references/export.md |
rendering the draft and final — scopes, ceilings, warnings |
| references/reading-and-verifying.md |
the review loop; verifying without vision |
1---2name: moda-video-footage3description: Real footage into a film: index and search local clips, upload only the selects — an editable Moda timeline + mp4 out. Highlight reel, rough cut. Local lane.4---56# moda-video-footage78<!-- moda:banner -->9**PREREQUISITE — load `moda-core` once per session** (step-0, write contract,10free/metered map). Already loaded? Skip ahead. If you cannot load it, the11non-negotiables: run `moda doctor --json` before anything; `moda brand list`12before creating; writes that pin a revision use your last read's — on13`stale_revision`, re-read and retry once (it heals); send the canvas link the14moment it exists; stuck or failed? `moda ask "<question>"` — free and fast,15never guess.16<!-- /moda:banner -->1718## What this lane is1920The user has REAL clips on disk — a shoot, a trip, screen recordings — and21wants a cut: a film, a reel, a highlight. Analysis stays local (Rushes, the22optional toolkit riding `moda rushes`, indexes and searches the footage on23this machine and uploads nothing); only the selects that make the cut are24uploaded, and the deliverable is always BOTH the editable Moda timeline and25the rendered mp4. Generating new footage is moda-video-clip's; motion over26designs and type is moda-video-motion's; this lane cuts what already exists.2728Read references/footage.md before the first command — it is the whole29workflow with its invariants; references/otio.md carries the timeline30interchange contract the endgame rides. What follows is the shape, not a31substitute for either.3233## Recipe — folder to film34351. **Toolkit check**: `moda rushes doctor --json`. Typed36 `rushes_not_installed` teaches the fix — `moda rushes install` (it states37 what it downloads first; sizes are multi-GiB). Can't install? Degrade38 honestly: pick selects by eye with your harness's own tools and skip to39 step 5 — say the selection was manual, never pretend an index ran.402. **Index**: `moda rushes ingest FOOTAGE --project INDEX` →41 `moda rushes analyze INDEX` → `moda rushes status INDEX --json`. The42 project directory is persistent memory — keep it, reuse it across43 revisions, never wipe it to re-ask a question.443. **Brief + probes**: one short exchange for target duration, tone,45 priorities. Then probe search quality with a few46 `moda rushes search INDEX "…" --top-k 8 --json` queries and47 `moda rushes show INDEX mom_… --json` — look at contact sheets and48 transcript evidence; captions can hallucinate and rank is not confidence.494. **Choose**: `moda rushes highlight INDEX --target-minutes N` for the50 candidate pool (~2.5× the target, one per duplicate cluster — material,51 not a film), then `moda rushes select INDEX mom_… --name … --reason … --json`52 in play order, with exact rational trims via `--items` when a moment53 needs shaving. Reason at duplicate-cluster level; consume returned ids.545. **Extract + upload**: `moda rushes extract INDEX sel_… --handles 2s --out55 SELECTS --json` (or upload whole originals when the folder is a few small56 files), `moda file upload` each select, rewrite the media map's `pending`57 entries to `uploaded` with the REAL returned asset ids.586. **Timeline**: author `cut-v001.otio` and dry-run it first —59 `moda edit import CANVAS_REF cut-v001.otio --media-map media-map.json60 --dry-run` — against a canvas you created (`moda canvas create --category61 animation`); then apply the same command with `--yes` in place of62 `--dry-run` (replace mode clears the existing timeline, so it refuses63 unconfirmed). Read the fidelity report; surface every dropped/approximated64 item. New versions are new files — v002, v003 — never an overwrite of the65 only cut.667. **Draft, look, iterate**: `moda export CANVAS_REF --format mp467 --scope main_edit -o draft.mp4`, sample frames, judge against the brief.68 Small fixes are `moda edit apply` operations against a fresh read;69 a recut is the next `.otio` version.708. **Deliver**: the live canvas link FIRST — the human always gets an71 editable timeline — then the mp4 and the `.otio` version file when the72 user wants an interchange copy for Resolve/Premiere.7374Everything here is unmetered: indexing, uploads, import, export and75iteration are free, so iterate on the cut as much as the piece needs. A76music bed is an upload away (an audio track on the same timeline); a77generated score is moda-audio's lane.7879## Boundaries stated plainly8081- Rushes never uploads, never calls cloud inference, and needs no Moda82 account; Moda's cloud renders and exports and never reads local disk. You83 are the bridge, and selected media is the only cargo.84- The user chose uploads of SELECTED media — never bulk-upload the folder.85- Supported transitions and visual tracks import and render. Unknown effects,86 unpaired overlaps and resource limits decline by name in `validation.diagnostics`;87 relay them honestly. Never claim an unsupported edit exported without loss.88- An audio-only timeline does not export as mp4 — keep a visual clip on the89 cut.90- Full inference is Linux x86_64 and Apple Silicon; elsewhere use the91 media-only profile or the manual degraded path, and say which ran.9293## Errors9495Any typed error → moda-core's recovery reference. `rushes_not_installed` /96`rushes_update_required`: run `moda rushes install`, then re-run the SAME97command. `otio_import_rejected`: the fidelity items name each offender —98fix them (upload + rewrite `pending` entries; re-reference intermediates99with their own timings), never invent asset ids. `stale_revision` on an100edit: re-read and retry once — it heals.101102## Make it recurring103104The weekly cut from a growing folder → moda-automate; the finished film's105social variants → moda-social; a designed cover still → moda-image.106107See also: moda-video — the family fork · moda-video-motion — type and108motion over the cut · moda-core — contract, recovery, everything Moda can do.109110## References111112| Doc | Load when |113|---|---|114| references/footage.md | ALWAYS before the first rushes command — the workflow, its caching/timing invariants, degraded paths |115| references/otio.md | before authoring or importing a timeline — media maps, fidelity report, exact-time discipline, OTIO vs edit ops |116| references/export.md | rendering the draft and final — scopes, ceilings, warnings |117| references/reading-and-verifying.md | the review loop; verifying without vision |