mcpField
W
writer-memory

writer-memory

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

writer-memory について

writer-memory は、Claude を使う小説家向けの永続的な物語メモリスキルです。キャラクターや世界観、関係、シーン、テーマをセッション間で管理し、台詞の検証や感情に焦点を当てたあらすじ作成を支援します。

主な機能

  1. 01セッションをまたぐ物語メモリ
  2. 02キャラクターの声と感情の軌跡を記録
  3. 03世界観・関係・シーン・テーマの記録
  4. 04台詞の一貫性を検証
  5. 05自然言語でメモリを検索
  6. 06感情に焦点を当てたあらすじと Markdown 出力

活用シーン

  1. 01執筆中にキャラクター設定を一貫させる
  2. 02シーンごとの関係の変化を記録
  3. 03台詞がキャラクターの声に合うか確認
  4. 04あらすじで物語の感情的テーマを振り返る

インストール

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

$npx skills add https://github.com/yeachan-heo/oh-my-claudecode --skill writer-memory

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

同梱ファイル

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

lib/
character-tracker.ts
memory-manager.ts
relationship-graph.ts
scene-organizer.ts
synopsis-builder.ts
templates/
synopsis-template.md

詳細

Writer Memory - 作家向けエージェント型メモリシステム

クリエイティブライター向けに設計された永続メモリシステムです。韓国語のストーリーテリングワークフローを第一級でサポートします。

概要

Writer Memory は、小説家が Claude のセッションをまたいでコンテキストを維持できるようにします。以下を追跡します。

  • キャラクター (캐릭터):感情の軌道 (감정궤도)、態度 (태도)、台詞のトーン (대사톤)、話し方のレベル
  • 世界観 (세계관):設定、ルール、雰囲気、制約
  • 関係 (관계):キャラクター間の力学と時間の経過に伴う変化
  • シーン (장면):カット構成 (컷구성)、ナレーションのトーン、感情タグ
  • テーマ (테마):感情的なテーマ (정서테마)、作者の意図

すべてのデータは .writer-memory/memory.json に保存され、Git を使った共同作業に適しています。

コマンド

コマンド操作
/oh-my-claudecode:writer-memory init <project-name>新しいプロジェクトのメモリを初期化
/oh-my-claudecode:writer-memory statusメモリの概要を表示(キャラクター数、シーン数など)
/oh-my-claudecode:writer-memory char add <name>新しいキャラクターを追加
/oh-my-claudecode:writer-memory char <name>キャラクターの詳細を表示
/oh-my-claudecode:writer-memory char update <name> <field> <value>キャラクターのフィールドを更新
/oh-my-claudecode:writer-memory char listすべてのキャラクターを一覧表示
/oh-my-claudecode:writer-memory rel add <char1> <char2> <type>関係を追加
/oh-my-claudecode:writer-memory rel <char1> <char2>関係を表示
/oh-my-claudecode:writer-memory rel update <char1> <char2> <event>関係のイベントを追加
/oh-my-claudecode:writer-memory scene add <title>新しいシーンを追加
/oh-my-claudecode:writer-memory scene <id>シーンの詳細を表示
/oh-my-claudecode:writer-memory scene listすべてのシーンを一覧表示
/oh-my-claudecode:writer-memory theme add <name>テーマを追加
/oh-my-claudecode:writer-memory world set <field> <value>世界観の属性を設定
/oh-my-claudecode:writer-memory query <question>自然な言葉でメモリに問い合わせ(韓国語に対応)
/oh-my-claudecode:writer-memory validate <character> <dialogue>台詞がキャラクターのトーンに合っているか確認
/oh-my-claudecode:writer-memory synopsis感情を重視したあらすじを生成
/oh-my-claudecode:writer-memory exportメモリ全体を読みやすい Markdown としてエクスポート
/oh-my-claudecode:writer-memory backup手動バックアップを作成

メモリの種類

캐릭터 메모리 (キャラクターメモリ)

一貫した描写に欠かせない、各キャラクターの属性を追跡します。

フィールド韓国語説明
arc감정궤도感情の変遷(例:「체념 -> 욕망자각 -> 선택」)
attitude태도人生や他者に対する現在の姿勢
tone대사톤台詞のスタイル(例:「담백」、「직설적」、「회피적」)
speechLevel말투 레벨敬意の度合い:반말、존댓말、해체、혼합
keywords핵심 단어そのキャラクターがよく使う特徴的な単語やフレーズ
taboo금기어決して口にしない単語やフレーズ
emotional_baseline감정 기준선通常の感情状態
triggers트리거感情的な反応を引き起こすもの

