
Memory Literary Analysis
- 476 installs
- 25 repo stars
- Updated April 20, 2026
- basicmachines-co/basic-memory-skills
memory-literary-analysis is a Claude Code skill that transforms a complete literary work into a structured Basic Memory knowledge graph with six entity schemas, chapter-by-chapter notes, cross-references, validation, and
About
memory-literary-analysis is a Claude Code skill from basicmachines-co/basic-memory-skills that turns novels, plays, poems, or non-fiction into a Basic Memory knowledge graph. The pipeline runs six phases—setup, seed, chapter processing, cross-referencing, validation, and visualization—using six schema types (Character, Theme, Chapter, Location, Symbol, LiteraryDevice) and wiki-linked notes organized under chapters/, characters/, themes/, and analysis/ directories. Developers reach for memory-literary-analysis when building book-club companions, teaching resources, or research projects that must survive across sessions and scale to roughly 200+ notes and 1000+ relations. Processing runs in batches of about ten chapters per pass, with schema_validate and canvas queries at the end.
- Persistent thematic memory across readings
- Character and motif tracking
- Citation-aware literary synthesis
- Session-spanning annotation patterns
- Research-backed essay support
Memory Literary Analysis by the numbers
- 476 all-time installs (skills.sh)
- Ranked #1,828 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 1, 2026 (Skillselion catalog sync)
npx skills add https://github.com/basicmachines-co/basic-memory-skills --skill memory-literary-analysisAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 476 |
|---|---|
| repo stars | ★ 25 |
| Last updated | April 20, 2026 |
| Repository | basicmachines-co/basic-memory-skills ↗ |
How do you structure literary analysis in a knowledge graph?
Analyze literature with persistent memory: track themes, characters, motifs, and citations across sessions for essays, reading groups, or research-backed creative writing workflows.
Who is it for?
Developers using Basic Memory who need end-to-end, session-persistent literary analysis with schema validation and visual graph exploration.
Skip if: Developers who only need a one-off essay summary without a persistent, validated knowledge graph tied to Basic Memory tooling.
When should I use this skill?
A developer asks to analyze a novel, play, poem, or book into Basic Memory with themes, characters, chapter notes, and cross-session persistence.
What you get
Basic Memory project with six schemas, chapter notes, entity stubs, cross-references, validated metadata, and canvas visualizations
- Schema notes
- Chapter and entity notes
- Canvas visualization files
By the numbers
- Defines 6 entity schemas for literary analysis
- Runs a 6-phase pipeline from setup through visualization
- Targets ~200+ notes and 1000+ relations at scale
Files
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 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, timelinesPhase 0: Setup
Create the Project
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
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
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
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
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
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
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 trackerPhase 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:
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:
| Type | Typical Count | What to Include |
|---|---|---|
| Characters (major) | 8-20 | Protagonist, antagonist, key supporting cast |
| Themes | 5-12 | Central concerns the work explores |
| Locations | 4-10 | Primary settings, symbolically significant places |
| Symbols | 4-10 | Recurring 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:
| Batch | Typical Content |
|---|---|
| 1 | Opening: setting, character introductions, world-building |
| 2-3 | Rising action: conflicts established, relationships develop |
| 4-6 | Middle: complications, turning points, thematic deepening |
| 7-8 | Climax approach: escalation, revelations, crises |
| Final | Climax, 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:
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:
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
| Category | What 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/:
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
# 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")Drift Detection
schema_diff(noteType="Character")
# ... for each typeFix 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:
# 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")Adapting to Other Genres
This pipeline works for any literary text. Adjust schemas for genre:
| Genre | Schema Adjustments |
|---|---|
| Novel | Base schemas work as-is; add genre-specific Character fields as needed |
| Play | Add Act and Scene schemas; Character gets speaking_lines field |
| Poetry collection | Replace Chapter with Poem; add form, meter, rhyme_scheme fields |
| Non-fiction | Replace Chapter with Section; add Argument, Evidence schemas |
| Short story collection | Add Story schema with narrator, setting, word_count |
| Epic/myth | Add Deity, Prophecy schemas; Location gets mythological_significance |
| Memoir | Character schema gets relationship_to_narrator; add Memory schema |
Scaling Guidance
| Work Length | Batch Size | Estimated 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_validateafter 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.
Related skills
How it compares
Choose memory-literary-analysis over generic note-taking skills when literary entities, schema validation, and Basic Memory canvas visualization are required.
FAQ
What schemas does memory-literary-analysis define?
memory-literary-analysis defines six Basic Memory schemas—Character, Theme, Chapter, Location, Symbol, and LiteraryDevice—each with typed metadata fields, observation categories, and relation types. Developers adapt fields per genre before seeding major entities and processing ch
How does memory-literary-analysis process long novels?
memory-literary-analysis processes novels in batches of roughly ten chapters, creating chapter notes with observations and wiki-links while enriching character, theme, and symbol entities. A tasks tracker preserves progress across context compaction until validation and canvas vi
When should developers use memory-literary-analysis?
memory-literary-analysis fits end-to-end analysis of novels, plays, poems, or non-fiction when developers need searchable, validatable study resources in Basic Memory. The skill stress-tests large graphs at roughly 200+ notes and 1000+ relations.