Keypoints, a plain-text focussed note-taking & PDF annotation app for the Mac

I second that. Example, the lack of collaborative tools in OmniFocus is the reason I cannot use it for my work projects.

Sorry for my naivety…
I’m just an interested user without any experience in software development and hearing about Mac Catalyst, Xcode 11, SwiftUI and how they might make it easier to develop for both platforms gave me the impression that this would be a feasible approach.


This app sounds right in my wheelhouse, as I prefer keeping things in plain text. However, I do most of my PDF reading on the iPad. Would it be possible to extract the sort of typical notes I can take using a PDF reader with your app? Even just this functionality would be awesome!

1 Like

Not yet, but I also consider this an essential feature and I have plans to extract existing annotations on PDF import.

1 Like

How is this coming along? It sounds amazing and would be great to try!

Please keep in mind that at some point or another the text will have to come out of Keynote and into Word or similar for use with anyone else (colleagues, publisher, etc). And don’t forget Zotero folks :upside_down_face:

@Kabo, thanks for your feedback and comments! In short, progress is unfortunately still slow. See this thread for a bit more info.

W.r.t. to export of notes to common formats, I’d like to integrate with Marked 2 and/or integrate with a tool like Pandoc.

Besides that, Keypoints will offer thorough scripting/automation options which should allow for custom integrations. I’d also love to export or even sync data with Zotero, but that’s a big task that will likely take time to develop.

1 Like

This is a reply to a comment by @ChristinWhite made in another thread:

Notes in my app are meant to be written in MultiMarkdown. But when I startet, MultiMarkdown didn’t support YAML metadata, and MultiMarkdown metadata had to be at the top of the note. However, I wanted notes to look like regular notes: A note should start with its most important elements, i.e. a title followed by the note’s content. This is also important so that notes can work with small view sizes (where you don’t want to be blocked by a large metadata block at the top).

In addition, since all notes are self-contained and thus always have to contain all relevant info, each note has to have a metadata block (often containing quite a few things). So I wanted the note metadata to be as unobtrusive as possible – ideally they should read like regular note text. So I skipped the keys (all of the note’s metadata values can still be clearly identified).

That said, there will be exporters to common/standard Markdown format(s). And the scripting API will also allow users to write custom exporters. Alternatively, there could be input filters for tools like Pandoc or Marked 2 so that these tools can directly work with Keypoints notes.


As originally reported in a thread about link types over at as well as in the app’s forums, I’d also like to share this info here:

FWIW, I’ve implemented link types (aka “semantic links”) for Keypoints. Link types can be used to describe the very nature of a link, e.g. does the linked note support (or disagree with) the current note’s ideas? As another example, link types can be also used to distinguish topic links from navigation links (the latter would e.g. point to the next note in a note sequence).

IMO, having semantic info encoded with the link in a machine-parseable way has a great future potential, and may further help us filtering, analysing and making sense of our notes.

Here’s an example with some simple mock-up notes:

Link type(s) can be added in front of the note ID, either via auto-completion or by drag+drop. Link types can have a color, and they’ll appear as colored edge labels in the graph visualization.

Clicking a link type in a note or graph will select it in the “Link Type” filter view (the left-most view in the screenshot above). As a result, the main notes list will only show notes that were linked using that link type, and the graph will bolden the arrows/edges matching the currently selected link type(s).

Instead of using link types to describe the nature of a link (as in the example above), I’ve also found it kinda useful to (mis)use this feature to add link tags instead. These would describe what a link (and thus the linked note) is about. Here’s an example for an overview (aka index/structure/hub/MOC) note:

I have still some ways to go until I can release some alpha/beta version for testing. But I’m getting there!


Yeah, this looks like a great way to handle it, it’s certainly more visually appealing and I do like that it doesn’t have to be at the top of the note. I like that you looked at the convention, decided it wasn’t ideal and rolled your own :slight_smile:

I would love to beta test this when you get to that point!

1 Like

Looking forward to a beta version! :wink:


I have been following this thread. This looks like a great application. I think it would be useful for someone like myself who, while not in academia, references a lot of articles when writing reports.

1 Like

Thanks for your feedback, @Nick!

Yes. While the app’s primary (or initial) target user group is people in academia, the app will hopefully work for many different use cases, basically anyone who reads & annotates PDFs and who wants to further work with the highlight annotations.

You could also ignore the PDF-related features, and simply use it as a note-taking tool to create a network of semantically rich and inter-linked notes.

Btw, in the distant future I’d also love to support annotation of archived webpages. But I have to focus on the basics & its primary use case first.


This looks like a fantastic app. The value of each noted could be expanded with more integration with links to Curio/Tinderbox/Obsidian. Have you thought about Hook integration?

1 Like

Thanks @NiranS!

Yes, I’d like my app to directly integrate with other productivity apps, esp. those which are scriptable (like DEVONthink, Tinderbox or OmniOutliner). For scriptable apps, it may be also possible to fine-tune the integration to one’s needs, and to repeatedly update corresponding notes in the other app, or even offer a two-way sync.

And as mentioned above, a future integration with Marked 2 and/or Pandoc should allow for export to common output formats. Keypoints itself will also have a detailed scripting API (see an example here), so it should be also possible to create custom integrations, and I plan to help people with this.

Ideally, my app would function like a hub to feed notes into other apps for further processing, writing or analysis.

Yes, this is planned, and Luc Beaudoin from CogSci Apps has also contacted me about it. Most of the required things are already there. But I still have to address one issue on my side. It’s on my TODO list!


This looks excellent. I’m a lawyer, and while my needs aren’t precisely the same as academia, they are pretty close. Is this available (even as a beta) yet?

1 Like

Unfortunately not. I’m very much dedicated to bring this into (alpha/beta) release state, and I’m working on this as much as I can. That said, while I’ve made good progress in the recent months, things generally move much slower than I’d like. My day job only allows me to work on this part time, and during Corona times my day job was even more demanding (I work on a learn management platform that gets used by schools/universities in my country). Speaking of my own app, I also have a few bigger issues to resolve before I can make the app available for testing.


Is this still something you’re working on, even on a back burner? I still think it looks very interesting and would love to see your take in light of the current generation of note and annotation apps.

1 Like

Thanks @ChristinWhite for your continued interest, I appreciate it!

I’m still working on my app as much as I can, but my time available for development is still very much limited. This situation is as frustrating for me as it is for everyone else interested in the app, but I currently cannot afford quitting my day job (although I have thought about it).

I still think that my app could contribute nicely to the current ecosystem of note-taking and annotation apps. It could serve as a (scriptable) hub to gather & feed annotations into other tools. In addition, it offers concepts & features that aren’t very common elsewhere (such as, say, typed links, semantic parsing of notes, and powerful search & filter options like searching citing/cited notes, listing relevant filter elements (keywords/labels/publications/etc) for a note search, or filtering notes by other notes).

I still need to solve quite a few tasks before I can offer an alpha version. They range from tackling import to tracking down a tricky auto-save bug, or solving a licensing issue.


I totally get not being able to leave the day job and being busy but I’m really glad to hear you’re still working on it when you have time! I’ll continue looking forward to trying it when you get the alpha ready!

1 Like

I hadn’t seen this before, and it certainly looks interesting. Today, Zotero was updated to 6.0, and they’ve added several features that overlap - a built-in PDF viewer with highlighting that seems to be portable, plus a new notes system. I haven’t had a chance to tinker with it yet (and, frankly, the annoying fact there is no straightforward way to open PDFs from the Zotero app in preview, as against the new viewer, has me a bit disgruntled).

Your core insight, however, to the gaps in these processes, is spot on. Good luck.

1 Like