mcpField
S
style-edit

style-edit

github.com/nextwork-projects创意与媒体13427 次安装1 天前更新
代码仓库

关于 style-edit

面向 Claude 的视频编辑技能,可将已批准的剪辑制作成包含字幕、定时画面和动画的成片。它结合创作者风格与用户素材,并在交付前检查静帧和渲染结果。

主要功能

  1. 01根据剪辑生成定时字幕
  2. 02围绕口述内容规划画面
  3. 03应用创作者风格和提供的素材
  4. 04检查静帧并验证渲染
  5. 05在本地或已配置目标渲染

适用场景

  1. 01为已批准的视频剪辑添加风格
  2. 02让字幕和画面与口述同步
  3. 03依据创作者档案制作编辑
  4. 04渲染并检查成片

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nextwork-projects/ai-video-editor-cooked --skill style-edit

安装后在 Claude Code 中输入/style-edit确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
ai-tells.md
contracts.md
motion-design.md
motion.md
plan.md
render.md
review.md
shapes.md
visuals.md
scripts/
ai_tells.py
capture.mjs
chapters.py
check.py
edit.py
export_nle.py
face.py
matte.py
modal_render.py
plan.py
preview.py
quality.py
route.py
sfx.py
sheet.py
source.py
style_check.py

详细介绍

风格编辑

路径:${CLAUDE_SKILL_DIR} 表示包含此 SKILL.md 的文件夹,${CLAUDE_PLUGIN_ROOT} 表示它上两级的插件文件夹。

先阅读 ${CLAUDE_PLUGIN_ROOT}/PRINCIPLES.md:每条视频都要遵循的规则(位置、提问、真实感、动态、故事、隐私、成本)。

所有问题都要放在问题框中:使用 AskUserQuestion 工具(提供 2-4 个选项,并将推荐选项放在首位)。只有在没有该工具的 Agent 中,才用文本提出编号问题。回答中出现 Attached images: <paths> 时:先逐一读取。

获批的剪辑,以及创作者的风格(skill= 任务会运行该技能:从步骤 3 开始)。 输出最终视频:字幕、缩放、真实素材和动态场景都要与台词时间同步,并呈现创作者的风格和用户的品牌形象。用户会在审核页面确认静帧(步骤 5),并选择渲染版本(步骤 6)。

路径相对于素材库(PRINCIPLES.md)。在 Mac 和 Linux 上用 python3 运行脚本,在 Windows 上用 py。S="${CLAUDE_SKILL_DIR}/scripts", VPY="${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/run.py";python3 "$VPY" 是虚拟环境中的 Python。

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

仅在步骤明确要求时阅读以下参考资料:references/visuals.md(各格式详解)、 references/plan.md(plan.py、抠像、声音、音乐、检查)、references/motion.md(模板、 转场、标记)、references/render.md(目标、实时预览、导出)、references/review.md (审核页面)、references/ai-tells.md(禁止使用的 AI 风格)。references/contracts.md 是给工作人员看的:绝不要阅读。

0. 读取风格偏好和个人资料

python3 "${CLAUDE_PLUGIN_ROOT}/skills/taste/scripts/taste.py" show --edit edits/<name>
python3 "${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/profile.py" show

遵循每条风格偏好规则;脚本会自行读取设置。用户对结果作出反馈(“太慢了”“字幕太小”)时,在重新编辑前,先用风格技能保存该反馈。

1. 检查输入

  • 没有 cut.mp4? 先运行 cut 技能,绝不要直接处理原始素材。有 prep-decisions.json? visual-prep Agent 已完成步骤 1-3 和工作表:参阅 references/plan.md 中的“在审核剪辑时准备”。
  • 没有 style.json? 运行 python3 "${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/profile.py" style edits/<name>。 如果个人资料中没有创作者,或没有个人资料,程序会写入默认风格:每隔至少 5 秒进行一次平滑缩放, 字幕每行 3 个词(参阅 references/plan.md 中的“没有创作者”)。如果程序因 no creator style.json found 而停止,针对个人资料中的创作者运行 creator-teardown 快速模式,然后 再运行一次。style.json 缺失时,plan.py 也会使用默认风格进行规划,并会说明这一点。
  • **用户的图片:**个人资料 assets_dir 中适合对应台词的所有素材,加上用户提供的任何素材, 都放入 edits/<name>/images/ 和 images.json: [{"src": "images/dashboard.png", "word": "dashboard", "nth": 1}](可选项:layout、hold_s、 entrance;支持透明 PNG 和 Lottie .json)。
  • 用户在页面上添加的内容(assets.json,review.py wait 的 assets: 行):首先处理,且要在任何搜索之前, 按 agents/visual-prep.md 步骤 2 的说明,将每项内容放在对应的 say 台词词句上。尚未加入 images.json 或 visuals.json 的内容都是新素材。

