Net new video editor skill

Turn newly recorded talking-head footage into review-ready vertical video drafts with an explicit edit plan, deterministic FFmpeg rendering, captions, hook cards, audio normalization, and visual QA.

by ericosiu·MIT license·★ 3,615 Stars on the repo·GitHub ↗

Use now

Files of Net new video editor

ericosiu/main1 file shown
SKILL.md
Show the full text99 lines

Net-New Video Editor

Create a reversible first edit from fresh recordings. Keep creative decisions in JSON and pixel operations in the bundled renderer.

Preamble

Run from the repository root when the optional shared telemetry helpers are present:

python3 telemetry/version_check.py 2>/dev/null || true
python3 telemetry/telemetry_init.py 2>/dev/null || true

Remote telemetry is opt-in and never includes content, file paths, repository names, or credentials.

Establish the package

Read references/project-contract.md. Locate the exact source recordings, transcript, idea card or brief, proof assets, and screen recordings. Never substitute another recording, brand, account, or asset library.

Initialize a new project only when the destination is clear:

python3 scripts/net_new_video_editor.py init --project <project-dir>

Copy or point only user-authorized inputs into the generated package. Preserve originals.

Inspect before editing

Run:

python3 scripts/net_new_video_editor.py inspect --project <project-dir>

Review intake-report.json. Stop when the package has no playable take, the requested target does not match the supplied footage, or required external assets are missing.

Build the edit plan

Use the transcript and brief to create edit-plan-clean.json. Treat the spoken hook and claim boundaries as ground truth.

  • Select one source take explicitly.
  • Keep segment order intentional and timestamps within the source duration.
  • Remove clear false starts, long dead space, and isolated filler only when the cut remains natural.
  • Preserve breaths that help meaning.
  • Put the hook on screen for at most five seconds.
  • Use captions in short readable phrases.
  • Add proof or screen inserts only when supplied and relevant. The bundled renderer handles the base assembly; add complex overlays in a separate, documented pass.
  • Normalize speech without clipping.

For a second version, copy the plan to edit-plan-aggressive.json and make only named retention edits. Do not silently change factual claims.

Validate each plan:

python3 scripts/net_new_video_editor.py validate --project <project-dir> --plan <plan.json>

Render deterministically

Run the renderer from this skill directory:

python3 scripts/net_new_video_editor.py render \
  --project <project-dir> \
  --plan <plan.json>

The renderer trims paired audio and video, concatenates the selected segments, creates a center-safe 9:16 frame, rasterizes captions and the hook card with Pillow, composites them with FFmpeg, normalizes audio, writes H.264/AAC MP4, and creates three QA frames plus qa-report.json.

Use --dry-run to inspect the FFmpeg command. Use --force only when replacing the exact derived export is intended.

Review the output

Inspect the exported MP4, all three QA frames, qa-report.json, and the plan diff between variants. Verify:

  • audio and mouth movement stay synchronized after every cut;
  • no word starts or ends abruptly;
  • captions match the speech and stay inside safe margins;
  • the crop keeps the speaker visible;
  • the hook is legible and repaid by the video;
  • loudness is consistent and peaks do not distort;
  • every proof insert and numerical claim has a supplied source;
  • the export is 1080x1920 H.264/AAC unless the brief requires another format.

Return the plan, export paths, QA evidence, and any required pickups. Never publish, upload, delete originals, or overwrite an approved master without current explicit approval.

Completion states

  • DONE: both render and QA pass, and the review artifacts exist.
  • DONE_WITH_CONCERNS: the draft is usable but a named creative or source concern remains.
  • NEEDS_CONTEXT: a take, transcript, brief, or approved asset is missing.
  • BLOCKED: FFmpeg, source access, or format validation prevents a safe render.
