LLM Annotations
unlistedby Aditya Sarkar
Highlight passages and attach feedback annotations for LLMs. Build up annotations, then copy a compiled summary optimized for LLM consumption.
LLM Annotations — Obsidian Plugin
Highlight passages in your notes and attach feedback for an LLM. Build up multiple annotations, then copy a compiled summary to your clipboard in an LLM-optimized format. Designed for the workflow of iterating on writing with Claude Code or other LLMs.
Example output copied to clipboard:
File: meeting-notes.md
---
[Lines 3-5] "We should revisit the pricing model before launch"
Feedback: Expand this into a full paragraph with specific numbers from the Q3 report.
---
[Line 12] "TBD"
Feedback: Replace with a concrete timeline — suggest 2 weeks for phase 1.
Installation
Option A: For developers (building from source)
Use this if you want to modify the plugin or contribute to development.
Prerequisites
Steps
-
Fork the repository
Go to the plugin's GitHub repository page and click the Fork button in the top-right corner. This creates your own copy of the repo under your GitHub account.
-
Clone your fork to your machine
Open a terminal and run:
git clone https://github.com/YOUR-USERNAME/obsidian-llm-annotations.gitReplace
YOUR-USERNAMEwith your GitHub username. -
Install dependencies
cd obsidian-llm-annotations npm install -
Build the plugin
For a one-time production build:
npm run buildOr, for development (auto-rebuilds when you edit source files):
npm run devThis produces
main.jsin the project root. -
Copy the plugin into your Obsidian vault
You need to copy three files into your vault's plugin directory. Your vault is the folder where your Obsidian notes live.
# Create the plugin folder inside your vault mkdir -p /path/to/your/vault/.obsidian/plugins/llm-annotations # Copy the required files cp main.js manifest.json styles.css /path/to/your/vault/.obsidian/plugins/llm-annotations/Replace
/path/to/your/vaultwith the actual path to your Obsidian vault folder.Tip: You can find your vault path by opening Obsidian, clicking the vault icon in the bottom-left corner, and looking at the path shown there.
-
Enable the plugin in Obsidian
- Open Obsidian and go to Settings (gear icon in the bottom-left).
- In the left sidebar, click Community plugins.
- If you see a message about Restricted Mode, click Turn on community plugins. This is a one-time step that allows Obsidian to run third-party plugins.
- Under Installed plugins, find LLM Annotations and toggle it on.
- Close Settings. You should see a speech-bubble icon in the left ribbon bar.
If the plugin doesn't appear in the list, try restarting Obsidian (fully quit and reopen).
Option B: Manual install (no coding required)
Use this if someone shared the plugin files with you, or you downloaded a release.
What you need
Three files (you should have received all three):
| File | What it is |
|---|---|
main.js | The plugin code |
manifest.json | Plugin metadata |
styles.css | Plugin styling |
Steps
-
Locate your Obsidian vault folder
Your vault is the folder on your computer where Obsidian stores your notes. If you're not sure where it is:
- Open Obsidian
- Click the vault name or vault icon in the bottom-left corner
- The file path is shown there
For example, it might be something like:
- macOS:
/Users/yourname/Documents/MyVault - Windows:
C:\Users\yourname\Documents\MyVault
-
Show hidden files
The
.obsidianfolder is hidden by default. You'll need to make it visible:- macOS: In Finder, press
Cmd + Shift + .(period) to toggle hidden files. - Windows: In File Explorer, click View in the toolbar and check Hidden items.
- macOS: In Finder, press
-
Create the plugin folder
Navigate into your vault folder and find the
.obsidiandirectory. Inside it:- Open the
pluginsfolder. If it doesn't exist, create a new folder calledplugins. - Inside
plugins, create a new folder calledllm-annotations.
Your folder structure should look like this:
YourVault/ └── .obsidian/ └── plugins/ └── llm-annotations/ - Open the
-
Copy the plugin files
Place all three files (
main.js,manifest.json,styles.css) into thellm-annotationsfolder you just created:YourVault/ └── .obsidian/ └── plugins/ └── llm-annotations/ ├── main.js ├── manifest.json └── styles.css -
Restart Obsidian
Fully quit Obsidian and reopen it so it detects the new plugin.
-
Enable community plugins
If this is the first third-party plugin you're installing:
- Open Settings (click the gear icon in the bottom-left of Obsidian).
- Click Community plugins in the left sidebar.
- You'll see a warning about Restricted Mode. Click Turn on community plugins.
-
Enable LLM Annotations
- Still in Settings → Community plugins, scroll down to Installed plugins.
- Find LLM Annotations in the list.
- Toggle the switch next to it to turn it on.
- Close Settings.
You should now see a speech-bubble icon (💬) in the left ribbon bar. The plugin is ready to use.
Usage
- Open any markdown note in Obsidian.
- Select some text in the editor. A small Annotate button appears near your selection.
- Click the button (or run the Annotate selection command). The sidebar opens with a new annotation entry.
- Type your feedback in the text area — this is the instruction or comment you want to pass to the LLM.
- Repeat for as many passages as you want.
- Click Copy all in the sidebar. The compiled output is now on your clipboard.
- Paste into Claude Code, ChatGPT, or any other LLM interface.
- Click Clear all when you're done to remove all annotations.
Commands
All commands are available via the command palette (Cmd/Ctrl+P). No default hotkeys are assigned — you can set your own in Settings → Hotkeys.
| Command | Description |
|---|---|
| Annotate selection | Annotate the currently selected text |
| Toggle sidebar | Show/hide the annotation sidebar |
| Copy all annotations | Copy all annotations to clipboard |
| Clear all annotations | Remove all annotations |
You can also right-click selected text and choose Annotate selection from the context menu.
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.