# Oracle Apprentice

> 拜师拆稿——分析对标博主/想学的稿子的撰写方式与表达方法（钩子/节奏/金句/结构/术语落地/互动设计），用四步闭环（复述→重建→迁移→实践）内化成自己的手艺。与 oracle-learn-from 互补：learn-from 拆账号级统计信号，apprentice 拆单条稿的写法（手艺层）。支持视频转录（走 adapters/script-extraction）或手动粘稿。触发词："拜师"/"拆这条稿"/"学这个博主的表达"/"他是怎么写的"/"apprentice"。

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

---


# /oracle-apprentice — 拜师拆稿（四步闭环版）

## 解决什么问题

看 100 条爆款也写不出 1 条——因为"看"只是浏览，只给对方贡献播放量。答案：**复述 → 重建 → 迁移 → 实践** 四步闭环，把"别人的爆款"变成"自己的手艺"。

**与 oracle-learn-from 的分工**（不要混用）：

| | learn-from | apprentice（本 skill） |
|---|---|---|
| 拆什么 | 账号级：5-10 条样本 + 数据 → rubric 权重信号 | 单条/单博主：文稿撰写方式 + 表达方法 |
| 产出 | benchmark.md / rubric 信号 | study/<博主>/ 拆解档案 + 知识卡片 |
| 层次 | 统计层（什么类型数据好） | 手艺层（钩子怎么埋、节奏怎么切、金句怎么落） |
| 时机 | cold-start 建基线 / 季度 sanity check | 随时——刷到值得学的稿子就拆 |

## 核心理念

1. **四步成长闭环**：复述（自己说出讲了什么，不收藏不代劳）→ 重建（质疑纠偏+补全两面性）→ 迁移（结合自己情况形成知识卡片）→ 实践（最小验证，多版迭代）
2. **框架学习法**：任何概念过四问——定义（是什么/区别于什么）、机制（背后原理）、边界（适用/不适用）、操作（具体怎么做）
3. **两句话最小动作**：看完写两句——这条在讲什么？为什么？写不出 = 找到卡点 = 进步起点。生成效应：自己写的才记得住

## Constants

- **MIN_VIDEOS_PER_MASTER = 3** — 单博主至少拆 3 条才出"表达方法"结论（<3 只出单条拆解不出博主总结）
- **OUTPUT_ROOT = 项目根 `study/`**（learn-from 的 samples 也在 study/ 下，互不冲突：`study/<博主名>-apprentice/`）
- 视频转录走 `adapters/script-extraction/transcribe.py`（专属 `.venv`：faster-whisper + yt-dlp nightly + curl-cffi TLS 拟真；模型按 adapter README 预下载到 `models/faster-whisper-<档位>/`）。**平台范围：B站 / 小红书 / 抖音 / 知乎（视频回答）支持 URL；视频号无提取器走本地文件/粘稿；知乎纯文字直接复制**。**手动粘稿是零依赖主路径**——转录管线不可用不阻塞
- state 补充字段 `apprentice_masters: []`（拆过的博主，防重复从零拆）

## Workflow

```
[用户：拆这条稿 / 拜师 X]
  ↓
[Phase 0: 预检（转录管线可用性 + apprentice_masters 增量）]
  ↓
[Phase 1: 输入分流] URL → 转录 | 粘文稿 → 直达 | 只有博主名 → 问拆哪条
  ↓
[Phase 2: 两句话复述确认（硬约束：AI 只起草，最终版是用户的）]
  ↓
[Phase 3: 拆解——框架四问 × 表达六件套]
  ↓
[Phase 4: 重建——质疑纠偏 + 补全（每条必有可质疑处）]
  ↓
[Phase 5: 迁移——知识卡片（必须落到用户某轨）]
  ↓
[Phase 6: 落盘 + 登记]
```

### Phase 0: 预检

- 检查转录管线：`.venv` 存在 + ffmpeg 在 PATH + `models/faster-whisper-*/` 已下载（按 adapter README）——任一缺失**不阻塞**，降级手动粘稿
- 读 state 的 apprentice_masters：该博主拆过 → "X 已拆过 N 条，这次是追加"，读旧档案做增量

### Phase 1: 输入分流

