memory-literary-analysis について
memory-literary-analysisは、文学作品全体を構造化されたナレッジグラフにするスキルです。文学研究、授業、読書会向けに、章ごとの処理、人物やテーマの追跡、相互参照、検証、可視化を行います。
主な機能
- 01エンティティスキーマとフォルダーの設定
- 02章ごとの作品処理
- 03人物・テーマ・文学要素の記録
- 04相互参照と全体分析の作成
- 05スキーマと関係の整合性検証
- 06キャンバスによる可視化
活用シーン
- 01小説や戯曲の学習資料を作成
- 02読書会向けの作品参照グラフを構築
- 03作品全体の構造的な精読
- 04大規模な文学ノート群の整合性確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ basicmachines-co/ basic-memory-skills --skill memory-literary-analysisインストール後、Claude Code で/memory-literary-analysisを入力して読み込まれたか確認します。
詳細
文学作品の分析
文学作品全体を、構造化されたナレッジグラフに変換します。登場人物、テーマ、章、場所、象徴、文学的技法を相互に関連づけたノートにまとめ、検索、検証、可視化できるようにします。
使用する場面
- 小説、戯曲、詩、ノンフィクション作品を最初から最後まで分析する場合
- 文学作品の教育・学習用リソースを作成する場合
- 読書会向けのナレッジベースを作成する場合
- 構造化された精読が必要な研究プロジェクト
- Basic Memory の大規模な負荷テスト(ノート約200件以上、リレーション1,000件以上)
パイプラインの概要
Phase 0: Setup → project, schemas, directory structure
Phase 1: Seed → stub notes for known major entities
Phase 2: Process → chapter-by-chapter notes in batches
Phase 3: Cross-ref → enrich arcs, add parallels, write analysis
Phase 4: Validate → schema checks, drift detection, consistency
Phase 5: Visualize → canvas files for character webs, timelines
フェーズ 0:セットアップ
プロジェクトを作成する
create_memory_project(name="<work-name>", path="~/basic-memory/<work-name>")
作品名をケバブケースにしたスラッグを使用します(例:great-gatsby、hamlet、beloved)。
スキーマを定義する
schema/ にスキーマノートを6つ作成します。各スキーマでは、エンティティタイプのフィールド、観察カテゴリ、リレーションタイプを定義します。作品に合わせてフィールドを調整してください。以下のスキーマは出発点であり、厳密なテンプレートではありません。
Character スキーマ
write_note(
title="Character",
directory="schema",
note_type="schema",
metadata={
"entity": "Character",
"version": 1,
"schema": {
"role(enum)": "[protagonist, antagonist, supporting, minor], character's narrative role",
"description": "string, brief character description",
"first_appearance?": "string, chapter or scene of first appearance",
"status?(enum)": "[alive, dead, unknown, transformed], character status at end of work"
},
"settings": {"validation": "warn"}
},
content="""# Character
Schema for character entity notes.
## Observations
- [convention] Major characters in characters/major/, minor in characters/minor/
- [convention] Observation categories: trait, motivation, arc, quote, appearance, relationship, symbolism, fate
- [convention] Relations: appears_in, contrasts_with, allied_with, commands, symbolizes, associated_with"""
)
必要に応じて作品に固有のフィールドを追加します。たとえば、軍事小説なら rank、一族の物語なら house、ファンタジーなら species などです。
Theme スキーマ
write_note(
title="Theme",
directory="schema",
note_type="schema",
metadata={
"entity": "Theme",
"version": 1,
"schema": {
"description": "string, what this theme explores",
"prevalence(enum)": "[major, minor], how central to the work",
"first_introduced?": "string, where theme first appears"
},
"settings": {"validation": "warn"}
},
content="""# Theme
Schema for thematic analysis notes.
## Observations
- [convention] Observation categories: definition, manifestation, evolution, counterpoint, quote, interpretation
- [convention] Relations: embodied_by, contrasts_with, reinforced_by, explored_in, expressed_through"""
)
Chapter スキーマ
write_note(
title="Chapter",
directory="schema",
note_type="schema",
metadata={
"entity": "Chapter",
"version": 1,
"schema": {
"chapter_number": "integer, sequential chapter number",
"pov?": "string, point-of-view character or narrator mode",
"setting?": "string, primary location",
"narrative_mode?(enum)": "[dramatic, expository, reflective, epistolary, mixed], chapter's primary mode"
},
"settings": {"validation": "warn"}
},
content="""# Chapter
Schema for chapter-level analysis notes.
## Observations
- [convention] Chapters stored in chapters/ directory
- [convention] Observation categories: summary, event, tone, technique, quote, significance, foreshadowing
- [convention] Relations: features, set_in, explores, contains, employs, follows, precedes, parallels"""
)
Location スキーマ
write_note(
title="Location",
directory="schema",
note_type="schema",
metadata={
"entity": "Location",
"version": 1,
"schema": {
"description": "string, what this place is",
"location_type(enum)": "[city, building, landscape, body_of_water, region, fictional, vehicle], type of place",
"real_or_fictional(enum)": "[real, fictional, both], whether the place exists"
},
"settings": {"validation": "warn"}
},
content="""# Location
Schema for location and setting notes.
## Observations
- [convention] Observation categories: description, atmosphere, symbolism, significance, geography
- [convention] Relations: setting_for, associated_with, symbolizes, contains, part_of"""
)
Symbol スキーマ
write_note(
title="Symbol",
directory="schema",
note_type="schema",
metadata={
"entity": "Symbol",
"version": 1,
"schema": {
"description": "string, what the symbol is literally",
"symbol_type(enum)": "[object, animal, color, action, natural_phenomenon, body_part], category of symbol",
"primary_meaning": "string, most common interpretation"
},
"settings": {"validation": "warn"}
},
content="""# Symbol
Schema for symbolic element notes.
## Observations
- [convention] Observation categories: meaning, appearance, ambiguity, interpretation, quote, evolution
- [convention] Relations: represents, associated_with, appears_in, contrasts_with, located_at"""
)
LiteraryDevice スキーマ
write_note(
title="LiteraryDevice",
directory="schema",
note_type="schema",
metadata={
"entity": "LiteraryDevice",
"version": 1,
"schema": {
"description": "string, what the device is",
"device_type(enum)": "[rhetorical, structural, figurative, narrative, dramatic], category",
"frequency(enum)": "[pervasive, frequent, occasional, rare], how often used"
},
"settings": {"validation": "warn"}
},
content="""# LiteraryDevice
Schema for literary technique and device notes.
## Observations
- [convention] Observation categories: definition, usage, effect, example, significance
- [convention] Relations: used_in, characterizes, expresses, related_to"""
)
ディレクトリ構成
<project>/
schema/ # 6 schema definitions
chapters/ # one note per chapter/section + prologue/epilogue
characters/
major/ # protagonist, antagonist, key supporting
minor/ # named characters with limited roles
themes/ # thematic analysis notes
locations/ # settings and places
symbols/ # symbolic elements
literary-devices/ # techniques and devices
analysis/ # cross-cutting synthesis
tasks/ # processing tracker
フェーズ 1:エンティティの初期登録
章の処理を始める前に、主要なエンティティのスタブノートを作成し、最初から [[wiki-links]] が解決されるようにします。
登場人物(主要人物)
主要な登場人物ごとに、既知のメタデータを含むスタブを作成します。
write_note(
title="<Character Name>",
directory="characters/major",
note_type="Character",
tags=["character", "major", "<role>"],
metadata={"role": "<role>", "description": "<brief description>"},
content="""# <Character Name>
## Observations
- [role] <Character's role in the work>
- [appearance] <Key physical description>
## Relations
- associated_with [[<Related Character>]]
- appears_in [[<Key Location>]]"""
)
初期登録のチェックリスト
読み始める前に、作品の主要なエンティティを特定します。まずは次の項目を一覧にするとよいでしょう。
| タイプ | 一般的な件数 | 含めるもの |
|---|---|---|
| 登場人物(主要人物) | 8-20 | 主人公、敵役、重要な脇役 |
| テーマ | 5-12 | 作品で探求される中心的なテーマ |
| 場所 | 4-10 | 主な舞台、象徴的に重要な場所 |
| 象徴 | 4-10 | 多層的な意味を持つ、繰り返し登場する物、イメージ、モチーフ |
スタブは完全でなくてもかまいません。[[wiki-link]] のリンク先として使われ、章の処理を進めるなかで内容が充実していきます。
フェーズ 2:章の処理
原文の準備
全文を入手し、章やセクションの区切りを特定します。パブリックドメイン作品には、Project Gutenberg が適した情報源です。著作権で保護された作品の場合は、現物またはライセンスを受けたデジタル版を使ってください。
バッチ処理の方針
深さと進捗のバランスを取るため、1バッチあたり約10章を処理します。物語の展開やテーマに沿ってまとめます。
| バッチ | 一般的な内容 |
|---|---|
| 1 | 導入:舞台設定、登場人物の紹介、世界観の構築 |
| 2-3 | 展開:対立の確立、人間関係の進展 |
| 4-6 | 中盤:複雑化、転換点、テーマの深化 |
| 7-8 | クライマックスへの接近:緊張の高まり、真相の判明、危機 |
| 最終 | クライマックス、結末、エピローグ |
章の長さや情報密度に応じて、バッチのサイズを調整します。短くアクション中心の章は大きなまとまりで処理できますが、長く哲学的な内容の濃い章は、バッチを小さくする必要がある場合があります。
章ごとのワークフロー
各章について、次の手順で進めます。
1. 章を注意深く読む。 原文ファイルを使う場合は、該当するセクションを読みます。
2. 章のノートを作成する:
write_note(
title="Chapter <N> - <Title>",
directory="chapters",
note_type="Chapter",
tags=["chapter", "<arc-phase>"],
metadata={
"chapter_number": <N>,
"pov": "<narrator or POV character>",
"setting": "<primary location>",
"narrative_mode": "<mode>"
},
content="""# Chapter <N> - <Title>
## Observations
- [summary] <1-2 sentence synopsis>
- [event] <Key plot events>
- [tone] <Emotional and stylistic atmosphere>
- [technique] <Notable narrative techniques>
- [quote] "<Significant passage>"
- [significance] <Why this chapter matters to the whole>
- [foreshadowing] <Hints at future events>
## Relations
- features [[<Character>]]
- set_in [[<Location>]]
- explores [[<Theme>]]
- contains [[<Symbol>]]
- employs [[<Literary Device>]]
- follows [[Chapter <N-1> - <Previous Title>]]
- precedes [[Chapter <N+1> - <Next Title>]]"""
)
3. 関連するエンティティの内容を充実させる:
edit_note(
identifier="characters/major/<character-slug>",
operation="append",
heading="Observations",
content="""- [arc] Ch.<N>: <What happens to this character>
- [quote] "<Attributed quote>" (Ch.<N>)"""
)
4. memory-tasks スキルを使って、コンテキストの圧縮後も保持される処理タスクを作成し、進捗を管理する。
章ごとに記録する内容
| カテゴリ | 確認する内容 |
|---|---|
[summary] | 章のあらすじ(1~2文) |
[event] | 重要なプロット上の出来事(行動、真相の判明、到着など) |
[tone] | 感情的・文体的な雰囲気 |
[technique] | 物語上の工夫(視点の切り替え、構成上の実験、ジャンルの融合) |
[quote] | 印象的、またはテーマ上重要な一節 |
[significance] | 作品全体における、この章の重要性 |
[foreshadowing] | 今後の出来事を示唆する手がかり |
各章ごとのエンティティの充実
各章の処理時に、関連するエンティティに観察事項を追加します。
- 登場人物:
[arc]の場面、新たな[trait]の発見、[quote]の帰属 - テーマ:この章での
[manifestation]、[evolution]の変化 - 象徴:文脈を含む
[appearance]、新たな[interpretation]の視点 - 場所:描写された
[atmosphere]、場面における[significance] - 文学的技法:この章の
[example]
散文と解釈の追加
構造化された観察事項を記録した後、主要なエンティティのノートに解釈的な散文を追加することを検討します。edit_note(operation="prepend")を使い、Observationsセクションの前に批評的なエッセイを2~4段落追加します。この散文では、次の点を満たしてください。
- 登場人物、テーマ、象徴についての読みを論じる。単に描写するだけにしない
- そのエンティティを作品全体の問題意識や文学的伝統と結び付ける
- 主観的な意見を明確に示す(「私の読みでは……」「私は……と考えます」など)
- 章番号を挙げた本文の根拠に基づいて主張を述べる
この散文によって、構造化された観察事項だけでは捉えられない解釈の奥行きが加わります。
フェーズ 3:相互参照
すべての章の処理が終わったら、次の作業を行います。
登場人物の軌跡
主要な登場人物ごとに、作品全体を通じた軌跡をまとめた完全な[arc]の要約観察事項を記述します。
テーマの展開
各テーマについて、導入から結末までの展開をたどる[evolution]の観察事項を追加します。
章同士の類似点
構造的に類似した章(たとえば、対になった場面、繰り返される舞台設定、テーマ上の反響)の間に、parallelsおよびcontrasts_withの関係を追加します。
分析ノート
analysis/に統合的なノートを作成します。
write_note(
title="Narrative Structure",
directory="analysis",
note_type="note",
tags=["analysis", "structure"],
content="""# Narrative Structure
Analysis of the work's narrative architecture.
## Observations
- [structure] <Overall arc description>
- [technique] <Key narrative strategies>
...
## Relations
- analyzes [[<Protagonist>]]
- analyzes [[<Key Character>]]
- explores [[<Central Theme>]]
..."""
)
推奨される分析ノート:
- 物語構造 — 全体的な構成とペース配分
- 作品の概要 — 作品全体の統合的な考察(あらすじ、主張、後世への影響)
- 批評的評価 — 歴史的および現代の解釈
新たに浮かび上がるエンティティの発見
章を処理する中で、新たな脇役、場所、象徴が浮かび上がることがあります。3章以上に登場するもの、またはテーマ上重要なものについてはノートを作成します。
フェーズ 4:検証
スキーマの検証
# Validate each entity type
schema_validate(noteType="Character")
schema_validate(noteType="Theme")
schema_validate(noteType="Chapter")
schema_validate(noteType="Location")
schema_validate(noteType="Symbol")
schema_validate(noteType="LiteraryDevice")
ドリフトの検出
schema_diff(noteType="Character")
# ... for each type
見つかった問題を修正します。よくある修正は次のとおりです。
- 必須の観察カテゴリが欠けている →
edit_noteで追加する - 許可された値の範囲外の列挙値 → メタデータを修正する
- ノートにスキーマ未定義のフィールドがある → 正当なものであれば、スキーマにオプション項目として追加する
関係の整合性
双方向の関係を抜き取り確認します。Chapter Xにfeatures [[Character]]がある場合、CharacterにはChapter Xを参照する観察事項があるでしょうか。不足があれば修正します。
フェーズ 5:可視化
視覚的に探索するためのキャンバスファイルを生成します。
# Character relationship web
canvas(query="type:Character AND role:protagonist OR role:antagonist OR role:supporting")
# Theme connections
canvas(query="type:Theme")
# Chapter timeline with key events
canvas(query="type:Chapter", layout="timeline")
他ジャンルへの適用
このパイプラインはあらゆる文学作品に使用できます。ジャンルに合わせてスキーマを調整してください。
| ジャンル | スキーマの調整 |
|---|---|
| 小説 | 基本スキーマをそのまま使用します。必要に応じて、ジャンル固有の登場人物フィールドを追加します |
| 戯曲 | ActとSceneのスキーマを追加します。Characterにはspeaking_linesフィールドを追加します |
| 詩集 | ChapterをPoemに置き換えます。form、meter、rhyme_schemeフィールドを追加します |
| ノンフィクション | ChapterをSectionに置き換えます。Argument、Evidenceのスキーマを追加します |
| 短編集 | narrator、setting、word_countを含むStoryスキーマを追加します |
| 叙事詩/神話 | Deity、Prophecyのスキーマを追加します。Locationにはmythological_significanceを追加します |
| 回想録 | Characterスキーマにrelationship_to_narratorを追加します。Memoryのスキーマを追加します |
規模に応じた指針
| 作品の長さ | バッチサイズ | 推定ノート数 |
|---|---|---|
| 中編小説(約40K語) | 5~10章 | 約50~80 |
| 小説(約80K語) | 8~12章 | 約100~150 |
| 長編小説(約200K語以上) | 10~15章 | 約200~300 |
| シリーズ(複数巻) | 一度に1巻 | 1巻あたり約200以上 |
関連スキル
- memory-schema — スキーマの作成、検証、ドリフトの検出
- memory-tasks — コンテキスト圧縮後も章の処理状況を追跡
- memory-notes — ノートの記述パターン、観察カテゴリ、Wiki リンク
- memory-ingest — 外部入力を構造化されたエンティティに処理
- memory-metadata-search — フロントマターフィールドによるノートの検索
- memory-lifecycle — 完了した分析フェーズのアーカイブ
ガイドライン
- 処理の前に種をまきます。 エンティティのスタブを先に作成し、章の処理中に Wiki リンクがすぐ解決されるようにします。
- 無理のない単位でまとめます。 1 回に約 10 章を処理すると、深さと勢いのバランスが取れます。タスクノートで進捗を追跡します。
- 原文を読みます。 記憶や要約に頼らないでください。ノートを作成する前に、各バッチの実際の文章を読みます(または読み直します)。何よりも本文中の証拠が重要です。
- 観察事項がインデックスになります。 ナレッジグラフの価値は、分類された観察事項から生まれます。カテゴリを幅広く使い、内容を具体的に記述します。
- 関係性がネットワークになります。 各章を人物、テーマ、場所、装置にリンクします。各エンティティからは、登場する章にリンクを戻します。
- 段階的に充実させます。 エンティティのノートは章を処理するたびに内容が豊かになります。最初から完璧な人物ノートを書こうとせず、作業しながら追記します。
- 深みを出すために散文を加えます。 構造化データを整えた後、主要なノートに解釈的なエッセイを加えます。散文では、観察事項だけでは捉えられない主張、ニュアンス、意見、語り口を表現します。
- 定期的に検証します。 最後だけでなく、各バッチの処理後に
schema_validateを実行します。ドリフトを早期に発見します。 - 引用を惜しみなく使います。 文学分析では本文中の証拠が重要です。重要な引用を、章の出典を付けた
[quote]観察事項として記録します。 - 見直して改訂します。 すべての章を処理した後、外部の視点からグラフ全体を見直します。内容の薄いノート、欠けているつながり、網羅性の不足を探します。最初の確認で終わりではありません。
- 分析は最後に行います。
analysis/の統合ノートは、全体像が見えてから、すべての章を処理した後に作成します。