AnkiWeb
- Rating
- 1 (π 1 Β· π 0)
- Updated
- 2026-04-20
- Anki versions
- 25.09.2~
- Description language
- en
AnkiWeb addon 1186735228
Uses your OpenAI API key to batch transform Anki note fields from Browser selections or saved workflows, supporting cleanup, rewriting, tagging, and field generation.
Open on AnkiWeb GitHub Ask about alternatives
active
| Min Anki | Max Anki | Updated |
|---|---|---|
| 25.09 | 25.09.2+ | 2026-04-20 |
Loadingβ¦
Fills blank Anki note fields with AI-generated text, audio, and images using configurable per-field instructions, batch processing, and multiple providers.
Duplicates selected Anki notes into the Default deck and translates chosen fields with OpenAI or Google Gemini, leaving originals untouched and preserving HTML and media.
Generates concise, exam-focused AI explanations for existing Anki cards during review or batch, using OpenAI or Gemini, writing to a chosen field.
Generates AI study explanations, examples, hints, and quizzes from card content via Gemini, OpenAI, or Claude, optionally saving or displaying results.
Translates Anki cards into another language while preserving originals, using OpenAI or Gemini, with single-card and batch workflows and configurable fields.
Generates AI text and MP3 audio from note fields via configurable OpenAI-compatible providers and Edge TTS, supporting prompt templates, vision OCR, batch notes, and local settings storage.
<p align="center"> <a href="https://buymeacoffee.com/moritzowitsch"> <img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-FFDD00?style=for-the-badge&logo=buymeacoffee&logoColor=000000" alt="Buy Me a Coffee" /> </a> <a href="https://github.com/moritzvitt"> <img src="https://img.shields.io/badge/GitHub-moritzvitt-181717?style=for-the-badge&logo=github&logoColor=white" alt="GitHub moritzvitt" /> </a> </p>
AI Automation is an Anki add-on for updating note fields with OpenAI from the Browser or from saved workflows. It is intended for batch cleanup, rewriting, tagging, transformation, and field generation tasks where the input can be rendered from note data.
Install the add-on from AnkiWeb if a release is available, or install it manually from a packaged .ankiaddon file.
This add-on requires your own OpenAI API key.
If you want a more polished and consistent look across my add-ons, you can also install my Global Styling add-on. It lets you apply a shared design on top of supported add-ons without changing their functionality.
ai-automation/
βββ __init__.py
βββ addon.py
βββ core/
β βββ config.py
β βββ config_models.py
β βββ config_parsing.py
β βββ config_prompt_library.py
β βββ automation_files.py
β βββ processing.py
β βββ processing_models.py
β βββ processing_support.py
β βββ processing_text.py
β βββ prompt_files.py
β βββ prompting.py
β βββ usage_stats.py
β βββ workflow_engine.py
β βββ workflow_triggers.py
βββ services/
βββ scripts/
βββ prompt_library/
βββ ui/
βββ docs/
βββ tools/
βββ user_data/
βββ CHANGELOG.md
Tools -> Add-ons -> AI Automation -> Config, and use the settings window to set your API key, choose a model, and open the dedicated Browser and workflow settings dialogs.To run reusable query-based rules, open Tools -> AI Automation: Workflow Configuration.
If you need to install the dependency manually, use Anki's bundled Python. The exact path varies by platform, but the command is equivalent to:
/path/to/anki/python -m pip install openai
The add-on is configured through config.json or Anki's built-in add-on config storage.
In Anki itself, clicking Config opens a structured core settings dialog instead of raw JSON. From there, you can jump into the dedicated Browser settings and workflow settings windows.
The model selector in that dialog loads a curated flashcard-writing shortlist from OpenAI's GET /v1/models endpoint using your API key and labels models with rough cost tiers such as Very cheap, Cheap, Moderate, Expensive, and Very expensive.
The note type rules are edited in a small dedicated UI instead of a raw field_mappings JSON block.
Important keys:
openai_api_key: your OpenAI API keyuse_chat_completions_api: toggles Chat Completions vs Responses API for generationmodel: the default model used for generationprompt_template: the default user prompt with placeholders like {{Front}}system_prompt: the default system promptfield_mappings: per-note-type input and output field rulesmax_retries and request_timeout_seconds: safety controls for batch processingbatch_size: how many notes are processed per outer batchmax_parallel_requests: limits how many note requests can run at the same timeshow_tooltips: enables or disables hover help across the UIshow_estimate_before_sending: enables the confirmation popup with estimated tokens and costestimated_output_tokens_per_note: used to forecast output tokens before the request is sentmodel_pricing: optional overrides for cost estimation when you use a model not covered by built-in pricingsaved_prompts, saved_system_prompts, processing_presets: reusable building blocks for Browser runs and workflowsworkflows, workflow_groups: reusable automations and group organizationExample mapping:
{
"note_type": "Basic",
"output_fields": ["Back"]
}
The prompt can reference any field that exists on the note, plus {{NoteType}}. If a referenced field does not exist on a selected note, the add-on will show a clear error for that note instead of sending a broken request.
Transform with AI.For rule-based runs:
Tools -> AI Automation: Workflow Configuration.Refresh Count while editing to preview how many notes the query currently matches.Open Tools -> AI Automation Usage to review tracked totals and recent runs. These spend figures are local add-on estimates based on model pricing, not billing-invoice truth.
The same menu also attempts to fetch official OpenAI spend for today, last 7 days, and this month through OpenAI's organization Costs API. That endpoint typically requires an organization admin key; regular project API keys may not have access.
To build a .ankiaddon archive manually:
python3 tools/package_ankiaddon.py
The packaging script excludes local user_data, meta.json, and all files under prompt_library/user_prompts/, while still creating an empty prompt_library/user_prompts/ directory inside the archive.
docs/README.mdconfig.mdISSUES.mddocs/architecture/overview.mddocs/release/release-description.md