Zettelkasten / DEVONthink - Internal labels?

Reading Kourosh’s book regarding taking “smart notes” in DEVONthink. He uses internal linking, but it occurs to me that this method doesn’t seem very “future proof” in the sense that if DT were to crash, or if one were to abandon it, the DT internal link IDs are pretty useless for any other system.

Does anybody do anything like this while using self-generated IDs of some sort in the links, so the system could be resurrected on a different platform? If so, any tips to share?

DEVONthink supports wiki linking [[like this]]. Not as well many other apps, but the feature is there.

So instead of using item links (the x-devonthink-item://... links) you could use wiki linking. This is “portable” to other apps that recognize the links. There are no commonly accepted standards for any of this, so before committing yourself to doing A in DEVONthink because you might someday want to move those notes from A to B, then do some testing with app B.

(BTW, they are links, not “labels”.)


Ah, we’re talking about two different (but related) things.

Let’s say I have a note file called “value”. In this context, “value” is related to the perceived monetary value of something. But then I’m reading a book about ethics, and I need another note file called “value” to hold the idea of a moral principle.

If I were wiki-ing this, I suppose I could have a disambiguation file to sort the two, or name them “value (monetary)” or “value (moral)”, but that just feels bizarre since that text would have to be in all of my notes.

“The [[value (monetary)]] of a given idea…”

And having the wiki-style linking would mean that I couldn’t link “principle” to one of those files, even though it’s arguably relevant.

I was thinking something more like footnote style.

“The value (1395) of an idea…”

with 1395 being a link to a named note on the order of “Value (1395)”. That way, worst case scenario, DT breaks my data but I can still find things as the references are actually coded right into the text.

I suppose I could do end notes with all of my links instead of putting them in the text - but either way I want a way to name these things.

Obviously I could use the date as a format, but that’s a huge and wasteful number.

“The value (20201026073201) of an idea…”

So I’m wondering if anybody else has done something like this, and how they do it. :slight_smile:

OK, “label” means a specific thing in DEVONthink: the colorized label of the name of the document.

We’re talking about the link text (what the active link name appears to be in the document).

If I understand the case, you want the link with text “value” to open, when clicked, either the “monetary value” note or the “moral value” note, depending on context.

Unfortunately DEVONthink does not (yet) support the method used by Obsidian (and some others) would be to use

[[monetary value|value]] to link to the note for the first case, and
[[moral value|value]] to link to the note for the second case.

But footnotes are supported, so this will work in DEVONthink. It is actually probably more portable than the Obsidian alias method.

One kind of value [^1] and another kind of value [^2]

[^1]: [[monetary value]]
[^2]: [[moral value]]

I tested the above text sample successfully in DEVONthink and Obsidian.

I think the bottom line is if you want to avoid being locked into x-devonthink-item://... links then you’ll need to decide what methods to use in writing documents in DEVONthink, and also be aware that giving up the internal linking method in DEVONthink makes it little more than just another markdown editor [^1] and foregoes the features of that application that are built around its internal linking scheme.

[^1]: so why bother


I didn’t know about the footnotes thing. That’s pretty cool - thanks! :slight_smile:

As for the implementation, I still want the x-devonthink-item links. What I was planning to do (using your example) was something like:

One kind of value [^1] and another kind of value [^2]

[^1]: [Monetary value (900)](x-devonthink-item://EC5C3E16-C0E1-48C4-95D7-3362DC6AA0B4)
[^2]: [Moral value (57)](x-devonthink-item://EC5C3E16-95D7-C0E1-48C4-C6AA0B43362D)

That way, I have the DEVONthink x-devonthink-item links internally as long as I’m using DEVONthink, but if (for example) DEVONthink goes poof and I need to resurrect the system elsewhere, that (900) or (57) would give me a self-assigned unique ID for a note.

And the note would be named the same way, at least initially - but even if the title content of the note changed, the (900) or (57) would still persist. So I could always find things manually later if I wanted, even without DT (although it would obviously be easier with DT!)

At this point I’m wondering either (a) if anybody sees obvious flaws with this system, and/or (b) if there’s an easy way to generate that unique ID.

Rather than an arbitrary unique ID, I would lean towards giving every file a human readable unique name (in this example “Monetary value” and “Moral value” would be sufficient).


I agree with @ChrisUpchurch. If you need a second note on the “monetary value” topic, then just add a suffix “monetary value - 2”.

When there is something I want to reference, I toss a zkid on it and call it good. Then use that for referencing. So, I just tolerate the big number in the middle of things.

Your initial post said that you were worried about lock-in, and wanted a method that is transportable. If that’s the case, you need to lose the x-devonthink links, since those are specifically for DEVONthink. Personally, it took me a long time, but I’m going all in on DEVONthink and not worrying about transportable links anymore.

What’s that app that links between things on your Mac? Hook? I wonder if that works for this. Probably not since the DEVONthink files aren’t really part of the file system per se.

Files stored in DEVONthink are absolutely part of the file system. They are located in folders inside a package folder that DEVONthink calls a “database”. All files in DEVONthink database, or stored externally from the database and indexed there, are unchanged from their native file types.


What’s a ZKID?

It doesn’t have to be easily transportable - it just has to not be non-functional if DT were to go away.

Those x-devonthink links are great for convenience, but if I somehow lost the DT database index and copied the files from one computer to another, those would be utterly useless since they’re not really based on anything in the “real world”.

Whereas if the files get copied, and are referenced by name within each document, they’re at least accessible by that name even without DT and its database. I mean, the original “zettelkasten” is a card catalog with physical cards - if the digital version reverted to that level it would be pretty darned inconvenient, but it would still at least be functional.

So this is all predicated on “DEVONthink went poof today – now what do I do”.

For that to happen, if the company disappeared (not unlikely; it’s a small business), the software would have to die at the same time. Globally. Is that really likely?

Actually, it’s a much more likely situation than what you posit. All that’s necessary for those x-devonthink links to be completely useless is for my individual DEVONthink database to be corrupted beyond repair.

Quite literally, I could have all of the files, exactly as they were before - minus the database index. If I re-import everything, every internal x-devonthink link would be broken.

Given the amount of effort that could potentially be put into such a system (and thus be lost in such a case), I don’t feel it’s all that crazy to be considering having a viable secondary referencing strategy.

Why not just create an index file with a list of the pages and the corresponding DT ids? And or use markdown links so you have readable text titles and the id in every link. I’ve done both of these in Ulysses and I’m confident In could reconstruct my links if necessary.

Then Obsidian and similar are for you. Plain text all the way down. No database. No worries of failure.

I would be using Markdown links with the DT IDs as part of my plan, but since those DT IDs aren’t actually stored anywhere except in the DT database, updating a separate index adds a signficant extra step to note creation in addition to a large lookup table.

Which is why I was hoping for something simple to toss in the filename itself, like a short, self-assigned numeric ID - maybe assigned via Keyboard Maestro or something. Quite literally, I’m basically asking how to do something that’s actually a part of the paper Zettelkasten system, only digitally, as a backup indexing method.

I didn’t think this would be this controversial. :slight_smile:

Let’s separate the technical from the practical. I give you the technical, that they really are files on my computer.

The practical, however, is that every instruction from DT says don’t mess with them there. That means they are not accessible in the same way normal files are and “are not part of the file system per se.”

zkid is just the zettlekastem ID of date/time stamp. I use a TE snippet to create them on the fly.

For the rest of it, it sounds like the systems that use [[links]], that are created on the fly from file names and content, are more in line with your desire. That would be obsidian, etc, as quorm mentioned.

If I’m using file names as link targets though, I don’t need to change software - I can just use wikilinks in DEVONthink. I was planning to try to avoid that, but if I’m using some sort of zkid in the filename that would solve the problem.

I think a combo of Markdown footnotes and zkids of a similar nature to what you have will get me where I need to go. :slight_smile: