Highlight anything on the web, ask AI about it, and watch a knowledge graph grow in your Obsidian vault.
Curiosity is a local-first Chrome extension for people who read seriously. Select text on any page — or right-click any image — and ask your own LLM about it without leaving the page. Save the exchange and it becomes a permanent, linked markdown note: the quote, the source, your full Q&A, and topics as real [[wikilinks]] that cluster in Obsidian's graph view.
(formerly Highlight Scholar)
Reading and research are usually separate acts — you read in one place, take notes in another, and lose the connection between them. Curiosity collapses the loop: ask while you read, save what mattered, and let the graph accumulate. Everything is yours: your API key, your vault, your machine. No accounts, no middleman servers, no telemetry.
- ✦ Ask anywhere — select text on any page and a small button appears; the chat panel opens with the highlight, page title, and URL preloaded as context
- Streaming answers with markdown rendering (bold, lists, code, links), a Stop button, and per-answer Copy
- Images too — right-click any image ("Ask Curiosity about this image"); vision-capable models actually see charts, diagrams, and screenshots, and saved images are downloaded into your vault's
attachments/folder and embedded in the note - Pluggable LLM — Claude (Anthropic), OpenAI, or Ollama for a fully local, private setup
- Topics as wikilinks — type your own, click Suggest, or leave blank for auto-tagging on save; topic hub notes are created so Obsidian's graph view forms real clusters
- Link highlights together — connect a new highlight to previous ones at save time
- Revisit badge — return to a page you've highlighted and a pill offers to scroll you back to each passage (or image) and flash it
- Find anything again — searchable toolbar popup (highlights, questions, topics, sources), plus an auto-maintained
_Highlights Index.mdin your vault
Three pieces: the extension, Obsidian, and an LLM provider. ~10 minutes total.
Until it's on the Chrome Web Store:
- Download this repo (or
git cloneit) and unzip - Open Chrome →
chrome://extensions - Toggle on Developer mode (top right)
- Click Load unpacked → select the repo folder
- Pin Curiosity to your toolbar (puzzle-piece icon → 📌)
Curiosity writes notes through Obsidian's community Local REST API plugin — your notes never leave your machine.
- In Obsidian: Settings → Community plugins → Browse → install and enable Local REST API
- In that plugin's settings: enable the non-encrypted (HTTP) server (default port
27123— it only listens on localhost) - Copy the plugin's API key
- In Curiosity's settings (right-click the ✦ icon → Options): paste the key, confirm the URL
http://127.0.0.1:27123, and pick a vault folder (defaultHighlights) - Click Test Obsidian connection → green check. Obsidian must be running when you save.
In Curiosity's settings, choose one:
| Provider | Setup | Notes |
|---|---|---|
| Claude (Anthropic) | API key from console.anthropic.com | Default model claude-sonnet-4-5; vision works out of the box |
| OpenAI | API key from platform.openai.com | Default model gpt-4o; vision works out of the box |
| Ollama (fully local) | Install Ollama, ollama pull llama3.1 |
100% private. For images, pull a vision model (llava, llama3.2-vision). If requests are rejected, start Ollama with OLLAMA_ORIGINS=chrome-extension://* |
Your API keys are stored in Chrome's local extension storage on your device and are sent only to the provider you chose. See the privacy policy.
Open any article, select a sentence, hit ✦ Ask, ask a question, then Save to Obsidian. Open your vault's graph view and say hello to your first cluster.
One note per highlight, Zettelkasten-style, with frontmatter that Dataview, Smart Connections, and Copilot can build on:
---
title: "US crude inventories fell by 4.2 million barrels"
source: "https://example.com/article"
page: "Oil Markets Weekly"
created: 2026-07-23T18:40:00.000Z
model: "claude-sonnet-4-5"
topics: ["Oil Markets", "Crude Inventories"]
related: ["[[Previous highlight note]]"]
type: highlight
---
> [!quote] Highlight
> US crude inventories fell by 4.2 million barrels…
— [Oil Markets Weekly](https://example.com/article)
## Conversation
**Q:** Why do inventory draws move prices so much?
**A:** …
## Topics
[[Oil Markets]] · [[Crude Inventories]]Image saves use type: image-highlight, embed the image with ![[...]], and record the attachment path in an image: field.
- Stuck or no response? If you just updated/reloaded the extension, refresh the tab — Chrome keeps an orphaned copy of the old content script in already-open tabs (Curiosity detects this and tells you). Any stalled request errors out after 60 seconds with a real message.
- Save fails: Obsidian must be open, with Local REST API enabled and the key/URL matching settings. Use Test Obsidian connection.
- Button doesn't appear: some restrictive pages (Google Docs, certain PDF viewers) handle selection specially; standard articles and docs work.
- Ollama rejects requests: launch it with
OLLAMA_ORIGINS=chrome-extension://*.
No build step, no dependencies — edit and reload.
manifest.json MV3 manifest
background.js service worker: LLM streaming, topics, image encode, Obsidian writes
content.js selection button, shadow-DOM chat panel, markdown renderer, revisit badge
popup.* toolbar popup (search)
options.* settings page
store-assets/ Chrome Web Store listing kit (icons, screenshots, submission guide)
After code changes: ↻ the extension at chrome://extensions, then refresh test tabs. See CONTRIBUTING.md for ground rules (spoiler: no remote code, no innerHTML for model output, local-first forever).
Local-first by design: no analytics, no tracking, no developer servers. The only network traffic is the direct call to the LLM provider you configured and to Obsidian on localhost. Full policy: store-assets/privacy-policy.html.
- "What do I know about X?" — answer questions from your own vault, with links to your notes
- Streaming polish, more providers, Firefox port
MIT © 2026 Jean-Paul Faraj
Not affiliated with Obsidian, Anthropic, OpenAI, or Ollama.


