Ingest, query, lint, and index QMD wiki pages from an Obsidian vault.
Goal: Manage a QMD wiki — ingest sources, query pages, lint frontmatter, and build an index.
Graceful degradation: When qmd is unavailable, operations fall back to glob+grep over the vault path.
Read from settings.json:
| Key | Description |
|---|---|
OBSIDIAN_VAULT_PATH | Root path of the Obsidian vault |
QMD_WIKI_SOURCES | List of source globs to ingest |
QMD_WIKI_SCOPE | wiki scope subdirectory (default: wiki/) |
Ingest a source file or URL into the wiki.
wiki/sources/<slug>.md with frontmatter + content## [YYYY-MM-DD] ingest | TitleYAML frontmatter security: All frontmatter is written using yaml.safe_dump. No raw YAML strings.
Search wiki pages by tag, entity, or concept.
wiki/**/*.mdyaml.safe_loadFallback: If qmd unavailable, use glob+grep over OBSIDIAN_VAULT_PATH.
Validate frontmatter schema on wiki pages.
Checks:
tags, created, sources, summarytags is a listsources is a list of source referencessummary is a stringBuild a searchable index of all wiki pages.
Output: wiki/index.json with page titles, tags, entities, concepts, and paths.
wiki/
entities/ # Entity pages (people, places, tools)
concepts/ # Concept pages (ideas, patterns, techniques)
sources/ # Immutable raw sources (ingest target)
comparisons/ # Comparison pages (X vs Y)
index.json # Search index
Every wiki page requires: