mcpField
V
voice-extract

voice-extract

github.com/atholaクリエイティブ・メディア34380 回インストール1 日前に更新
リポジトリ

voice-extract について

ユーザーの文章サンプルと、同じトピックに対するモデルの標準文を比較して文体を抽出するスキルです。匿名化とサンプルの多様性を重視し、2回目の検証で具体的な文体プロファイルを作成します。

主な機能

  1. 01SICOによる比較分析
  2. 02サンプルの匿名化収集
  3. 03ベースライン文章の生成
  4. 042段階の具体性レビュー
  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. 量より多様性:同じトピックのサンプル 20 件より、 異なるトピックのサンプル 10 件のほうが効果的です。ほかのすべてが変わっても 変わらない特徴を見極める必要があります。

  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 に具体的で実践可能な文体の説明が記載されている
  • デフォルトのレジスターが作成されている
  • 抽出結果に一般的な表現が含まれていない
  • ユーザーが抽出結果を確認し、自分の文体が捉えられていることを承認している

コメント