例:

/writer-memory char add 새랑
/writer-memory char update 새랑 arc "체념 -> 욕망자각 -> 선택"
/writer-memory char update 새랑 tone "담백, 현재충실, 감정억제"
/writer-memory char update 새랑 speechLevel "해체"
/writer-memory char update 새랑 keywords "그냥, 뭐, 괜찮아"
/writer-memory char update 새랑 taboo "사랑해, 보고싶어"
세계관 메모리 (世界観メモリ)

物語の舞台となる世界を定義します。

フィールド韓国語説明
setting배경時代、場所、社会的背景
rules규칙世界の仕組み(魔法体系、社会規範など)
atmosphere분위기全体的な雰囲気とトーン
constraints제약この世界で起こり得ないこと
history역사関連する過去の経緯
관계 메모리 (関係メモリ)

時間の経過に伴うキャラクター間の関係性を記録します。

フィールド説明
type基本的な関係:恋愛、家族、友情、ライバル関係、仕事上の関係
status現在の状態:始まりかけ、安定、緊張、破綻、修復中
power_dynamic該当する場合、どちらが優位に立っているか
events関係を変化させた出来事の時系列
tension現在未解決の対立
intimacy_level感情的な親密さ(1-10)

例:

/writer-memory rel add 새랑 해랑 romantic
/writer-memory rel update 새랑 해랑 "첫 키스 - 새랑 회피"
/writer-memory rel update 새랑 해랑 "해랑 고백 거절당함"
/writer-memory rel update 새랑 해랑 "새랑 먼저 손 잡음"
シーンメモリー(Scene Memory)

個々のシーンと、その感情構造を追跡します。

項目韓国語説明
title제목シーンの識別子
characters등장인물登場人物
location장소シーンの舞台
cuts컷 구성ショットごとの構成
narration_tone내레이션 톤ナレーションの文体
emotional_tag감정 태그主な感情(例:「ときめき+不安」)
purpose목적物語におけるこのシーンの役割
before_after전후 변화登場人物に起こる変化
テーマメモリー(Theme Memory)

物語に織り込まれた、より深い意味を捉えます。

項目韓国語説明
name이름テーマの識別子
expression표현 방식テーマの表れ方
scenes관련 장면テーマを体現するシーン
character_links캐릭터 연결このテーマを担う登場人物
author_intent작가 의도読者に感じてほしいこと

あらすじ生成(シノプシス)

/synopsis コマンドは、5つの重要な要素を使って感情に焦点を当てた要約を生成します。

5つの重要な要素(シノプシスの5要素)
  1. 主人公の態度の要約(主人公の態度の要約)

    • 主人公が人生・恋愛・葛藤にどう向き合うか
    • 主人公の根底にある感情的な姿勢
    • 例:「セランは喪失を避けるため、先に諦める人」
  2. 関係性の中核構造(関係性の中核構造)

    • 物語を動かす中心的な力関係
    • 力の不均衡と緊張
    • 例:「愛される者と愛する者の不均衡」
  3. 感情的なテーマ(感情的なテーマ)

    • 物語が呼び起こす感情
    • 筋書きではなく、感情的な真実
    • 例:「手にした幸せを信じられない不安」
  4. ジャンルと実際の感情の対比(ジャンルと実際の感情の対比)

    • 表面的なジャンルへの期待と、実際に描かれる感情の内容
    • 例:「ロマンスでありながら、本質は自己受容の物語」
  5. 結末に残る感情の余韻(結末に残る感情の余韻)

    • 物語が終わった後に残る感情
    • 例:「ほろ苦い安堵、不完全なハッピーエンドの余韻」

キャラクター検証

/validate コマンドは、台詞がキャラクターの確立された話し方に合っているかを確認します。

検証項目
確認項目説明
話し方のレベル敬語のレベルは合っていますか?(반말/존댓말/해체)
トーンの一致感情の表し方は適切ですか?
キーワードの使用そのキャラクターらしい言葉を使っていますか?
禁忌への違反禁止されている言葉を使っていますか?
感情の範囲キャラクターの基準となる範囲内ですか?
文脈との適合性関係性やシーンに適していますか?
検証結果
  • PASS:台詞はキャラクターと一貫しています
  • WARN:軽微な不一致がありますが、意図的な可能性があります
  • FAIL:確立された話し方から大きく逸脱しています

例:

/writer-memory validate 새랑 "사랑해, 해랑아. 너무 보고싶었어."

出力:

