Annotate-in-Place Notes with Emacs and org-remark

Lobsters Hottest Tools

Summary

A blog post describing org-remark, an Emacs package for annotating files in-place, addressing the decoupling problem in digital note-taking by keeping notes attached to their source.

<p><a href="https://lobste.rs/s/kdqqzb/annotate_place_notes_with_emacs_org">Comments</a></p>
Original Article
View Cached Full Text

Cached at: 05/20/26, 02:28 PM

# Annotate-in-Place Notes with Emacs and org-remark Source: [https://www.chiply.dev/post-annotate-in-place](https://www.chiply.dev/post-annotate-in-place) Annotate\-in\-Place Notes with Emacs and org\-remark## Annotate\-in\-Place Notes with Emacs and org\-remark ## Table of Contents - [1\. Aboutnotesannotationsemacs](https://www.chiply.dev/post-annotate-in-place#about--notes-annotations-emacs-org-remark-) - [2\. The Video: org\-remark in Actionvideodemo](https://www.chiply.dev/post-annotate-in-place#the-video--org-remark-in-action) - [3\. The Problem with Modern Digital Note\-Takingnotesproblem](https://www.chiply.dev/post-annotate-in-place#the-problem-with-modern-digital-note-taking)- [3\.1\. The Context\-Switching Tax](https://www.chiply.dev/post-annotate-in-place#the-context-switching-tax) - [3\.2\. Source Amnesia and Note Amnesia](https://www.chiply.dev/post-annotate-in-place#source-amnesia-and-note-amnesia) - [3\.3\. No Signal on Revisit](https://www.chiply.dev/post-annotate-in-place#no-signal-on-revisit) - [3\.4\. Memory Anxiety](https://www.chiply.dev/post-annotate-in-place#memory-anxiety) - [4\. Annotate\-in\-Place: The Patternpattern](https://www.chiply.dev/post-annotate-in-place#annotate-in-place--the-pattern) - [5\. What Existing Tools Get Right \(and Wrong\)readwisehypothesis](https://www.chiply.dev/post-annotate-in-place#what-existing-tools-get-right--and-wrong-) - [6\. org\-remark in Briefemacs](https://www.chiply.dev/post-annotate-in-place#org-remark-in-brief--org-remark-emacs-)- [6\.1\. Pens and Metadatapensmetadata](https://www.chiply.dev/post-annotate-in-place#pens-and-metadata) - [7\. Extending org\-remark to New Modesextensionelfeedwombagpubmed](https://www.chiply.dev/post-annotate-in-place#extending-org-remark-to-new-modes) - [8\. A Daily Review Workflowreview](https://www.chiply.dev/post-annotate-in-place#a-daily-review-workflow) - [9\. What org\-remark Gives Youbenefits](https://www.chiply.dev/post-annotate-in-place#what-org-remark-gives-you--benefits-org-remark-) - [10\. Caveatscaveats](https://www.chiply.dev/post-annotate-in-place#caveats) - [11\. Closing: The Pattern Is the Pointclosing](https://www.chiply.dev/post-annotate-in-place#closing--the-pattern-is-the-point) - [12\. TLDRtldr](https://www.chiply.dev/post-annotate-in-place#tldr) ## 3\.The Problem with Modern Digital Note\-Takingnotesproblem We builders are often taught that coupling is bad, bad, bad…\. But in some rare cases it makes perfect sense\. Most digital note\-taking approaches**decouple**the*note*from the*source*\. That's bad decoupling in my opinion\. Whether digital or physical, I typically read in one app and write in another\. Pure on\-book annotation is an exception, but once I factor in something like a 'knowledge base' \(a personal notes graph — think Obsidian, Roam, Logseq,`org\-roam`,`denote`\), I'm dealing with decoupled artifacts: the source artifact \(abstractly, the 'site'\) and an annotation artifact \(abstractly, the 'notebook'\)\. In this context 'sites' can be a webpage, a book, or even your own notebook; and 'notebooks' can be a digital note app, or a physical piece of paper\. Everyone reading this \(I hope\) understands the pickle in this decoupling, but here are a few issues that stand out for me: ### 3\.1\.The Context\-Switching Tax The friction of this is small on a per\-action basis, but it adds up, and tragically punishes the virtuous act of noticing\. Noticing, as passive as it sounds, is out intellectual leverage as special humans, and I believe it should be met with as little friction as possible\. I want to let my 'noticing' perform its magic, unbounded by the friction or imposition of my tooling or note\-taking workflow\. ### 3\.2\.Source Amnesia and Note Amnesia I often find myself accumulating notes completely detached from the source they came from\. When I revisit my notes months later, I find myself hunting for the source the notes were taken from\. When I revisit the source, I similarly find myself in search for the notes that I took on that source, sometimes struggling to remember if I ever recorded those notes in the first place\. I find this is a more significant problem when I revisit a source \(note amnesia\)\. In the best case, if I*did take notes then it's possible that I wrote down the title of the source, or perhaps even the URL\. That unidirectional link /can*save me when I'm reading notes\. But when I'm revisiting a source, there's nothing embedded in the source itself to let me know that some highlights or notes exist for it, and so in those cases, I never recover the precious memories I recorded\. ### 3\.3\.No Signal on Revisit When I return to the source \(potentially months or years later\) nothing tells me what*past me*found interesting\. The blank source looks the same as it did the first time I visited it\. I've likely lost familiarity with the source material or failed to review the relevant notes for that source before revisiting, so my brain has to do significant work*just*to resurface what I already found salient and recorded\. And that's before the even harder, more rewarding, work of refamiliarizing myself with its concepts or synthesizing it with something else I learned or realized in the meantime\. ### 3\.4\.Memory Anxiety If you're like me, you probably carry a low\-grade worry about whether you can ever*review*what you covered across the many daily hours of reading complex source material\. Most second\-brain systems compound this by encouraging capture without robust bi\-directional links between the source and the notes\. org\-mode's capture offers a uni\-directional link \(in the notes\), but the captured data never surfaces when I revisit the source from which I captured that information\. I basically have to know somehow that the notes exist\. By contrast, when I annotate a physical book, the marks*stay on the page*\. For me personally, this makes note taking on physical media worry\-free because I know that all my highlights and marginalia will remain there and will shine brightly back at me when I re\-crack that book or paper open\. On re\-reads, my eye is drawn to exactly the passages that mattered to me the last time\. ## 4\.Annotate\-in\-Place: The Patternpattern This pattern, like most truly useful ones, is simple and elegant\. With annotate\-in\-place, when I find something worth marking, I highlight it in a single easy motion, as if it were a physical document\. The highlight is visible the next time I visit the source, and a separate notes file is updated in the background with an**entry**containing three core fields plus optional metadata: 1. The**excerpt**\(so the verbatim source quote survives if the source disappears\)\. 2. A**link**back to the source, with enough location information to find the exact passage\. 3. Any**commentary**I choose to attach\. 4. Optional \(configurable\)**metadata**\(timestamps, tags, etc…\)\. Everything else I might want to do with these notes \(search, tag, daily review, integration with a knowledge base\) is made possible by those recorded fields\. The pattern's elegance comes from**how little**it asks of me at note\-taking time, and**how much**it makes available to me at review or search time\. I've already expounded upon the complexity of reading and note\-taking\. Annotate\-in\-place comes to my rescue by making sure that the extra work of 'noticing' on my part is*astronomically close to zero*\. All I have to do is point and highlight, as if the document were as ergonomic as physical entity\. ## 8\.A Daily Review Workflowreview Because every highlight is stamped with a date link,*reviewing what I read today*is just a simple grep for that timestamp\. I search my highlights directory for the current day's link and get back exactly the passages I found interesting today, each with any commentary I wrote and a working link to the source\. My video demonstrates this workflow\. For me, this completely eliminates the anxiety of reviewing anything I've read, and allows me to read more expansively and feverishly\. I don't have to remember anything I'm reading because the timestamped entry created by org\-remark does the remembering for me\. There are two adjustments you may want to consider to make this work well: - **Persist highlights in a stable directory\.**Mine live under`~/logseq/pages/`, but a single directory of any kind is enough\.`rg`or`grep`against the date link in this directory*is*the review query\. As a bonus, note that if you sync your knowledge base across machines, the persistent in\-place highlights will show up on all the machines to which you synced your knowledge base\. - **Pick a date link format your knowledge base understands\.**I use Logseq's`\[\[Mar 4th, 2026\]\]`form so the same link doubles as a backlink in the rest of my graph, but`\[\[2026\-03\-04\]\]`works equally well in`org\-roam`or`denote`\. ## 10\.Caveatscaveats There are some caveats to going whole\-hog on this pattern in Emacs with`org\-remark`\. - **JavaScript\-heavy web pages\.**`eww`cannot render modern SPA\-style pages, so I cannot highlight inside them directly\. My fallback is to clip the page to a read\-it\-later tool \(in my config,[Wombag](https://github.com/artkpv/wombag)\) that produces a clean text view`org\-remark`*can*annotate\. Readwise also remains a reasonable browser\-side fallback for the cases where neither approach works\. - **PDFs\.**`org\-remark`does not support PDFs\. For PDFs, the annotate\-in\-place option in Emacs is[`pdf\-tools`](https://github.com/vedang/pdf-tools), which lets you add annotations directly inside the PDF buffer\.[`org\-noter`](https://github.com/org-noter/org-noter)is the spirit\-equivalent for tying org notes to PDF/EPUB locations side\-by\-side rather than in place, and its daily\-review workflow transfers with minimal adjustment\. - **Drifting source text\.**`org\-remark`relocates highlights using the persisted excerpt when the underlying buffer changes, but heavily\-edited files \(or web pages that change between visits\) can still produce orphans\. The notes file always has the excerpt, but the overlay may need re\-anchoring\. - **Emacs lock\-in\.**The`org\-remark`*tool*is Emacs\-only\. The*pattern*is not \(read on\)\. If you have not moved into Emacs, see the closing section: Readwise and Hypothes\.is together implement the annotate\-in\-place pattern really well, and the workflow you build around them will transfer if you ever do switch to`org\-remark`in Emacs\. ## 11\.Closing: The Pattern Is the Pointclosing To wrap up, I want to close not on`org\-remark`specifically, but the annotate\-in\-place pattern\. In Emacs the implementation is especially complete because Emacs treats every reading surface as a text buffer\. Outside Emacs, those same four fields \(excerpt, link, commentary, optional metadata\) are the right rubric for evaluating any annotate\-in\-place tool you adopt\. I personally think these fields are necessary if you want to get leverage out of an annotate\-in\-place solution\. If you are not in Emacs, Readwise and Hypothes\.is implement the pattern within the browser\. I've used both and think they're*great*and worth using \(in fact Readwise is still my fallback for when I can't do annotate\-in\-place within Emacs\)\. If you*are*in Emacs,`org\-remark`is worth thirty minutes of setup and a small amount of elisp per mode\. In either case, you still benefit from annotate\-in\-place\. ## 12\.TLDRtldr Most digital note\-taking detaches notes from their sources\.*Annotate\-in\-place*is the pattern of marking content where it lives, with the highlight visible on revisit and an excerpt\+link persisted in a separate notes file\.[`org\-remark`](https://github.com/nobiot/org-remark)is the Emacs implementation: built\-in support for`eww`,`Info`,`nov\.el`ebooks, and plain files, plus a small extension protocol for adding new surfaces \(`elfeed`,`pubmed\-show\-mode`,`wombag`,`gptel`chats, etc\.\)\. A timestamped default pen turns the notes file into a reviewable timeline: a daily review is a grep for today's date link\. Caveats are JS\-heavy pages \(fall back to Wombag or Readwise\), PDFs \(use[`pdf\-tools`](https://github.com/vedang/pdf-tools)for in\-place,[`org\-noter`](https://github.com/org-noter/org-noter)for side\-by\-side\), and Emacs lock\-in itself\. The*tool*is Emacs\-only, but the*pattern*is portable\.

Similar Articles

Annota

Product Hunt

Annota is a cross-platform, local-first AI-powered note-taking app.

The Emacsification of Software

Hacker News Top

The author discusses the frustration of reading Markdown in the terminal and describes using Claude to quickly build a custom macOS Markdown viewer (MDV.app), illustrating how AI enables rapid creation of personal software tools.

note.md

Product Hunt

note.md is a local-first markdown-based workspace designed for research writings, offering a distraction-free environment.