Memory Literary Analysis

basicmachines-co/basic-memory-skills/memory-literary-analysis

作者 basicmachines-co6d2b1d426d0dacf020aef45f029768c9d8c1e5e5無授權條款24 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫5 個月前更新

Analyze a complete literary work into a structured Basic Memory knowledge graph. Covers schema design, entity seeding, chapter-by-chapter processing, cross-referencing, validation, and visualization.

AI 產生的概覽

將一部完整文學作品轉化為結構化的 Basic Memory 知識圖譜,涵蓋人物、主題、章節、象徵與文學手法。

功能
它定義了一套五階段流程:建立 Basic Memory 專案並寫入六個結構定義筆記,為主要實體建立佔位筆記,分批逐章處理文本,交叉引用人物弧線與主題,驗證結構定義,並產生畫布視覺化。每一章會產生一則帶有分類觀察與 wiki 連結關係的筆記,實體筆記則隨處理過程持續補充。它也提供依文類調整結構定義的方法與規模估算指引。
適用情境
適用於對小說、戲劇、詩歌或非虛構書籍進行端到端分析,或建立教學、學習與讀書會搭配的知識庫。也適合需要結構化細讀的研究專案,或對 Basic Memory 進行大規模壓力測試。
執行需求
需要 Basic Memory 工具及其筆記操作(write_note、edit_note、schema_validate、schema_diff、canvas、create_memory_project),並能存取完整原文。此技能未附帶指令碼,僅為說明文件。文中也引用了相關的 memory 技能,用於結構定義、任務、筆記、擷取、中繼資料檢索與生命週期。

Memory Literary Analysis

Transform a complete literary work into a structured knowledge graph. Characters, themes, chapters, locations, symbols, and literary devices become interconnected notes — searchable, validatable, and visualizable.

When to Use

  • Analyzing a novel, play, poem, or non-fiction book end-to-end
  • Building a teaching or study resource for a literary text
  • Creating a book club companion knowledge base
  • Research projects requiring structured close reading
  • Stress-testing Basic Memory at scale (~200+ notes, 1000+ relations)

Pipeline Overview

Phase 0: Setup         → project, schemas, directory structurePhase 1: Seed          → stub notes for known major entitiesPhase 2: Process       → chapter-by-chapter notes in batchesPhase 3: Cross-ref     → enrich arcs, add parallels, write analysisPhase 4: Validate      → schema checks, drift detection, consistencyPhase 5: Visualize     → canvas files for character webs, timelines

Phase 0: Setup

Create the Project

python
create_memory_project(name="<work-name>", path="~/basic-memory/<work-name>")

Use a kebab-case slug of the work's title (e.g., great-gatsby, hamlet, beloved).

Define Schemas

Write 6 schema notes to schema/. Each schema defines the entity type's fields, observation categories, and relation types. Adapt fields to fit the work — the schemas below are starting points, not rigid templates.

Character Schema
python
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""")

Add work-specific fields as needed — e.g., rank for military fiction, house for family sagas, species for fantasy.

Theme Schema
python
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 Schema
python
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 Schema
python
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 Schema
python
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 Schema
python
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""")

Directory Structure

<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

Phase 1: Seed Entities

Before processing chapters, create stub notes for major entities so [[wiki-links]] resolve from the start.

Characters (major)

For each major character, create a stub with known metadata:

python
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>]]""")

Seed Checklist

Identify the work's major entities before you start reading. A good starting inventory:

TypeTypical CountWhat to Include
Characters (major)8-20Protagonist, antagonist, key supporting cast
Themes5-12Central concerns the work explores
Locations4-10Primary settings, symbolically significant places
Symbols4-10Recurring objects, images, or motifs with layered meaning

Stubs don't need to be complete — they give [[wiki-link]] targets and will be enriched during chapter processing.

Phase 2: Chapter Processing

Source Text Preparation

Obtain the full text and identify chapter/section boundaries. For public domain works, Project Gutenberg is a good source. For copyrighted works, work from a physical or licensed digital copy.

Batching Strategy

Process ~10 chapters per batch to balance depth with progress. Group by narrative arc or thematic focus:

BatchTypical Content
1Opening: setting, character introductions, world-building
2-3Rising action: conflicts established, relationships develop
4-6Middle: complications, turning points, thematic deepening
7-8Climax approach: escalation, revelations, crises
FinalClimax, resolution, epilogue

Adjust batch size based on chapter length and density. Short, action-heavy chapters can be batched in larger groups; long, philosophically dense chapters may need smaller batches.

Per-Chapter Workflow

For each chapter:

1. Read the chapter carefully. If working from a source text file, read the relevant section.

2. Create the chapter note:

python
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. Enrich related entities:

python
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. Track progress using the memory-tasks skill to create a processing task that survives context compaction.

What to Capture Per Chapter

CategoryWhat to Look For
[summary]1-2 sentence chapter synopsis
[event]Key plot events (actions, revelations, arrivals)
[tone]Emotional and stylistic atmosphere
[technique]Narrative innovations (POV shifts, structural experiments, genre blending)
[quote]Memorable or thematically significant passages
[significance]Why this chapter matters to the whole
[foreshadowing]Hints at future events

Entity Enrichment Per Chapter

As each chapter is processed, append observations to relevant entities:

  • Characters: [arc] moments, new [trait] revelations, [quote] attributions
  • Themes: [manifestation] in this chapter, [evolution] shifts
  • Symbols: [appearance] with context, new [interpretation] angles
  • Locations: [atmosphere] as described, [significance] in scene
  • Literary devices: [example] from this chapter

Adding Prose and Interpretation

After the structured observations are in place, consider adding interpretive prose to major entity notes. Prepend 2-4 paragraphs of critical essay before the Observations section using edit_note(operation="prepend"). This prose should:

  • Argue for a reading of the character, theme, or symbol — not just describe it
  • Connect the entity to the work's larger concerns and to literary tradition
  • Include subjective opinions clearly marked as such ("In my reading...", "I find...")
  • Ground claims in textual evidence cited by chapter number

The prose adds the interpretive texture that structured observations alone cannot capture.

Phase 3: Cross-Referencing

After all chapters are processed:

Character Arcs

For each major character, write a full [arc] summary observation covering their trajectory across the work.

Theme Evolution

For each theme, add [evolution] observations tracing how it develops from introduction to resolution.

Chapter Parallels

Add parallels and contrasts_with relations between structurally similar chapters (e.g., mirrored scenes, repeated settings, thematic echoes).

Analysis Notes

Create synthesis notes in analysis/:

python
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>]]...""")

