Cookbook

29.97 drop-frame edit from timecode

Convert timecode to seconds for ffmpeg trim points.

Skills: `timecode` → `video-transformation` → `inspect`

Steps

Stay in the workspace. Replace each <skill_directory> with the absolute path of that skill (where its SKILL.md lives). Do not cd into the skill folder.

Step 1 — Detect format if unknown
# 1. Detect format if unknown
uv run <timecode_skill_directory>/scripts/detect_format.py --timecode 01:00:00;00 --fps 29.97

# 2. Convert in/out points to seconds (wall-clock for ffmpeg -ss)
uv run <timecode_skill_directory>/scripts/to_seconds.py --timecode 00:10:00;00 --fps 29.97
uv run <timecode_skill_directory>/scripts/to_seconds.py --timecode 00:12:30;00 --fps 29.97

# 3. Trim using seconds_realtime from JSON
uv run <video-transformation_skill_directory>/scripts/trim.py --input clip.mov --start <in_seconds> --end <out_seconds>
Step 2 — timecode
uv run <timecode_skill_directory>/scripts/convert.py \
  --timecode 00:10:00:00 \
  --from-fps 24 \
  --to-fps 29.97
Step 3 — timecode
uv run <timecode_skill_directory>/scripts/convert_df.py \
  --timecode 01:00:00;00 \
  --fps 29.97 \
  --to non-drop-frame
Step 4 — timecode
uv run <timecode_skill_directory>/scripts/extract.py --input master.mov
uv run <timecode_skill_directory>/scripts/calculate.py --timecode 00:58:40;00 --op add --offset-seconds 80.013 --fps 30000/1001
Step 5 — Confirm trim duration ≈ (end − start) from to_seconds
# 4. Confirm trim duration ≈ (end − start) from to_seconds
uv run <inspect_skill_directory>/scripts/describe.py --input <trimmed_output>

Agent notes

  • Semicolon (`;`) in frame field = drop-frame display.
  • Prefer `seconds_realtime` for ffmpeg on NTSC DF material.
  • See `skills/timecode/references/DF_NDF.md` for background.
esc

Try trim, captions, timecode, or broadcast