# Voice Profile Extraction

> 從使用者本人或已獲授權的寫作樣本萃取可追溯、可驗證的 voice profile。當使用者覺得 AI 文案不像自己、太像通用 AI 腔，想從舊貼文建立可重複使用的語氣規則，或要更新既有 voice profile 時使用。輸入是含情境、授權與隱私標記的樣本清單（建議 9–15 篇萃取樣本，另留 2–3 篇 holdout）；輸出是含核心 prompt、9 維度規則、證據表、反指紋、holdout 結果與版本紀錄的 `voice-profile.md`。

- Skill: `coolkidlab-yin/voice-profile-extraction` (Agent Skill)
- Install (CLI): `npx skillmds@latest add coolkidlab-yin/voice-profile-extraction`
- Raw SKILL.md: https://api.skillmd.com/api/skills/coolkidlab-yin/voice-profile-extraction/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: Coolkidlab-Yin (https://skillmd.com/u/coolkidlab-yin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/coolkidlab-yin/voice-profile-extraction

---


# 語氣指紋萃取

抽「跨主題仍會出現的寫作規則」，不抽主題，也不靠一句「模仿我」讓 AI 猜。AI 負責觀察、整理與驗證；使用者決定哪些習慣真的代表自己。

## 引導邊界

維度與樣本數是分析 scaffold，不是必填清單。執行 Agent 應依樣本量、語言與用途
調整觀察方式；未出現的特徵就不寫，不為了覆蓋所有風格可能而製造規則。

## 執行契約

1. 先讀既有 voice profile、樣本清單與可用材料，不要求重交已提供內容。
2. 只問會改變結果的缺口：樣本所有權/同意、使用場景、語言、敏感範圍、輸出路徑與是否可保留短引。
3. 一次只做一個 phase；每 phase 依通過判準驗收。未達證據門檻的觀察要刪除、降級或限定情境。
4. 可逆的新檔案可直接建立。覆寫既有 profile、保存私人原文、刪除樣本或擴大授權用途前，先取得確認。
5. 不為了湊滿 9 維度而發明規則；沒有穩定證據就寫「未觀察到固定習慣」。
6. 每完成一個 phase，回報已產出、證據缺口與通過結果，再往下做。

## 適用與不適用

適用：建立本人語氣規則、讓 AI 草稿更接近本人習慣、比較 voice 版本演化、找出通用 AI 腔黑名單。

不適用：

- 決定品牌主題、受眾與立場：使用 brand profile；voice profile 只管「怎麼寫」。
- 未經同意模仿在世作者、同事、客戶或競爭者，尤其用於冒充：拒絕建立可冒充的精準 profile。
- 樣本主要是編輯、代筆或 AI 產出，且無法分離作者本人文字：先補乾淨樣本。
- 只需改一篇稿，不需要可重複規則：直接編輯可能更省成本。

## 開始前素材與輸入

### 樣本數與切分

- 目標準備 11–18 篇：9–15 篇作萃取集，另留 2–3 篇 holdout。
- 若總共只有 9–15 篇，仍先保留 2–3 篇 holdout，但要在結果標明萃取集較小、信心較低。
- 混合至少 2–3 種情境，例如教學、吐槽、進度、觀點、生活或求推薦；不要只挑最滿意或同一主題的文章。
- 在分析文字特徵前決定 train/holdout。Holdout 內容不參與規則萃取，直到 profile 草稿凍結才打開驗證。

原作者實測常以 9 篇起步；這是經驗值，不是保證品質的臨界點。樣本越少或情境越窄，越要降低信心，而不是宣稱必然 overfit。

### 樣本清單與同意

先建立清單；若清單會保存到磁碟，使用者可指定路徑與保留期限。

```markdown
| ID | 日期 | 情境 / 平台 | 作者與權利 | 可用於萃取 | 可保留短引 | 敏感等級 | Split |
|---|---|---|---|---|---|---|---|
| S01 | YYYY-MM-DD | 教學 / blog | 本人原作 | yes | yes / no | low / medium / high | train |
| H01 | YYYY-MM-DD | 觀點 / post | 本人原作 | yes | no | medium | holdout |
```

只有本人作品、公有領域文本或已明確授權的材料才能進入。社群貼文公開可見不等於同意被長期保存、重製或用於冒充。若含姓名、聯絡方式、客戶資料、健康、財務或私人關係，先去識別化。

## 產出檔與長度策略

主要產出是 `voice-profile.md`。原方法的「約 600 字」視為**核心 prompt 區的壓縮目標**，不是整份證據文件的硬上限：