2. 字幕文本

python3 "${CLAUDE_PLUGIN_ROOT}/skills/cut/scripts/retakes.py" captions edits/<name>

写入 captions.json 和 captions.txt:即最终剪辑中听到的词(验证步骤的 cut.transcript.json),并与时间同步;每个听写结果不一致的词(“Jev”听成“Jeff”)都要按获批剪辑中的文本拼写, 姓名按个人资料中的 names 拼写,并应用所有先前的 retakes.py fix。程序会打印每个已更改的词。绝不要读取这两个 JSON 文件:校对 captions.txt,字幕就是根据该文件制作的。如果仍有词语错误,只需运行一条命令,即可原位修复 captions.json,时间戳不会改变,而且修正内容会保存在 fixes.json 中,供之后每次生成字幕时使用:

python3 "${CLAUDE_PLUGIN_ROOT}/skills/cut/scripts/retakes.py" fix edits/<name> cloud=Claude jiv=Jev

从此处开始使用 captions.json。

3. 视觉素材

先阅读 references/shapes.md 和 references/motion-design.md:了解每种选项的形状和 plan.py 的规则,然后了解默认外观和动态效果(优先使用制作的动画,而非采集画面;画面中的卡片要大;每页只放一个采集画面)。

  1. 提出方案: python3 "$S/route.py" beats edits/<name> 会将 captions.json 拆分成句子,并将命名事物(profile、logo-pack)标记到 beats.json 中。你为每个句子自行选择一种路线(none、capture:shot|browser|sticker、post、logo、logo_cluster、chat、terminal、toasts、side_by_side、video_card)。
  2. 优先使用真实内容: 编写 visuals.json(参见 references/shapes.md):命名的产品或文档设为 capture(通过文本查找 marks);引用的帖子设为 post;应用设为 app;视频设为 youtube;代码仓库设为 github;顺带提及的品牌设为 logo;专家的话语设为片段(参见 references/visuals.md“Sourced proof”)。
  3. 填充叠加元素: 对叠加选项,只编写属性(参见 references/shapes.md)。如果有 template-filler Agent(haiku)可用,就将其交由该 Agent 处理,并提供 references/shapes.md 的完整路径;否则自行编写。只使用讲者说过的词语和数字。不使用文字卡片。
  4. 获取素材: node "$S/capture.mjs" edits/<name> 会将采集画面、Logo、帖子获取到 images/,并测量标记位置。
  5. 动态效果: 动态模板拍点改为定制片段(motion skill);片段制作失败时,保留其卡片。

节奏:以模仿的创作者的节奏为准。route.py 会显示她每分钟的卡片数量、类型及画面中的位置,并将相应数量的句子标记为 want(优先标记命名事物)。为每个标记的句子添加一张她所用类型的卡片,并在她指定的位置放置 box,避开头部:优先使用用户自己的照片,其次使用与台词内容相关的真实事物采集画面(页面、个人资料、帖子),再其次使用用户自己的片段作为 video_card。绝不使用虚构图片或素材图片:没有真实素材的 want 就留空。绝不询问要展示什么:自行选取真实采集画面(包括用户自己的产品)。没有创作者时,只在台词提及真实事物的地方添加卡片。绝不同时显示两张卡片;两张卡片之间不得有超过 card_gap_s 的间隔(plan.py 会在该处添加缩放效果,参见 references/plan.md“Pacing”)。竖屏采集画面必须添加 find,确保能在手机上看清。卡片修改:参见 shapes.md。

4. 规划

先找到讲者的头部,确保没有框遮住脸,然后使用步骤 1 的 style.json 进行规划:

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]