- **URL** → 转录管线拉稿（字幕轨优先，无字幕走 whisper）：
  `adapters/script-extraction/.venv/Scripts/python.exe adapters/script-extraction/transcribe.py <url> --out study/<博主名>-apprentice/<标题>/`
  五平台分流（详见 adapter README「五大平台支持」）：B站/知乎直接跑；**抖音/小红书先让用户登录浏览器再加 `--cookies-from-browser chrome`**（TLS 拟真与请求间隔自动加）；视频号 URL → 引导用户手机导出/录屏走本地文件，或粘稿
  （macOS/Linux 用 `.venv/bin/python`；转录完 transcript.md 已在作品目录——**落盘即完成**）
- **粘文稿** → 直接 Phase 3，问一句博主名（记档案用）
- **只有博主名** → "先拆哪条？给我 URL 或粘稿"（**一次一条**——学深不学多）

### Phase 2: 两句话复述确认

拿到稿子**先不拆**——AI 起草两句话给用户确认：

```
这条在讲：[AI 起草的一句]
为什么值得讲/它的答案：[AI 起草的一句]

——这两句是我的复述草案。规矩：复述必须自己来。
a) 直接认 b) 改写后发我 c) 自己重写两句发我。
确认后我再开始拆表达方法。
```

**🔴 硬约束**：用户没确认前不进 Phase 3。复述的最终版本必须是用户的——AI 代劳 = 白看（生成效应没了）。

### Phase 3: 拆解——两层

**第一层：框架四问**（内容骨架）

| 问 | 拆什么 | 输出 |
|---|---|---|
| 定义 | 讲什么概念？和相邻概念的区别？ | 一句话定义 |
| 机制 | 为什么这样写有效？钩子→留存→信任的因果链 | 因果链 |
| 边界 | 适用什么场景/不适用？（时长/赛道/人设阶段） | 边界清单 |
| 操作 | 可复制的具体动作？（句式/结构/数字用法） | 步骤 |

**第二层：表达六件套**（手艺）

| # | 拆什么 | 典型证据 |
|---|---|---|
| 1. 钩子 | 前 5 秒用了什么？命中哪几个方向（预期违背/自我参照/信息缺口/冲突/身份反差/利益承诺） | 首句原文 |
| 2. 结构 | 时间线/三段/案例驱动？段落怎么切 | 结构图 |
| 3. 节奏 | 长短句怎么配？铺垫→反差→包袱落点？信息密度峰值在哪 | 节奏标注 |
| 4. 金句 | 可复述句在哪？句式模板是什么 | 金句原文 + 句式抽象 |
| 5. 术语处理 | 专业词第一次出现怎么落地（大白话/类比/数字） | 落地手法 |
| 6. 互动设计 | 评论区怎么设计的？触发器类型 | 互动手法 |

**钩子拆解加做一步（原型归类）**：对照 [references/hook-prototypes.md](../../references/hook-prototypes.md) 把首段推进方式归类——命中哪个原型（或混了哪两个）、起手证据是什么、问题压缩到多窄。归类结果写进知识卡片，并标注该原型在用户自己的哪轨适用。

输出含"值得偷的 3 样东西"（每样附"怎么偷——用到你的哪轨哪段"）。

### Phase 4: 重建——质疑纠偏（硬约束）

AI 主动指出这条稿的**可质疑处**（不是拆完就拜）：
- 逻辑漏洞/以偏概全处
- 它没讲的另一面（适用前提略过了什么）
- 换到用户的赛道/人设会不会失效（边界检验）

"这三处质疑你同意几处？**反驳也算**——反驳说明你有自己的判断"（重建 = 质疑纠偏 + 补全，判断权在用户）。

### Phase 5: 迁移——知识卡片（核心产出）

```markdown
## 知识卡片：<手艺名>（学自 <博主>）

**背景**：<这套方法的来源场景>
**用法**：<具体怎么用——对应用户 content-plan 哪一轨、哪一段（钩子/主体/收尾）>
**反例**：<什么情况下这么做会翻车>
**边界条件**：<时长/赛道/人设阶段的前提>
**个人理解**：<用户在 Phase 4 的判断/反驳，原话记录>
**实践登记**：<最小实践动作——下一条 draft 的具体尝试点>
```

**硬约束**：卡片必须落到用户内容规划的某轨。"通用技巧"不存在——钩子技巧不标轨道适用性就不出卡片。

### Phase 6: 落盘 + 登记

**产出侧失败分支**（拆解/重建/迁移环节的"如果 X 失败 → Y"）：

