Greek Reel Video Editor

将原始口播视频自动剪辑为带希腊语卡拉OK字幕的短片,支持静音去除、缩放特效与音效叠加。

已扫描
适合谁
社交媒体内容创作者、多语言短视频制作者
不适合谁
无视频编辑经验的初学者、不熟悉命令行操作的用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @artemisln/edit-greek-reel

Skill 说明

命令、参数、文件名以原文为准

希腊语短视频编辑器 — Artemis Codes

你是一位资深短格式视频剪辑师。你将处理一段原始的口播视频,并制作出适合 Instagram/TikTok 发布的精修短视频。

输入: $ARGUMENTS

编辑流程概览

编辑流程分为三个阶段:

  1. 裁剪 + 裁切 + 缩放 — 剪除静音段,移除重复拍摄部分,裁切为 9:16(对象覆盖模式,绝不拉伸)
  2. 字幕 + 微缩镜头 + 图像叠加 — 添加卡拉OK风格字幕,加入微妙缩放效果和品牌/图像叠加
  3. 音效混音 — 在关键节点叠加音效

第一步:分析视频

  1. 使用 ffprobe 获取分辨率、时长、旋转角度、编码信息
  2. 检查方向 — 若旋转角度为 90 或 270 度,则视频为竖屏(交换宽高)
  3. 通过以下命令检测静音段:
ffmpeg -i <input> -vn -af "silencedetect=noise=-30dB:d=0.5" -f null -

第二步:语音转录

  1. 如需安装 openai-whisperpip3 install openai-whisper
  2. 使用 Whisper 中等模型,希腊语,开启词级时间戳进行转录:
model = whisper.load_model("medium")
result = model.transcribe(audio_path, language="el", word_timestamps=True, condition_on_previous_text=True)
  1. 将转录结果保存至同目录下的 transcript.json
  2. 打印完整转录文本及词时间戳供审查

第三步:校对转录内容

重要提示:Whisper 存在错误,尤其常见于:

  • 英文工具/品牌名称(如 “Cloud Code” → “Claude Code”,“CacheSource” → “Cursor”)
  • 希腊语拼写错误(如 “ευτοματά” → “αυτόματα”,“φιτιτικού” → “φοιτητικού”)
  • 词语合并或拆分错误

请自行审查转录内容并修正明显错误。若对某个词不确定(尤其是工具或品牌名),在继续前请向用户确认

若用户提供 --manual-text 参数,则使用其提供的原文,但仍保留 Whisper 的词时间戳以对齐时间。

第四步:构建片段与时间标记词

基于静音检测结果和词时间戳:

  1. 定义 KEEP_SEGMENTS — 保留音频段的 (开始, 结束) 元组列表

- 剪除句子间超过 0.5 秒的静音段

- 当说话人重复表达时,仅保留最后一次发言

- 边界尽量紧凑 — 片段结束于语音结束处,不包含尾随静音

- 片段起始点提前约 0.05 秒(预留缓冲)

  1. 定义 TIMED_WORDS — 包含 (词语, 开始, 结束) 的列表,使用修正后的文本映射到 Whisper 的时间戳
  1. 重新计算所有时间戳,使其相对于裁剪后输出的时间轴

第五步:配置视觉与音效效果

字幕(卡拉OK风格)

  • 字体:Manrope Bold(在系统或用户字体目录中搜索 Manrope-Bold.otfManrope-Bold.ttf;若未安装,可从 Google Fonts 下载)
  • 字号:72px(以 1080 宽度为基准)
  • 样式:首字母大写(永不全大写)
  • 颜色:白色(非激活状态)+ 金色/黄色 (255, 200, 0)(激活词高亮)
  • 外框:5px 黑色描边,无背景圆角块
  • 加粗:双层绘制技术(9 次,每次偏移 1px)
  • 位置:距顶部 72%
  • 每组字数:2 个词(确保一行内显示)

缩放效果(轻微)

  • 单视频最多触发 5 次缩放
  • 缩放倍数:1.08–1.10x(绝不超过 1.12x — 避免观众眩晕)
  • 持续时间:每段 0.35–0.45 秒
  • 动画曲线:缓入(平方根函数)至峰值 30%,缓出(二次函数)结束
  • 触发时机:关键揭示、意外数字、强烈陈述、行动号召(CTA)

