con un clic
podcastcut-edit-raw
粗剪播客。根据审查稿删除标记执行句子级FFmpeg剪辑。触发词:粗剪、句子级剪辑、rough cut
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
粗剪播客。根据审查稿删除标记执行句子级FFmpeg剪辑。触发词:粗剪、句子级剪辑、rough cut
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
使用 browser-use CLI 对 PodcastCut webapp 做浏览器验收。始终使用 headed 模式,覆盖打开页面、登录、上传指定音频、触发生成审查稿、刷新审查稿、手动标记删除、确认剪辑、核对 workspace 产物。触发词:browser validation、浏览器验证、用 browser-use 跑流程、上传音频验收
生成播客审查画布数据。根据当前工作区中的音频、转录、QA 报告和剪辑结果, 产出固定格式的 review_data.json,供右侧审查画布直接读取。 触发词:审查画布、review data、审查稿、生成播客审查
语音克隆 + 播客生成完整流程。 上传音频 → 转录 → 修正文稿 → 提取声音样本 → 克隆声音模型 → TTS 合成 → 合并成品音频。 全自动执行,无需用户逐步操作。 触发词:语音克隆、声音克隆、生成播客、克隆声音
音频剪辑。根据 delete_segments.json 删除指定片段,自适应淡入淡出,可选说话人音量对齐。触发词:剪辑、cut、编辑音频
将当前 webapp 发布到 Fly.io,并在发布前后做最小健康检查。 适用于前端或后端改动后的一键上线。触发词:deploy、发布、上线、推到 fly、fly.io
使用 browser-use CLI 对 webapp 做端到端验证。覆盖登录、上传音频、生成 review_data.json、刷新审查稿、手动标记删除、确认剪辑、验证 podcast_cut.mp3。触发词:browser e2e、端到端验证、验证网页剪辑、用浏览器跑流程
| name | podcastcut-edit-raw |
| description | 粗剪播客。根据审查稿删除标记执行句子级FFmpeg剪辑。触发词:粗剪、句子级剪辑、rough cut |
遍历 transcript 每个句子 → 检查是否在删除标记中 → 整句删除
用户: 按这个审查稿粗剪 /path/to/podcast_审查稿.md
用户: 粗剪,输出到 /path/to/output
| 场景 | 说明 |
|---|---|
| ✅ 删大段内容 | 寒暄、跑题、隐私、啰嗦 |
| ✅ 删整句 | 句子级时间戳足够精确 |
| ❌ 删半句/口误 | 用 /podcastcut-edit-fine 或 /podcastcut-transcribe |
# 从 transcript 出发,检查每个句子是否需要删除
for sentence in transcript['sentences']:
if normalize(sentence['text']) in 审查稿删除标记:
删除这个句子
为什么从 transcript 出发?
~~删除标记~~ 中1. 加载审查稿,提取所有 ~~删除标记~~
↓
2. 加载 transcript.json(句子级时间戳)
↓
3. 遍历每个句子,检查是否在删除标记中
↓
4. 合并连续删除 → 计算保留片段
↓
5. 生成 FFmpeg filter → 执行剪辑
↓
6. 输出 podcast_v2.mp3/mp4
def is_sentence_deleted(sentence_text, deletions):
"""检查句子是否应该删除"""
text_norm = normalize(sentence_text) # 移除空格标点
# 句子出现在任一删除标记中 → 删除
for deletion in deletions:
if text_norm in normalize(deletion):
return True
return False
标准化:移除空格、标点后比较,避免格式差异导致不匹配。
一键完成粗剪全流程。
python scripts/rough_cut.py <工作目录> <输入音频> [输出音频]
示例:
python scripts/rough_cut.py \
"/Volumes/T9/podcast/v5" \
"/Volumes/T9/podcast/原始音频.mp3"
输入:
podcast_审查稿.md - 带删除标记的审查稿podcast_transcript.json - 句子级时间戳输出:
podcast_删除清单.json - 删除的句子列表keep_segments.json - 保留片段列表filter.txt - FFmpeg filter 脚本ffmpeg_cmd.sh - FFmpeg 完整命令<工作目录>/
├── podcast_v2.mp3 # 剪辑后音频
├── podcast_删除清单.json # 删除时间段列表
├── keep_segments.json # 保留片段列表
├── filter.txt # FFmpeg filter 脚本
└── ffmpeg_cmd.sh # FFmpeg 完整命令
ffmpeg -y -i input.mp3 \
-filter_complex_script filter.txt \
-map "[outa]" \
-c:a libmp3lame -q:a 2 \
output_v2.mp3
ffmpeg -y -i input.mp4 \
-filter_complex_script filter.txt \
-map "[outv]" -map "[outa]" \
-c:v libx264 -crf 18 -c:a aac \
output_v2.mp4
用户: 按审查稿粗剪 /path/to/podcast_审查稿.md
AI: 好的,开始粗剪...
1. 加载审查稿: 144 处删除标记
2. 加载 transcript: 3376 句
3. 匹配删除: 296 个句子
4. 合并后: 137 个删除块
5. 生成 FFmpeg 命令并执行
结果:
- 原始时长: 2:08:07
- 剪辑后: 1:57:54
- 删除: 10:13
| 对比 | 粗剪 (本 Skill) | 精剪 (/podcastcut-edit-fine) |
|---|---|---|
| 时间戳 | 句子级 | 字符级 |
| 最小单位 | 整句 | 单字 |
| 适用 | 删大段内容 | 删口误、语气词 |
| 输入 | podcast_transcript.json | podcast_transcript_chars.json |
len < 2 跳过,导致没删掉if len(text_norm) == 1:
text_norm == del_norm # 精确匹配,避免误删
else:
text_norm in del_norm # 包含即可
/podcastcut-edit 拆分出来/podcastcut-edit-fine 处理