Plugin for flashcards & note-level spaced repetition all inside Obsidian

Hello y’all,
I created a spaced repetition plugin for reviewing flashcards & entire notes using a variant of Anki’s SM2 algorithm. This will help you fight the forgetting curve & note aging.

Check it out here: GitHub - st3v3nmw/obsidian-spaced-repetition: Fight the forgetting curve by reviewing flashcards & entire notes on Obsidian.md

37 Likes

Great thanks.

Idea for enhancement to support incremental reading, either in this plugin or in a new related plugin, if this is possible:

  • Include a priority rating rather than difficulty, and adjust next viewing schedule based on priority

SuperMemo invented IR and uses priority along with a bunch of other settings to do it. SM focuses on IR as a means to distill a note down to flashcards but I’m looking simply for a way to run a priority queue on my reading inbox in Obsidian.

Essentially this aids in draining reading inboxes by attaching a reading priority to the note in the inbox. Allow the priority to be adjusted up/down during the IR session.

Difficulty rating is more for memorization while priority is for “show me this again sooner/later than other items in the queue” without a specified difficulty. This is why I mentioned maybe it should be a separate plugin. ¯\_(́ ◡◝ )_/¯

To me the ideal IR workflow is:

  • start IR session targeting a set of notes (by tag, folder, whatever)
  • plugin shows first item that is due on that day and with highest priority
  • after I review it I can choose to adjust priority up/down
  • I click to move to the next note in sequence
  • plugin shows the next item that is both due that day and has second highest priority in the list
  • repeat until I tire of IR and end the session, to start again another day

This is essentially how IR works in SM. (minus the “make flashcards from the material” step)

How difficult would it be to implement a feature like this?

6 Likes

This idea is pretty neat.
It wouldn’t be that hard to add the IR feature (as described above).
Though I think it’s better as a separate plugin since the existing plugin is mostly geared towards increasing memorability of existing notes. This way we can support more features like what Polar does:

  • priorities
  • reading inside Obsidian (web articles, PDFs, …)
  • tracking reading progress
  • annotations (which could be exported as separate .md notes)
  • and, even schedule IR sessions

Support for flashcards is now available on the latest release (v1.3.0). This allows for flashcard review inside Obsidian. Now you don’t have to worry since your cards will never go out of sync i.e. Anki-Obsidian workflow.

Card types:

  1. Single line (:: separator) i.e.
the question goes on this side::answer goes here!
  1. Multiline (? separator) i.e.
As per the definition
of "multiline" the prompt
can be on multiple lines
?
same goes for
the answer

Hello Stephen,

This looks like a promising plugin! Thank you for your efforts on creating an integrated solution.

I’m currently using the Obsidian_to_Anki plugin and make heavy use of cloze deletions, so I cannot wait for you to implement this too. Hopefully you’ll be inspired by Pseudonium’s CurlyCloze option, so notes are a little less cluttered in comparison with Anki’s cloze syntax.

I see you have the support for links on your roadmap too. Are you familiar with SuperMemo’s neural review? I see the point you make to @davecan about memorizing existing notes, and my question fits that goal:

Would it technically be able to ‘prioritize’ the order of reviews using/based on the links mentioned on the respective notes? Or to have the option to review notes by simply following internal links to other tagged notes, starting from the one being displayed instead of the ones scheduled for review that day? If your plugin manages that it would enter the world of neural creativity, which would be a major breakthrough!

I don’t know if this is feasibly, but as we focus a lot on linking our notes, it is a pity we cannot make use of those connections during review with the current spaced repetition options already existing out there.

Anyway I can’t wait for you to add more features, keep up the great work!

1 Like

Great point, I had forgotten about SM’s neural review factoring in links. Inter-note links aren’t really a big “thing” in SM for the most part so I never got much out of it, but given Obsidian’s link-centric focus it would make sense to add in some of the related notes as well. Perhaps with a slight weakening of the selection algorithm so you don’t get all related notes for every note selected for review. One thought is to only select those that are linked and have not also been reviewed within X period (presumably slightly longer than the primary note being selected) and possibly also taking into account things like link density in the secondary note.

