Source Library
A persistent, searchable knowledge base built from everything the user shares. Not a bookmark manager — a cross-referenced memory system with connection mapping, conflict detection, and confidence decay.
Quick Start
node scripts/source-library.js setup— creates directories- Share any URL in chat — the agent auto-processes and saves it
- Use
node scripts/source-library.js search "query"to find past sources
Auto-Trigger Behavior
When the user shares any URL, without being asked:
- Search first — use local source search to find related existing sources. Surface specific connections.
- Analyze with context — discuss the new source with existing knowledge layered in.
- Save with substance:
node scripts/source-library.js save --name "Title" --url "https://..." --author "Name" --type "article" --tags "topic1, topic2" --claims "Claim 1. Claim 2." --analysis "Why this matters" --context "How it came up" - Every entry must be useful months later without re-reading the original.
Command Reference
All commands via node scripts/source-library.js <command>:
| Command | Description |
|---|---|
setup | Create directories, first-run welcome |
save --name "..." --url "..." [--author --type --tags --summary --claims --analysis --context --slug --related --decay --date --force] | Save a source |
list [--type tweet] [--tag crypto] [--decay] | List sources with optional filters |
search "query" [--limit 10] | Search local source summaries with relevance scoring |
stats | Library statistics (total, by type, by tag, disk usage) |
connections [--clusters|--orphans] | Map relationships between sources |
conflicts | Detect contradictions via sentiment heuristics |
queue add "url" [--note "..."] | Add URL to reading queue |
queue list | Show queued items |
queue next | Show oldest unprocessed item |
queue done "url-or-index" | Remove from queue |
teach "topic" [--limit 20] | Synthesize knowledge from related sources |
import file.json | Bulk import from JSON (full objects or URL array) |
Entry Format
Each source lives at life/source/{slug}/summary.md:
# Title
**Source:** URL
**Author:** Name (@handle)
**Date:** YYYY-MM-DD
**Type:** tweet|thread|article|repo|video|paper
**Tags:** comma-separated
**Decay:** fast|normal|slow
## Key Claims
- Actual arguments, mechanics, data points
- Specific enough to be useful without re-reading original
## Notable Quotes
- Direct quotes worth remembering verbatim
## Analysis
What matters. Connections to other knowledge. Why it's significant.
## Context
Why it was shared. Decisions made based on this.
## Related Sources
- [[other-source-slug]]
Quality Rules
- No vibes. "Interesting macro take" is worthless. Capture specific claims, mechanics, data.
- Capture mechanics, not conclusions. Store the reasoning, not just the takeaway.
- Include quotes. Direct quotes are highest-fidelity knowledge.
- Tag generously. Tags enable future discovery. Include topic, author, domain, entities.
- Record decisions. If a source led to action, capture that in Context.
- Cross-reference. A connected source is knowledge; an isolated source is a bookmark.
Do NOT Use For
- General web browsing or page fetching without saving
- Bookmark management (no "save for later" without substance)
- Summarizing pages the user didn't ask to save
- Anything outside the user's knowledge base