by junuxyz
Add threaded comments, highlights, and optional ChatGPT, Claude, or OpenCode replies to selected text.
Annotate
Keep context attached to your notes.
Annotate is a desktop Obsidian plugin that lets you select a passage, leave a comment, and click its highlight to revisit it or add a reply. Currently, only macOS on Apple silicon is supported.
https://github.com/user-attachments/assets/b64ded00-4c37-46e0-a9a0-9e790734fa87
Features
- 💬 Comment on any passage. Start a thread, reply, edit, resolve, or reopen it from the highlight or comments list. Quote selected text, copy messages or entire threads, and expand longer conversations. Comments support Obsidian Markdown, note links, code blocks, and LaTeX, and follow text edits and Obsidian renames.
- 🖍️ Highlight and color text. Choose highlight and text colors from the selection menu, combine them, or remove them. Customize the highlight palette, opacity, and Rounded, Flat, or Underline shape. Assign a shortcut to reapply your last highlight color. Bold, italics, and strikethrough stay formatted.
- 🤖 Ask an assistant. When enabled, messages ask your default assistant. Start with
@commentto save a comment without an AI reply, or use@chatgpt/@claude/@opencodeto choose an assistant. Requests supply the full current note, highlighted passage, question, and conversation, including earlier local comments. Assistant access is optional. ChatGPT can work on notes inside explicitly permitted vault folders. See the setup guide for context and permission controls.- Comments stay in your vault without changing your notes. Assistant requests share note content with the selected provider. See assistant setup and privacy.
- 🎨 Fit your Obsidian theme. The interface uses your theme's colors, accent color, and typography to blend into Obsidian in light and dark mode. Highlight colors remain customizable.
Local comments and highlighting work offline without an account. Optional ChatGPT and Claude replies require an authenticated Codex account or a Claude subscription through Claude Code. They send the current note and thread context to OpenAI or Anthropic; OpenCode sends context to the selected model provider and uses its account requirements. Provider limits apply, and subscriptions are not included. Web search and selected remote MCP services have separate opt-in controls and can send context or approved arguments to those services.
Assistant integration runs locally installed CLIs outside the vault. Annotate
locates those executables, reads Codex's model cache and login file, and keeps
isolated Codex state under ~/.annotate/codex/ and temporary working directories
outside the vault. The CLIs also use their provider login data.
See assistant setup and privacy for details.
Install
Requires macOS on Apple silicon and Obsidian 1.14.4 or later.
- Open the latest release
and download
main.js,manifest.json, andstyles.cssfrom Assets. - Create
<vault>/.obsidian/plugins/annotate/and copy all three files into it. - In Obsidian, open Settings → Community plugins, allow community plugins if prompted, then enable Annotate. Reload Obsidian if it is not listed yet.
Node.js and an assistant account are not needed for local comments and highlighting.
To update, disable Annotate, replace the same three files with files from one
release, and enable it again. Keep data.json and the other plugin data files.
The official build supports ChatGPT, Claude, and OpenCode. See assistant setup to enable optional AI replies. For building from source, see source installation.
Quick start
- Select text and choose Annotate from the selection menu.
- Write a comment and press Enter to send. Use Shift+Enter for a new line.
- Click the highlight to reply, or resolve the thread when you're done.
Documentation
- Documentation map: entry points for users, contributors, and agents.
- Usage: comments, highlights, text colors, shortcuts, Markdown, and math.
- Assistant replies: ChatGPT, Claude, and OpenCode setup, privacy, and recovery.
- Storage and limits: backups, missing text, and supported content.
- Development: local updates, validation, and releases.
- Architecture, agent tools and permissions, and testing: source ownership, contracts, invariants, and checks.
- Contributing and security reporting.
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.