Hello,

Yes, I’m familiar with the CurlyCloze option. The highlight option i.e. ==cloze deletion== would also be useful since one can tweak the CSS & make the highlighting not visible in the preview. I’ll implement the two options.

I’m not familiar with neural creativity but from the skimming I’ve done on the SM pages, it sounds super interesting. I’ll dig deeper later and see where it leads us.

Thanks for this!

1 Like

Ah wow, as I’m both an Obsidian and CSS newbie I had no idea about the possibility of making the highlights not visible, makes perfect sense and is a good option too. Thanks for that!

Btw, I just bumped into the Journey plugin, which is basically what should be combined with your plugin to get SM’s neural review, right @davecan?

1 Like

Thank you for your nice plugin!

Single line type flashcards and note-level reviewing seem to work fine, but I can’t review multiline cards.
Even if I make a multiline card, the number of Queue doesn’t increase. The card might not be recognized as a flashcard.

This is the card I have made:

#fc 
front card line 1
front card line 2
?
back card line 1
back card line 2

#fc is my Flashcards tag. I confirmed single-line format works well.
Am I misunderstanding something?

1 Like

Hmm, I noticed the draft of above post I wrote in Daily note was recognized as a flashcard. But the original file stays ignored…I don’t know why.

Hello,

I think I’ve recognized what the problem is. In your original file, do you have a blank line at the very end of the file? There’s a bug where the plugin doesn’t recognize multi-line flashcards unless there’s a blank line after it. I’ll fix that in the next release.

1 Like

Adding a blank line resolved the problem!
Thank you for your advice!

For the ones being enthusiastic about this plugin too:

I thought it doesn’t render footnotes, as I normally give them an ID and define them at another place in the note, but just noticed coincidentally that inline footnotes render perfectly, in both the question and answer part of the card!

I did not detect any bugs so far as long as you use the inline ones with the carat outside of the brackets and respect the other limits of the plugin obviously.

:bulb:Maybe you find this working feature worth mentioning in the docs Stephen

1 Like

Hello,
Thanks, I’ll add that to the documentation.

The latest release of the Spaced Repetition plugin (v1.4.0):

  1. Adds support for cloze deletion cards :tada:
  2. Provides a way to reset a card’s scheduling progress
  3. Changes dates to the more compact DD-MM-YYYY date format
  4. Cleans up the settings interface
  5. Makes the right sidebar detach properly on unload

Sample cloze deletion card:

4 Likes

Awesome! Thank you for your time and effort developing your plugin.

Just one FYI: The “Algorithm implementation”-link in the setting page currently gives a 404 error.

1 Like

Thanks, I’ll fix the link in a few.

Edit: Fixed.

1 Like

Maybe it’s me, but I’m refering to the Algorithm implementation link, which points to https://github.com/st3v3nmw/obsidian-spaced-repetition/blob/master/docs/Algorithm.md giving the 404 error on my side…

I also noticed the Easy bonus suddently said NaN after updating the plugin and I had to change it to prevent getting a non-existing date error when grading a review. Changing it was a bit tricky due to a “The easy bonus must be at least 100” message blocking the attempt. Maybe the entry can be verified for validity after it looses the focus?

Btw, thank you for implementing the “bury related cards” option for cloze deletions right away… Without this my cloze deletion reviews wouldn’t be useful at all.

Happy to see the plugin is another step closer to becoming an Anki/SM replacer, looking forward to seeing images work whenever you get your head round it!

The broken link: Have you updated to the latest version (v1.4.2)? I fixed it in 1.4.1 (It should now point to the wiki).

About the easy bonus, it was misbehaving for some reason but reinstalling the plugin fixed it for me.
Per your suggestion, I’ll change it to check for validity after the user finishes typing.

I’m working on full rich text support for the next release!

My bad, updating did the trick indeed. And if full rich text means image support, you’ll definitely be my favorite plugin creator!:joy: You also got me into stuyding the basics of CSS to be able to manipulate the looks of highlighted text;)

Keep up the great work!

1 Like