mcpField
S
screenkite-transcription-cut

screenkite-transcription-cut

github.com/screenkite创意与媒体3876 次安装10 周前更新
代码仓库

关于 screenkite-transcription-cut

一项 ScreenKite 编辑技能,通过麦克风转录文本定位并删除录音中的静音片段。执行破坏性剪切前,必须先试运行审阅并获得用户确认。

主要功能

  1. 01转录麦克风音频
  2. 02计算静音剪切区间
  3. 03支持试运行审阅
  4. 04通过 ScreenKite 应用剪切
  5. 05验证编辑并支持撤销

适用场景

  1. 01删除录音中的长时间停顿
  2. 02编辑前审阅建议剪切内容
  3. 03移除静音后检查时间线
  4. 04撤销错误剪切

安装

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

$npx skills add https://github.com/screenkite/awesome-ai-video-editing --skill screenkite-transcription-cut

安装后在 Claude Code 中输入/screenkite-transcription-cut确认已加载。

附带文件scripts/apply_cuts.pyscripts/compute_silence_cuts.py

详细介绍

screenkite-transcription-cut

根据麦克风转录内容,从 ScreenKite 录制中移除静音片段。

前提条件

  • screenkite CLI 位于 /usr/local/bin/screenkite。
  • bundle 目录及其上级目录中的某个 .env 文件包含 ELEVEN_LABS_API_KEY(带下划线)。
  • PATH 中有 ffmpeg。
  • 有 python3 和 requests(pip install requests)。

阶段 1 — 打开项目

/usr/local/bin/screenkite agent project open \
  --path '<absolute-path-to.skbundle>' --json

确认项目是最新的:

/usr/local/bin/screenkite agent project current --json

阶段 2 — 转录麦克风音频

麦克风音频位于 <bundle>/media/microphone_*.m4a。

python3 scripts/transcribe_mic.py \
  '<bundle>/media/microphone_<name>.m4a' \
  --edit-dir '<bundle-parent>/<slug>-edit' \
  --language en \        # or zho, auto-detect if omitted
  --num-speakers 1
# Output: <edit-dir>/transcripts/<stem>.json  (word-level, cached)

该脚本是 ElevenLabs Scribe 的轻量封装。如果 JSON 已存在,重新运行不会执行任何操作。

阶段 3 — 计算静音剪切范围

python3 scripts/compute_silence_cuts.py \
  '<edit-dir>/transcripts/<stem>.json' \
  --min-silence 0.8 \       # seconds — gaps shorter than this are kept
  --pad 0.15 \              # seconds to keep at each edge of the gap
  --output '<edit-dir>/cuts.json'

应用前检查 cuts.json。其中列出了按开始时间排序的 [{start, end, gap_s}, ...]。 如果剪切过多或过少,请调整 --min-silence。

典型值:

  • 0.5s — 较激进,可捕捉较短的换气停顿
  • 0.8s — 平衡的默认值
  • 1.5s — 较保守,只剪切明显的静音片段

阶段 4 — 空运行审查(首次运行必须执行)

python3 scripts/compute_silence_cuts.py \
  '<edit-dir>/transcripts/<stem>.json' \
  --min-silence 0.8 --pad 0.15 \
  --dry-run          # prints human-readable table, no file written

向用户展示表格。确认剪切数量和最长间隔看起来合理。 在用户确认前,不要应用剪切。

阶段 5 — 应用剪切

/usr/local/bin/screenkite agent tool call \
  --name editTimeline \
  --input-json "$(python3 scripts/compute_silence_cuts.py \
      '<edit-dir>/transcripts/<stem>.json' \
      --min-silence 0.8 --pad 0.15 --emit-tool-input)" \
  --json

--emit-tool-input 会输出 {"action":"cut","parameters":{"ranges":[...]}}。

或者直接传入已保存的 cuts.json:

python3 scripts/apply_cuts.py '<edit-dir>/cuts.json'

apply_cuts.py 会读取 cuts.json,调用 ScreenKite CLI,并打印工具返回的更新后片段数量。

阶段 6 — 验证

/usr/local/bin/screenkite agent tool call \
  --name getProjectState --input-json '{"scope":"summary"}' --json

检查 duration 是否缩短了大约相当于间隔总秒数的时长。在 ScreenKite 中拖动时间轴进行抽查。

如果剪切有误:执行 editTimeline action=undo(每个错误剪切重复一次)。

反模式

  • 绝不要跳过空运行。 cut 会造成不可逆更改,且撤销操作一次只能撤销一步。
  • 不要为此使用 B-roll 技能。 该技能使用 setSceneLayout,不会移除内容。
  • 不要将 --min-silence 设为低于 0.3s。 少于 300ms 的间隔通常不是真正的静音,剪掉后会显得卡顿。
  • 不要在打开项目之前剪切。 未打开当前项目时调用 CLI 会静默失败。

评论

支持 Markdown