AnkiWeb
- Rating
- 10 (π 9 Β· π 1)
- Updated
- 2026-09-27
- Anki versions
- 26.08.1~
- Description language
- en
AnkiWeb addon 1013949798
Combines PDFs, EPUBs, videos, web pages, notes, and local files with flashcards in Anki study sessions, supporting extraction, priorities, progress tracking, and knowledge-tree organization.
Open on AnkiWeb GitHub Ask about alternatives
active
| Min Anki | Max Anki | Updated |
|---|---|---|
| 2.1.1 | 26.08.1+ | 2026-09-27 |
Loadingβ¦
Deprecated incremental reading tool imports web articles and feeds, extracts text into review cards, but its author directs users to a different maintained version.
Provides incremental reading tools for importing web content, extracting text into cards, highlighting, formatting, and scheduling extracts in Anki.
Adds a second pane to the Add dialog for PDF reading, note-taking, searching, and managing a reading queue, updated for Anki 25.04+.
Extracts vocabulary from txt, pdf, or epub files via OpenAI, creating tagged beginner, intermediate, or advanced translation flashcards in chosen Anki decks with duplicate skipping.
Copies or cuts highlighted editor content into new notes or directly into the database, with special scheduling for tagged cards.
Supports incremental reading in Anki by importing articles, extracting and highlighting text, creating cards, custom shortcuts, and controlling scheduling and formatting.
Incremento is a modern Anki add-on for incremental learning from mixed content. It brings a SuperMemo-style long-form learning workflow into Anki, combining PDFs, EPUBs, audio, videos, web pages, writing notes, and local files with normal flashcards so you can study, extract, and review in one place.
Incremento supports Anki 24.11 and newer. Optional features that depend on Anki's private reviewer API check compatibility at runtime and fail closed without rescheduling cards when the API is unavailable.
Option+Shift+P / Alt+Shift+P, with format/tag filters, possible-duplicate cleanup, and visual one-click opening.md / .markdown learning documents with a rendered preview and per-file options; edits the current managed study copy with source/preview and a previous-version backup (separate from Markdown Writing cards)Incremento is available from AnkiWeb Add-ons.
1013949798.For development or manual installation:
incremento.addons21/incremento.The repository intentionally does not ship meta.json; Anki creates and manages that local installation metadata.
Common add-on paths:
| Platform | Add-on path |
|---|---|
| macOS | ~/Library/Application Support/Anki2/addons21/incremento/ |
| Windows | %APPDATA%\Anki2\addons21\incremento\ |
| Linux | ~/.local/share/Anki2/addons21/incremento/ |
Core functionality works without extra system setup, but some PDF features improve when these are available:
PyMuPDF >=1.26,<2: PDF rendering, text extraction, and annotation syncTesseract: OCR for image-only PDFsDjVuLibre: optional DjVu import (ddjvu and djvutxt), together with PyMuPDFyt-dlp: optional local YouTube/Vimeo downloadsIncremento can guide first-run setup from inside Anki. PyMuPDF installation is an explicit user action. A compatible Python interpreter installs and verifies it in Incremento's local .dependencies/ folder; restart Anki to activate it. yt-dlp is never silently installed into Anki's Python environment. Platform-specific details are implemented in backend/deps.py.
After installing and restarting Anki:
For a full walkthrough, see MANUAL.md.
The support bundle is separate from Export Full Backup. It never contains card/note text, raw card or note IDs, deck/tag/profile names, media, user or media filenames, local filesystem paths, URLs, database rows, exception messages, or precise activity timestamps. Private and free-text configuration values are replaced with redaction markers. Fixed shipped-code filenames may appear beside their hashes so the developer can identify the installed build.
The optional Chrome/Brave extension lives in chrome_extensions/incremento_companion/. It can send PDFs, videos, web pages, and writing notes into Incremento, and it can capture watched video time.
Extension details and install steps:
backend/: scheduling, persistence, import logic, browser bridge, and content managersfrontend/: Qt dialogs/docks plus React source for the PDF viewerweb/: shipped web assets used inside Ankichrome_extensions/incremento_companion/: companion Chrome extensiontests/: Python test suitebackend/, frontend/, chrome_extensions/incremento_companion/, and tests/Choose Incremento β Settings β Language for English, Croatian, or Simplified Chinese, or automatically follow Anki. Save with OK, then restart Anki to apply it. The Chrome companion has an independent Settings β Language control that applies on Save, without a browser restart. All catalogs are bundled locally.
Users can add a language without coding: in Settings β Language, export a CSV template (or the selected language), edit only its translation column in Excel/Google Sheets/LibreOffice, then import it and save. The same CSV covers the add-on, PDF reader and companion. Anki stores imported packs per profile and applies them after restart; Chrome stores them locally and applies them on Save. Blank translations fall back to English. The complete walkthrough, format and developer instructions are in TRANSLATING.md. GNU gettext (msgfmt) is needed only for development: brew install gettext on macOS or sudo apt install gettext on Debian/Ubuntu.
Install the version-ranged development toolchain once:
.venv/bin/python -m pip install -r requirements-dev.txt
npm --prefix frontend ci
Python tests:
.venv/bin/python -m pytest tests/ -v
Compile and validate translation catalogs after editing .po files:
.venv/bin/python scripts/compile_i18n.py
.venv/bin/python scripts/build_translation_catalog.py
.venv/bin/python scripts/compile_i18n.py --check
Static and advanced quality gates:
.venv/bin/ruff check .
.venv/bin/mypy
npm --prefix frontend run lint
.venv/bin/python scripts/mutation_smoke.py
The Python suite includes Hypothesis property and state-machine coverage. The mutation smoke runs four bounded mutants against a temporary config module and fails if any plausible broken implementation survives.
Frontend build:
cd frontend
npm run build
The frontend build writes the shipped PDF viewer bundle to web/dist/pdf_viewer.js.
Chrome extension UI build:
cd frontend
npm run build:extension
This writes the React-based extension UI bundles into chrome_extensions/incremento_companion/dist/.
Chrome extension tests:
cd frontend
npm run test:extension
Maintainers can turn a sanitized incident into an evidence-backed patch candidate. The preferred input is structured JSON; plain text is supported for compatibility.
{
"title": "Session refill stops early",
"component": "session",
"category": "bug",
"severity": "medium",
"expected": "The pending window refills to its configured size.",
"actual": "The synthetic session stops after one refill.",
"steps": ["Create a synthetic bounded session", "Trigger one refill"],
"invariant": "Never duplicate a card already in the live queue.",
"relevant_paths": ["backend/session.py"],
"environment": {
"addon_version": "1.4.0",
"anki_version": "25.09.2",
"os_family": "macos",
"python_version": "3.12"
}
}
Store the report outside the repository. Do not include support bundles, card/note text, profile/deck/tag names, local paths, URLs, credentials, cookies, tokens, or raw logs. environment accepts only the four version/OS fields shown above.
Run the loop against a committed revision and write artifacts to a new or empty directory outside the repository:
.venv/bin/python scripts/llm_repair_loop.py /tmp/incremento-incident.json \
--base-ref HEAD \
--max-iterations 2 \
--output-dir /tmp/incremento-repair-result
The source checkout may contain uncommitted work: the loop uses only the selected committed base in a detached temporary worktree and leaves the source untouched. It first proves a single immutable regression is meaningfully red, then runs a separate repair role, risk-selected focused/fault-injection checks, the full fixed verification matrix, and an independent read-only critic. Repeated failures, stalled scores, timeouts, oversized diffs, protected-file edits, test edits, and ambiguous behavior stop the loop.
The output is review material, never an applied change:
candidate.patch: the highest-scoring bounded candidate, including its new regressionreproducer.patch: the isolated failing regression before production changesrun.json: privacy-sanitized gates, hashes, risk tags, stage usage, score, and stop reasonsmoke/: structured results when the optional real-Anki gate is enabledPreview the safely framed incident without invoking a model with --dry-run. To opt into a real Anki startup check, add --anki-smoke --anki-executable /path/to/anki; the harness creates a new disposable base, copies no user_files or local metadata, disables network access, and runs only that process group.
The deterministic repair-harness eval corpus runs offline and is also enforced in CI:
.venv/bin/python scripts/llm_repair_eval.py tests/repair_cases \
--deterministic-only --json
The loop never applies, commits, pushes, opens a pull request, publishes, deploys, or merges. A maintainer must inspect candidate.patch and run.json, reproduce the result in an appropriate environment, and make the final decision. See SECURITY.md for the complete trust and approval boundaries.
Build a clean installable .ankiaddon package with:
python3 scripts/package_addon.py
Useful variants:
# Rebuild the frontend bundle first
python3 scripts/package_addon.py --build-frontend
# Run tests before packaging
python3 scripts/package_addon.py --run-tests
# Run every release gate, rebuild generated assets, and remove staging
.venv/bin/python scripts/package_addon.py --release --clean-staging
# Include local meta.json for a manual/private package
python3 scripts/package_addon.py --include-meta
The script writes the .ankiaddon into dist/ and stages the exact packaged folder next to it for inspection unless --clean-staging is used. Runtime user_files/, tests, caches, bytecode, and local installation metadata are excluded; the archive is reopened and validated before success is reported.
meta.json is ignored because it is local Anki installation metadatauser_files/ is ignored because it contains local runtime data, imported media, and user databasesweb/ are intentionally tracked because they are shipped with the add-on