Panda Zap
pendingby Team Super Panda
Convert Markdown notes into Anki flashcards and sync locally.
⚡ Panda Zap
Turn Obsidian notes into Anki flashcards. Panda Zap extracts Q/A pairs from Markdown and syncs them to Anki via AnkiConnect. You can preview adds, updates, and deletions before anything is written to your Anki collection.
This README is a concise user guide; developer notes and extended examples are in docs/.
— Desktop only (requires Anki + AnkiConnect) —
Key features
- Extracts Q/A pairs using simple, configurable labels (defaults:
Q:andA:). - Preview adds, updates, and removals before syncing.
- Deck targeting:
- Global default deck (plugin setting)
- Note‑based decks that mirror
folder::NoteName - Per‑note override via a first‑line header:
Deck::my/deck(slashes normalized to Anki's::format)
- Creates and updates notes only as Basic (Front / Back) cards. The plugin requires a Basic note type or any model exposing fields named
FrontandBack. - Quick connection test and status in the sync dialog.
Requirements
- Obsidian on desktop
- Anki desktop app
- AnkiConnect add‑on (code 2055492159): https://ankiweb.net/shared/info/2055492159
Quick start
-
Install Anki and AnkiConnect, then keep Anki running.
-
Install and enable Panda Zap plugin in Obsidian.
-
In a note, write cards using Q/A:
Q: What is the capital of France? A: Paris Q: What year did World War II end? A: 1945 -
Click the ⚡ ribbon icon (Zap) to open the sync dialog, review the preview, and sync.
Note: Preview and full analysis that detects existing Anki notes rely on a working AnkiConnect connection; for accurate add/update/delete suggestions keep Anki running with AnkiConnect enabled when using Preview or Sync.
Writing cards (essentials)
-
Supported model: Basic only (for now...). The plugin creates and updates notes using
FrontandBackfields. Use Anki's Basic model (or another model that exposesFrontandBack) to ensure compatibility. -
Labels are case‑insensitive and must be followed by a colon:
Q:andA:. -
Single‑line:
Q: [question] A: [answer]. -
Images:
I: [[image.png]]orI: . Attach images to the Answer field (Back of card). -
Formatting: bold or italic around labels is allowed — the extractor strips
*and_. -
Avoid Q/A inside fenced code blocks or YAML frontmatter.
-
Deck override: place
Deck::my/deckon the first line to target a specific deck for that note (slashes are normalized to Anki's::).
Important: Cloze and other non‑Basic models are not supported. The plugin does not construct cloze deletions or map arbitrary fields.
More examples: docs/writing-cards.md.
How syncing works
- The plugin extracts Q/A pairs from the active note.
- It analyzes existing Anki notes to decide what to add, update, or remove.
- You can preview all changes in a modal before syncing.
- If note‑based decks are enabled, the plugin can also detect cards previously made from the same note that no longer exist and ask to delete them from Anki (with confirmation).
Notes
- Communication is via AnkiConnect’s local HTTP API. Keep Anki open.
Settings (at a glance)
- Anki Connect URL and Port (defaults:
http://127.0.0.1and8765). - Default Deck.
- Use Note‑based Decks (mirror
folder::NoteName). - Deck Override Word (first‑line prefix, default
Deck). - Question/Answer Words (defaults
Q/A). - Note Type (must be
Basic— the plugin usesFrontandBackfields). - Bold Question in Reading Mode (presentation only).
Details: docs/settings.md.
Troubleshooting
- “Not connected to Anki” → Ensure Anki is open and AnkiConnect is installed; check host/port.
- “Duplicate” errors → The note likely already exists; the plugin will skip when safe.
- Missing cards → Confirm your Q/A lines aren’t inside code blocks or frontmatter.
- See Obsidian’s Dev Console (Ctrl/Cmd+Shift+I) for error messages.
If you’re stuck, please open a GitHub issue with a small repro (a few lines of the note) and any console output.
Privacy & security
Panda Zap talks to AnkiConnect over HTTP (default http://127.0.0.1:8765). See PRIVACY.md for full details. In brief, the plugin may transmit the following to the configured AnkiConnect host:
- Full note content (for analysis and sync)
- Note path / filename (used when note-based decks are enabled)
- Card fields (
FrontandBack) and the target deck/model names
By default the plugin connects to localhost only. If you point the plugin to a remote host you are responsible for securing that transport (for example using an SSH tunnel or VPN). This plugin collects no telemetry (see PRIVACY.md).
License
MIT — see LICENSE.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.