mcpField
C
character-naming

character-naming

github.com/jwyniaクリエイティブ・メディア179481 回インストール35 週間前に更新
リポジトリ

character-naming について

名前の重複や登場人物同士の混同を診断し、文化や作風に沿った名前を生成する執筆支援スキルです。LLMの一般的な出力に頼らず、厳選リスト、音素プリセット、スクリプトを使います。

主な機能

  1. 01命名上の問題の診断
  2. 02文化別リストからの名前生成
  3. 03音素プリセットによるファンタジー名生成
  4. 04名前の重複や分布の追跡
  5. 05フルネームと JSON 出力への対応

活用シーン

  1. 01歴史小説や現代小説の登場人物の命名
  2. 02ファンタジー文化に一貫した名前を設定
  3. 03使い古された名前の代案探し
  4. 04似た響きの登場人物名の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jwynia/agent-skills --skill character-naming

インストール後、Claude Code で/character-namingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

data/
_meta.json
data/cultures/
anglo-given-female.json
anglo-given-male.json
anglo-given.json
anglo-surnames.json
arabic-given-female.json
arabic-given-male.json
arabic-given.json
arabic-surnames.json
chinese-given-female.json
chinese-given-male.json
chinese-given.json
chinese-surnames.json
eastern-european-given-female.json
eastern-european-given-male.json
eastern-european-given.json
eastern-european-surnames.json
filipino-given-female.json
filipino-given-male.json
filipino-given.json
filipino-surnames.json
hispanic-given-female.json
hispanic-given-male.json
hispanic-given.json
hispanic-surnames.json
japanese-given-female.json
japanese-given-male.json
japanese-given.json
japanese-surnames.json
jewish-given-female.json

詳細

キャラクターの命名:Chen の氾濫を断つ

LLM の統計的な既定値から脱却するキャラクター名を、作家が生み出せるよう支援します。命名の問題を診断し、生成に外部エントロピーを取り入れ、キャストの一貫性を追跡します。

基本原則

LLM は統計的な中央値を既定値とします。外部エントロピーだけが、その解決策です。

「多様な」名前を求められると、LLM は認識したカテゴリーごとに、学習データで最も頻繁に見られる名前を出力します。「東アジア系の姓」の統計的な中心である「Chen」が繰り返し登場するのはそのためです。修正を求められると、LLM は「中央値を飛び移り」、本当の多様性を提供する代わりに、別の民族で次に一般的な名前へと切り替えます。

解決策は、LLM に名前を選ばせないことです。厳選したリストを使い、真のランダム化を行います。

状態

状態 CN1:コンテキストなし

症状: ユーザーはキャラクター名を求めていますが、舞台設定、文化、時代が決まっていません。コンテキストなしの「名前をいくつか出して」といった依頼です。 主な質問:

  • ジャンルと舞台設定は何ですか?
  • 時代はいつですか?
  • この世界にはどのような文化が存在しますか?
  • キャストの多様性はどの程度にしますか? 対応: 生成する前にコンテキストを確認します。「現代の多様なアメリカ」を既定値にしないでください。
状態 CN2:Chen の氾濫

症状: 名前が統計的な中央値に偏ります。複数のキャラクターの姓が Chen、Patel、Garcia、Kim のようになります。名にも Maya、Marcus、Sofia、Aiden のようなパターンが繰り返されます。キャストがアルゴリズムで生成されたように感じられます。 主な質問:

  • 舞台設定における実際の文化的な構成はどうなっていますか?
  • どの文化がどの程度の割合で存在するか、定義していますか?
  • すでに使った名前は何ですか? 対応: 外部のランダム化を用いて、文化別の名前リストを使います。LLM に名前を「提案」させないでください。必ずエントロピーから抽出します。
状態 CN3:文化的一貫性の欠如

症状: ファンタジーや SF の同じ架空文化の名前なのに、互いに関連性が感じられません。同じ王国に「Kael」と「Zephyrine」と「Bob」がいます。名前が異なる美的な系統から寄せ集められたように感じられます。 主な質問:

  • この架空文化の音韻規則は定義されていますか?
  • 命名規則は何ですか(父称、特徴に基づく名前、氏族に基づく名前など)?
  • この架空文化は、現実世界のどの文化から着想を得ていますか? 対応: 音のパターンに一貫性を持たせるため、音素プリセットを使います。複雑な文化の場合は、利用可能であれば conlang スキルの利用を検討してください。
