# Zmm Cut

> 📐 詹明明·口播剪辑 ——口播成片剪辑技能。把拍好的素材剪成可发布的成片：**按文案规则做内容层重组**（删废镜头/去重复/重排顺序）→ 语音剪辑（去口癖/停顿）→ 加速 → 字幕 → B-roll → 交付。 🔴 **只删和重排，不加词** —— 说话人没说过的话一个字都不加。 詹明明账号的默认参数已固化（抖音 · 保持原长 · 1.15× · HarmonyOS Sans 粗体字幕 · 黄色 #FFE20A 高亮），**不需要每次重说**；换账号只改 §一 那张表，正文流程不变。 检测不到 ChatCut 会引导安装，并给出**本机转写旁路** —— 内容层的活全部不需要 ChatCut。 触发方式：/zmm-cut、/剪辑、/剪片、/zmm-剪、「把这条剪出来」「素材剪成成片」「去口癖」「加字幕」「这条视频剪一下」「重新排一下顺序」 Talking-head footage → publishable cut. Restructures content by copy rules (delete/reorder only, never add words), then cleans speech, speeds up, captions, B-roll. Falls back to local transcription when ChatCut is unavailable. Trigger: /zmm-cut, "cut this footage", "clean up the fillers", "add captions", "reorder this" —— 📐 詹明明 · 不给公式，给判据。每条规则都标了实测代价。

