I read a lot, and most of what I read flows through Readwise. If you haven’t used it. Readwise (and its companion app Reader) captures highlights from your Kindle, articles, RSS, and even YouTube transcripts. Everything you highlight ends up in a single searchable library, and emails you a “daily review” to revisit your highlights. If you read, and have trouble remembering what you read, use Readwise. It’ll change you.
But I wanted a way to bring the ideas I’ve clipped from readings more accessible during my writing and thinking. Obsidian is my “thinking OS”, and my best solution for this the past several years was syncing highlights as notes in Obsidian. It’s great, but it’s still up to me to figure out how to bring those into my personal “context window” while writing notes.
And since we’re now in the era of “personal software,” I decided to build my own plugin to solve this.
Surface is an Obsidian plugin that runs semantic search over your Readwise highlights (powered by Readwise’s CLI) from inside Obsidian, without leaving your current note. Open a note, and the Surface sidebar recalls quotes and articles related to the current note’s content, ranked by vector similarity to whatever you’re working on. Switch notes and it re-runs. Select text and it searches just that snippet. It’s been huge for sifting through my 18,000+ highlights to find the good, relevant stuff. No need to go digging manually.

As I was working on this, I found myself running across a great highlight, but sometimes one sort of adjacent or tangential to the core idea I started on. So I added a feature called “Go Deeper,” where any highlight surfaced becomes its own search term, letting you follow chains of ideas through your reading history, with a way to to retrace your path back up the tunnel. When I’m writing a draft and hit on a thread worth pulling, I can hop through ideas in the history without friction.
A few other cool things:
- Search by selection — it doesn’t just work on the whole note as context, you can also select a text block, right-click and run “Search Readwise for selection” to scope the query to just that snippet
- Insert as callout — any highlight can drop into the active note as a
> [!quote]block with title, author, and source, in one click - Jump to source — open the highlight in Readwise, or the original article URL, without leaving your notes

The plugin relies on the Readwise CLI, which includes vector search and JSON output. Surface is a wrapper around the CLI native to Obsidian that builds a search term from the active note (title, frontmatter tags/topics, headings, and the first paragraph), passes it to the CLI, and renders the results as cards.
I keep coming back to the value of personal corpus search. Your reading history is one of the most context-rich datasets you have, and it sits unused most of the time. Readwise already lets you review your highlights regularly with their Daily Review. But Surface makes the archive relevant during your thinking and writing process.
The easiest way to install is use the BRAT plugin for Obsidian ( and use the path colemanm/obsidian-surface). You’ll need the Readwise CLI installed and authenticated — instructions are in the README.