mcpField
V
video-editing-skill

video-editing-skill

github.com/social-media-skills其他09 次安装1 天前更新
代码仓库

关于 video-editing-skill

根据文字稿规划并渲染访谈类视频剪辑的技能,适用于希望先审核初剪方案的创作者;还可生成字幕和章节、清理音频,并通过 WoopSocial 发布。

主要功能

  1. 01基于文字稿规划剪辑
  2. 02渲染前审批
  3. 03删除停顿与填充词
  4. 04推近镜头与音频清理
  5. 05生成字幕和章节
  6. 06可选 WoopSocial 发布

适用场景

  1. 01为访谈类录制制作初剪
  2. 02制作带内嵌字幕的竖屏视频
  3. 03生成 YouTube 字幕和章节
  4. 04通过 WoopSocial 发布已批准的剪辑

安装

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

$npx skills add https://github.com/social-media-skills/video-editing-skill --skill video-editing-skill

安装后在 Claude Code 中输入/video-editing-skill确认已加载。

包含的文件

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

evals/
evals.json
examples/nasa-interview/
CREDITS.md
edit.json
transcript.txt
examples/nasa-interview/output/
captions.srt
chapters.txt
edit-report.md
manifest.json
fonts/
OFL-Poppins.txt
references/
editing-rules.md
woopsocial.md
scripts/
check_setup.py
edit_video.py
transcribe.py
upload_parts.py

详细介绍

视频剪辑技能

原始的真人出镜录像通常有 20% 到 40% 的空白:停顿、“呃”、说到一半重来,以及重复说了一遍的句子。手动剪掉这些内容比录制还费时。本技能会完成初剪:读取转录文本,说明每处剪辑的理由并制定剪辑计划,展示计划,用跳切放大效果和干净的音频渲染剪辑,编写字幕和章节,并在获得同意后发布。所需的一切都在此文件夹中。

四项承诺:

  1. 保留用户说的话。 只会剪掉停顿、填充词、口吃、重录片段,以及用户批准剪掉的范围。绝不改动原意。
  2. 先制定计划,再渲染。 先展示剪辑列表并获得批准。
  3. 未经同意,绝不发布。
  4. 仅使用用户有权使用的素材。 用户自己的录制内容,或已获许可的内容。

在 Windows 上,每条命令都使用 py,而不是 python3。

步骤 0:设置和源文件

运行 python3 scripts/check_setup.py:它会报告 ffmpeg、Pillow、转录方式和 OpenCV 的状态,并提供适用于用户系统的安装命令。必需项:ffmpeg 和 Pillow。

只在一条消息中询问你无法自行确认的信息:

  1. 文件是哪一个?是否属于用户?
  2. 视频将发布到哪里:YouTube(16:9)、社交媒体(竖屏)还是两者都发?
  3. 剪辑要多紧凑:youtube(默认设置:剪掉超过 0.5 s 的停顿,保留自然停顿)、tight(0.3 s,适合快节奏的 YouTube 和社交媒体),或 podcast(节奏舒缓,不做放大效果)。
  4. 用户习惯使用哪些可以安全剪掉的词语(“like”“so”“you know”“basically”)。这些词在其他句子中可能有含义,因此默认不剪,需用户选择。
  5. 有哪些内容必须保持原样(演示、带停顿的笑话、赞助商口播)。

步骤 1:转录

python3 scripts/transcribe.py VIDEO --out work/ --terms "Product name, Jargon, Guest name"

--terms 用于列出姓名和专业术语,确保拼写正确;渲染前,请在 edit.json 中使用 "replace" 修正仍然听错的内容,因为烧录进已发布视频的字幕无法更改。

转录一如既往地有以下三种方式,相关取舍只需说明一次:

方式用法费用和速度
现有转录文本--from captions.srt免费,即时完成;单词时间是估算的,而且大多数“呃”不会被记录,因此填充词剪辑效果较差
Groq 或 OpenAIGROQ_API_KEY 或 OPENAI_API_KEYGroq 每小时音频约 $0.04,每小时音频需一两分钟处理
本地pip install faster-whisper免费且私密;使用 --model small 时,处理时间约为视频时长的一半到视频时长本身

转录器会收到提示,要求记录填充词;否则 Whisper 会漏掉这些词。编辑器会直接从音频中查找转录器仍然漏掉的声音(没人记录下来的“嗯”声、呼吸声)。

步骤 2:规划剪辑

完整阅读一次 work/transcript.txt。然后编写 edit.json(格式见 scripts/edit_video.py 顶部):

  • 风格: "style": "youtube"、"tight" 或 "podcast"(阈值见 references/editing-rules.md)。超过限制的停顿会缩短为自然的间隔:句中较短,句后较长,话题转换时最长。
  • 填充词: 默认列表("um"、"uh"、"er"、"hmm"、"mm")是安全的。只有用户提出要求时,才将其习惯用词添加到 extra_fillers。
  • 离题内容和无效片段: 离题内容、"can you hear me?",以及重点出现前冗长的铺垫。将它们添加到 cut 并说明原因,同时告知用户。
  • 保留: 使用 keep 标记任何必须保留的内容,包括无声片段。
  • 带问题卡片或画面中有采访者的访谈: 保留问题(每张卡片约 3 秒,并加入 keep),除非用户另有说明;否则每个回答都会以 "So..." 开头,缺少上下文。
  • 听错的名称: "replace": {"Cyrus Rex": "OSIRIS-REx"}。
  • 章节(适用于 YouTube):根据话题转换设置 3 到 10 个章节,第一个从 0:00 开始,每个章节至少 10 秒,并以观众能获得的内容命名(例如“相机为何失灵”,而不是“第 2 部分”)。 时间使用原视频中的时间;脚本会调整它们。