生成 edits/<name>/plan.json。阅读所有警告。文件末尾是 style check(style_check.py):每一行 style: 都指出规划与创作者风格的差异。逐项修正(style.json、visuals.json、images.json),然后重新规划,再制作静帧;用户所做的修改已经是目标风格。

  1. 音乐:除非用户另行指定,否则遵循该风格(参见 references/plan.md“Music”;plan.py 会自行铺设创作者的背景音乐),然后再次运行 plan.py。音效提示无需处理:plan.py 会自动添加。
  2. 讲者身后: 如果 profile 中设有 "behind": true,请在最后一次运行 plan.py 后运行 matte.py,之后每次再次运行 plan.py 后也都要运行(它只会处理新画面);先说明 --estimate 的运行情况(参见 references/plan.md)。
  3. 检查规划:
python3 "$S/check.py" plan edits/<name> [--plan plan.json] [--style edits/<name>/style.json]

修复每一项 FAIL,然后重新规划。FAIL 项的说明见 references/plan.md。

5. 静帧:由你检查,然后直接渲染

用户已批准剪辑:批准就意味着制作剪辑。绝不要把静帧放到审核页面,也绝不要等待用户再次批准(Max,2026-10-15:用户不喜欢增加静帧审核步骤)。

python3 "$S/edit.py" stills edits/<name>

首次运行时会安装渲染器(耗时几分钟,只需安装一次;先告知用户)。每个拍点生成一张静帧,并生成 stills/sheet.png(标注拍点、时间和卡片类型)。自行检查整张图;只有需要放大时才打开单张静帧。渲染前修复以下问题:框压住脸、缩放切掉头部、采集画面中选错区域、文字在手机上太小、AI 默认风格。可以使用 stills-critic 检查。然后继续步骤 6 并进行渲染;用户的意见会针对渲染后的剪辑提出。只有用户要求时才手动调整动态卡片:参见 references/render.md“The live preview”。

6. 选择渲染位置

python3 "$S/edit.py" estimate edits/<name>

打印 Laptop:、Modal: 和两行 Other:(GitHub Actions、Lambda),显示渲染此视频所需的时间和费用,然后打印 Recommended::Modal 已连接、视频时长超过一分钟且 Modal 更快时推荐 Modal;否则推荐笔记本电脑。在配置文件中设置 render,或者设置 Recommended: Laptop:直接在笔记本电脑上渲染,不询问,并用一行说明所需时间(“正在笔记本电脑上渲染,约 14 秒。说‘render on Modal’可更改”)。未设置且 Recommended: Modal:只询问一次,按此顺序给出三个选项,并显示打印出的数字;Modal 标为 (Recommended),然后运行 profile.py set render='"laptop|modal|github|lambda"'。

  1. 笔记本电脑:显示所需时间,免费。
  2. Modal:显示所需时间和费用(每月有 $30 免费额度)。尚未连接:标为 连接 Modal;选择该项后,在后台运行 setup.py modal-connect(setup skill 的 Modal 步骤),然后在 Modal 上渲染。
  3. 其他:GitHub Actions 或 AWS Lambda:描述中列出的两行 Other:。选择此项后,再询问一次,并列出这两个选项。GitHub Actions:免费,需要登录 gh,素材会放入其账户中的私有仓库;创建仓库前先询问。Lambda:使用用户自己的 AWS 账户。配置文件中未设置 cloud_cleanup:只询问一次“渲染后要从 <GitHub|AWS> 删除上传的素材吗?”(是(Recommended)/否,保留在那里),然后运行 profile.py set cloud_cleanup=true|false。

选择了 Modal 但尚未连接:先运行 setup.py modal-connect(见上文)。选择了 Lambda,且 aws sts get-caller-identity 失败:先完成 setup skill 的 Lambda 部分。

7. 渲染并检查

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

除 --draft 外,所有模式都会写入 edits/<name>/render.mp4。GitHub Actions(--github,然后运行 github-push 和 github-fetch)以及各目标的详情:references/render.md。然后,在用户查看之前:

python3 "$VPY" "$S/check.py" render edits/<name> [--plan plan.json] [--style edits/<name>/style.json]