- 核心操作版：以能直接放入 prompt、沒有重複規則為準；約 600 字/詞可作起點，語言與證據複雜度不同時可增減。
- 證據附錄：不受 600 字/詞限制，保存規則的來源、反例、信心與 holdout 結果。
- 例句只保留辨認特徵所需的最短片段；能用句型骨架說明時，不重製原文。

這樣可同時容納 9 維度與逐條證據，又不讓日常 prompt 被分析報告塞滿。

## `voice-profile.md` 模板

```markdown
---
profile_type: voice
version: 1.0.0
updated_at: YYYY-MM-DD
status: draft | validated
language: zh-TW
intended_uses: [drafting, rewriting]
evidence_cutoff: YYYY-MM-DD
---

# Voice profile

## Core prompt（約 600 字/詞起步）

你要保持以下規則。它們是工具箱，不是每篇全用：
- <最高信心句法/節奏規則，附適用情境>
- <用詞或轉折規則>
- <反指紋：避免什麼；不要寫成未證實的「永遠不會」>

一篇依情境選 2–3 個招牌特徵，不要機械塞滿全部維度。若品牌主題與立場有要求，另讀 brand profile。

## 9 維度規則

### 1. 句法
- 規則：
- 適用 / 例外：
- 最短例證或句型骨架：

### 2. 開頭鉤子
<同上>

### 3. 結尾收法
<同上>

### 4. 用詞
<同上>

### 5. 轉折
<同上>

### 6. 標點與格式
<同上>

### 7. Emoji 習慣
<同上；若無穩定習慣，明寫未觀察到>

### 8. 節奏招牌
<同上>

### 9. 反指紋 / 避免清單
- 避免：<經使用者確認或有正面反證的模式>
- 例外：<何時可使用>

## Evidence table

| Rule ID | 規則 | 跨篇觀察 | 情境數 | 最短必要例證 / 句型 | 反例 | 信心 |
|---|---|---:|---:|---|---|---|
| R01 |  | S01, S04, S07 | 3 |  | S09 | high / medium / low |

## Holdout 驗證

| Holdout | 有預測到的規則 | 未出現 / 被推翻 | 調整 |
|---|---|---|---|
| H01 | R01, R04 | R07 | R07 限定為教學文 |

## 使用限制
- 不用於：
- 不得保留 / 引用的敏感內容：
- 需要人工覆核的發布場景：

## 版本紀錄
- 1.0.0 / YYYY-MM-DD：依 S01–S__ 萃取；H01–H__ 驗證。
```

## 分 phase 執行

### Phase 0：確認權利、用途與隱私

**動作**：讀現有材料，建立樣本清單；確認作者/授權、預定用途、語言、可否保留短引與原文保留期限。標記 AI 生成、共同編輯與非本人段落。

**理由**：語氣是可識別的個人特徵；不清楚權利或把 AI 稿當本人樣本，會同時造成隱私與品質問題。

**通過判準**：每篇都有 ID、權利狀態、敏感等級與 split；無授權或無法辨別作者的材料已排除。

### Phase 1：先切 holdout，再讀萃取集

**動作**：依情境分層，挑 2–3 篇代表性文本作 holdout，其餘作 train。先只記錄 holdout 的 ID 與情境，不分析其句法或用詞；凍結 split。

**理由**：先看完所有內容再挑 holdout，驗證集已被洩漏，無法檢查規則是否跨篇成立。

**通過判準**：train 涵蓋多種情境；holdout 在 profile 凍結前未被用來產生或修改規則。

### Phase 2：逐篇觀察 9 維度

**動作**：逐篇記錄句法、開頭、結尾、用詞、轉折、標點格式、Emoji、節奏與反指紋候選。先寫觀察，再跨篇合併規則；主題、觀點與品牌立場不納入 voice 規則。

判別例：

- 「短句連發後用較長句收束」是可跨主題檢查的節奏規則。
- 「常寫遠端工作」是主題，不是 voice。

**理由**：直接總結容易只抓醒目的 emoji、單篇鉤子或常見主題，忽略深層節奏。

**通過判準**：每個候選規則都有樣本 ID；主題已排除；例證是必要最短片段或抽象句型，不是大段原文。

### Phase 3：套用證據門檻與反例

**動作**：建 Evidence table。建議 high-confidence 正面規則至少在 3 篇、跨 2 種情境觀察到；兩篇可標 medium；單篇只列候選。若資料量不足，降低門檻時必須明寫理由。主動找反例並限定適用情境。

反指紋不能單靠「樣本沒出現」推論成「作者永遠不寫」。只有使用者明確確認，或樣本同時展現穩定替代做法時，才放進避免清單；否則寫成待驗證候選。

**理由**：跨多篇與反例檢查能分開「穩定習慣」與「那篇剛好這樣」。

**通過判準**：每條正式規則達到公開的證據門檻或被降級；反指紋有使用者確認/正面證據；例外未被藏起來。