- Skill: `iamzifei/zmm-cut` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add iamzifei/zmm-cut`
- Raw SKILL.md: https://api.skillmd.com/api/skills/iamzifei/zmm-cut/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: iamzifei (https://skillmd.com/u/iamzifei)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/iamzifei/zmm-cut

---


# zmm-cut：口播成片剪辑

> **它管的是「拍完之后」。** 拍之前的选题、写稿、审核归 `/zmm-topic` `/zmm-script` `/zmm-review`。
>
> ## 🔴 边界：只删和重排，不加词（2026-09-05 说清楚）
>
> 这里只处理**他实际说出来的那一版**。在那一版之内：
>
> | ✅ 能做 | ❌ 不能做 |
> |---|---|
> | 删（废镜头、重复、水词、行话、断尾） | **加**任何他没说过的词 |
> | **重排**（容器层调顺序、把结果提到最前面） | 顺句子、改语序、替换措辞 |
> | 把补拍并进原素材 | 重排他推导结论的那一段（见 `references/内容层重组.md` §二.3） |
>
> ⚠️ **「本技能不改文案」的意思是不加词，不是不许动。**
> 按文案规则做删除和重排，**正是这个技能的主战场**。

## 〇、启动顺序（不要跳）

1. 🔴 **先探环境，再决定怎么走**（2026-09-05 订正）：
   - **有 ChatCut 插件版前置技能的宿主** → 先加载它，**不要和 ChatCut 工具调用打包在同一轮**
   - **Desktop MCP 直连**（工具名形如 `chatcut_desktop/*`）→ **没有那个前置技能**，
     按服务端要求先跑一次只读定位（`get_active_project`）确认目标工程
   - **一个都没有 / 报 signed out** → 走 `references/ChatCut实操.md` §一 的**降级路径**：
     告知下载 + **本机转写旁路**（内容层的活全部不需要 ChatCut）
2. `chatcut-talking-head-guide` —— 口播剪辑的执行规范
3. 读 `zmm/references/家族公约.md`（读不到 → 明说「公约读不到，红线无法保证」并停下）
   + `zmm/references/交互规范.md`（🔴 **不是读一遍就算**：收尾按 §四 三件套 —— Recap · Before/After · **下一步给编号选项**；缺信息按 §四 用**选择题**问，**一次只问一个**；不适用的情况见 §五）
4. 读 `{vault}/00-规则与索引/口播拍摄基线.md`（时间/地点/穿着一次定死）
5. 读记忆 `{vault}/08-技能记忆/zmm-cut/` + `_通用/`
6. 🔴 **要动内容（不只是去口癖）时**，读 `references/内容层重组.md`
7. 🔴 **第一次调 ChatCut 工具前**，读 `references/ChatCut实操.md`（三个实测踩过的工具坑）
8. 🔴 **剪完之后必须回到 `口播稿输出格式.md` §四之下「上传版」** —— 见本文 §五

本技能内置判据在 `references/规则卡.md`（判据 / 为什么 / 怎么查 / 强度），开工前读一遍；`{vault}` 里有对应的规则文件时以 vault 为准、规则卡为底。

⚠️ **按需读，不要一次读完。** 本技能只在「拍完 → 成片」这一段，
不需要读选题层和写稿层的文件。

---

## 一、账号默认参数（🔴 已固化，不要再问用户）

> 🟢 詹明明 2026-08-27 定。**这些是默认值，不是每次都要确认的问题。**
> 用户没有说要改，就直接用；用户说了别的，以用户当次说的为准。
>
> ⚠️ **下表是「这一个账号」的实测值，不是通用推荐。**
> 有 `config` 就**从 `config` 读**；读不到就用下表，并**说明用的是示例值**。
> 换账号 / 换题材时，正文流程照走，**只换这张表**。

| 项 | 默认值 |
|---|---|
| **平台** | 抖音（竖屏 9:16） |
| **成片时长** | **保持原长** —— 不为了短而砍内容（判据是绝对观看时长不是完播率） |
| **整体速度** | 🔴 **1.15×**（在语音剪辑**之后**统一加速，不是逐段调） |
| **默认处理** | ① **语音剪辑**（去口癖、停顿、重复）② **字幕** |
| **默认不做** | B-roll · MG 动画 · 背景音乐 —— **用户明确要才做** |
| **节奏风格** | **紧凑有力** |

### 字幕规格（🔴 已固化）

| 项 | 值 |
|---|---|
| 字体 | **HarmonyOS Sans 粗体** |
| 描边 | **轻微** |
| 阴影 | **有，轻** |
| 整体观感 | 干净现代 |
| **高亮** | ★ **有**，颜色 **黄色 `#FFE20A`** |
| 🔴 **高亮关键词谁选** | **用户自己选。** 出稿时给候选，**不要替他定** |

---

## 二、工作流（七步，每步之间必须停）

> 🔴 `talking-head-guide` 硬规则：**多个处理之间有依赖，必须按顺序定稿，且每一大步之后单独跟用户确认，不许把多个 checkpoint 打包成一条回复。**
> 上游改了，下游全部要重做（字幕对着加速前的时间轴写 = 全废）。

```
⓪ 素材清点与合并 → 停，说清有几条素材、哪条是补拍、要不要合并
① 素材进项目     → 停，确认转录出来了
② 语音剪辑       → 停，确认「他实际说的」这一版对不对
③ 整体加速       → 停，确认节奏（倍速见 §一）
④ 字幕 + 高亮     → 停，让用户选高亮关键词
⑤ 交付           → 只有用户明确说要导出/下载才导
⑥ 导出后验文件本身 → 抽帧确认字幕/B-roll/打码都烧进去了
```

### ⓪ 素材清点与合并（2026-09-05 加）

**技能原来默认只有一条素材。实际经常是两条以上**（原片 + 补拍、多机位、多次录）。

- 先**逐条转写**，分开读，**不要一上来就拼**
- 说清**哪条是主素材、哪条是补拍**，补拍要**盖在哪一段**
- 🔴 **补拍进来就必须做「逐字重复扫描」** —— 见 `references/内容层重组.md` §二.2
- 合并**按新顺序排**，不是把补拍接在末尾

### ① 素材进项目

- 先 `list_projects` / `create_project` / `target_project` 定下项目，**再做别的**
- 项目一建好**立刻**把编辑器亮出来（`preview_start`），让用户能看着进度
- 素材有三条路进来：用户在编辑器里直接传 · 会话里给了本地路径（走 `asset-import`）· 用户已经传好了（先 `browse_assets` 找，**不要上来就说找不到**）
- **等转录出来就可以开工**，不用等原始字节传完（A-roll 只要文字稿）

### ② 语音剪辑（本技能的主战场）

> 🔴 **这一步分两层，不要混着做：**
> **机械层**（固定口癖、批量停顿）不需要理解意思，工具能做；
> **内容层**（哪些留、哪些删、哪些换位置）**必须理解意思**，判据在 `references/内容层重组.md`。
>
> ⚠️ **只做机械层 = 只是把片子擦干净，没有改善它。**
> 用户说「剪一下」通常两层都要，**但内容层的每一处删改都要说清理由**。

严格按 `talking-head-guide` 的 A-roll 流程：

1. `read_script` → 读一遍 `timeline.md`，看清结构
2. **先跑机械清理**（`clean_script`）：只处理固定口癖（呃/额/嗯）和长停顿
3. 🔴 **跑完必须重读刷新后的 `timeline.md`** —— 之前读的已经过期
4. 再做**内容层**判断 —— 按 `references/内容层重组.md` 的五条判据走：
   识别废镜头 · **逐字重复扫描**（补拍必做）· 推理链不许为悬念重排 ·
   开场要同时有钩子和共鸣 · 删之前问「删掉之后还讲得清楚吗」
5. `apply_script` 落到时间轴
6. 读回来检查：**接缝逻辑**（缺不缺一座桥）· 前后一致性 · **相对时间还成不成立** ·
   结尾完不完整 · 停顿是不是太紧

#### 🔴 这个账号特有的三条，别按通用规则剪掉

| 保留 | 为什么 |
|---|---|
| **口语噪声**（呢 / 啊 / 哈 / 叠词 / 口误式重复） | 规则 **每一句都工整 = 观众一秒听出在念稿**。<br>⚠️ 通用的「去口癖」会把这些一起清掉 —— **每 5–8 行留一处是设计好的，不是失误** |
| **邀请自查的插入句**（「你仔细想想」「不知道你们有没有这种时候」） | 规则 它带一个动作指令，不是填充词 |
| **限定词**（多半 / 很多时候 / 可能才是） | 规则 不许改成绝对化 |

🔴 **判据**：这个词删掉之后，**这句话是变干净了，还是变得像稿子了**？变得像稿子 = 别删。

#### 停顿口径

- 明显长停顿（>0.8–1s）→ 压到约 0.3s
- **句子之间保留 0.3–0.5s** —— 别压没了
- **转折、对比、强调处的停顿要留住**，那是设计好的（稿子里标了 ⏸⏸ 的地方）
- 句内正常呼吸 → **不动**

### ③ 整体加速 1.15×

🔴 **必须在语音剪辑定稿之后做**，顺序反了字幕全部要重来。
统一加速，**不是逐段调速** —— 逐段调会让语调忽快忽慢。

### ④ 字幕 + 高亮

按 `talking-head-guide` 的 captions 规范，套 §一 的固化规格。

🔴 **高亮关键词不许我替他定。** 做法：
1. 通读字幕，挑出**每 8–12 秒一个**的候选关键词（挑判断句、数字、转折词、落点句里的核心词）
2. **列出来给用户选**，标清在第几秒、原句是什么
3. 用户勾完再上高亮

⚠️ **不要整句高亮** —— 高亮的作用是让眼睛在滑动中停一下，整句高亮等于没高亮。

### ⑤ 交付

🔴 **默认交付的是「可编辑的 ChatCut 时间轴」，不是 MP4。**
只有用户明确说**导出 / 渲染 / 下载 / 最终交付**才走 `submit_export` → `track_export`。
**「剪一下」「清理一下」「做个版本」都不算导出意图。**

---

## 二b、🔴 验收纪律：元数据会说谎（2026-09-05 加，实测三次）

> **行数、文字、画面，只能以全尺寸渲染帧为准。**

| 骗过的 | 实际 |
|---|---|
| 字幕接口报「一行、不溢出」 | **渲出来折了两行** |
| 多宫格缩略图里看着字错了 | **全尺寸单帧证明是看错了** |
| 工具回执报「清理了 1 个词」 | **时间轴实际少了 4.9 秒** |

**每一大步之后固定验两样**：
1. **数字** —— 帧数 / 时长 / 段数，和预期对不对得上
2. **画面** —— 渲**全尺寸**帧，**不看缩略图下结论**

⚠️ 缩略图只用来做「挑哪一帧」的粗筛。
详见 `references/ChatCut实操.md` §三。

---

## 三、红线（剪辑环节独有）

| | 规则 |
|---|---|
| **不改内容** | 稿子拍摄时已定稿。剪辑只删不加，**不许替他补话、顺句子、改语序** |
| **画面信息点** | 穿搭 / 桌搭 / 背景 / 墙上装饰都是信息点。**剪的时候别把有信息的画面剪掉** |
| **不上 AI 截图** | 讲 AI 那一段的画面**不要配 AI 界面截图** —— 会把人群窄掉（`不要变成工具号`） |
| **打大字的位置** | 稿子的「需要处理的点」里标了 ⏸ 打大字的行，**剪辑时要对上** |
| **金额打码** | 任何出现后台数据/收款/客户信息的画面一律打码 |

---

## 四、说给谁听

**单人自采自编。** 拍摄、剪辑、发布都是他一个人：

- 方案要能一个人执行完，不假设有剪辑师
- 直接给判断和动作，不写「供参考」
- 零术语：不说「A-roll」，说「他说话那条主轨」；不说「ripple」，说「后面的会跟着往前挪」

---

## 五、🔴 剪完必须回填（这一步最容易漏）

**成片发出去之后，把实际播出的文字稿转录回来，写进稿件的「上传版」那一节。**
规范见 `{vault}/00-规则与索引/口播稿输出格式.md` §四之下「上传版」。

三块，缺一不可：
1. **上传版全文**（代码块 + 行号 + 气口）—— 🔴 只改 ASR 听错的专名和错别字，**不改语序、不补顺句子**
2. **差异表**（文案版 vs 他实际说的）—— 类型只用五个：加 / 删 / 改措辞 / 换结构 / 调顺序
3. **从差异提炼的规则 → 入库**

> 🔴 **为什么不能省**：稿子是写的，播出版是他说的。
> **两者之间每一处差异，都是他用嘴投出来的一票** —— 那是这个系统里最诚实的反馈。

⚠️ **例外**：差异表里「**改措辞**」那一栏**不适用「默认他的更好」**——
口述比写作更容易临场钝化。**凡 AI 版更锋利的，单独标出来问。**

---

## 六、绝对不做

- 不在没探清环境的情况下就调 ChatCut 工具（见 §〇.1）
- **不用 `apply_script(preview:true)` 当只读预览** —— 它会报错的同时**部分提交**
- **不在改完字幕字号/框宽后复用旧的 Card id** —— 会重新分页，id 是内容哈希
- **不拿工具回执和元数据当验收依据** —— 见 §二b
- **不编 ChatCut 的功能、路径、价格、版本号** —— 会变的产品事实要去查官方 Docs 当前页
- 不把多个 checkpoint 打包成一条回复
- **不自作主张加背景音乐 / B-roll / MG / 转场** —— 用户没要就不做
- **不替用户选高亮关键词**
- 不用本地 ffmpeg 压一个拍平的 MP4 当主交付物（ffmpeg 只用于只读检查源文件）
- 不因为「剪一下」就去导出

---

## 七、记忆

结束前自查：
- 用户否了哪种剪法（记「纠正」，例：「口语噪声不许清」）？
- 哪个参数被实测验证有效（记「有效方法」，带数值）？
- **踩到了工具的哪个坑**（记「纠正」，**带取证方法**：怎么发现的、怎么证伪了错误猜测）？

写入 `{vault}/08-技能记忆/zmm-cut/`，**先查重**。

---

不知道下一步 → 回 `/zmm`。

