yanki 0.6.0
Build Anki decks from text files containing YouTube URLs.
Requires Python: >=3.11
Keywords: anki, flashcards

# Build [Anki] decks from text files containing YouTube URLs

Yanki makes it easy to build and maintain video flashcard decks for [Anki]. It
can use local video or image files, or it can download videos from YouTube or
any other source [yt-dlp] supports.

## Installation

You will need `ffmpeg` installed to use Yanki. On macOS, install it from
[ffmpeg.org] or with [`brew install ffmpeg`]. On Linux or Windows, try
installing [yt-dlp’s ffmpeg].

I recommend using [`uvx`] run Yanki. `uvx` is part of [uv], which can be
[installed][uv install] a number of ways, but it’s probably simplest to install
`uv` through your package manager, e.g. [`brew install uv`] on macOS.

## Quick start

Create a simple deck file, e.g. `basic.deck`, to define your flashcards:

```yaml
title: Basic ASL phrases
more: md:From [Lifeprint](https://www.lifeprint.com/)
audio: strip

https://www.youtube.com/watch?v=FHPszRvL9pg What is your name?
https://www.youtube.com/watch?v=zW8cpOVeKZ4 Are you deaf?
https://www.youtube.com/watch?v=xqKENRGkOUQ Are you a student?
```

On macOS and some Linux distributions, you can make `yanki` open Anki and start
the import of the new deck:

```
uvx yanki -v update basic.deck
```

Otherwise, you can make it build an `.apkg` and then import that into Anki:

```
uvx yanki -v build -o basic.apkg basic.deck
```

## Deck file format

There is a reference for the deck file format in [REFERENCE.adoc][].

### Examples

The [`asl/`][asl] directory contains example `.deck` files that can be used to
build a deck for the vocabulary and phrases in each [Lifeprint.com ASLU][LP]
lesson. Its [README.md][asl] briefly explains how the signs were chosen.

> ### 💡 Tip
> If you are interested in learning American Sign Language, please see Dr. Bill
Vicar’s [Lifeprint.com ASLU][LP]. These decks can help you, but they cannot
replace the Lifeprint lessons and vocabulary pages.
>
> Plus, Lifeprint is full of Dr. Bill’s humor.

## Command usage

This is a Python package that can be run with [`uvx`]. The most common usage is
probably just to build your decks and import them to Anki. That’s as simple as:

```
uvx yanki update *.deck
```

You can see all the commands and options with `--help`:

```
❯ uvx yanki --help
Usage: yanki [OPTIONS] COMMAND [ARGS]...

  Build Anki decks from text files containing YouTube URLs.

Options:
  -v, --verbose                 Be more verbose. May be passed up to 3 times.
  --cache DIRECTORY             Path to cache for downloads and media files.
                                [default: $YANKI_CACHE or ~/.cache/yanki]
  --reprocess / --no-reprocess  Force reprocessing videos.
  -j, --concurrency INTEGER     Number of ffmpeg process to run at once.
                                [default: $YANKI_CONCURRENCY or 4]
  --version                     Show the version and exit.
  --help                        Show this message and exit.

Commands:
  build             Build an Anki package from deck files.
  list-notes        List notes in deck files.
  open-videos       Download, process, and open video URLs.
  save-flashcards   Save HTML flashcard UI to a directory.
  save-summary      Save HTML summary of decks to a directory.
  serve-flashcards  Serve HTML flashcards localhost:8000.
  serve-summary     Serve HTML summary of deck on localhost:8000.
  to-json           Generate JSON version of decks.
  update            Update Anki from deck files.
```

## License

Unless otherwise noted, this is dual-licensed under the Apache 2 and MIT
licenses. You may choose to use either.

  * [Apache License, Version 2.0](LICENSE-APACHE)
  * [MIT license](LICENSE-MIT)



[Anki]: https://apps.ankiweb.net
[yt-dlp]: https://github.com/yt-dlp/yt-dlp
[ffmpeg.org]: https://www.ffmpeg.org
[`brew install ffmpeg`]: https://formulae.brew.sh/formula/ffmpeg#default
[`brew install uv`]: https://formulae.brew.sh/formula/uv#default
[yt-dlp’s ffmpeg]: https://github.com/yt-dlp/FFmpeg-Builds?tab=readme-ov-file#ffmpeg-static-auto-builds
[uv]: https://docs.astral.sh/uv/
[`uvx`]: https://docs.astral.sh/uv/guides/tools/#running-tools
[uv install]: https://docs.astral.sh/uv/getting-started/installation/
[REFERENCE.adoc]: https://github.com/danielparks/yanki/blob/v0.6.0/REFERENCE.adoc
[asl]: https://github.com/danielparks/yanki/blob/v0.6.0/asl#readme
[LP]: https://www.lifeprint.com