FAIL 时返回计划或剪辑阶段;最多修复两轮,然后展示渲染结果,并说明仍存在的问题。字幕对比度 FAIL:重新制定计划,然后渲染(plan.py 会读取检查结果并调整这些页面)。完整列表:references/plan.md。

loudness ... LUFS 或片段自身的 true peak WARN 反映的是片段音量,不是剪辑中的问题。配置文件中已设置 loudness:直接照做,不询问。未设置:只询问一次,然后运行 profile.py set loudness='"leave|normalize"':

你的视频音量比大多数短视频都低。要把音量调到 Instagram 和 TikTok 预期的水平吗?(如果更响:“比大多数短视频都响。要把音量调低到它们预期的水平吗?”)详情: LUFS;这些应用播放语音时的音量约为 -14。

  • 保持原音频不变(Recommended)。 不做任何处理。
  • 调到应用预期的音量(或调低音量)。只调整一次音量,峰值绝不超过 -1 dB。

数字仅出现在详情行中。检查输出(FAIL、WARN、“短 2 帧”)绝不能展示给用户。

只有用户第二次选择时才运行:python3 "$S/quality.py" normalize edits/<name>/render.mp4。该命令会在同一目录写入 render-normalized.mp4;交付此文件。

8. 交付

按照审核页面交付(references/review.md),在后台运行 serve 和 wait: python3 "${CLAUDE_PLUGIN_ROOT}/lib/ai_editor/review.py" edits/<name> round --stage edit --video edits/<name>/render.mp4 (没有页面时:start,使用相同的标志)。收到 APPROVE 后:运行 motion skill 的 save。之后修改卡片和视觉内容:使用 overlays skill(动态片段:使用 motion skill 的 note);字幕、缩放:plan、stills、render、round;剪辑:使用 cut skill。

9. 导出到其他编辑器

仅当用户要求手动完成(“在 Final Cut 中打开”“发送到 Premiere”)时:

python3 "$S/export_nle.py" edits/<name> --to fcpxml|premiere|resolve|capcut|edl|srt|all

写入 edits/<name>/export/。动态卡片会先以 alpha 渲染(每张卡片帧约 0.7 秒;请说明)。要打开哪个文件、16:9 视频的 YouTube 章节:参阅 references/render.md 中的“导出到其他编辑器”。

如果脚本停止运行

提示信息操作
no cut.mp4 in ...(plan.py、face.py)或 cut.mp4 missing(edit.py)先运行 cut 技能
no creator style.json found for the profile's creators运行 creator-teardown 快速模式,然后再次运行 profile.py style
note: ... style.json not found; planning with the default style没有创作者时可以忽略;profile.py style edits/<name> 会将其保留在编辑结果中
no cut.transcript.json(retakes.py captions)运行 cut 技能的验证步骤
the split layout is vertical only使用 --layout overlay 重新规划
check.py plan found a FAIL(edit.py stills)修复计划中的 FAIL,然后重新规划
... missing (run matte.py)运行 matte.py,然后再次运行 stills 或 render
... missing (run sfx.py build, then plan.py)严格按提示操作
no Chrome Headless Shell(capture.mjs)运行 python3 "${CLAUDE_PLUGIN_ROOT}/skills/setup/scripts/setup.py" remotion,然后重新捕获
capture.mjs failed <kind> '<word>'移除该视觉素材,或为其提供另一个 URL;其余内容已保存
Modal is not set up on this computer执行 setup 技能中的 Modal 步骤
the GitHub CLI (gh) is missing / ... is public查看 setup 的 GitHub CLI 部分/仅使用私有仓库
the laptop render failed查看 references/render.md 中的 "If a render stops"
the Modal render failed / the render failed. Open <url>说明情况,并提供笔记本电脑渲染选项

文件

  • scripts/:上方每个步骤对应一个脚本,每个脚本都有一个 demo 自检。
  • ${CLAUDE_PLUGIN_ROOT}/agents/template-filler.md(haiku)、stills-critic.md(sonnet):辅助工具。
  • ${CLAUDE_PLUGIN_ROOT}/remotion/:渲染器,每次运行时都会复制到 ~/.ai-video-editor/remotion。

评论

支持 Markdown