| 如果 | 则 |
|---|---|
| 用户对质疑全部反驳 | 正常——原话记录进卡片「个人理解」，不硬塞共识（有自己判断正是目的） |
| 拆不出「值得偷的 3 样」 | 如实报"这条稿与你轨道距离远"，不硬凑——学不深就换下一条 |
| content-plan / 轨道信息缺失，卡片无处落 | 停止出卡片——先跑 /oracle-init 补规划；不落轨的卡片不出 |

```
study/<博主名>-apprentice/
├── {视频标题}/
│   ├── transcript.md      ← 转录/粘贴的全文（Phase 2 后立刻落）
│   └── analysis.md        ← Phase 3+4+5 全文
└── <博主名>_INDEX.md      ← 博主级总结（拆满 3 条才写：惯用钩子/结构/金句风格 + 已拆清单）
```

state 的 apprentice_masters 登记（博主名 + 条数 + 日期）。**不写 benchmark.md / rubric_notes.md**——那是 learn-from 的地盘，不越界。

## Key Rules

1. **复述必须用户确认**——AI 只起草两句话（Phase 2 硬约束）
2. **质疑是拜师的一部分**——每条必出"可质疑处"，找不到 = 没拆透（Phase 4 硬约束）
3. **知识卡片必须落到某轨**——无轨道标签不出卡片（Phase 5 硬约束）
4. **一次一条**——不囤积
5. **博主结论门槛 3 条**——<3 条只出单条档案
6. **转录管线降级不阻塞**——手动粘稿是主路径

## Pitfalls

- ❌ AI 替用户复述并跳过确认 → 复述的意义是生成效应，代劳 = 白看
- ❌ 拆解变吹捧文——每条必有可质疑处
- ❌ 卡片写成"通用写作技巧大全"——不落到用户轨道的卡片没法实践，等于没迁移
- ❌ 和 learn-from 混用——同一输入又要权重又要手艺，两个都浅；先想清楚这次要什么
- ❌ 转录产物留在临时目录——Phase 2 跑完立刻落盘 study/

## Examples（钩子拆解示范：六件套 #1 + 原型归类怎么拆）

> 拆一条对标稿的开场，输出应长这样（示意，不照抄结论）：

```
【钩子拆解】
首句原文："我们花了四位数，买下了街边一块千年神鳖。"
· 起手证据：价格数字 + 真实交易物，第一秒全是名词没有形容词
· 钩子方向：③ 信息缺口（千年神鳖是什么？）+ ⑤ 身份反差（谁会花四位数买这个）
· 原型归类：现场纪实破局（真实交易现场 → 亲身经历共鸣 → "这到底是不是骗局"的追问）
· 问题压缩度：窄——不是"街头骗局面面观"，是"这一只神鳖到底是不是骗局"
· 可迁移骨架：真实交易现场 + 具体价格前置 + 身边人经历共鸣 → 适用于我的转化轨（真实咨询案例开场）
```

拆解要点：证据引用原文（不转述）、归类给出理由、迁移落到具体轨道——三样缺一就是没拆透。

## Refusals

- 「跳过复述直接开始拆」 → 拒绝进 Phase 3。复述的最终版必须是用户的——AI 代劳 = 白看（Phase 2 硬约束）；用户赶时间 → 两句话草案直接认（选 a）也算
- 「只讲这条稿好在哪，别说它的问题」 → 拒绝。每条必有可质疑处是拜师的一部分（Phase 4 硬约束）——想纯夸去写推荐语，不叫拆稿
- 「给我一份通用写作技巧总结就行，不用落到我的轨道」 → 拒绝出卡片。无轨道标签的卡片没法实践（Phase 5 硬约束）；轨道信息缺失 → 先跑 /oracle-init 补规划
- 「一次拆 5 条攒着慢慢学」 → 拒绝。一次一条——学深不学多；攒量走 learn-from 批量导数据

## Integration

- 上游：用户随时触发；oracle-retro 发现"钩子弱"时可建议"去 apprentice 拆 3 条钩子强的对标"
- 下游：知识卡片的"实践登记"指向下一条 draft → oracle-seed 写稿时读相关卡片提醒"你学过 X 的钩子手法，这条可以用"
- 与 learn-from 接力：同一博主先 apprentice 3 条学写法，再 learn-from 批量导数据

