SuperAPI AI Directory

short-drama-edit

Design & creation

View repository

Updated 10-14 13:37

About this skill

Short-drama editing and finished film

Assemble the shot-by-shot material in 剧集/<EP>/制作成果/ into one finished film, and write the selections into 剧集/<EP>/剪辑单.md. Use a level-2 heading for each segment, ## CUT-..., each bound to one source ID and one real media file: for video segments it is MOTION-..., for keyframe segments of a static comic drama it is SHOT-... or IMG-...。

Choose usable clips from the actual material according to the assets, and verify the narrative against the script and storyboard. When the material and the intent do not match, record the selections and gaps.

Quick Start

用 $short-drama-edit 把 EP001 已生产的镜头剪成成片

Entry

The entry condition is thatthe material already exists and is readable:剧集/<EP>/制作成果/ contains the video files to be used this time; for a static comic drama, it is the accepted keyframes and voiceover files. Prompts being written, the job being confirmed, and the adapter returning success do not mean the material is usable; this stage recognizes only the file bytes that can be opened right now.

When the material is incomplete, you can first cut the existing continuous segments; when the user asks for a complete finished film, mark this version as a fragment and list the gaps. In "unused shots", explain missing files, unusable quality, or narrative selections.

剧集/<EP>/分镜.md and 视频提示词.md are the source of shot order and responsibilities. Editing mayselectthem, but must notrewrite them: deleting a shot, shortening a shot, or reordering all belong to this stage; changing dialogue, changing shot responsibilities, or changing start/end states requires going back upstream to submit a revision request.

Built-in rendering directly concatenates the encoded segments; the input material's aspect ratio and frame rate must match.check is checked when the media is detectable; for differing specs, first unify them with external tools according to the delivery requirements, preserving the composition and recording any cropping or letterboxing, then update the paths and timings in the edit list.

Rendering and measurement require ffmpeg / ffprobe to be on PATH. When it is not, edit_tool.py fails directly and explains, without approximating by other means, and without writing "not measured" as "passed".

Workflow

  1. Watch the complete material segment by segment, mark the usable bands first, then talk about editing. Watch each file from beginning to end once, and write down the time ranges it can actually use, as well as what happens outside those ranges (held start, drifting ending, washing out, motion rebound, extra repeated performance). The output of this step is facts, not decisions. For the method, see Usable bands of generated material。
  2. For shots with dialogue, first locate the vocal range. Keep the complete phonemes and the pauses needed. Built-in tools cut picture and sound in sync; when the picture needs to change over continuous dialogue, use external editing tools to handle them separately.
  3. Choose narrative in/out points within the usable ranges. Choose the in point according to the needs of the action, reaction, or pause, and take the out point after the information is complete and before the defect begins. Write down the reason for the in point and the reason for the out point segment by segment. For the method, see In/out points and shot order。
  4. Arrange the shot order and check adjacent relationships. Check whether action, space, reveals, and sound are coherent; delete repeated information only when it adds nothing new.
  5. Compare the pictures of adjacent segments. render automatically joins shots within the same scene; compare comparable areas by same scene and same lighting state, and write 画面for segments where automatic shot joining is insufficient or should not be moved. For the method, see Shot joining and color consistency。
  6. Handle audio seams and loudness. Listen back after assembly; when mixing is needed, run it through external tools and keep a record. For the method, see Audio, Subtitles, and Music。
  7. Write subtitles, on-screen text, and sound effects. Every character of the subtitles is taken from the original dialogue of 剧本.md , not from the transcription result; copy the punctuation from the script exactly, and do not change any character. The transcription is used only to locate timing. Leave blank space in the frame for the later [画面文字] written as 画面文字 lines, and write the cue tones needed when the on-screen text appears as 音效 lines.
  8. Write out 剪辑单.md, then render. The document comes first and the finished video comes after: the document is the copy that can be reviewed, revised, and reproduced, and the finished video is its product.
  9. Accept the finished video against measurable items, then deliver it. See Delivery and Acceptance。