[FAIL] 새랑 validation failed:
- TABOO: "사랑해" - character avoids direct declarations
- TABOO: "보고싶었어" - character suppresses longing expressions
- TONE: Too emotionally direct for 새랑's 담백 style

Suggested alternatives:
- "...왔네." (minimal acknowledgment)
- "늦었다." (deflection to external fact)
- "밥 먹었어?" (care expressed through practical concern)

コンテキストへの問い合わせ(맥락 질의)

韓国語に完全対応した、メモリーへの自然言語クエリです。

クエリの例
/writer-memory query "새랑은 이 상황에서 뭐라고 할까?"
/writer-memory query "규리의 현재 감정 상태는?"
/writer-memory query "해랑과 새랑의 관계는 어디까지 왔나?"
/writer-memory query "이 장면의 정서적 분위기는?"
/writer-memory query "새랑이 먼저 연락하는 게 맞아?"
/writer-memory query "해랑이 화났을 때 말투는?"

システムは、関連するすべてのメモリータイプから回答を統合します。

動作

  1. 初期化時:プロジェクトのメタデータと空のコレクションを含む .writer-memory/memory.json を作成します
  2. 自動バックアップ:変更を加える前に、.writer-memory/backups/ に変更内容をバックアップします
  3. 韓国語優先:感情語彙には一貫して韓国語の用語を使用します
  4. セッション読み込み:即座にコンテキストを利用できるよう、セッション開始時にメモリーを読み込みます
  5. Git との親和性:差分の確認や共同作業がしやすいよう、JSON を整形します

インテグレーション

OMC Notepad System との連携

Writer Memory は .omc/notepad.md と連携します。

  • シーンのアイデアをメモとして記録できます
  • 分析セッションで得たキャラクターの洞察を保持します
  • メモ帳とメモリーの相互参照が可能です
Architect Agent との連携

複雑なキャラクター分析の場合:

Task(subagent_type="oh-my-claudecode:architect",
     model="opus",
     prompt="Analyze 새랑's arc across all scenes...")
キャラクター検証パイプライン

検証では、以下からコンテキストを取得します。

  • キャラクターメモリー(トーン、キーワード、禁忌)
  • 関係性メモリー(会話相手との力関係)
  • シーンメモリー(現在の感情的な文脈)
  • テーマメモリー(作者の意図)
あらすじ作成ツール

あらすじの生成では、以下を集約します。

  • すべてのキャラクターアーク
  • 重要な関係性の出来事
  • シーンの感情タグ
  • テーマの表れ方

例

ワークフロー全体
# Initialize project
/writer-memory init 봄의 끝자락

# Add characters
/writer-memory char add 새랑
/writer-memory char update 새랑 arc "체념 -> 욕망자각 -> 선택"
/writer-memory char update 새랑 tone "담백, 현재충실"
/writer-memory char update 새랑 speechLevel "해체"

/writer-memory char add 해랑
/writer-memory char update 해랑 arc "확신 -> 동요 -> 기다림"
/writer-memory char update 해랑 tone "직진, 솔직"
/writer-memory char update 해랑 speechLevel "반말"

# Establish relationship
/writer-memory rel add 새랑 해랑 romantic
/writer-memory rel update 새랑 해랑 "첫 만남 - 해랑 일방적 호감"
/writer-memory rel update 새랑 해랑 "새랑 거절"
/writer-memory rel update 새랑 해랑 "재회 - 새랑 내적 동요"

# Set world
/writer-memory world set setting "서울, 현대, 20대 후반 직장인"
/writer-memory world set atmosphere "도시의 건조함 속 미묘한 온기"

# Add themes
/writer-memory theme add "포기하지 않는 사랑"
/writer-memory theme add "자기 보호의 벽"

# Add scene
/writer-memory scene add "옥상 재회"

# Query for writing
/writer-memory query "새랑은 이별 장면에서 어떤 톤으로 말할까?"

# Validate dialogue
/writer-memory validate 새랑 "해랑아, 그만하자."

# Generate synopsis
/writer-memory synopsis

# Export for reference
/writer-memory export
キャラクターの簡易チェック
/writer-memory char 새랑

出力:

## 새랑

**Arc (감정궤도):** 체념 -> 욕망자각 -> 선택
**Attitude (태도):** 방어적, 현실주의
**Tone (대사톤):** 담백, 현재충실
**Speech Level (말투):** 해체
**Keywords (핵심어):** 그냥, 뭐, 괜찮아
**Taboo (금기어):** 사랑해, 보고싶어