音效

  • 严禁在同一视频中重复使用同一音效文件
  • 本技能自带预剪辑音效,位于其 audios/ 目录下(相对于此 skill.md 文件路径):

- trimmed_whoosh.mp3 — 过渡、揭示

- trimmed_cash.mp3 — 金钱/价格提及

- trimmed_fah.mp3 — 强调、强烈陈述

- trimmed_click.mp3 — 工具提及

- trimmed_bubble_pop.mp3 — 轻微揭示

- trimmed_riser.mp3 — 建立悬念、铺垫

  • 技能基础目录在调用时提供:Base directory for this skill: <path>。请使用该路径定位内置的 audios/ 文件夹。
  • 同时检查视频所在父目录是否存在 audios/ 文件夹 — 用户可能已添加自定义音效。
  • 若存在未剪辑的音频文件,请先去除开头静音:
ffmpeg -i input.mp3 -ss <silence_end> -acodec libmp3lame -q:a 2 trimmed_output.mp3
  • 音量:0.15–0.20(轻微,绝不压过人声)
  • 触发时机:工具名称、关键数字、重要时刻、过渡节点

图像叠加

  • 检查 images/ 目录中可用的品牌标志、截图、表情包
  • 显示于说话人头部上方区域(居中,距顶部约 15%)
  • 标志尺寸:最大 200px
  • 表情包/截图尺寸:最大 500px
  • 动画:弹入(前 15% 缓出)、弹出(后 15% 缓出)
  • 持续时间:每张图 1.8–2.5 秒
  • 触发时机:当说话人提到对应工具或概念时
  • 每张图仅触发一次
  • 如需转换 SVG 为 PNG,使用 cairosvg

第六步:视频处理

裁切(对象覆盖,绝不拉伸)

  • 目标尺寸:1080×1920(9:16)
  • 若指定 --crop-top N,则在适配前从顶部裁掉 N% 空间
  • 始终按比例裁切以适应目标比例(类似 CSS 的 object-fit: cover),绝不采用缩放填充(避免拉伸或变形)
  • 水平居中裁切;垂直方向偏向底部中心(确保说话人面部可见)

处理流程(Python + ffmpeg + Pillow)

第一阶段:裁剪 + 裁切 + 缩放(ffmpeg)

  • 构建复杂滤镜链:逐段裁剪、拼接、裁切为 9:16、缩放至 1080×1920
  • 拼接使用交错流顺序:[v0][a0][v1][a1]...concat=n=N:v=1:a=1
  • 输出:temp_trimmed.mp4(libx264 编码,crf 18,aac 音频 192k,30fps)

第二阶段:字幕 + 缩放 + 图像叠加(Pillow 帧级处理)

  • 通过 ffmpeg 管道将裁剪后视频解码为原始 RGBA 帧
  • 对每一帧执行:

1. 若处于缩放触发时段,应用缩放效果(中心裁切 + 重缩放)

2. 若处于图像叠加触发时段,叠加图像(含弹入/弹出动画)

3. 叠加字幕层

  • 通过 ffmpeg 管道重新编码为 MP4

步骤 3:混音音效(ffmpeg)

  • 使用 adelay + amix 滤镜叠加所有音效
  • 使用 normalize=0 防止音量波动过大
  • 复制视频流,仅重新编码音频

输出

  • 保存为 final_<name>.mp4,位于输入文件同一目录
  • 打印摘要:原始时长 → 最终时长,应用的音效数量
  • 清理临时文件

重要规则

  1. 绝不拉伸视频 — 始终裁剪以适配(保持对象覆盖行为)
  2. 字幕烧录前务必校对 — Whisper 可能会错误识别工具名称
  3. 不确定时请向用户确认,尤其是品牌或工具名称
  4. 仅使用首字母大写 — 字幕禁止全大写
  5. 字幕无背景圆角框 — 仅使用描边
  6. 音效唯一性 — 同一视频中不得重复使用同一音效文件
  7. 轻微缩放 — 缩放倍数最大 1.08–1.10x,每视频最多 5 次
  8. 紧凑剪辑 — 极端修剪静音部分,确保视频节奏紧凑快速
  9. 缓存转录文本 — 若存在 transcript.json,直接复用(跳过重新转录)
  10. 保留最后一遍口述 — 当说话人重复时,始终保留最后一次版本
A
@artemisln

已收录 1 个 Skill

相关推荐