Edit List Requirements

  • At the beginning of the body, write the delivery specifications:成片目标时长、画幅与帧率、交付响度、字幕. The target duration is an intention; write the difference between the actual duration and the target in the report. When the user explicitly requires a fixed duration, the requirement should be met or the missing material should be reported.

  • One per segment ## CUT-<EP>-<序号> · <中文名称>, write line by line within the block:

    • - 来源:<MOTION-...> · <项目相对路径>——MOTION-... must be an entry that actually exists in 视频提示词.md , and the path must be a currently readable file. For a still-frame segment, write - 来源:<SHOT-...> · <图片路径>(分镜.md shot) or <IMG-...> · <图片路径>(图片提示词.md entry), the image is png / jpg / jpeg / webp; write the in-point as 0.00, the out-point equals the duration, at least 0.50 seconds. Still frames fill the frame according to the delivery specifications' aspect ratio and frame rate; when there are still frames, the delivery specifications must state 画幅与帧率。

    • - 入点:<秒> / - 出点:<秒> / - 时长:<秒>—the three must be self-consistent,出点 - 入点 == 时长. Use seconds throughout, keep two decimal places, do not write timecode, do not write frame numbers.

    • - 取舍:入点=<理由>;出点=<理由>—write what happens on screen as the reason, not "the rhythm requires it." The reason should correspond to the actual material and the narrative needs of this shot.

    • - 声音:<本段声音怎么处理>—record whether to keep the original sound or use external processing. This line does not drive the built-in render's mixing.

    • - 画面:<接镜校正>、- 画面:无 or - 画面:不校—the correction is any combination of the three items "brightness <number>", "saturation <number>", "color temperature <number>", separated by ; ; once written, it replaces this segment's automatic shot matching;无 means no separate correction is written;不校 means even automatic shot matching is not done. For details, see Shot Matching and Color Consistency。

    • - 字幕:<逐字台词原文> or - 字幕:无. When this segment has multiple lines of dialogue, switch to the numbered format, with each line carrying its own time:- 字幕 1:0.20-1.50 请进、- 字幕 2:2.30-4.30 门没有锁. Numbering is continuous from 1, the time is relative to this CUT's in-point, and times must not overlap; the end may exceed this segment's duration (for crossing the cut point, see Still-Frame Segment). At the end of a line, you may add (重点:<词>|<词>), these words must appear in this line and are highlighted in yellow when burned in. The character color is determined by the source of this line in 剧本.md : dialogue is white, [VO] 系统: is cyan, other [VO] is light cyan, and it is not written separately in the edit list.

    • - 画面文字 N:<起>-<止> <样式> <项>|<项>…—the video model cannot write the text correctly; leave blank space in the frame for system panels, countdowns, and on-screen follower counts, and let render overlay them. Each item must be able to appear in 剧本.md 's [画面文字] found in the line. A single item may be unnumbered; the numbering and time rules are the same as for subtitles. The three kinds of panels share the top of the frame, with the corner mark in the upper right; the same position must not overlap.

      Style Position of each item
      卡片 One line per item: the first word is the name, the last word is the value, and the words in between are the unit (主号 粉丝 2|小号 1)
      系统面板 The first item is the status line, typed out character by character; the rest are reward lines
      任务面板 Title, objective (typed out character by character); after that write as <数> / <数> The first item is the progress, and the rest are reward labels
      角标 Join the items into one line of labels

      A reward may have rarity written at the end of the item (传说) (史诗) (稀有); if not written, it is treated as rare; rarity is not text and does not participate in checking. 任务面板 and 角标 may have at the end (倒计时:<秒>), displayed as 4天 23:59:58 and ticking every second; (倒计时:接续) then continues from the previous countdown in the final cut. When two adjacent segments write the same corner mark and are contiguous end to end, in the final cut they are the same corner mark, and it does not re-enter when the shot changes. The panel's own 【系统提示】 【新任务】 进度 belongs to the style and is not written into the edit list.

    • - 音效 N:<起>-<止> <项目相对路径>(起点:<秒>;增益:<dB>)——from the start of the sound file (default beginning) take 止 - 起 seconds and mix it into the original sound at that moment in this segment; both items in the parentheses may be omitted, in any order, and the gain range is -40 to +6. A single item may be unnumbered.

    • - 运镜:<固定|推近 n%|推近 r%/秒|…>——written only on still-frame segments; the directions also include zoom out, move left, move right, move up, and move down; n is the magnitude from 1–30, and r is the speed from 0.1–10 (may include decimals); if not written, it is fixed. For how the two notations move and connect, see Still-frame segment。

    • - 配音 N:<起> <项目相对路径>(起点:<秒>;增益:<dB>)——starting at 起 seconds in this segment, place the sound file from the beginning to the end; the parenthesis rules are the same as for sound effects.起 may be negative, and the sound may cross the cut point; for the rules on crossing cut points, checking, and post-dubbing, see Still-frame segment。

    • - 环境声:[<起>] <项目相对路径>(起点:<秒>;增益:<dB>) or - 环境声:[<起>] 无——from 起 seconds in this segment (default 0, may be negative), loop one layer of ambient sound until the next 环境声;无 stops it. See Still-frame segment。

  • For shots in the material that were not adopted, write a line at the beginning of the body - 未采用镜头:<MOTION-...>(理由:……), connect multiple items with ; . Reasons fall into two categories:File missing(not yet produced / production failed) andQuality unusable (the generated result cannot be used); narrative trade-offs may also be stated. Before adding material, first determine whether it needs to be regenerated or the upstream revised. When there are still-frame segments, you may also write SHOT-...; for which shots need fall-through, see Still-frame segment。

  • The same MOTION-... may be split into multiple CUT-...(the two places of the same piece of material are used separately), or the whole segment may be unused. A CUT-...。

  • When one piece of material is used twice, the intervals of the two CUT-... must not overlap: the same batch of frames appearing twice in the final cut is a duplicate shot, not reuse. If repetition is truly needed (flashback, emphasis), state clearly that it is intentional repetition and explain why the second occurrence still holds.

