LinkVault
pendingby Farooq Shaikh
Save and categorise links into your knowledge base using AI. Supports Claude, Ollama, and OpenRouter.
LinkVault
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.
Table of Contents
- Features
- How It Works
- Installation
- Web Clipper Setup
- KB File Structure
- Quick Start
- Providers
- Settings
- Troubleshooting
- Contributing
- Changelog
Features
- Supports Anthropic (Claude), Ollama (local/free), and OpenRouter
- Three-tier fuzzy matching (exact, case-insensitive, fallback) so links always land somewhere
- Creates new KB files when no existing file fits the content
- All prompts are customisable via template variables
- Retries transient errors (rate limits, 5xx) with exponential backoff
- Debug mode for inspecting raw LLM responses
How It Works
- You clip a web page into your Inbox folder (via Obsidian Web Clipper or any method)
- Open the clipped note and run "LinkVault: Process Link to KB" from the command palette
- The plugin makes 3 AI calls:
- Extract — pulls a title and one-sentence summary from the note
- Match file — picks the best KB index file
- Match section — picks the best H2 section within that file
- A new table row is inserted into the matched section
- The inbox note is moved to trash (configurable)
Installation
From Community Plugins (recommended)
- Open Settings → Community Plugins → Browse
- Search for "LinkVault"
- Click Install, then Enable
Manual / BRAT
- Install BRAT if you haven't already
- In BRAT settings, add
calghar/LinkVault - Enable the plugin
Build from Source
git 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/.
Web Clipper Setup
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 fails
Recommended template
In 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.
KB File Structure
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 |
|-------|------|-----------|
- Each file can have multiple H2 sections, each with its own table
- Tables must use the
| Title | Link | Key Points |header (configurable) - New rows are inserted after the separator row of the matched section
Quick Start
- Open Settings → LinkVault
- Set your KB folder (where your knowledge base index files live)
- Set your Inbox folder (where clipped notes land)
- Choose a provider and enter your API key (not needed for Ollama)
- Click Test Connection to verify
- Open a note in your Inbox and run "LinkVault: Process Link to KB" from the command palette (Ctrl/Cmd+P)
Each link uses roughly 1000 tokens across the 3 API calls. With Claude Haiku, that costs fractions of a cent per link.
Providers
Anthropic (Claude)
- Set Provider to
Anthropic - Get an API key from console.anthropic.com
- Default model:
claude-haiku-4-5-20251001(fast and affordable)
Ollama (local, free)
- Install Ollama and pull a model:
ollama pull llama3.2 - Set Provider to
Ollama - Adjust Ollama host if needed (default:
http://localhost:11434)
OpenRouter
- Set Provider to
OpenRouter - Get an API key from openrouter.ai
- Set Model to any available model (e.g.
anthropic/claude-3.5-haiku)
All providers support a custom base URL for proxies or self-hosted endpoints.
Settings
Knowledge Base
| 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 |
AI Provider
| 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 |
Prompts (Advanced)
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).
Troubleshooting
| 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) |
Contributing
Contributions are welcome. See CONTRIBUTING.md for development setup and guidelines.
Changelog
See CHANGELOG.md for a list of changes in each release.
License
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.