Research Ingestion: File a Source Into Your Knowledge Base
Paste an article or transcript into your vault and have Claude summarize, link, and flag contradictions.
Run this workflow
CI-verified, 4/4 fixtures passing.
Intended Use
Researchers and note-takers who paste sources into an Inbox and want Claude to file them: a References/ summary with metadata and takeaways, two-way links to related notes, and a flag on anything that contradicts existing notes.
Not for
- Expecting it to browse the web, these connectors work on what's in the vault, paste the content in
- Vaults you haven't backed up
The Stack
Tested Against
obsidian-mcp@0.xclaude-desktopnode@20.xSide effects & data flow
- Network
- Anthropic API, only in the non-CI Claude step
- Writes
- ./vault/References/, claude_desktop_config.json
- Credentials
- Claude Desktop login, for the ingestion step only
Data privacy
- Anthropic (Claude), only in the non-CI agent step ← the source text you paste in (retention: per Anthropic's API/data policy)
Prerequisites
- Claude Desktop, https://claude.ai/download
- Node 20+ (obsidian-mcp runs via npx)
- The source text pasted into Inbox/ (these connectors don't fetch URLs)
Steps
- 1
Check your toolchain
Config validation needs Node; Claude Desktop is the agent for the final step.
command -v node >/dev/null 2>&1 || { echo "MISSING required: node"; exit 1; } command -v claude >/dev/null 2>&1 || echo "optional: Claude Desktop (for the ingestion step)" echo "preflight OK" - 2
Validate the Claude Desktop config (Option A)
Write the exact Option A block and prove it parses and points npx at obsidian-mcp.
cat > claude_desktop_config.json <<'EOF' { "mcpServers": { "obsidian": { "command": "npx", "args": ["-y", "obsidian-mcp", "/Users/you/Documents/MyVault"] } } } EOF node -e 'const c=JSON.parse(require("fs").readFileSync("claude_desktop_config.json","utf8"));const o=c.mcpServers.obsidian;if(o.command==="npx"&&o.args.includes("obsidian-mcp")){console.log("config OK: npx -> obsidian-mcp")}else{console.log("BAD");process.exit(1)}' - 3
Scaffold the inbox and references folders
Create Inbox/ and References/ and drop a sample source note for Claude to file.
mkdir -p vault/Inbox vault/References printf '%s\n' 'Source: a paper arguing vectorless RAG beats embeddings for small corpora.' > vault/Inbox/source.md echo "references ready: vault/References/" - 4
File the source (the Claude step, not checked by CI)
Tell Claude: read the note in Inbox/, create a summary in References/ with key insights + source metadata + 3 to 5 takeaways, then search the vault for related notes, link both ways, and flag anything that contradicts existing notes. Non-deterministic and key-gated, so CI doesn't run it.
Eval, 4 fixtures
Last passed: verified 10d agoclean-exitexit_codetimeout 15s · max $0Expected:
0config-validcontainstimeout 15s · max $0Expected:
config OK: npx -> obsidian-mcppreflight-okcontainstimeout 15s · max $0Expected:
preflight OKreferences-readycontainstimeout 15s · max $0Expected:
references ready: vault/References/
Results
The contradiction-flag is the sleeper feature, from the WebAfterAI guide.