Fabricius is an Anki plugin that bidirectionally syncs between Roam and Anki.
Connecting the east side of the city to Tiber Island since 62 BC, the Pons Fabricius (Fabricius Bridge) is the oldest bridge in Rome to survive to the present day. - Wikipedia
Fabricius is a Roam Research plugin that allows bidirectional sync with Anki. The goal is to have robust, fast syncing for the most common use-cases.
Disclaimer: This software is provided as-is and you are responsible for your data. While we have tested this library as far as possible, there may still be bugs. You should keep backups of both Roam and Anki data.
Setup takes about five minutes and is totally worth it!
Anki -> Tools -> Addons -> Anki Connect -> Config
and amend webCorsOriginList
to include https://roamresearch.com
ClozeRoam
. It needs to have the fields Text
, Metadata
, Extra
and Title
. Upon syncing, notes will be created in a deck named Max Infinity
, which has to exist. These fields can be configured in Roam settings.
<!-- front -->
<div class='roamtitle'>{{Title}}</div>
<div id="extra">{{Extra}}</div>
{{cloze:Text}}
<!-- back -->
<div class='roamtitle'>{{Title}}</div>
<div id="extra">{{Extra}}</div>
{{cloze:Text}}
The recommended use is to create simple Q&A cards in Roam using the provided cloze functionality. For instance, you may be taking notes about an article or book you are reading. For each section of your notes in Roam, you could create a block for flashcards like so:
- How to cook onion soup
- Onion soup is great...
- Onion Soup Recipe #[[srs/cloze-g]]
- Q: What is the cook time?
A: {c1:20 minutes}
- Q: How many onions should I use?
A: {c1: 2 per person.}
- Other tips:
- ...
This will create two flashcards.
If we have the following text in a Roam block with block id f-123
:
- "In [[C]], we can have {c2:indirect references} to variables are using {c1:[[pointers]]} #srs/cloze"
we get this note in Anki with Text =
In [[C]], we can have {{c2::indirect references}} to variables using {{c1::[[pointers]]}} #srs/cloze
and Metadata = f-123
.
{{}}
and ::
for internal use.Title tags provide context for any nested blocks. Group tags augment title tags by providing extra context for a block from the closest context-providing block. The default title tag is #srs/cloze-t
and syncs to the Title
field. The default group tag is #srs/cloze-g
and syncs to the Extra
field.
So something like this in Roam:
- Stimulants #srs/cloze-t
- Caffeine #srs/cloze-g
- Tastes bitter.
- Is an {c1:adenosine} antagonist.
- Adenosine antagonists #srs/cloze-g
- bind to adenosine receptors with no {c1:physiological effect}.
- Has a half-life of {c1:5} hours.
Would create 3 cloze notes.
Title: Stimulants
Text: Is an {{c1::adenosine}} antagonist.
Extra: Caffeine
Title: Stimulants
Text: Has a half-lfe of {{c1::5}} hours.
Extra: Caffeine
Title: Stimulants
Text: Bind to adenosine receptors with no {{c1::physiological effect}}.
Extra: Adenosine antagonists
Specifically, group tags work in the following way:
{c1:...}
on it.