Bullet Journal Index

I’m a newbie and not a programmer, so please excuse my ignorance.

I’m looking for a way to build an action that, once note is written, will take the link for that note, the date of the note, the title (first line), and append that information as a line in an index file, all as part of a an attempt of creating notes for a Bullet Journal.

Flags and tags would be used to store the notes.

Has anyone already done this?

1 Like

Fellow Bullet Journaler here—I love this idea! Did you ever find a solution?

It is certainly possible using an action to reference the current draft’s title, permalink and date information (created/last modified). This could then be appended in some format to another (index) draft. It would be pretty straight forward to do.

What I don’t follow so much is the “storage” of notes in flags and tags. Separate drafts (notes) each have meta data. A note can be flagged or unfledged, and it can have multiple tags assigned to it. i.e. there’s only one flag option, and these are all associated with the draft, not a way of storing them. But you can set-up workspaces as a pro subscriber that allows sub-sets of drafts to be displayed based upon the tags associated with them, and the folder configuration for a workspace then determines which folders display flagged drafts.

If some more details can be set out for what the requirements would be I’m sure we could pitch in to help create something.

Just as an example, the following script would append the details to another draft with a particular ID, and write out the title and permalink as a Markdown formatted link.

//Identify the Index draft
const INDEX_DRAFT_UUID = `77947633-A441-42B6-A4C7-4E80D2D07273`;
draftIndex = Draft.find(INDEX_DRAFT_UUID);

//Add the content to the index draft
draftIndex.append(`${draft.createdAt} - [${draft.displayTitle}](${draft.permalink})`)
draftIndex.update();

However, Drafts also supports [cross-linking](https://docs.getdrafts.com/docs/drafts/cross-linking) using `[[ ]]`` notation, so using the permalink is not the prettiest option and things could probably be simplified to something like this assuming you just want to link internally within Draft, between drafts.
//Identify the Index draft
const INDEX_DRAFT_UUID = `77947633-A441-42B6-A4C7-4E80D2D07273`;
draftIndex = Draft.find(INDEX_DRAFT_UUID);

//Add the content to the index draft
draftIndex.append(`${draft.createdAt} - [[${draft.displayTitle}]]`)
draftIndex.update();

Then you might also want to think about formatting. Is the Index in Markdown? Do you want to force a line break on consecutively added lines (two spaces at end) or make each entry part of a bulleted list (list marker and space prefixing each line. Should new entries be appended as above, or should they be prepended at the top of the Index draft.

There’s a lot of scope to do something. Probably anything with of you would like, but getting it right is about getting the details right.

Hope that helps.

1 Like

Thanks for this reply. I think the original question had been posed before cross-linking was introduced, but now that cross-linking is a native feature I have found it an easy adjustment to append the [[safe_title]] version of a Draft wrapped in double-brackets [[[[safe_title]]]] so it appears as a proper reference. I know very little about JavaScript, but I’ve been hacking and stitching a bunch of different actions to make a Bullet Journal action group. I’ll share the results once I have some!

Great news, I incorporated your idea into a bullet journal action group you can find here:

Bullet Journal

1 Like