mcpField
V
voice-extract

voice-extract

github.com/athola创意与媒体34380 次安装1 天前更新
代码仓库

关于 voice-extract

通过将用户写作样本与同主题的模型默认文本对比,提取写作风格的技能,用于建立个人风格档案。流程强调样本匿名化与主题多样性,并通过第二轮审查提升描述的具体性和可执行性。

主要功能

  1. 01SICO 对比分析
  2. 02匿名化收集写作样本
  3. 03生成基线文本
  4. 04两轮具体性审查
  5. 05创建风格档案与语域

适用场景

  1. 01根据样本建立写作风格档案
  2. 02将个人写作与默认文本对比
  3. 03把宽泛风格观察转化为可执行规则

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/athola/claude-night-market --skill voice-extract

安装后在 Claude Code 中输入/voice-extract确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

modules/
register-creation.md
research-basis.md
sample-intake.md
sico-extraction.md

详细介绍

语音提取技能

通过 SICO 对比分析提取用户的写作风格。

不适用场景

  • 在已有的个人资料中撰写文本(使用 scribe:voice-generate)
  • 根据编辑内容完善个人资料(使用 scribe:voice-learn)

方法:对比式特征提取

本技能不测量表层指标,而是采用 SICO 第 1 阶段:将用户的写作样本与模型针对相同主题生成的默认输出一并提供给模型。模型会描述用户有哪些不同之处。这样生成的风格描述能编码指标无法捕捉的隐性结构模式。

这些选择背后的论文和报告,以及每项研究对提取流程各阶段的影响,都记录在 modules/research-basis.md 中。 更改各阶段的提问内容前,请先阅读该文件。

核心原则(来自研究)

  1. 匿名化样本:标记为“样本 1”“样本 2”等。 上下文标签会让提取器关注内容,而不是识别统一的风格。

  2. 多样性胜过数量:涵盖不同主题的 10 个样本,胜过同一主题的 20 个样本。提取过程需要观察其他一切都发生变化时,哪些特征始终保持不变。

  3. 随意写作更具辨识度:Reddit 评论、Slack 消息、简短邮件。经过润色的文章会删去粗糙之处,而风格往往就体现在这些地方。

  4. 通过压力测试确保具体性:如果提取结果听起来很笼统(“使用长短不一的句子”),就运行第 2 轮,并强制要求具体。好的结果读起来应像可遵循的指引,而不是读书报告。

  5. 使用 Opus 进行提取:它能提供更细致的特征描述,尤其适用于细微语气变化很重要的语域。

必需的进度项

  1. voice-extract:samples-collected - 已收集写作样本
  2. voice-extract:samples-anonymized - 已移除标签并编号
  3. voice-extract:baseline-generated - Claude 针对相同主题的默认输出
  4. voice-extract:extraction-pass-1 - 广泛的对比特征
  5. voice-extract:extraction-pass-2 - 针对具体性的压力测试
  6. voice-extract:profile-written - 已创建 extraction.md

第 1 步:收集样本

加载:@modules/sample-intake

目录模式
# Scan for samples
PROFILE_DIR="$HOME/.claude/voice-profiles/{name}"
mkdir -p "$PROFILE_DIR/samples"

# Copy samples from user-provided directory
# Rename to Sample-01.md, Sample-02.md, etc.
交互模式

向用户展示:

Paste your writing sample below (minimum 200 words).
Type END on a new line when done.

持续重复,直到用户说“收集完毕”或样本数量达到 10 个以上。

清单

创建 manifest.json:

{
  "profile_name": "{name}",
  "created": "YYYY-MM-DD",
  "samples": [
    {
      "id": "sample-01",
      "original_source": "anonymized",
      "word_count": 450,
      "date_added": "YYYY-MM-DD"
    }
  ],
  "extraction_model": "opus",
  "extraction_date": null,
  "registers": ["default"]
}
验证
  • 至少 3 个样本
  • 总计至少 500 个单词
  • 每个样本至少 100 个单词
  • 多样性检查:如果所有样本都明显属于同一主题,则发出警告

第 2 步:生成基线

针对每个样本的主题/上下文,生成 Claude 针对相同主题的默认输出。由此创建对比样本对。

基线提示词:

Write a short piece about [topic extracted from sample].
Use your natural default style. Do not try to match any
particular voice or style. Just write naturally about this
subject in approximately [word_count] words.

将基线与样本一同存储,以便进行比较。

第 3 步:SICO 提取第 1 轮

加载:@modules/sico-extraction

核心对比提示词:

I'm going to show you pairs of text. In each pair:
- Text A is written by a specific person
- Text B is your default output on the same topic

Your task: describe what the writer of Text A does
differently from your default style. Focus on:

- Structural patterns (paragraph shapes, section architecture)
- Rhetorical moves (how they build arguments, make transitions)
- Tonal devices (hedging patterns, commitment patterns)
- Sentence-level techniques (clause structure, rhythm)
- Vocabulary tendencies (physical vs abstract language,
  technical vs conversational)
- Distinctive habits (parentheticals, fragments, questions)

Do NOT describe surface metrics (average sentence length,
word count). Describe the voice in terms a writer could
follow. Be specific enough that someone could use your
description to imitate this voice.

[Pairs follow]
质量关卡

如果提取结果包含以下任何笼统表述,则拒绝该结果,并以更高的具体性要求重新运行:

  • “使用长短不一的句子”
  • “保持对话式语气”
  • “兼顾正式与非正式”
  • “吸引读者”
  • “营造一种感觉”

第 4 步:提取第 2 轮(压力测试)

Review your feature description. For each characteristic
you identified, answer:

1. Could this describe 50% of writers? If yes, be more
   specific or remove it.
2. Can someone follow this as a concrete instruction?
   If not, add an example from the samples.
3. Are there patterns you noticed but didn't name?
   Writers often have unnamed habits. Look for:
   - How they use parentheticals
   - Where they commit vs hedge
   - Physical language for abstract concepts
   - Rhythm of building caution then dropping unhedged claims
   - How they anticipate reader objections

Revise your description to be more specific and followable.

第 5 步:撰写个人资料

将提取结果写入 ~/.claude/voice-profiles/{name}/extraction.md:

# Voice Extraction: {name}

## Feature Description

[SICO extraction output here]

## Craft Rules (Detection-Neutral)

These techniques improve writing without increasing
AI detectability:

- Concrete-first: Lead with specific, physical details
- Naming: Label patterns and dynamics explicitly
- Opening moves: Start mid-thought or with a specific moment
- Human-moment anchoring: Ground abstractions in lived experience
- Aphoristic destinations: Write sentences worth repeating alone

## Banned Phrases

[Standard AI vocabulary list + user additions]

## Notes

- Extraction model: {model}
- Extraction date: {date}
- Sample count: {n}
- Total word count: {words}

根据提取结果,在 registers/default.md 中创建默认语域。

退出条件

  • 个人资料目录及清单已创建
  • extraction.md 包含具体且可遵循的风格描述
  • 已创建默认语域
  • 提取结果中没有笼统表述
  • 用户已审核并确认提取结果准确体现了其写作风格

评论

支持 Markdown