**Relationships:**
- 해랑: romantic (intimacy: 6/10, status: healing)

**Scenes Appeared:** 옥상 재회, 카페 대화, 마지막 선택

ストレージスキーマ

{
  "version": "1.0",
  "project": {
    "name": "봄의 끝자락",
    "genre": "로맨스",
    "created": "2024-01-15T09:00:00Z",
    "lastModified": "2024-01-20T14:30:00Z"
  },
  "characters": {
    "새랑": {
      "arc": "체념 -> 욕망자각 -> 선택",
      "attitude": "방어적, 현실주의",
      "tone": "담백, 현재충실",
      "speechLevel": "해체",
      "keywords": ["그냥", "뭐", "괜찮아"],
      "taboo": ["사랑해", "보고싶어"],
      "emotional_baseline": "평온한 무관심",
      "triggers": ["과거 언급", "미래 약속"]
    }
  },
  "world": {
    "setting": "서울, 현대, 20대 후반 직장인",
    "rules": [],
    "atmosphere": "도시의 건조함 속 미묘한 온기",
    "constraints": [],
    "history": ""
  },
  "relationships": [
    {
      "id": "rel_001",
      "from": "새랑",
      "to": "해랑",
      "type": "romantic",
      "dynamic": "해랑 주도 → 균형",
      "speechLevel": "반말",
      "evolution": [
        { "timestamp": "...", "change": "첫 만남 - 해랑 일방적 호감", "catalyst": "우연한 만남" },
        { "timestamp": "...", "change": "새랑 거절", "catalyst": "과거 트라우마" },
        { "timestamp": "...", "change": "재회 - 새랑 내적 동요", "catalyst": "옥상에서 재회" }
      ],
      "notes": "새랑의 불신 vs 해랑의 기다림",
      "created": "..."
    }
  ],
  "scenes": [
    {
      "id": "scene-001",
      "title": "옥상 재회",
      "characters": ["새랑", "해랑"],
      "location": "회사 옥상",
      "cuts": ["해랑 먼저 발견", "새랑 굳은 표정", "침묵", "해랑 먼저 말 걸기"],
      "narration_tone": "건조체",
      "emotional_tag": "긴장+그리움",
      "purpose": "재회의 어색함과 남은 감정 암시",
      "before_after": "새랑: 무관심 -> 동요"
    }
  ],
  "themes": [
    {
      "name": "포기하지 않는 사랑",
      "expression": "해랑의 일관된 태도",
      "scenes": ["옥상 재회", "마지막 고백"],
      "character_links": ["해랑"],
      "author_intent": "집착이 아닌 믿음의 사랑"
    }
  ],
  "synopsis": {
    "protagonist_attitude": "새랑은 상실을 예방하기 위해 먼저 포기하는 사람",
    "relationship_structure": "기다리는 자와 도망치는 자의 줄다리기",
    "emotional_theme": "사랑받을 자격에 대한 의심",
    "genre_contrast": "로맨스지만 본질은 자기수용 서사",
    "ending_aftertaste": "불완전하지만 따뜻한 선택의 여운"
  }
}

ファイル構成

.writer-memory/
├── memory.json          # Main memory file
├── backups/             # Auto-backups before changes
│   ├── memory-2024-01-15-090000.json
│   └── memory-2024-01-20-143000.json
└── exports/             # Markdown exports
    └── export-2024-01-20.md

執筆者へのヒント

  1. キャラクターから始める:シーンを書く前に、キャラクターの記憶を構築します
  2. 重要なシーンの後に関係性を更新する:変化を積極的に記録します
  3. 執筆中に検証を活用する:口調の不一致を早い段階で見つけます
  4. 難しいシーンの前にクエリを実行する:システムに背景を思い出させてもらいます
  5. 定期的なあらすじ作成:テーマの一貫性を確認するため、定期的に生成します
  6. 大きな変更の前にバックアップする:物語の大幅な転換の前に /backup を使用します

トラブルシューティング

記憶が読み込まれない場合

  • .writer-memory/memory.json が存在することを確認します
  • JSON の構文が有効であることを確認します
  • /writer-memory status を実行して診断します

検証が厳しすぎる場合

  • タブーリストに意図しない項目がないか確認します
  • キャラクターが成長しているか(人物の成長)を検討します
  • ドラマチックな場面では、パターンから意図的に外れることも有効です

クエリで背景情報が見つからない場合

  • 関連データが記憶に含まれていることを確認します
  • より具体的なクエリを試します
  • キャラクター名が完全に一致していることを確認します

コメント