All Projects → chronologos → Fabricius

chronologos / Fabricius

Licence: MIT License
Fabricius is an Anki plugin that bidirectionally syncs between Roam and Anki.

Programming Languages

typescript
32286 projects
python
139335 projects - #7 most used programming language
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Fabricius

harika
Offline-, mobile-first graph note-taking app focused on performance with the knowledgebase of any scale
Stars: ✭ 111 (+105.56%)
Mutual labels:  roam, roamresearch, roam-research
roam-to-anki
Sync flashcards from Roam Research to Anki
Stars: ✭ 34 (-37.04%)
Mutual labels:  anki, roamresearch
roamsr
Spaced Repetition in Roam Research
Stars: ✭ 96 (+77.78%)
Mutual labels:  roamresearch, roamcult
roam42
roamjs.com/extensions/roam42
Stars: ✭ 285 (+427.78%)
Mutual labels:  roam, roamresearch
static-roam
A static-site generator for Roam Research
Stars: ✭ 59 (+9.26%)
Mutual labels:  roam, roamresearch
Anki-Night-Mode
Enabling studying at night with Anki - without eye strain
Stars: ✭ 72 (+33.33%)
Mutual labels:  anki
kindle vocab anki
Export Kindle Vocabulary Builder to Anki
Stars: ✭ 38 (-29.63%)
Mutual labels:  anki
ForgetMeNot
A flashcard app for Android.
Stars: ✭ 234 (+333.33%)
Mutual labels:  anki
find-all-the-new-words
找出文章中的生词(配合anki使用)
Stars: ✭ 38 (-29.63%)
Mutual labels:  anki
anki-youdao2anki
转换有道单词本到Anki格式
Stars: ✭ 24 (-55.56%)
Mutual labels:  anki
anki-add-hooks-userscripts
Automate Anki card creation from popular translation websites
Stars: ✭ 17 (-68.52%)
Mutual labels:  anki
anki-slides-import
📇 Import pdf slides + text notes into Anki.
Stars: ✭ 24 (-55.56%)
Mutual labels:  anki
2anki.net
Server to create Anki flashcards faster, easier and better today ⭐️
Stars: ✭ 190 (+251.85%)
Mutual labels:  anki
zettel-mode
A Zettelkasten-style note-taking helper
Stars: ✭ 32 (-40.74%)
Mutual labels:  roam
slipbox
A static site generator for Zettelkasten notes
Stars: ✭ 32 (-40.74%)
Mutual labels:  anki
anki
Go library to read Anki *.apkg files
Stars: ✭ 32 (-40.74%)
Mutual labels:  anki
anki-canvas
🖌️ Drawing area widget for Anki to practice Kanji writing
Stars: ✭ 25 (-53.7%)
Mutual labels:  anki
anki-awesome-select
This is the select template for Anki with awesome interface/Anki选择题模板
Stars: ✭ 59 (+9.26%)
Mutual labels:  anki
qstardict
A read-only mirror
Stars: ✭ 55 (+1.85%)
Mutual labels:  anki
immersive
Language learning mpv script for looking up words within mpv and generating Anki cards
Stars: ✭ 43 (-20.37%)
Mutual labels:  anki

Fabricius (roam-to-anki v2)

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.

GitHub release (latest SemVer)

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.

Getting started

  • Like any other client-side javascript plugin, install dist/browser.js in a javascript code block nested under a {{roam/js}} block. You will see a new sync button in your top navbar.
  • Anki must be running, with the AnkiConnect plugin installed and configured (see below), for the sync button to work. It works fastest if Anki is running in the foreground.
  • Configuring AnkiConnect: Go to Anki -> Tools -> Addons -> Anki Connect -> Config and amend webCorsOriginList to include https://roamresearch.com
  • There are more constants (deck, note type etc.) that can be tweaked at the top of the js script. Due to Typescript compilation, these config variables may be located further down in browser.js. Please look at src/config.ts to see the available variables and their names.

Example

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.

  • This assumes the default configuration of browser.js
  • Note the modified cloze syntax, since Roam reserves {{}} and :: for internal use.
  • An Anki note type named ClozeRoam with fields Text and Metadata has to exist in a deck named Max Infinity.
  • Please see Anki docs for more info on how a cloze note type needs to be configured (easiest is to clone the built-in Cloze note type).

Title tags provide context to

Advanced: Group and Title Tags - Pull in more context!

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:

  1. Any child blocks (direct or indirect) under a block with a group tag is considered a cloze, unless there are no cloze marks {c1:...} on it.
  2. Clozes generated from said child blocks automatically include context from the closest parent block.

Caveats and Limitations

  • Don't edit the sync metadata on the Anki note.
  • The Roam block UID is used to identify the corresponding note in Anki. Avoid taking actions which cause the block UID of a Roam block to change.
  • You can't create a new note in Anki and sync it to Roam.
  • There is no garbage collection for unused notes in Anki (yet).
  • If the same uid is updated in both Roam and Anki, Roam will be taken as the source of truth.
  • Changes to group tags and title tags do not cause a sync for clozes blocks underneath them. The actual cloze block must be updated.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].