Skip to main content

Ankivalenz

Ankivalenz is a tool for generating Anki cards from Markdown files. Read my blog post for more information on the "Why" of Ankivalenz.

Table of Contents

Tutorial

In this walk-through we will write our notes as Markdown files, and use Ankivalenz to generate an Anki deck with Anki cards extracted from our Markdown files.

Installation

Ankivalenz is distributed as a Python package, and requires Python 3.10+. To install:

$ pip3 install ankivalenz

Initialize project

Create a folder for your notes:

$ mkdir Notes
$ cd Notes

Ankivalenz needs a configuration file, containing the name and ID of the Anki deck. This can be generated with ankivalenz init:

$ ankivalenz init .

Write a note

Add the following to a file named Cell.md:

# Cell

## Types

- Prokaryotic ?:: does not contain a nucleus
- Eukaryotic ?:: contains a nucleus

Generate Anki deck

Run Ankivalenz:

$ ankivalenz run .

This generates a file Notes.apkg that can be imported to Anki. Open Anki and go to File -> Import, and find Notes.apkg.

Updating Anki deck

If you make changes to your notes, you can update the Anki deck by running ankivalenz run again. It is not possible to mark cards as deleted, so if you remove a note, the corresponding card will remain in the Anki deck. To work around this issue, all cards are tagged with a timestamp, and you can use the Anki browser to delete cards with an old timestamp. Running ankivalenz run will provide you with the filter needed to delete orphaned cards:

$ ankivalenz run .
- Added 3 notes to deck Biology in Biology.apkg
- Import the .apkg file into Anki (File -> Import)
- Find and delete orphaned notes with this filter (Browse):
    deck:Biology -tag:ankivalenz:updated:1666899823

Review

The new Anki deck will have two cards:

Question Answer Path
Prokaryotic does not contain a nucleus Cell > Types
Eukaryotic contains a nucleus Cell > Types

This is what the first note looks like in Anki:

Anki review

Syntax

Front/back cards

Ankivalenz supports front/back cards, where the front is the question and the back is the answer. To create a front/back card, add a new list item with the question, followed by ?:: and the answer:

- Color of the sun ?:: Yellow

You can flip the order of the question and answer by using ::? instead:

- Anwer ::? Question

Two-way cards

Two-way cards can be created with :::

- Side 1 :: Side 2

This will create two cards in Anki:

Front Back
Side 1 Side 2
Side 2 Side 1

Standalone questions/answers

Sometimes you want to create a note refering to the parent heading. This can be done with standalone questions/answers:

- Sun
  - ::? The star in our solar system

This will create a note with the answer "Sun" and the question "The star in our solar system". The other types of delimeters ("::" and "?::") can be used in the same way.

Cloze cards

Ankivalenz supports cloze deletion1, where the answer is hidden in the question. To create a cloze card, add a new list item with the question, using Anki's cloze syntax:

- The {{c1::sun}} is {{c2::yellow}}.

Nested lists

Lists can be nested:

- Solar System
  - Star ?:: Sun
  - Planet
    - Earth ?:: Blue
    - Mars ?:: Red

The headings for the nested lists become a part of the notes' paths:

Question Answer Path
Star Sun Solar System
Earth Blue Solar System > Planet
Mars Red Solar System > Planet

Math

Ankivalenz supports inline math:

- Inline math: $1 + 2$

Configuration

ankivalenz.json takes the following options:

Option Description
deck_name The name of the Anki deck.
deck_id The ID of the Anki deck.
input_path The path to the folder containing the Markdown files.
  1. https://docs.ankiweb.net/editing.html#cloze-deletion ↩

Metadata

Release files for ankivalenz 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ankivalenz 1.0.2
File Size Uploaded
ankivalenz-1.0.2.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ankivalenz 1.0.2
File Interpreter ABI Platform
ankivalenz-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 20.2 kB

Release files / ankivalenz-1.0.2.tar.gz

Download URL ankivalenz-1.0.2.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
fca1db6afa62e03de44b867a1a9d53d2e73aaf2352c3c9158cbf5829f5c69901
BLAKE2b-256 checksum
How to use checksums
8de4c83b93d777eb5c3eacee78faa5e57af0085c0933a9b0a3038ccb21bd8872
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.6 Darwin/24.0.0

Release files / ankivalenz-1.0.2-py3-none-any.whl

Download URL ankivalenz-1.0.2-py3-none-any.whl
Size 10.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e786fa7fd1402bc097b1a26d3e8f59dd16a8d9adf2195c2d8a3f0121a7e33531
BLAKE2b-256 checksum
How to use checksums
2566330e143d6fe0c29d6b7b2ac832b806718fc3ab09e2fa08eb518ef89e9218
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.6 Darwin/24.0.0
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page