hahadu4520/vlog-cut/narration-cut

Claude Code and agent skill by hahadu4520/vlog-cut

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Use when narration audio (timing.json + narration.wav) and an indexed asset pool (assets_index.json) exist, and the user wants a rough cut. Three sub-tools — plan (draft a timeline), validate (check it before render), render (cut + concat + mux into mp4). Triggers on "对齐镜头 / 排时间线 / 出粗剪 / cut to narration / build timeline". Plan is a deterministic baseline; Claude usually rewrites timeline.json by hand before render.

Install

npx vskill@latest install hahadu4520/vlog-cut/narration-cut

SKILL.md

narration-cut

Three CLIs, used in sequence. Each is also fine to call alone.

stepCLIwhat it does
planvlog-cut-plantiming + assets → draft timeline.json (algorithmic)
validatevlog-cut-validatestructural + temporal sanity check on timeline.json
rendervlog-cut-rendertimeline + narration → rough_cut.mp4

When to use

Trigger on:

  • "对齐镜头 / 排时间线 / 出粗剪"
  • "cut to narration / build timeline / render the rough cut"
  • the user has both timing.json and assets_index.json and wants a video

Skip when:

  • either timing or assets index is missing — go back to tts-from-script or video-asset-index
  • the user wants subtitles only — that's burn-subtitles-cn (v0.2)

Step 1 — plan (draft a timeline)

bash
vlog-cut-plan \
--timing <out>/timing.json \
--assets <out>/assets_index.json \
--out <out>/timeline.json \
--size 1920x1080 \
--fps 30

The algorithm scores clips by chapters match, tag overlap with the section, highlight bonus, and a "already used" penalty for variety. It's a starting point, not a final answer.

The expected workflow is: Claude reads timeline.json, opens the relevant sheets/<stem>.jpg for any shot it's unsure about, then rewrites timeline.json by hand to swap in better picks. This is a checkpoint — don't render until the user has signed off.

Step 2 — validate (before you render)

bash
vlog-cut-validate \
--timeline <out>/timeline.json \
--src <clips_folder> \
--timing <out>/timing.json # optional but recommended

Catches:

  • missing source clips
  • in + dur exceeding source duration
  • shots not covering line audio (video would end first)
  • duplicate / mismatched line ids

Exit code: 0 = clean, 1 = warnings only, 2 = errors. Don't render on exit 2.

Step 3 — render (make the mp4)

bash
vlog-cut-render \
--timeline <out>/timeline.json \
--timing <out>/timing.json \
--src <clips_folder> \
--narration <out>/narration.wav \
--out <out> \
--name rough_cut.mp4

Optional:

  • --size 1920x1080 — override timeline.size
  • --fps 30 — override timeline.fps
  • --name xxx.mp4 — output filename

Outputs:

<out>/
├── segs/ ← per-shot mp4 (cached on rerun)
├── video_silent.mp4
└── rough_cut.mp4

The render absorbs gap silences into the last shot of each line: if the source has room, dur is extended; otherwise the last frame is held (tpad). Result: the video stays populated through every silence.

Idempotency

segs/<idx>_<lid>_<stem>.mp4 is reused if it exists. To force a re-render of a single shot, delete that file. To force the whole video, delete segs/.

Checkpoint (when called from vlog-cut-pipeline)

Two checkpoints land in this skill:

  1. after plan — timeline_drafted → ask the user to approve the picks (or let Claude refine first, then approve)
  2. after render — rough_cut_rendered → ask the user to watch rough_cut.mp4

Don't proceed until both are approved.

Dependencies

  • ffmpeg / ffprobe on PATH
  • no Python deps beyond stdlib

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/hahadu4520/vlog-cut/narration-cut/badge)](https://verified-skill.com/skills/hahadu4520/vlog-cut/narration-cut)

Something wrong with this skill or its page? Tell us.