Boundary

  • Do not generate new material. If reshoots, regeneration, or reference image changes are needed, return to $short-drama-produce; the prompt needs changing, return $short-drama-video-prompts or $short-drama-image-prompts。
  • Do not change the upstream semantics. The edit list can make a certain line not appear in the final cut (an entire shot not used), but it cannot change what that line is. If you find a problem at the script level, call it out and report it, hand it back to $short-drama-write。
  • Follow the script's sound design. Keep the existing dialogue, VO, and OS; do not add narration on your own; when new narration is needed, go back to the writing stage.
  • Do not write technical success as a quality conclusion. Rendering completed, duration matches, and the file exists are not "this film is watchable." The judgment of final-cut quality is left to $short-drama-review, or to the creator themselves.
  • Complete according to the authorized goal. Continue fixing issues that affect delivery; new creative directions or additional material requests are left to the creator to decide.

Command

The command is provided by edit_tool.py :

python3 <本技能目录>/scripts/edit_tool.py check <剧集/EP001> --project-root <project>
python3 <本技能目录>/scripts/edit_tool.py render <剧集/EP001> --project-root <project> [--no-subtitles] [--subtitles ffmpeg|remotion] [--remotion-concurrency N]
python3 <本技能目录>/scripts/edit_tool.py verify <剧集/EP001> --project-root <project>

check Only verify, do not render: whether the material is newer than the edit list (after re-output, subtitles, on-screen text, and sound-effect timings must be re-measured), whether the ranges are self-consistent, source ID resolution and the fate of each shot, whether files exist, whether ranges do not exceed the material duration, whether ranges from the same source do not overlap, whether the subtitle text can be found in 剧本.md , whether the on-screen text can be found in [画面文字] rows, whether there is indeed a countdown before "continuation," whether the sound-effect files exist and fall within this segment, whether subtitles and voiceover do not exceed the ending in the whole film and do not overlap each other. Among these, "ranges do not exceed the material duration" requires ffprobe, and the two voiceover items require ffmpeg; whichever is missing, report those items as "not tested" and explain why, do not silently skip. render Cut segments according to the edit list, still frames out according to camera movement, automatically join shots in the same scene, concatenate, mix in sound effects and voiceover, burn in subtitles and on-screen text, normalize loudness, output 剧集/<EP>/制作成果/成片/。 verify only measures the already-rendered final cut and reports the numbers, and additionally lists the start and end seconds of on-screen text, sound effects, and voiceover in the final cut, brightness changes at cut points, and suspected bad frames, for frame extraction and re-listening; does not modify files, does not give a quality conclusion.

Subtitles are by default burned in by ffmpeg with libass.--subtitles remotion Switch to a route with adjustable typography, the cost is installing Node dependencies once, and the overlay mustgo through a headless browser frame by frameto render the entire final cut—slow and memory-hungry, concurrency is capped at 2 by default (--remotion-concurrency adjustable; measure this machine before raising it). On-screen text has only one route: Remotion. When the edit list contains on-screen text, render needs it regardless of which route the subtitles take; if it is not installed, report an error and give the install command; subtitles via ffmpeg are layered above the on-screen text. For the trade-offs see Sound, Subtitles, and Music, for installation see Remotion Overlay。

render Keep the cut intermediate files. It only cuts segments, does still-frame out and camera movement, hard concatenation, mixes in 音效 and 配音 rows, unifies subtitle style, on-screen text, join correction (both specified and automatic for the same scene) and whole-film loudness; it does not execute the mixing plan in 声音 rows, nor does it automatically scale or change frame rate according to delivery specs. When mixing, per-shot subtitle avoidance, transitions, or aspect-ratio conversion are needed, complete them with external tools and record it, and accept the actual delivered file.

Knowledge as Needed

First read this SKILL, the current storyboard, the video prompt, and the material; when there are subtitles, read the original script. Open reference materials as needed:

Revision

Keep the unaffected CUT-... IDs. Changing one segment's in/out points does not touch other segments; when deleting a segment, explain which segment carries the information it was responsible for, or clearly state that this information no longer appears in the final cut. Update the edit sheet before re-rendering; do not let the final cut get ahead of the document.

Done

Each CUT-... is bound to real assets and a self-consistent interval, dialogue is fully audible in the final cut, subtitles match the script text word for word, there is no audible hard cut in the sound bed at edit points, the final cut's loudness lands on the delivery target, and all unused shots have their reasons stated with missing files distinguished from missing quality; then it is done. The difference between the target duration and the actual duration, as well as places still worth another edit, are written in the report at the end for the creator to judge.

Installation and maintenance

Only run when installing, upgrading, or troubleshooting python3 scripts/selftest.py。