RAGOpen SourceFreeActiveMachine-verified· beginner · ~10 min setup

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.

by Shilpa Mitra· verified today· v1.0.0

Run this workflow

CI-verified, 4/4 fixtures passing.

Build this with your agent

One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.

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.x

Side 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. 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. 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. 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. 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 today
  • preflight-okcontainstimeout 15s · max $0

    Expected: preflight OK

  • config-validcontainstimeout 15s · max $0

    Expected: config OK: npx -> obsidian-mcp

  • references-readycontainstimeout 15s · max $0

    Expected: references ready: vault/References/

  • clean-exitexit_codetimeout 15s · max $0

    Expected: 0

Results

The contradiction-flag is the sleeper feature, from the WebAfterAI guide.

Did this work for you?

Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.

Related workflows

Liked this workflow?

Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).