Knowledge Import Guide
EchOS stores every note as a plain.md file with YAML frontmatter, making the knowledge base
natively readable in any markdown editor and trivially importable from Obsidian vaults,
Notion exports, PDFs, audio files, and RSS feeds.
Capturing content from URLs
The fastest way to import content is to ask the agent directly. EchOS includes plugins for several content types:
Each plugin downloads the content, extracts the relevant text (or transcript), and saves it as a searchable markdown note. AI categorization is applied automatically when
ANTHROPIC_API_KEY is configured.
PDF import
save_pdf, which:
- Downloads the PDF
- Extracts text via
pdf-parse - Creates a note with
type: articleandinputSource: file
Audio and podcast import
save_audio, which:
- Probes the file size (HEAD, then
Range: bytes=0-0if needed) - Downloads — splitting into 24 MB chunks if the file exceeds 25 MB
- Transcribes each chunk via OpenAI Whisper (
whisper-1) - Saves a note with
type: noteandinputSource: voice
.mp3, .wav, .m4a, .ogg, .webm, .mp4, .flac
Requirement: OPENAI_API_KEY must be configured. See Setup for details.
RSS and Atom feed subscriptions
manage_feeds (action: add), which:
- Validates the URL (SSRF protection)
- Fetches the feed to confirm it is parseable
- Stores the subscription in the plugin’s SQLite database
- Claims the article’s guid atomically (deduplication)
- Extracts the full article text via
@echos/plugin-article - Applies AI categorization (inherits feed tags plus
rss) - Saves a note with
type: articleandinputSource: url
Opening EchOS in Obsidian
Point Obsidian at the knowledge directory and everything works immediately:- In Obsidian: Open folder as vault → select your
KNOWLEDGE_DIR(defaults to~/echos/knowledge/, or wherever configured in your.env) - All notes open with their frontmatter properties visible in Obsidian’s Properties panel
- Live edits in Obsidian are picked up automatically by EchOS’s file watcher — no restart needed
EchOS watches
KNOWLEDGE_DIR for changes. Saving a file in Obsidian triggers a re-index within seconds. New files added via Obsidian are indexed the same way.Dropping in pre-formatted files
Any.md file that already has the required EchOS frontmatter is indexed automatically:
- Copy/paste the file into any folder under your knowledge directory (defaults to
~/echos/knowledge/, folder structure is free-form) - Either wait for the file watcher to pick it up (if EchOS is running), or run:
- The file appears in search results immediately
Importing from an Obsidian vault
Use theimport:obsidian script to convert an existing Obsidian vault into EchOS format.
What gets converted
Step by step
1. Preview first (recommended)$ECHOS_HOME/knowledge/{type}/{category}/{date}-{slug}.md (defaults to ~/echos/knowledge/) with EchOS frontmatter.
4. Override the default type
type in their frontmatter will be imported as that type.
Valid types: note | journal | article | youtube | tweet | reminder | conversation | image
5. Force tags on every imported note
#hashtags. Useful when importing a folder of thematically related files that have no frontmatter.
6. Override category for every imported note
--force)
If you ran the importer before and files already have an EchOS id, they are skipped by default.
Use --force to re-process them: tags are merged in, --category / --type overrides are applied,
and the existing id (and all other fields) is preserved.
--force works with --copy too: the patched file is written to the target directory.
Combining flags — real-world example
Importing a fresh folder of AI articles (no frontmatter), tagging them consistently and
copying to the knowledge base without touching the originals:
Importing from Notion
Notion’s markdown export has a few quirks theimport:notion script handles automatically:
- Filename UUID suffix — Notion appends a short hex ID:
My Note abc123def456.md→ title becomesMy Note - Date formats —
Created: January 1, 2023or ISO 8601; script tries multiple field names - Comma-separated tags —
Tags: ai, productivity→['ai', 'productivity'] - No type field — all imported as
'note'
Notion export format
To export from Notion: Settings → Export content → Markdown & CSV → Export. Unzip the export. The folder contains one.md per page plus sub-folders for nested pages.
Step by step
1. Preview--target (not modified in place), at:
{target}/note/{category}/{date}-{slug}.md
3. Index
Before/after example
Notion export (My Ideas abc123.md):
import:notion:
Frontmatter reference
All fields EchOS reads from.md files:
After import: run pnpm reconcile
KNOWLEDGE_DIR into:
- SQLite (metadata + FTS5 full-text index)
- LanceDB (placeholder vector embeddings — real embeddings generated when EchOS runs)
pnpm start) — it reconciles on every startup.