From obsidian-qmd-search
Batch-collect vault metadata using obsidian list commands and qmd multi_get. Avoids N individual CLI calls for large-scale operations across many files.
How this skill is triggered — by the user, by Claude, or both
Slash command
/obsidian-qmd-search:bulk-scanWhen to use
INVOKE when: a workflow needs metadata (frontmatter, properties, tags) across a large set of files at once. Triggers: "collect frontmatter from all notes", "scan metadata for the whole folder", "bulk metadata pull", "전체 노트 메타데이터 모아줘", "폴더 전체 frontmatter 스캔", "대량 메타데이터 수집"
haikuThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Efficiently collect metadata for many vault notes at once. Use this instead of calling `obsidian wordcount/properties/tags` per-file in a loop.
Efficiently collect metadata for many vault notes at once. Use this instead of calling obsidian wordcount/properties/tags per-file in a loop.
Get all files with metadata in a single call:
obsidian files ext=md format=json
Returns file paths. Use this as the base list for all subsequent operations.
Read multiple files at once instead of N individual obsidian read calls:
mcp__qmd__multi_get with:
- pattern: "folder/*.md" # glob pattern
- maxLines: 20 # first 20 lines (frontmatter + intro)
- maxBytes: 10240
Or comma-separated list:
mcp__qmd__multi_get with:
- pattern: "file1.md,file2.md,file3.md"
Get vault-wide property statistics in one call:
obsidian properties counts sort=count format=json # all properties
obsidian tags counts sort=count format=json # all tags
Per-folder:
obsidian files folder=<path> ext=md # list files in folder
Then batch-read frontmatter via qmd:
mcp__qmd__multi_get with:
- pattern: "<folder>/*.md"
- maxLines: 10 # frontmatter only
Bulk link health is available in single calls:
obsidian orphans # all orphans at once
obsidian deadends # all deadends at once
obsidian unresolved # all unresolved at once
No need to check per-file.
When checking many notes against the vault (e.g., consistency-checker), batch qmd queries:
# Search for each note's topic — but do it sequentially via mcp__qmd__query
# The MCP server keeps the model in memory, so repeated queries are fast
qmd MCP maintains the embedding model in memory. Sequential queries are fast (no cold start per query).
| Need | Bad Pattern (slow) | Good Pattern (fast) |
|---|---|---|
| All file paths | Loop obsidian file per name | obsidian files ext=md format=json (1 call) |
| Read N files | Loop obsidian read per file | mcp__qmd__multi_get with glob/list |
| Frontmatter of N files | Loop obsidian properties file=X | mcp__qmd__multi_get maxLines=10 (frontmatter only) |
| Orphans/deadends | Loop obsidian links per file | obsidian orphans / obsidian deadends (1 call) |
| Word count of N files | Loop obsidian wordcount per file | Read files via mcp__qmd__multi_get, count words in content |
| Search N topics | N separate web searches | Sequential mcp__qmd__query (MCP model stays warm) |
For incremental operations:
vault-git skill (git diff)mcp__qmd__multi_get with comma-separated listThis avoids scanning unchanged files entirely.
npx claudepluginhub juyeongyi/jylee_claude_marketplace --plugin obsidianCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.