Recommended analysis notes:

  • Narrative Structure — overall architecture and pacing
  • Work Overview — synthesis of the complete work (summary, thesis, legacy)
  • Critical Reception — historical and contemporary interpretations

Discover Emergent Entities

During chapter processing, new minor characters, locations, and symbols will emerge. Create notes for any that appear in 3+ chapters or carry thematic weight.

Phase 4: Validation

Schema Validation

python
# Validate each entity typeschema_validate(noteType="Character")schema_validate(noteType="Theme")schema_validate(noteType="Chapter")schema_validate(noteType="Location")schema_validate(noteType="Symbol")schema_validate(noteType="LiteraryDevice")

Drift Detection

python
schema_diff(noteType="Character")# ... for each type

Fix issues found — common fixes:

  • Missing required observation categories → add them via edit_note
  • Enum values outside allowed set → correct metadata
  • Fields in notes but not schema → add as optional to schema if legitimate

Relation Consistency

Spot-check bidirectional relations: if Chapter X features [[Character]], does Character have observations referencing Chapter X? Fix gaps.

Phase 5: Visualization

Generate canvas files for visual exploration:

python
# Character relationship webcanvas(query="type:Character AND role:protagonist OR role:antagonist OR role:supporting")
# Theme connectionscanvas(query="type:Theme")
# Chapter timeline with key eventscanvas(query="type:Chapter", layout="timeline")

Adapting to Other Genres

This pipeline works for any literary text. Adjust schemas for genre:

GenreSchema Adjustments
NovelBase schemas work as-is; add genre-specific Character fields as needed
PlayAdd Act and Scene schemas; Character gets speaking_lines field
Poetry collectionReplace Chapter with Poem; add form, meter, rhyme_scheme fields
Non-fictionReplace Chapter with Section; add Argument, Evidence schemas
Short story collectionAdd Story schema with narrator, setting, word_count
Epic/mythAdd Deity, Prophecy schemas; Location gets mythological_significance
MemoirCharacter schema gets relationship_to_narrator; add Memory schema

Scaling Guidance

Work LengthBatch SizeEstimated Notes
Novella (~40K words)5-10 chapters~50-80
Novel (~80K words)8-12 chapters~100-150
Long novel (~200K+ words)10-15 chapters~200-300
Series (multiple volumes)1 volume at a time~200+ per volume

Related Skills

  • memory-schema — Schema creation, validation, and drift detection
  • memory-tasks — Track chapter processing progress across context compaction
  • memory-notes — Note writing patterns, observation categories, wiki-links
  • memory-ingest — Processing external input into structured entities
  • memory-metadata-search — Querying notes by frontmatter fields
  • memory-lifecycle — Archiving completed analysis phases

Guidelines

  • Seed before processing. Create entity stubs first so wiki-links resolve immediately during chapter processing.
  • Batch for sanity. Processing ~10 chapters at a time balances depth with momentum. Track progress with a Task note.
  • Read the source text. Don't rely on memory or summaries. Read (or re-read) the actual text for each batch before creating notes. Textual evidence is everything.
  • Observations are your index. The knowledge graph's value comes from categorized observations. Be generous with categories and specific with content.
  • Relations are your web. Every chapter should link to characters, themes, locations, and devices. Every entity should link back to chapters where it appears.
  • Enrich iteratively. Entity notes grow richer with each chapter. Don't try to write the perfect character note upfront — append as you go.
  • Add prose for depth. After structured data is in place, add interpretive essays to major notes. The prose captures what observations cannot: argument, nuance, opinion, and voice.
  • Validate periodically. Run schema_validate after each batch, not just at the end. Catch drift early.
  • Quote generously. Literary analysis lives on textual evidence. Include significant quotes as [quote] observations with chapter attribution.
  • Review and revise. After completing all chapters, review the full graph from an external perspective. Look for thin notes, missing connections, and gaps in coverage. The first pass is never the last.
  • Analysis comes last. Synthesis notes in analysis/ should be written after all chapters are processed, when you have the full picture.

來源與署名

來源:basicmachines-co/basic-memory-skills位於memory-literary-analysis提交6d2b1d4

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架