Rust
cargo add ankiforge@0.3.1Anki Forge は、Rust コアと Rust、Python、Node.js のインターフェースを備えた、オープンソースの Anki APKG 生成ライブラリです。メディアをまとめ、独自のテンプレートを使い、配布前に更新内容を確認できます。
4つのカードタイプ。1つの Anki デッキ。
公開パッケージ 0.3.1 で spanish.apkg を出力します。通常のエクスポートに Anki のインストールは不要です。
cargo add ankiforge@0.3.1npm install --include=optional ankiforge@0.3.1python -m pip install ankiforge==0.3.1プログラミング言語を選び、作りたいものを記入して、依頼文を AI コーディングアシスタントに貼り付けます。
任意入力です。依頼内容はこのページ内だけに保持されます。
アシスタントは Skill に対応していますか?
Anki Forge Skill を開く
Rust アプリケーションで Anki Forge 0.3.1 を使う作業を手伝ってください。
実行環境の要件: Rust 1.92+
公開パッケージ `ankiforge` と、このバージョンの文書に記載された公開 API だけを使ってください。
git/path 依存関係、内部ツール、ソース専用 API、未公開のメソッド、推測したメソッドは使わないでください。
作りたいもの:
<作りたいものを記入してください>
次の要件に従ってください。
1. ファイルを変更する前に、既存プロジェクトを確認します。
2. 必要な設定と正確なインストールコマンドを示します: cargo add ankiforge@0.3.1
3. 最小限かつ完全に実行できるプログラムを作り、追加・編集するすべてのファイル名を示します。
4. 永続的な `.apkg` ファイルを生成し、安定した名前空間とノートキーを使います。
5. 実行コマンド、想定される出力、検証手順を含めます。
6. メディア、独自テンプレート、画像穴埋め、更新が必要な場合は API を推測せず、文書化された手順に従います。
更新では、前回配布時のオリジナル APKG を基準として保持します。Anki から再エクスポートしたファイルは使いません。
7. 言語、入力形式、出力パス、識別情報のルールが不明な場合に、その解消に必要な質問だけをします。
クイックスタート: https://ankiforge.dev/ja/docs/quickstart/cargo add ankiforge@0.3.1Node / TypeScript アプリケーションで Anki Forge 0.3.1 を使う作業を手伝ってください。
実行環境の要件: Node.js 22.13+
公開パッケージ `ankiforge` と、このバージョンの文書に記載された公開 API だけを使ってください。
git/path 依存関係、内部ツール、ソース専用 API、未公開のメソッド、推測したメソッドは使わないでください。
作りたいもの:
<作りたいものを記入してください>
次の要件に従ってください。
1. ファイルを変更する前に、既存プロジェクトを確認します。
2. 必要な設定と正確なインストールコマンドを示します: npm install --include=optional ankiforge@0.3.1
3. 最小限かつ完全に実行できるプログラムを作り、追加・編集するすべてのファイル名を示します。
4. 永続的な `.apkg` ファイルを生成し、安定した名前空間とノートキーを使います。
5. 実行コマンド、想定される出力、検証手順を含めます。
6. メディア、独自テンプレート、画像穴埋め、更新が必要な場合は API を推測せず、文書化された手順に従います。
更新では、前回配布時のオリジナル APKG を基準として保持します。Anki から再エクスポートしたファイルは使いません。
7. 言語、入力形式、出力パス、識別情報のルールが不明な場合に、その解消に必要な質問だけをします。
クイックスタート: https://ankiforge.dev/ja/docs/node-quickstart/npm install --include=optional ankiforge@0.3.1Python アプリケーションで Anki Forge 0.3.1 を使う作業を手伝ってください。
実行環境の要件: CPython 3.11+
公開パッケージ `ankiforge` と、このバージョンの文書に記載された公開 API だけを使ってください。
git/path 依存関係、内部ツール、ソース専用 API、未公開のメソッド、推測したメソッドは使わないでください。
作りたいもの:
<作りたいものを記入してください>
次の要件に従ってください。
1. ファイルを変更する前に、既存プロジェクトを確認します。
2. 必要な設定と正確なインストールコマンドを示します: python -m pip install ankiforge==0.3.1
3. 最小限かつ完全に実行できるプログラムを作り、追加・編集するすべてのファイル名を示します。
4. 永続的な `.apkg` ファイルを生成し、安定した名前空間とノートキーを使います。
5. 実行コマンド、想定される出力、検証手順を含めます。
6. メディア、独自テンプレート、画像穴埋め、更新が必要な場合は API を推測せず、文書化された手順に従います。
更新では、前回配布時のオリジナル APKG を基準として保持します。Anki から再エクスポートしたファイルは使いません。
7. 言語、入力形式、出力パス、識別情報のルールが不明な場合に、その解消に必要な質問だけをします。
クイックスタート: https://ankiforge.dev/ja/docs/python-quickstart/python -m pip install ankiforge==0.3.1Rust Project API / genanki 0.13.1 · 処理ごとに Basic ノート1,000件
Rust Project API · Apple M1 Pro · 10回実行の中央値
各テストでは Basic ノートを1,000件使います。5種類のテストで、テキストのみ、ノートごとに異なるメディア、ノート間で共有するメディアを比較しました。Anki Forge の Rust API は genanki よりエクスポート時間が45.7〜53.9%短くなりました。
52.7 ms / 105.0 ms
150.7 ms / 320.2 ms
128.7 ms / 275.4 ms
110.5 ms / 239.5 ms
61.4 ms / 112.9 ms
この結果はデッキの生成時間を測ったもので、Anki へのインポートや復習の速さではありません。ハードウェアや処理内容によって異なる場合があります。 測定方法と元データ
実行できる Rust の例を切り替え、プレビューのカードを裏返し、生成されるデッキをダウンロードできます。
let (front, back) = ("hola", "hello");
let mut project = Project::new("spanish")?.default_deck("Spanish");
project.add("es:hola", Note::basic(front, back))?;
let built = project.build(BuildOptions::to(output.join("spanish.apkg")))?;hola
どんな意味ですか?質問を表示しました。
let text = "A sound's pitch depends on its {{c1::frequency}}.";
let extra = "More cycles per second, higher pitch.";
let mut project = Project::new("website-sound")?.default_deck("Sound");
project.add("sound:pitch", Note::cloze(text).field("back_extra", extra))?;
let built = project.build(BuildOptions::to(output.join("sound.apkg")))?;A sound's pitch depends on its […].
質問を表示しました。
let (prompt, answer) = ("Name this pitch.", "A4, 440 Hz");
let picture = Media::file(output.join("waveform.svg"))?.with_export_name("waveform.svg")?;
let audio = Media::file(output.join("concert-a.wav"))?.with_export_name("concert-a.wav")?;
project.add(
"sound:a4",
model
.note()
.field("prompt", prompt)
.field("answer", answer)
.field("picture", picture.image())
.field("audio", audio.sound()),
)?;
let built = project.build(BuildOptions::to(output.join("ear-training.apkg")))?;Name this pitch.
質問を表示しました。
let image =
Media::file(output.join("cell-anatomy.png"))?.with_export_name("cell-anatomy.png")?;
Ok(Note::image_occlusion(image)
.mask(Mask::rect("nucleus", 296, 106, 240, 232))
.build()?
.field("header", "Cell anatomy")
.field("back_extra", "Nucleus"))Which structure is hidden?

質問を表示しました。
エクスポート内容のブラウザープレビューです。Anki で確認するには APKG をインポートしてください。
定義の訂正や例の追加ができます。ノート ID を維持し、前回配布したオリジナルの APKG を使うことで、再エクスポート時に既存のノートを照合できます。
デッキ更新の仕組みes:holahola
hello
内容の変更を試す。
実際の比較結果: RISK.NOTE_CHANGED (low). 公開ポリシー: この変更を許可します.
v1 をダウンロードv2 をダウンロード比較レポート配布時のオリジナル APKG を保持してください。インポート設定と新しいローカル編集が更新に影響します。 更新ガイド
Basic と Cloze から始めることも、独自のノートタイプを定義することもできます。HTML、CSS、メディアを再利用できるテンプレートバンドルにまとめられます。
テンプレートについて読むCSV の表、JSON データ、AI アシスタントが下書きしたカードから始めます。完全なエクスポート手順を試してから、メディアを加え、更新を確認しましょう。