然后制定计划:

python3 scripts/edit_video.py edit.json --transcript work/transcript.json --out edited/ --plan

edited/edit-plan.md 会列出新时长、来自讲话内容与长停顿和卡片的剪辑时长、每分钟字数的语速,以及所有超过 1 秒的删减内容及其原因和文字。逐条阅读所有重录和口吃的片段,以及“可能重录”列表:两句完整句子以相同方式开头时,绝不会自动剪掉;请逐一判断,并在确实属于重录时将其添加到 cut。向用户展示摘要、重录片段、选定的离题内容和章节,并征得同意。

第 3 步:渲染

python3 scripts/edit_video.py edit.json --transcript work/transcript.json --out edited/

功能:

  • 将超出限制的停顿缩短到自然的节拍,并删去填充词、口吃、重录内容和所有 cut 范围。短于风格最短时长(youtube 中为 0.4 s)的删减会保留:跳切的代价可能高于收益。
  • 通过听音频来确定每处剪切:将词语边缘移到声音实际停止和开始的位置,因此不会切掉词尾,也能找出转录稿漏掉的声音(未写出的“嗯”)。
  • 同时查看画面:干净地剪掉标题卡和镜头切换,不留下几帧标题卡。
  • 每次将多个片段分组渲染,确保无论有多少处剪切,声音和画面都保持同步。
  • **推近镜头:**在需要隐藏跳切的地方,在完整画幅和 1.1x 推近画面之间切换:凡是删掉 1 秒或更长内容的剪切处都会推近;否则,只有同一取景持续 4 秒后才推近;遇到新镜头时绝不推近。"punch_in": 0 可关闭此功能。
  • **音频:**将增益调至合适水平,过滤隆隆声,根据测得的室内噪声设置降噪(室内本就安静时跳过),进行轻柔压缩、峰值限制,并分两遍将响度调至 -14 LUFS。
  • **字幕:**始终生成 captions.srt(最多 2 行,每行 42 个字符;每条字幕持续 1 至 7 秒;不会在短词后或人名中间换行),供上传到 YouTube。 "captions": {"burn": true} 会将字幕嵌入视频,适用于许多人会静音观看的社交平台;竖屏版本默认嵌入字幕。若 YouTube 视频也会上传 SRT,就不要将字幕嵌入视频:开启字幕的观众会看到两份字幕。
  • 竖屏:"format": "vertical" 会生成一个以 focus_x 为裁切位置的 1080x1920 版本。

生成文件:edited/edited.mp4、captions.srt、chapters.txt、edit-report.md 和 manifest.json。

**向用户展示前请检查:**打开 cuts.jpg(显示最大几处剪切前后画面的帧:检查是否闪过标题卡、是否跳切到不同镜头、表情是否冻结),并阅读 manifest.json 中的警告(同步、每分钟超过 190 个单词的语速、响度)。如果重录内容保留了错误的版本、语速让人感觉喘不过气(应采用更温和的风格),或剪切位置不理想(应在该处设置 keep),请修正后重新渲染。

第 4 步:通过 WoopSocial 发布

连接、上传和发布方法:references/woopsocial.md。简要步骤:

  1. social_accounts_list;如果尚未连接:使用此 Agent 唯一的连接方式(免费套餐:2 个社交账号),然后为每个平台调用 oauth_create_authorization。
  2. 使用上传会话上传 edited.mp4(调用 media_uploads_create_session,并使用 manifest.json 中的字节数;运行 python3 scripts/upload_parts.py session.json edited/edited.mp4; 然后调用 media_uploads_complete_session)。
  3. **YouTube:**填写 title(先写主要搜索词,少于 70 个字符)、privacy,以及描述。描述开头用一行说明观众能获得什么,后面附上 chapters.txt 中的章节信息。之后在 YouTube Studio 上传 captions.srt(WoopSocial 不会发送字幕文件)。
  4. 展示帖子内容(文件、标题、描述、账号、含时区的时间)并明确征求同意。然后调用 posts_create 和 posts_get。

第 5 步:查看结果

一周后,调用 social_account_posts_list:查看观看次数、点赞数,以及有报告时的评论数,并记录收集日期;未提供的数据表示“未报告”。观看留存情况和平均观看时长可在 YouTube Studio 中查看;请用户提供这些数据。如果观众很早就离开,下次剪辑应让开场更紧凑;如果观众在某个章节处离开,说明该部分太长。

质量标准

专业剪辑师会交付这样的成片吗?如果有词语被切掉、剪切落在呼吸中间并产生爆音、推近镜头每隔几秒就变化、语速让人没有思考的余地,或意思发生了变化,就不要交付。

边界情况

  • 镜头中有两个人: 保持 format 为 source;在广角镜头中仍可进行推近。
  • 带有语音的屏幕录制: 将 "punch_in": 0。
  • 语音下方有音乐: 静音检测会将音乐识别为声音;将 "voiced_gaps": false。
  • 超长录制(超过一小时): 可以处理,但渲染时间约等于视频时长;先规划,再渲染一次。
  • 有意保留一段无语音的内容(例如演示):将其 keep。

参考资料

  • references/editing-rules.md:阈值、填充词、重录模式、推近、音频链、字幕和章节,以及来源。
  • references/woopsocial.md:连接、上传、发布和读取结果。

评论

支持 Markdown