1---
2name: net-new-video-editor
3description: Turn newly recorded talking-head footage into review-ready vertical video drafts with an explicit edit plan, deterministic FFmpeg rendering, captions, hook cards, audio normalization, and visual QA. Use for original Instagram Reels, TikTok videos, YouTube Shorts, LinkedIn videos, founder-led recordings, multiple takes of a new script or idea card, or requests to automate the first video-editing pass. Do not use to mine clips from long-form source videos.
4---
5 
6# Net-New Video Editor
7 
8Create a reversible first edit from fresh recordings. Keep creative decisions in JSON and pixel operations in the bundled renderer.
9 
10## Preamble
11 
12Run from the repository root when the optional shared telemetry helpers are present:
13 
14```bash
15python3 telemetry/version_check.py 2>/dev/null || true
16python3 telemetry/telemetry_init.py 2>/dev/null || true
17```
18 
19Remote telemetry is opt-in and never includes content, file paths, repository names, or credentials.
20 
21## Establish the package
22 
23Read `references/project-contract.md`. Locate the exact source recordings, transcript, idea card or brief, proof assets, and screen recordings. Never substitute another recording, brand, account, or asset library.
24 
25Initialize a new project only when the destination is clear:
26 
27```bash
28python3 scripts/net_new_video_editor.py init --project <project-dir>
29```
30 
31Copy or point only user-authorized inputs into the generated package. Preserve originals.
32 
33## Inspect before editing
34 
35Run:
36 
37```bash
38python3 scripts/net_new_video_editor.py inspect --project <project-dir>
39```
40 
41Review `intake-report.json`. Stop when the package has no playable take, the requested target does not match the supplied footage, or required external assets are missing.
42 
43## Build the edit plan
44 
45Use the transcript and brief to create `edit-plan-clean.json`. Treat the spoken hook and claim boundaries as ground truth.
46 
47- Select one source take explicitly.
48- Keep segment order intentional and timestamps within the source duration.
49- Remove clear false starts, long dead space, and isolated filler only when the cut remains natural.
50- Preserve breaths that help meaning.
51- Put the hook on screen for at most five seconds.
52- Use captions in short readable phrases.
53- Add proof or screen inserts only when supplied and relevant. The bundled renderer handles the base assembly; add complex overlays in a separate, documented pass.
54- Normalize speech without clipping.
55 
56For a second version, copy the plan to `edit-plan-aggressive.json` and make only named retention edits. Do not silently change factual claims.
57 
58Validate each plan:
59 
60```bash
61python3 scripts/net_new_video_editor.py validate --project <project-dir> --plan <plan.json>
62```
63 
64## Render deterministically
65 
66Run the renderer from this skill directory:
67 
68```bash
69python3 scripts/net_new_video_editor.py render \
70 --project <project-dir> \
71 --plan <plan.json>
72```
73 
74The renderer trims paired audio and video, concatenates the selected segments, creates a center-safe 9:16 frame, rasterizes captions and the hook card with Pillow, composites them with FFmpeg, normalizes audio, writes H.264/AAC MP4, and creates three QA frames plus `qa-report.json`.
75 
76Use `--dry-run` to inspect the FFmpeg command. Use `--force` only when replacing the exact derived export is intended.
77 
78## Review the output
79 
80Inspect the exported MP4, all three QA frames, `qa-report.json`, and the plan diff between variants. Verify:
81 
82- audio and mouth movement stay synchronized after every cut;
83- no word starts or ends abruptly;
84- captions match the speech and stay inside safe margins;
85- the crop keeps the speaker visible;
86- the hook is legible and repaid by the video;
87- loudness is consistent and peaks do not distort;
88- every proof insert and numerical claim has a supplied source;
89- the export is 1080x1920 H.264/AAC unless the brief requires another format.
90 
91Return the plan, export paths, QA evidence, and any required pickups. Never publish, upload, delete originals, or overwrite an approved master without current explicit approval.
92 
93## Completion states
94 
95- `DONE`: both render and QA pass, and the review artifacts exist.
96- `DONE_WITH_CONCERNS`: the draft is usable but a named creative or source concern remains.
97- `NEEDS_CONTEXT`: a take, transcript, brief, or approved asset is missing.
98- `BLOCKED`: FFmpeg, source access, or format validation prevents a safe render.
99 

Discussion

Alternatives