Rust
cargo add ankiforge@0.3.1Anki Forge 是开源 Anki APKG 生成库,以 Rust 为核心,提供 Rust、Python 和 Node.js 接口。打包媒体、使用自定义模板,并在分发前检查更新。
四种卡片,一个 Anki 牌组。
使用 Anki Forge 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请帮助我在 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`,并使用稳定的 namespace 和 note key。
5. 给出运行命令、预期输出和验证步骤。
6. 如果涉及媒体、自定义模板、图片遮挡或牌组更新,请遵循文档中的流程,
不要自行猜测 API。更新时保留上一份原始分发 APKG 作为基线,不使用 Anki 重新导出的包。
7. 只有在语言、输入格式、输出路径或身份规则无法判断时才提问。
快速开始文档:https://ankiforge.dev/zh-cn/docs/quickstart/cargo add ankiforge@0.3.1请帮助我在 Node / 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`,并使用稳定的 namespace 和 note key。
5. 给出运行命令、预期输出和验证步骤。
6. 如果涉及媒体、自定义模板、图片遮挡或牌组更新,请遵循文档中的流程,
不要自行猜测 API。更新时保留上一份原始分发 APKG 作为基线,不使用 Anki 重新导出的包。
7. 只有在语言、输入格式、输出路径或身份规则无法判断时才提问。
快速开始文档:https://ankiforge.dev/zh-cn/docs/node-quickstart/npm install --include=optional ankiforge@0.3.1请帮助我在 Python 项目中使用 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`,并使用稳定的 namespace 和 note key。
5. 给出运行命令、预期输出和验证步骤。
6. 如果涉及媒体、自定义模板、图片遮挡或牌组更新,请遵循文档中的流程,
不要自行猜测 API。更新时保留上一份原始分发 APKG 作为基线,不使用 Anki 重新导出的包。
7. 只有在语言、输入格式、输出路径或身份规则无法判断时才提问。
快速开始文档:https://ankiforge.dev/zh-cn/docs/python-quickstart/python -m pip install ankiforge==0.3.1Rust Project API / genanki 0.13.1 · 每组 1,000 条 Basic 笔记
Rust Project API · Apple M1 Pro · 10 次运行中位数
每组测试包含 1,000 条 Basic 笔记。五组测试覆盖纯文本、独立媒体和共享媒体等场景。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?

已显示问题。
这里是导出内容的浏览器预览;导入 APKG 后可在 Anki 中检查。
从 CSV 表格、JSON 数据或 AI 起草的卡片开始,按完整教程导出牌组,再添加媒体并检查更新。