style-edit
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseStyle edit
Style edit(风格化剪辑)
Paths: means the folder containing this SKILL.md, and the plugin folder two levels above it.
${CLAUDE_SKILL_DIR}${CLAUDE_PLUGIN_ROOT}Read first: the rules every video follows (where, asking, looking real, motion, story, privacy, cost).
${CLAUDE_PLUGIN_ROOT}/PRINCIPLES.mdEvery question goes in the question box: the AskUserQuestion tool (2-4 options, recommended first). Only in an agent without it, ask numbered questions in text. in an answer: Read each first.
Attached images: <paths>An approved cut and a creator's style in (a job runs that skill: start step 3).
The finished video out: captions, zooms, real captures and motion scenes timed to the words, in the
creator's look and the user's brand. The user approves the stills on the review page (step 5) and picks the render (step 6).
skill=Paths are relative to the library (PRINCIPLES.md). Run the scripts with on Mac
and Linux, on Windows. ,
; is the venv Python.
python3pyS="${CLAUDE_SKILL_DIR}/scripts"VPY="${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/run.py"python3 "$VPY"edits/<name>/cut.mp4 + cut.transcript.json + words.json (cut)
edits/<name>/style.json (start: the profile's creators blended)
or creator-teardowns/<handle>/style.json (one creator, from creator-teardown)
~/.ai-video-editor/profile.json (start: brand kit, names, assets, avoid, sound)
captions.json -> beats.json -> visuals.json -> images/ + images.json -> plan.json -> stills/sheet.png -> render.mp4References, read only when a step says: (each format in detail),
(plan.py, cutout, sound, music, checks), (templates,
transitions, marks), (targets, live preview, export),
(the review page), (the banned AI looks). is for people: never read it.
references/visuals.mdreferences/plan.mdreferences/motion.mdreferences/render.mdreferences/review.mdreferences/ai-tells.mdreferences/contracts.mdPaths: 表示包含此 SKILL.md 的文件夹, 表示上两级的 plugin 文件夹。
${CLAUDE_SKILL_DIR}${CLAUDE_PLUGIN_ROOT}先读取 :每个视频都应遵循的规则(放置位置、提问方式、真实感、motion、story、privacy、cost)。
${CLAUDE_PLUGIN_ROOT}/PRINCIPLES.md所有问题都应放进问题框:使用 AskUserQuestion 工具(提供 2-4 个选项,并将推荐项放在首位)。仅当 Agent 没有该工具时,才在文本中提出编号问题。回答中的 :先逐一读取。
Attached images: <paths>输入是已批准的 cut 和一位创作者的风格( job 会运行指定的 skill:start 的第 3 步)。
输出是最终视频:字幕、缩放、真实抓图,以及与话语节奏同步的 motion 场景,
整体呈现创作者的视觉风格和用户自己的品牌。用户会在 review page 上审批 stills(第 5 步),
并选择渲染目标(第 6 步)。
skill=以下路径相对于 library(PRINCIPLES.md)。在 Mac 和 Linux 上使用 运行脚本,
在 Windows 上使用 。,
; 是 venv Python。
python3pyS="${CLAUDE_SKILL_DIR}/scripts"VPY="${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/run.py"python3 "$VPY"edits/<name>/cut.mp4 + cut.transcript.json + words.json (cut)
edits/<name>/style.json (start: the profile's creators blended)
or creator-teardowns/<handle>/style.json (one creator, from creator-teardown)
~/.ai-video-editor/profile.json (start: brand kit, names, assets, avoid, sound)
captions.json -> beats.json -> visuals.json -> images/ + images.json -> plan.json -> stills/sheet.png -> render.mp4仅在对应步骤要求时读取参考资料:(详细说明每种格式)、
(plan.py、cutout、sound、music、checks)、(templates、
transitions、marks)、(targets、live preview、export)、
(review page)、(禁止使用的 AI 风格)。 是给人员看的:绝不要读取。
references/visuals.mdreferences/plan.mdreferences/motion.mdreferences/render.mdreferences/review.mdreferences/ai-tells.mdreferences/contracts.md0. Read the taste and profile
0. 读取 taste 和 profile
bash
python3 "${CLAUDE_PLUGIN_ROOT}/skills/taste/scripts/taste.py" show --edit edits/<name>
python3 "${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/profile.py" showFollow every taste rule; the scripts read the settings themselves. When the user reacts to a result
("too slow", "captions too small"), save it with the taste skill before redoing the edit.
bash
python3 "${CLAUDE_PLUGIN_ROOT}/skills/taste/scripts/taste.py" show --edit edits/<name>
python3 "${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/profile.py" show遵循每一条 taste 规则;脚本会自行读取设置。当用户对结果作出反馈
(“太慢了”“字幕太小”)时,重做剪辑前先用 taste skill 保存反馈。
1. Check the inputs
1. 检查输入
- No cut.mp4? Run the cut skill first, never style a raw take. ? The
prep-decisions.jsonagent did steps 1-3 and the sheet:visual-prep"Prepared while the cut was reviewed".references/plan.md - No style.json? . With no creators in the profile (or no profile) it writes the default style: a smooth zoom move at least every 5 s, 3-word captions (
python3 "${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/profile.py" style edits/<name>"No creator"). If it stops withreferences/plan.md, run creator-teardown quick mode for the profile's creators, then again. plan.py also plans with the default style when style.json is missing, and says so.no creator style.json found - The user's images: everything in the profile's that fits a line, plus anything they hand over, goes in
assets_dirandedits/<name>/images/:images.json(optional[{"src": "images/dashboard.png", "word": "dashboard", "nth": 1}],layout,hold_s; transparent PNG and Lottieentrancework)..json - What the user added on the page (, review.py
assets.json'swaitline): first, before any search, each on itsassets:words, assaystep 2 says. One not in images.json or visuals.json yet is new.agents/visual-prep.md
- 没有 cut.mp4? 先运行 cut skill,绝不对 raw take 进行风格化处理。存在 ? 说明 visual-prep Agent 已完成第 1-3 步和 sheet:参见
prep-decisions.json中的“Prepared while the cut was reviewed”。references/plan.md - 没有 style.json? 运行 。 如果 profile 中没有 creator(或根本没有 profile),它会写入默认风格:每至少 5 秒一次平滑 zoom, 以及 3 个词一条的字幕(参见
python3 "${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/profile.py" style edits/<name>中的“No creator”)。如果命令因references/plan.md而停止,先对 profile 中的 creator 运行 creator-teardown quick mode,然后再次运行。 缺少 style.json 时,plan.py 也会使用默认风格进行规划,并明确提示这一点。no creator style.json found - 用户的图片: profile 的 中所有与某句台词相符的素材,以及用户主动提供的素材, 都应放入
assets_dir并记录在edits/<name>/images/中:images.json(可选[{"src": "images/dashboard.png", "word": "dashboard", "nth": 1}]、layout、hold_s;透明 PNG 和 Lottieentrance均可使用)。.json - 用户在页面上添加的内容(,review.py
assets.json的wait行):先于任何搜索处理, 根据各自的assets:对应词进行匹配,遵循say第 2 步。若某项尚未出现在 images.json 或 visuals.json 中,则将它视为新增内容。agents/visual-prep.md
2. Captions text
2. 字幕文本
bash
python3 "${CLAUDE_PLUGIN_ROOT}/skills/cut/scripts/retakes.py" captions edits/<name>Writes and : the words heard in the finished cut (the verify step's
), timed to it, with every word that pass heard differently ("Jeff" for "Jev")
spelled as the approved cut text has it, names spelled as the profile's , and every earlier
applied. It prints each word it changed. Never read either JSON: proofread
, the file captions are built from. A word still wrong is one command, which fixes
captions.json in place, timings untouched, and is kept in for every later captions run:
captions.jsoncaptions.txtcut.transcript.jsonnamesretakes.py fixcaptions.txtfixes.jsonbash
python3 "${CLAUDE_PLUGIN_ROOT}/skills/cut/scripts/retakes.py" fix edits/<name> cloud=Claude jiv=JevUse captions.json from here on.
bash
python3 "${CLAUDE_PLUGIN_ROOT}/skills/cut/scripts/retakes.py" captions edits/<name>该命令写入 和 :内容来自最终 cut 中听到的词(verify 步骤生成的
),并与其时间轴对齐。如果某次 pass 听到的词不同(例如 approved cut 中是“Jeff”,
听到的是“Jev”),则按照 approved cut 中的拼写处理;姓名按照 profile 的 拼写;
并应用此前执行过的所有 。命令会打印每个修改过的词。不要读取其中任何一个 JSON:
应校对 ,字幕就是根据该文件构建的。如果仍有错误单词,只需一条命令即可修正,
它会原地更新 captions.json,保持时间轴不变,并将修正记录保存在 fixes.json 中,供之后每次字幕运行使用:
captions.jsoncaptions.txtcut.transcript.jsonnamesretakes.py fixcaptions.txtbash
python3 "${CLAUDE_PLUGIN_ROOT}/skills/cut/scripts/retakes.py" fix edits/<name> cloud=Claude jiv=Jev从这一步开始使用 captions.json。
3. Visuals
3. Visual
Read and first: each pick's shape and plan.py's
rules, then the default look and motion (built animations over captures, big in the band, one capture a page).
references/shapes.mdreferences/motion-design.md- Propose: splits captions.json into sentences, marks the named things (profile, logo-pack) into beats.json. Pick one route per sentence yourself (
python3 "$S/route.py" beats edits/<name>,none,capture:shot|browser|sticker,post,logo,logo_cluster,chat,terminal,toasts,side_by_side).video_card - Real things first: write (
visuals.json): a named product or doc becomes areferences/shapes.md(withcapturefound by text), a quoted post amarks, an app anpost, a video aapp, a repo ayoutube, a brand in passing agithub, an expert's words a clip (logo"Sourced proof").references/visuals.md - Fill the overlays: for the overlay picks, write only the props (). Hand it to the
references/shapes.mdagent (haiku) with the full path oftemplate-fillerwhen available, else write them. Only words and numbers the speaker said. There are no type cards.references/shapes.md - Fetch: fetches captures, logos, posts into
node "$S/capture.mjs" edits/<name>, marks measured.images/ - Motion: moving-template beats become bespoke clips (motion skill); a failed clip keeps its card.
Pacing: a copied creator's rate wins. route.py prints her cards a minute, kinds and place in the frame,
and marks that many sentences (named ones first). Give each a card of her kind with a at her
place, clear of the head: the user's own photo, else a capture of the real thing the line is about (page,
profile, post), else their own clip as a . Never a made-up or stock picture: a with
nothing real stays empty. Never ask what to show: pick the real capture (their own product's too). No creator: a card only where a line names something real. Never two at once; no
stretch without a card over (plan.py adds zooms there, "Pacing").
Vertical captures need a to read on a phone. Card edit: .
wantboxvideo_cardwantcard_gap_sreferences/plan.mdfindshapes.md先读取 和 :了解每种选择的 shape 和 plan.py 的规则,
再了解默认外观与 motion(叠在抓图上的 built animations、在 band 中放大、一页只放一张抓图)。
references/shapes.mdreferences/motion-design.md- 提出方案: 将 captions.json 拆分为句子, 并把被点名的对象(profile、logo-pack)标记到 beats.json 中。自行为每个句子选择一个 route (
python3 "$S/route.py" beats edits/<name>、none、capture:shot|browser|sticker、post、logo、logo_cluster、chat、terminal、toasts、side_by_side)。video_card - 优先使用真实对象: 编写 visuals.json(参见 ):被点名的产品或文档使用
references/shapes.md(通过文本查找capture),引用的帖子使用marks,App 使用post,视频使用app, 仓库使用youtube,顺带提及的品牌使用github,专家的原话使用logo(参见clip中的“Sourced proof”)。references/visuals.md - 填充 overlay: 对于 overlay 类选择,只填写 props(参见 )。 如果可以访问完整路径,请将其交给
references/shapes.mdAgent(haiku);否则自行编写。 只使用说话者实际说过的词和数字。不使用文字卡。template-filler - 抓取: 将抓图、logo 和帖子获取到
node "$S/capture.mjs" edits/<name>,并记录实测标记。images/ - Motion: 使用 motion skill 将 moving-template beat 转换为定制 clip;如果 clip 生成失败,则保留对应的 card。
节奏:复刻 creator 时,以其节奏为优先。route.py 会输出每分钟的 card 数量、种类及其在 frame 中的位置,
并将相应数量的句子标记为 (优先处理被点名的对象)。为每条 句子配上一张相同种类的 card,
使用 将其放在对应位置,并避开头部:优先使用用户自己的照片,其次使用该句所涉及真实对象的抓图
(page、profile、post),最后使用用户自己的 clip 作为 。绝不使用虚构图片或 stock 图片:
如果某个 找不到真实素材,就保持为空。绝不要询问应该展示什么:直接选择真实抓图
(也可以是用户自己的产品)。没有 creator 风格时,仅当某句台词提到真实对象才添加 card。
同一时间绝不能出现两张 card;任何超过 的片段都不能完全没有 card
(plan.py 会在这些位置添加 zoom,参见 中的“Pacing”)。
竖向抓图需要使用 定位,才能在手机上看清。修改 card:参见 。
wantwantboxvideo_cardwantcard_gap_sreferences/plan.mdfindshapes.md4. Plan
4. Plan
Find the speaker's head first, so no box covers the face, then plan with step 1's style.json:
bash
python3 "$VPY" "$S/face.py" edits/<name>
python3 "$S/plan.py" edits/<name>/style.json edits/<name>/captions.json [--aspect 9:16|16:9] [--layout overlay|split|letterbox]Writes . Read every warning. It ends with the style check ():
each line is a way the plan differs from the creator. Fix each (style.json, visuals.json,
images.json) and plan again before the stills; what the user changed is already the target.
edits/<name>/plan.jsonstyle_check.pystyle:- Music follows the style unless the user set it ("Music"; plan.py lays the creator's bed itself), then plan.py again. Sound cues need nothing: plan.py adds them.
references/plan.md - Behind the speaker: if the profile says , run
"behind": trueafter the last plan.py run and again after any later one (it cuts only new frames); say itsmatte.pyfirst (--estimate).references/plan.md - Check the plan:
bash
python3 "$S/check.py" plan edits/<name> [--plan plan.json] [--style edits/<name>/style.json]Fix every FAIL and plan again. What it FAILs: .
references/plan.md先找到说话者的头部,确保没有 box 遮挡面部,然后使用第 1 步中的 style.json 进行规划:
bash
python3 "$VPY" "$S/face.py" edits/<name>
python3 "$S/plan.py" edits/<name>/style.json edits/<name>/captions.json [--aspect 9:16|16:9] [--layout overlay|split|letterbox]命令会写入 。读取每一条 warning。命令最后会执行 style check
():每一条 行都表示 plan 与 creator 风格存在的一处差异。
逐项修正(修改 style.json、visuals.json、images.json),并在生成 stills 前再次 plan;
用户已经更改的内容就是最终目标。
edits/<name>/plan.jsonstyle_check.pystyle:- Music 默认遵循风格,除非用户另有设置(参见 中的“Music”; plan.py 会自行铺入 creator 的音乐底轨),之后再次运行 plan.py。Sound cue 无需额外处理:plan.py 会添加。
references/plan.md - 位于说话者身后: 如果 profile 中为 ,在最后一次 plan.py 运行后执行 matte.py, 后续每次再次运行 plan.py 后也要重新执行(它只处理新增帧);先说明
"behind": true的结果 (参见--estimate)。references/plan.md - 检查 plan:
bash
python3 "$S/check.py" plan edits/<name> [--plan plan.json] [--style edits/<name>/style.json]修复每一个 FAIL,然后再次 plan。所有 FAIL 的含义参见 。
references/plan.md5. Stills, checked by you, then straight to the render
5. Stills,由你检查,然后直接进入渲染
The user approved the cut: that approve means make the edit. Never put the stills on the review page and never wait
for a second approve (Max, 2026-10-15: users did not like the frames step).
bash
python3 "$S/edit.py" stills edits/<name>The first run installs the renderer (a few minutes, once; say so first). Writes one still per beat,
(labelled with beat, time and card kind). Review the sheet yourself; open a single still only to
zoom in. Fix before rendering: a box on the face, a zoom cutting the head, the wrong part of a capture, text too small
for a phone, a default AI look. can check it. Then go on to step 6 and render; the user's notes come on
the rendered edit. Moving cards by hand only when the user asks: "The live preview".
stills/sheet.pngstills-criticreferences/render.md用户已经批准 cut:该批准意味着直接制作剪辑。绝不要将 stills 放到 review page,
也绝不要等待第二次批准(Max,2026-10-15:用户不喜欢这个逐帧确认步骤)。
bash
python3 "$S/edit.py" stills edits/<name>首次运行会安装 renderer(需要几分钟,只安装一次;先告知用户)。命令会为每个 beat 写入一张 still,
并生成 (标注 beat、时间和 card 种类)。自行审阅 sheet;只有在需要放大检查时
才打开单张 still。渲染前修复以下问题:box 遮挡面部、zoom 裁掉头部、抓取了错误区域、
文字在手机上太小、呈现出默认 AI 风格。 可以协助检查。随后进入第 6 步并渲染;
用户的修改意见会在渲染后的剪辑上处理。只有用户明确要求时,才手动移动 card
(参见 中的“The live preview”)。
stills/sheet.pngstills-criticreferences/render.md6. Where to render
6. 渲染位置
bash
python3 "$S/edit.py" estimate edits/<name>Prints , and two lines (GitHub Actions, Lambda) with this video's time and
cost, then : Modal once it is connected, the video is over a minute and Modal is quicker; the
laptop otherwise. in the profile, or : render there with no question, one line
with the time ("Rendering on your laptop, about 14 s. Say 'render on Modal' to change"). Not set and
: ask once, three options in this order with the printed numbers, Modal marked
(Recommended), then .
Laptop:Modal:Other:Recommended:renderRecommended: LaptopRecommended: Modalprofile.py set render='"laptop|modal|github|lambda"'- Laptop: its time, free.
- Modal: its time and cost ($30 free credit a month). Not connected: label it Connect Modal; on that
pick run in the background (the setup skill's Modal step), then render on Modal.
setup.py modal-connect - Other: GitHub Actions or AWS Lambda: both lines in the description. On this pick, ask a second question with the two. GitHub Actions: free, needs
Other:logged in, the footage goes into a private repo in their account; ask before creating the repo. Lambda: their own AWS account. Noghin the profile: ask once "Delete the uploaded footage from <GitHub|AWS> after rendering?" (Yes (Recommended) / No, keep it there), thencloud_cleanup.profile.py set cloud_cleanup=true|false
Modal picked but not connected: first (above). Lambda picked and
fails: the setup skill's Lambda section first.
setup.py modal-connectaws sts get-caller-identitybash
python3 "$S/edit.py" estimate edits/<name>命令会输出 、 和两行 (GitHub Actions、Lambda),其中包含本视频的
预计时间和成本,随后输出 。Modal 连接后,如果视频超过一分钟且 Modal 更快,
则推荐 Modal;否则推荐 laptop。如果 profile 中已设置 ,或者输出为 ,
直接在该位置渲染,无需提问,只需用一行告知时间,例如“正在你的 laptop 上渲染,预计约 14 秒。
如需更改,请说‘render on Modal’”。如果尚未设置且推荐 Modal,则提问一次,按打印出的数字依次提供
三个选项,并将 Modal 标记为(Recommended),随后运行
。
Laptop:Modal:Other:Recommended:renderRecommended: Laptopprofile.py set render='"laptop|modal|github|lambda"'- Laptop:显示预计时间,免费。
- Modal:显示预计时间和成本(每月有 $30 免费额度)。如果尚未连接,选项应标记为
Connect Modal;选择后,在后台运行 (setup skill 的 Modal 步骤), 然后在 Modal 上渲染。
setup.py modal-connect - Other:GitHub Actions 或 AWS Lambda:在说明中同时显示两条 信息。选择该项后, 再提出一个包含这两个选项的问题。GitHub Actions 免费,但要求已登录
Other:;素材会被放入用户账户中的 private repo;创建 repo 前必须征求用户同意。Lambda 使用用户自己的 AWS 账户。 如果 profile 中没有gh,则询问一次:“渲染后要删除上传到 <GitHub|AWS> 的素材吗?” (是(推荐)/否,保留在那里),然后运行cloud_cleanup。profile.py set cloud_cleanup=true|false
选择了 Modal 但尚未连接:先执行 (见上文)。选择了 Lambda 且
失败:先执行 setup skill 的 Lambda 部分。
setup.py modal-connectaws sts get-caller-identity7. Render and check
7. 渲染和检查
bash
python3 "$S/edit.py" render edits/<name> # laptop
python3 "$S/edit.py" render edits/<name> --modal # Modal
python3 "$S/edit.py" render edits/<name> --lambda # AWS Lambda
python3 "$S/edit.py" render edits/<name> --draft # laptop, 2/3 size, quick look: render-draft.mp4All but write . GitHub Actions (, then
and ) and every target's detail: . Then, before the user sees it:
--draftedits/<name>/render.mp4--githubgithub-pushgithub-fetchreferences/render.mdbash
python3 "$VPY" "$S/check.py" render edits/<name> [--plan plan.json] [--style edits/<name>/style.json]FAILs go back to the plan or the cut; at most two fix rounds, then show the render with what is
still listed. A caption contrast FAIL: plan again, then render (plan.py reads the check and steps
those pages up). The full list: .
references/plan.mdA or take's own WARN is the take's level, not a fault in the edit.
in the profile: do that, no question. Not set: ask once, then :
loudness ... LUFStrue peakloudnessprofile.py set loudness='"leave|normalize"'Your video is quieter than most reels. Make it as loud as Instagram and TikTok expect? (louder: "...louder than most reels. Bring it down to what they expect?") Details: <N> LUFS; the apps play speech at about -14.
- Leave my audio as it is (Recommended). Nothing is touched.
- Make it as loud as the apps expect (or Bring it down). One volume change, never past a -1 dB peak.
Numbers only on the Details line. Check output (FAIL, WARN, "2 frames short") never reaches the user.
Only on the second answer: . It writes
beside it; hand over that file.
python3 "$S/quality.py" normalize edits/<name>/render.mp4render-normalized.mp4bash
python3 "$S/edit.py" render edits/<name> # laptop
python3 "$S/edit.py" render edits/<name> --modal # Modal
python3 "$S/edit.py" render edits/<name> --lambda # AWS Lambda
python3 "$S/edit.py" render edits/<name> --draft # laptop, 2/3 size, quick look: render-draft.mp4除 外,所有命令都会写入 。GitHub Actions 的使用方式为
(,然后执行 和 );各目标的详细说明参见 。
在用户看到成片前执行:
--draftedits/<name>/render.mp4--githubgithub-pushgithub-fetchreferences/render.mdbash
python3 "$VPY" "$S/check.py" render edits/<name> [--plan plan.json] [--style edits/<name>/style.json]对于 FAIL,返回 plan 或 cut 步骤处理;最多进行两轮修复,然后展示 render,并列出仍未解决的问题。
如果出现字幕对比度 FAIL:再次 plan,然后再次 render(plan.py 会读取检查结果并相应调整这些页面)。
完整列表参见 。
references/plan.mdloudness ... LUFStrue peakloudnessprofile.py set loudness='"leave|normalize"'你的视频比大多数短视频更安静。要将它调整到 Instagram 和 TikTok 预期的响度吗?(更响时:“……比大多数短视频更响。要将它降低到它们预期的响度吗?”)详情:<N> LUFS;这些应用播放语音时大约使用 -14。
- 保持我的音频原样(推荐)。 不做任何处理。
- 将音量调整到应用预期的响度(或调低音量)。只做一次音量调整,绝不超过 -1 dB peak。
Details 行只显示数字。检查输出(FAIL、WARN、“2 frames short”)绝不能展示给用户。
仅当用户选择第二个答案时:运行 。
该命令会在原文件旁写入 ;将此文件交付给用户。
python3 "$S/quality.py" normalize edits/<name>/render.mp4render-normalized.mp48. Hand over
8. 交付
Hand over on the review page (), and in the background:
(no page: , same flags). On : motion skill . Card and visual changes later: overlays skill (a motion clip: motion skill ); caption, zoom: plan, stills, render, ; cut: cut skill.
references/review.mdservewaitpython3 "${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/review.py" edits/<name> round --stage edit --video edits/<name>/render.mp4startAPPROVEsavenoteround在 review page 上交付(),在后台运行 和 :
(如果没有页面:使用 ,并沿用相同 flags)。收到 后:使用 motion skill 。
后续修改 card 和 visual:使用 overlays skill(如果是 motion clip:使用 motion skill );
修改字幕或 zoom:依次执行 plan、stills、render、;修改 cut:使用 cut skill。
references/review.mdservewaitpython3 "${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/review.py" edits/<name> round --stage edit --video edits/<name>/render.mp4startAPPROVEsavenoteround9. Export to another editor
9. 导出到其他编辑器
Only when the user asks to finish it by hand ("open it in Final Cut", "send it to Premiere"):
bash
python3 "$S/export_nle.py" edits/<name> --to fcpxml|premiere|resolve|capcut|edl|srt|allWrites . Moving cards render with alpha first (about 0.7 s a card frame; say so).
Which file to open, YouTube chapters for 16:9: "Export to another editor".
edits/<name>/export/references/render.md仅当用户要求手动完成时使用(“在 Final Cut 中打开”“发送到 Premiere”):
bash
python3 "$S/export_npy" edits/<name> --to fcpxml|premiere|resolve|capcut|edl|srt|all命令会写入 。移动 card 需要先带 alpha 进行渲染(每张 card frame 约 0.7 秒;先告知用户)。
应打开哪个文件,以及用于 16:9 视频的 YouTube chapters,参见 中的“Export to another editor”。
edits/<name>/export/references/render.mdIf a script stops
如果脚本停止
| message | do |
|---|---|
| run the cut skill first |
| creator-teardown quick mode, then |
| fine with no creator; |
| run the cut skill's verify step |
| plan again with |
| fix the FAIL in the plan, plan again |
| run matte.py, then stills or render again |
| do exactly that |
| |
capture.mjs | drop that visual or give it another URL; the rest were saved |
| the setup skill's Modal step |
| setup's GitHub CLI section / a private repo only |
| |
| say so, offer the laptop render |
| message | do |
|---|---|
| 先运行 cut skill |
| 运行 creator-teardown quick mode,然后再次运行 |
| 没有 creator 也可以继续;运行 |
| 运行 cut skill 的 verify 步骤 |
| 使用 |
| 修复 plan 中的 FAIL,然后再次 plan |
| 运行 matte.py,然后再次生成 stills 或 render |
| 严格按照提示执行 |
| 运行 |
capture.mjs | 删除该 visual,或为它提供另一个 URL;其他素材已经保存 |
| 执行 setup skill 的 Modal 步骤 |
| 执行 setup 的 GitHub CLI 部分 / 只能使用 private repo |
| 参见 |
| 如实告知用户,并提供在 laptop 上渲染的选项 |
Files
文件
- : one script per step above, each with a
scripts/self-check.demo - (haiku),
${CLAUDE_PLUGIN_ROOT}/agents/template-filler.md(sonnet): the helpers.stills-critic.md - : the renderer, copied to
${CLAUDE_PLUGIN_ROOT}/remotion/on every run.~/.ai-video-editor/remotion
- :上述每个步骤对应一个脚本,每个脚本都带有
scripts/自检。demo - (haiku)、
${CLAUDE_PLUGIN_ROOT}/agents/template-filler.md(sonnet):辅助 Agent。stills-critic.md - :renderer;每次运行时都会复制到
${CLAUDE_PLUGIN_ROOT}/remotion/。~/.ai-video-editor/remotion