关于 screenkite-transcription-cut
一项 ScreenKite 编辑技能,通过麦克风转录文本定位并删除录音中的静音片段。执行破坏性剪切前,必须先试运行审阅并获得用户确认。
主要功能
- 01转录麦克风音频
- 02计算静音剪切区间
- 03支持试运行审阅
- 04通过 ScreenKite 应用剪切
- 05验证编辑并支持撤销
适用场景
- 01删除录音中的长时间停顿
- 02编辑前审阅建议剪切内容
- 03移除静音后检查时间线
- 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 录制中移除静音片段。
前提条件
screenkiteCLI 位于/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