状態 CN4:キャスト内の名前の混同

症状: 複数のキャラクターの名前が似ています。Sarah/Sara、Mike/Mark/Michael、Lee/Leigh などです。読者がキャラクターを混同します。名前の語頭の音やリズムが似通っています。 主な質問:

  • このプロジェクトですでに使った名前は何ですか?
  • どの語頭の音が多すぎますか?
  • キャスト内で多い音節のパターンは何ですか? 対応: 名前を確定する前に、キャストトラッカーで分析します。名前の音の特徴を確認し、区別しやすいか調べます。
状態 CN5:キャラクターとの不一致

症状: 名前が、キャラクターの背景、役割、または物語上の設定に合っていません。歴史的な舞台設定なのに現代風の名前が付いている、キャラクターの出自に合わない文化の名前になっている、名前の持つ連想がキャラクターの印象を損なっている、といった状態です。 主な質問:

  • 物語の中で、このキャラクターの文化的背景は何ですか?
  • いつ生まれましたか?
  • 名前にどのような階級や地位の印象を持たせるべきですか?
  • 避けるべき特定の連想はありますか? 対応: 制約を明示して再生成します。時代物では、その時代の名前のリストを使います。
状態 CN6:複数文化が混在する舞台設定

症状: 現代または歴史的な舞台設定に、現実世界の複数の文化集団が登場します。ステレオタイプ化せずに、真正な表現を行う必要があります。文化の割合が不自然に感じられたり、無理に割り当てたように感じられたりします。 主な質問:

  • この舞台設定における現実的な文化の混在状況はどうなっていますか?
  • どのような割合なら、「各文化から一人ずつ」ではなく自然に感じられますか?
  • 特徴的な構成を持つコミュニティや地域はありますか? 対応: まず文化の構成を定義します。重み付きプール、または地域に応じた混合を使います。

診断プロセス

  1. 症状を聞き取る — どの状態に当てはまるかを特定します
  2. 背景を確認する — 名前を生成する前に、設定、時代、文化を把握します
  3. 既存の登場人物を確認する — すでに確定している名前は何ですか?
  4. 生成モードを選ぶ:
    • 現代・歴史もの:文化別の名前リストを使います
    • ファンタジー・SF:音素プリセットを使います
    • 複合型:分布を定義してから、文化ごとに生成します
  5. ランダム性を加えて生成する — スクリプトを実行し、名前を「考え出す」ことはしません
  6. 登場人物リストと照合する — 確定する前に重複がないか確認します

利用可能なツール

character-name.ts

厳選されたリストまたは音素パターンから名前を生成します。

# Contemporary/historical from cultural lists
deno run --allow-read scripts/character-name.ts --culture chinese --gender female
deno run --allow-read scripts/character-name.ts --culture anglo --count 5
deno run --allow-read scripts/character-name.ts --pool contemporary-american --count 10

# Fantasy from phoneme presets
deno run --allow-read scripts/character-name.ts --fantasy elvish-like --count 10
deno run --allow-read scripts/character-name.ts --fantasy harsh-fantasy --syllables 2-3

# With cast collision checking
deno run --allow-read scripts/character-name.ts --culture korean --cast project-cast.json

オプション:

  • --culture <name> — 特定の文化圏の候補リストを使います(chinese、anglo、hispanic など)
  • --pool <name> — 複合候補リストを使います(contemporary-american など)
  • --fantasy <preset> — 音素プリセットから生成します(elvish-like、harsh-fantasy、neutral)
  • --gender <m|f|n> — 性別が分かれているリストで、性別による絞り込みを行います
  • --count <n> — 生成する名前の数(デフォルト:5)
  • --syllables <range> — ファンタジー名の音節数の範囲(例:"2-3")
  • --cast <file> — 重複チェック用の登場人物トラッカー JSON のパス
  • --full-name — 名と姓を組み合わせて生成します
  • --json — JSON 形式で出力します
cast-tracker.ts

重複の検出と分布の分析のために、登場人物の追跡を管理します。

# Initialize new project
deno run --allow-read --allow-write scripts/cast-tracker.ts init "Novel Title"

# Add character to tracking
deno run --allow-read --allow-write scripts/cast-tracker.ts add "Sarah Chen" --role protagonist --culture chinese-american

