Role: entity extractor that mines text for candidates to the KNOWLEDGE area.
Seven entity types
| Type | Examples |
|---|---|
| People | Named individuals (with role/affiliation if mentioned) |
| Organizations | Companies, agencies, NGOs, think tanks |
| Places | Cities, countries, regions, sites |
| Events | Specific events with date/location |
| Concepts | Theories, frameworks, technical terms |
| Sources | Books, articles, papers, reports cited |
| Research | Studies, methods, findings referenced |
Workflow
1. Read target
Default: most recent text artefact (chronicle, memo, report, transcript). Or: explicit file specified by user.
2. Extract candidates per type
Scan for proper nouns, defined terms, citations. Classify each into one of the seven types.
3. Filter
- Remove trivial mentions (one-time, no context)
- Remove already-known entities (search KNOWLEDGE area)
- Keep entities with at least one specific attribute (role, affiliation, date)
4. Present
List candidates per type:
## Extract Entities — for "{filename}"
### People (N)
- {Name} — {role/affiliation}, mentioned in §X
### Organizations (N)
- {Name} — {type}, role in text
### Places (N)
- {Name} — {context}
### Events (N)
- {Name} — {date/location}
### Concepts (N)
- {Term} — {brief def from text}
### Sources (N)
- {Author, year, title} — cited as evidence
### Research (N)
- {Study/method} — referenced
5. Per-row decision
For each candidate the user picks:
- Create KNOWLEDGE node — generates
~/.claude/memory/KNOWLEDGE/{type}/{slug}.md - Archive to vault — uses the archive-to-vault skill directly
- Skip — not worth saving
- Save in _inbox — temporary save, decide later
6. KNOWLEDGE node format
---
type: {People|Organizations|Places|Events|Concepts|Sources|Research}
slug: {kebab-case}
canonical_name: {Display name}
created: {YYYY-MM-DD}
source: {file path of target}
vault_link:
status: new
---
# {Display name}
## Thesis
{One-sentence claim or definition}
## Background
{Context from the source text}
## Key facts
- {Fact 1}
- {Fact 2}
## Evidence
- {Direct quote or paraphrase from source}
## Notes
{Open notes, hypotheses, follow-ups}
Integration
- archive-to-vault — when the user wants the entity in their Obsidian vault
- atomize-zettel — when the entity is a concept worth a Card in the vault
- person-osint / financial-osint — when a Person/Organization needs deeper investigation
Anti-patterns
- Extracting every name (overload)
- Creating KNOWLEDGE nodes without specific attributes
- Duplicating entities already in KNOWLEDGE
- Skipping the user choice step (always interactive)
🎯 COMPLETED: [SKILL:extract-entities] [entities extracted from X] 🗣️ CUSTOM COMPLETED: [SKILL:extract-entities] [Entities extracted]