Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

Anki YAML Sync

A Python CLI tool for bi-directional syncing of Anki notes as YAML files for easy editing and version control.

Inspired by visserle/DeckOps.

Features

  • Bi-Directional Syncing: Import notes from Anki to YAML and export YAML back to Anki
  • Human-Readable Format: Notes are stored as YAML files for easy editing
  • Flexible: Update existing notes or create new notes (based on ID field)
  • Deck-Aware Storage: Notes are stored in folders that mirror deck nesting

Requirements

  • Anki: Running instance of Anki desktop
  • AnkiConnect: Must be installed and running on localhost:8765 (default)

To set up AnkiConnect (https://ankiweb.net/shared/info/2055492159):

  1. Open Anki > Menu Bar > Tools > Add-ons > Get Add-ons
  2. Enter the code 2055492159 and click "OK" to install AnkiConnect
  3. Restart Anki

Installation

Run the following command to install globally: pipx install anki-yaml-sync

Usage

Import Notes from Anki

Fetch all notes from Anki and save them as YAML files:

anki-yaml-sync import [--output-dir OUTPUT]

Aliases: get-from-anki, fetch, gfa, f

Options:

  • --output-dir, -o: Directory to save YAML files (default: notes)

Example:

anki-yaml-sync import --output-dir ./my-notes

Export Notes to Anki

Sync YAML files back to Anki:

anki-yaml-sync export [--input-dir INPUT] [--deck DECK]

Aliases: send-to-anki, push, sta, p

Options:

  • --input-dir, -i: Directory containing YAML files (default: notes)
  • --deck: Deck to add new notes to (default: Default)

Example:

anki-yaml-sync export --input-dir ./my-notes --deck "My Deck"

Verbose Output

Add -v or --verbose flag to any command for detailed logging:

anki-yaml-sync -v import
anki-yaml-sync -v export

YAML Format

Each note is stored as a separate YAML file. Example:

id: 1234567890
type: Basic
deck: Languages::French
tags:
  - french
  - vocabulary
fields:
  Front: Bonjour
  Back: Hello

Fields:

  • id: Anki note ID (required for updates)
  • type: Note type name (e.g., "Basic", "Cloze")
  • deck: Full deck name using :: (e.g., Parent::Child)
  • tags: List of tags to apply
  • fields: Dictionary of field names to field values

Deck Folder Structure

Deck nesting is reflected in folders. For example, a note in deck Languages::French is stored as:

notes/Languages/French/<note>.yaml

Workflow

  1. Initial Import: Run anki-yaml-sync import to create YAML files from your Anki collection
  2. Edit: Open and edit the YAML files with your text editor or IDE
  3. Sync Back: Run anki-yaml-sync export to sync your changes back to Anki

Updating Existing Notes

If a YAML file has an id field that matches an existing Anki note, the export will update that note. Fields are completely replaced (not merged).

If the YAML deck differs from the current deck, the note's cards will be moved to the YAML deck.

Creating New Notes

To create a new note:

  1. Create a new YAML file with a temporary or missing id (e.g., 0 or null)
  2. Run anki-yaml-sync export
  3. The YAML file will be automatically updated with the assigned note ID

Note: If the ID is that of an existing note, the existing note may be overwritten with the YAML file instead of creating a new note in Anki.

Contributing

See CONTRIBUTING.md for guidelines on contributing to this project and setting up development environment on your device.

Metadata

Release files for anki-yaml-sync 0.2.4

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

Source distribution (sdist)

Source distribution for anki-yaml-sync 0.2.4
File Size Uploaded
anki_yaml_sync-0.2.4.tar.gz 14.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for anki-yaml-sync 0.2.4
File Interpreter ABI Platform
anki_yaml_sync-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 28.9 kB

Release files / anki_yaml_sync-0.2.4.tar.gz

Download URL anki_yaml_sync-0.2.4.tar.gz
Size 14.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3e9fdb6db9a6440f6785323859a53a94777bdd339981c7e426b02319514fe5d2
BLAKE2b-256 checksum
How to use checksums
63ed646e2f43410f17cb4a6dca7d13b69c08d4cd3b895eccab056f419cafc7b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 17, 2026.

Transparency log

Release files / anki_yaml_sync-0.2.4-py3-none-any.whl

Download URL anki_yaml_sync-0.2.4-py3-none-any.whl
Size 14.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7828e24551e6bc28866679a920e0f8f7ddc6902e5f4b85857fa5abae945c7ff1
BLAKE2b-256 checksum
How to use checksums
44a3994680f5f2a07838636419e2472c368f1ed7f5c96307564367109a21e5b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 17, 2026.

Transparency log
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