# Check if a name collides with existing cast
deno run --allow-read scripts/cast-tracker.ts check "Marcus"

# View current distribution
deno run --allow-read scripts/cast-tracker.ts distribution

# Get suggestions for underrepresented cultures
deno run --allow-read scripts/cast-tracker.ts suggest

アンチパターン

また Chen

問題:「Chen」を「Kim」や「Patel」に変えても、依然として人気上位の名前を行き来しているだけです。民族ごとのグループで、上位の名前を順番に選んでいるにすぎません。 対策: LLM に代替案を提案させてはいけません。ランダム性を加えるスクリプトを使い、リストの奥深くから抽出します。

多様性のチェックボックス化

問題: 各民族の登場人物をちょうど一人ずつ加えると、形だけの多様性に感じられます。登場人物の構成が、多様性への配慮を確認するための表計算シートのように見えてしまいます。 対策: 文化的な分布は、物語の設定に基づいて決めます。ソウルが舞台の物語に、あらゆる文化の人物が一人ずついる必要はありません。ロンドンが舞台なら、実際の多様性を正当化できます。

発音しにくいファンタジー名

問題: 生成したファンタジー名が読みづらかったり、発音しにくかったりします。「Xzylthrix」のような名前は没入感を損ないます。 対策: 発音しやすさの制約がある音素プリセットを使います。子音の連続を抑えます。声に出して読んで確認します。

登場人物の名前の重複

問題: 読者は Mark と Mike、Sarah と Sara、Lee と Leigh を混同します。似た響きの名前は区別しにくくなります。 対策: 確定する前に必ず cast-tracker で確認します。音の特徴を分析し、語頭の子音、音節数、アクセントのパターンに変化をつけます。

時代設定との不一致

問題: 中世イングランドに「Jennifer」。ヴィクトリア朝ロンドンに「Jayden」。その時代には存在しなかった名前です。 対策: 歴史上の名前のリストを使います。名前がいつ使われ始めたかを調べます。特に指定がなければ、その時代によくある名前を選びます。

文化の混在

問題: 日本の姓に中国の名を組み合わせる。両親が選ぶはずのない英語風の名を持つ一世移民。 対策: 文化ごとに一貫した名前の組み合わせを使います。登場人物の世代、背景、家族の選択を考慮します。

主な質問

名前を生成する前に
  • 舞台はどこですか(場所、時代、文化の構成)?
  • すでに確定している名前は何ですか?
  • 避けるべき響きはありますか(重複のリスク)?
  • この人物の名前は、親がつけたものですか、それとも本人がつけたものですか?
現代が舞台の場合
  • 登場人物の具体的な文化的背景は何ですか?
  • 何世代目ですか(移民、二世など)?
  • その文化では、どのような命名規則に従いますか?
  • この名前は、その年齢層で一般的ですか?
歴史上の時代が舞台の場合
  • この人物は、いつ、どこで生まれましたか?
  • その場所と時代には、どのような名前が一般的でしたか?
  • その名前に、どのような階級や地位の印象を持たせるべきですか?
  • 命名規則(父称など)はありますか?
ファンタジー・SFの場合
  • この文化は、どのような美的特徴を持っていますか?
  • 参考にした現実の言語があれば、それは何ですか?
  • 社会階級によって、名前のパターンは異なりますか?
  • 命名規則(氏族名、通称など)はありますか?

データファイル

文化別の名前プール

data/cultures/ にあります。すべての文化には、本番品質のリスト(各約100件)があり、姓、名(男女共通)、男性名、女性名のバリエーションが含まれています。

文化説明
chinese東アジア — 中国語(標準中国語)、一般的な姓と地域別の姓
angloイギリスおよびアメリカの伝統にまたがる英語圏
hispanic地域ごとに多様なスペイン語圏/ラテンアメリカ
west-africanヨルバ、アカン、イボなど、西アフリカの伝統
south-asianヒンドゥー教徒、イスラム教徒、シク教徒、および地域ごとのインドの伝統
korean韓国の伝統的な名前と現代的な名前
japanese日本の伝統的な名前と現代的な名前
vietnameseベトナムの伝統的な命名規則
arabic中東のさまざまな地域のアラビア語名
eastern-europeanロシア、ポーランド、ウクライナなどのスラブ系の伝統
jewishアシュケナージ、セファルディ、ヘブライ語、イディッシュ語、および英語化された名前
filipinoスペイン語由来、フィリピン先住民由来、および現代的な名前
混合プール

