calghar38 downloadsSave and categorise links into your knowledge base using AI. Supports Claude, Ollama, and OpenRouter.
An Obsidian plugin that saves web-clipped links into your knowledge base. One command extracts a title and summary using AI, picks the right KB file and section, and inserts a table row.
calghar/LinkVaultgit clone https://github.com/calghar/LinkVault.git
cd LinkVault
npm install
npm run build
Copy main.js, manifest.json, and styles.css into your vault at .obsidian/plugins/linkvault/.
LinkVault processes notes from your Inbox folder. The easiest way to get links into your inbox is with Obsidian Web Clipper.
The plugin reads two frontmatter properties from clipped notes:
url (required) — the source URL, used for the link column in the KB tabletitle (optional) — used as a fallback title if the AI extraction failsIn the Web Clipper extension, create a new template with these settings:
| Setting | Value |
|---|---|
| Name | LinkVault |
| Path | Inbox (must match your LinkVault Inbox folder setting) |
| Note name | {{date|date:"YYYY-MM-DD"}} - {{title|safe_name}} |
Properties:
| Name | Type | Value |
|---|---|---|
date |
Date | {{date}} |
url |
Text | {{url}} |
title |
Text | {{title}} |
Note content:
# {{title}}
{{content}}
[Source]({{url}})
The note content is what the AI reads to extract a summary and determine which KB file and section the link belongs to. Richer content (full article text) produces better matching than a bare URL.
Each KB file represents a topic and contains H2 sections with link tables. For example:
# System Design
#architecture #distributed-systems
---
## Scalability & Load Balancing
| Title | Link | Key Points |
|-------|------|-----------|
| Existing entry | [Link](https://example.com) | Summary of the article |
---
## Caching Strategies
| Title | Link | Key Points |
|-------|------|-----------|
# Photography
#photography #composition
---
## Landscape & Nature
| Title | Link | Key Points |
|-------|------|-----------|
# Personal Finance
#finance #investing
---
## Index Funds & ETFs
| Title | Link | Key Points |
|-------|------|-----------|
| Title | Link | Key Points | header (configurable)Each link uses roughly 1000 tokens across the 3 API calls. With Claude Haiku, that costs fractions of a cent per link.
Anthropicclaude-haiku-4-5-20251001 (fast and affordable)ollama pull llama3.2Ollamahttp://localhost:11434)OpenRouteranthropic/claude-3.5-haiku)All providers support a custom base URL for proxies or self-hosted endpoints.
| Setting | Description | Default |
|---|---|---|
| KB folder | Folder containing KB index files | Knowledge Base |
| Index exclusions | Comma-separated filenames to exclude from AI matching | Knowledge Base Index |
| Inbox folder | Where clipped notes land | Inbox |
| Table header marker | Table header string to search for | | Title | Link | Key Points | |
| After processing | What to do with the inbox file | trash |
| Setting | Description | Default |
|---|---|---|
| Provider | anthropic, ollama, or openrouter |
anthropic |
| API key | Provider API key (not needed for Ollama) | — |
| Model | Model name | claude-haiku-4-5-20251001 |
| Ollama host | Ollama instance URL (Ollama only) | http://localhost:11434 |
| Custom base URL | Override the default API endpoint | — |
| Max tokens | Max tokens for LLM responses | 300 |
All prompts are customisable with template variables:
| Prompt | Variables |
|---|---|
| Extract prompt | {{content}} |
| File match prompt | {{title}}, {{keypoints}}, {{fileList}} |
| Section match prompt | {{title}}, {{keypoints}}, {{sectionList}} |
Content sent to the LLM is truncated to a configurable limit (default: 3000 chars).
| Error | Fix |
|---|---|
| "No KB files found" | Check that KB folder matches the actual folder name in your vault |
| "Active file is not in the Inbox folder" | Open a note inside the configured Inbox folder |
| "Cannot reach Ollama at ..." | Run ollama serve and check the Ollama host setting |
| "API key is not configured" | Enter your API key in Settings → LinkVault |
| "Rate limited" | The plugin retries automatically — wait a moment and try again |
| Wrong file/section matched | Enable Debug mode to see raw AI responses in the console (Ctrl/Cmd+Shift+I) |
Contributions are welcome. See CONTRIBUTING.md for development setup and guidelines.
See CHANGELOG.md for a list of changes in each release.