### Phase 4：寫核心 profile，逐條人工確認

**動作**：先寫完整 evidence appendix，再壓縮 Core prompt。逐條問使用者：「這是你的習慣、特定情境規則，還是偶然？」修正誤判。不要硬把 8 個正面元素都指定為每篇必用；依場景挑 2–3 個即可。

**理由**：核心 prompt 要可日常引用，證據表則負責可追溯；兩者混成 600 字會同時失去精度與可用性。

**通過判準**：9 維度皆有已證實規則或「未觀察到」；核心區沒有與附錄矛盾的規則；使用者逐條確認高影響項目。

### Phase 5：打開 holdout 驗證

**動作**：profile 凍結後才讀 H01–H03。逐條檢查高/中信心規則能否預測 holdout 的特徵；記錄命中、未出現與反例。可另外用同一內容 brief 產生短草稿，讓使用者盲評「像本人 / 不像 / 不確定」，但不要要求重寫或重製 holdout 原文。

若規則只在 train 成立、holdout 反覆不成立，將它刪除、降級或限定情境。Holdout 只有 2–3 篇，不足以證明普遍有效；它是低成本的失真檢查。

**理由**：留出未參與萃取的文本，才能發現 profile 只是在背訓練樣本。

**通過判準**：每個 high-confidence 規則都有 holdout 結果；明顯反例已回寫；使用者至少完成一次不看規則名稱的短稿判讀。

## 完成定義

- `voice-profile.md` 已建立，Core prompt 與 evidence appendix 分層清楚。
- 樣本清單含作者/授權、敏感度、train/holdout；未授權材料已排除。
- 每條正式規則有跨篇證據、適用情境、反例與信心；未硬湊 9 維度。
- 2–3 篇 holdout 未參與萃取，且驗證結果已寫回 profile。
- 反指紋經使用者確認或有正面證據，沒有把「沒看過」寫成「永遠不會」。
- 最短例證足以教會規則，沒有重製大量受版權保護原文。
- 使用者已用一個真實寫作 brief 測試並確認可用；版本、日期與用途邊界已記錄。

## 失敗與回復

- **樣本太少/太單一**：先產生 `draft`，降低信心，補不同情境後再驗證；不要用絕對語氣。
- **規則其實是主題**：問「換一個題目仍成立嗎？」不成立就從 voice 移除，必要時放到 brand profile。
- **輸出仍像 AI**：先查反指紋與節奏，不是添加更多 emoji；用真實 brief 找出具體違規處。
- **9 維度塞不進約 600 字**：保留精簡 Core prompt，把例證、信心與反例留在附錄；不刪證據換取表面短度。
- **holdout 表現差**：不要調整到只迎合 holdout；先區分情境差異，再降級或收窄規則。
- **混入 AI/代筆內容**：移除受污染樣本，從 Phase 1 重切 split，重建受影響規則。
- **私人內容誤留存**：停止使用，依使用者要求刪除本地副本/引用，換成去識別化句型骨架。

## 隱私、版權與侷限

- 預設只保留分析需要的最少資訊。原文可留在使用者控制的位置，profile 只存 Source ID 與最短必要例證。
- 不把樣本提交到公開 repo、issue 或第三方服務；使用雲端模型前告知資料會離開本機，依使用者選擇去識別化或改用本機工具。
- Voice profile 不能保證讀者無法辨認 AI，也不能完整複製人的創造力、知識與情境判斷。
- 「9–15 篇」「一篇選 2–3 個特徵」「每隔數月 review」來自實務經驗，是起始準則，不是普遍定律。

## 維護與版本迭代

- 每 2–3 個月或累積一批新文本後檢查一次；若作者近期刻意改風格，可提前更新。
- 新版使用 `voice-profile-v2.md` 或保留同檔的 semantic version；不要覆寫到無法比較。
- 以新的 train/holdout split 重新驗證，記錄新增、刪除、收窄與信心變化。不要只用最近同一情境的 9 篇就宣稱整體 voice 已改變。
- 發布後蒐集具體錯誤：「哪一句不像、違反哪條、正確傾向是什麼」，把回饋連回 Rule ID，再決定是否更新。

## 來源與時效

方法保留 Coolkid AI Lab 的實戰洞察：抽規則不抽主題、混合情境、人工確認、反指紋、工具箱不當 checklist。來源：[獨立 repo README](https://github.com/Coolkidlab-Yin/voice-profile-extraction)、[原始 workflow 記錄](https://www.coolkidlab.com/workflows/voice-profile-extraction.html)。本版截至 2026-08-02 整理；樣本量與門檻是透明、可調整的實務 heuristics，不應包裝成經控制實驗證明的結論。