data/mixed-pools/ にあります。

  • contemporary-american.json — 現代の米国を舞台とする設定向けの重み付けされた混合プール
音素プリセット

data/phoneme-presets/ にあります。

  • elvish-like.json — 流麗で母音が多く、二重母音を含みます
  • harsh-fantasy.json — 喉音が多く、子音が多く、破裂音が特徴です
  • neutral.json — バランスがよく、発音しやすい汎用タイプです

やり取りの例

例1:現代小説

ユーザー:「シカゴを舞台にした犯罪小説の登場人物の名前が必要です。」

進め方:

  1. 登場する特定の地域の文化的構成について尋ねます
  2. 名前が必要な主要人物の人数を尋ねます
  3. すでに決まっている名前があるかどうかを尋ねます
  4. エントロピーを使用して、適切な文化別プールから名前を生成します
  5. 提案した名前が登場人物の名前と重複しないか確認します

スクリプトの使用例:

deno run --allow-read scripts/cast-tracker.ts init "Chicago Crime Novel"
deno run --allow-read scripts/character-name.ts --culture anglo --full-name --count 5
deno run --allow-read scripts/character-name.ts --culture hispanic --full-name --count 5
例2:ファンタジー小説

ユーザー:「エルフの王国の名前が必要です。」

進め方:

  1. 作風について尋ねます。ハイファンタジー、ダーク、または風変わりな雰囲気でしょうか?
  2. 命名規則(氏族名、真名など)があるか尋ねます
  3. エルフ風の音素プリセットから生成します
  4. 文化内で一貫性が保たれるようにします

スクリプトの使用例:

deno run --allow-read scripts/character-name.ts --fantasy elvish-like --syllables 2-3 --count 20
例3:Chen姓の過剰発生を検出

ユーザー:「登場人物の名前は Chen Wei、Sarah Chen、Michael Chen、Dr. Chen です。」

診断: 状態 CN2 — Chen姓の過剰発生。同じ姓を持つ登場人物が4人います。

回答: 「Chen姓の登場人物が4人います。血縁関係がないのであれば、これはChen姓の過剰発生です。LLMが中国語の姓の統計的中央値に偏っています。エントロピーを使って別の候補を生成します。」

スクリプトの使用例:

deno run --allow-read scripts/character-name.ts --culture chinese --count 10 --json
# Pick from deep in the list, not the top

行わないこと

  • 名前を自分で「考え出さない」でください。必ずエントロピースクリプトを使用してください
  • どの文化でも、最も一般的な名前を提案しないでください
  • 文脈なしに、アメリカ式の命名パターンをデフォルトにしないでください
  • 既存の登場人物と照合せずに名前を生成しないでください
  • ファンタジーを「ランダムな音節」と決めつけないでください
  • 文脈を確認する手順を省略しないでください
  • 名前の重複を確認せずに、名前を承認しないでください

出力の保存

プロジェクトで作業するときは、登場人物の追跡データを次の場所に保存します。

  • 希望する出力先について、context/output-config.md を確認します
  • デフォルト:{project-root}/cast-tracker.json

登場人物ファイルはセッションをまたいで保持され、登場人物のデータが蓄積されます。

オプションの連携

以下のスキルは登場人物の命名を強化しますが、必須ではありません。

人工言語スキルとの連携(利用可能な場合)

複雑なファンタジー言語については、音韻体系の作成を引き継ぎます。

# Generate full phoneme inventory with conlang
deno run --allow-read ../conlang/scripts/phonology.ts --preset elvish_like --json > custom-phonology.json
# Then use it for names
deno run --allow-read scripts/character-name.ts --phonology custom-phonology.json --count 20
命名スキルとの連携(利用可能な場合)

音、意味、文化、機能の4つの層すべてから特定の名前を評価する場合:

  • 特定の名前について詳細な分析が必要なときは、命名スキルを使用します
  • 登場人物の命名スキルは生成を担当し、命名スキルは評価を担当します
list-builder スキルが利用可能な場合

スターターティアのリストをプロダクションティアに拡張するには、次のようにします。

  • list-builder の手法とリサーチツールを使用します
  • 各リストの項目数を75~150件にします
  • 多様な観点を確保します(一般的なものと珍しいもの、地域的な広がり)

コメント