Browse History Logger / 浏览记录

AnkiWeb addon 945320554

Logs the order cards are viewed in Anki's browser to monthly JSONL files, with a filterable viewer, CSV export, jump-to-card, batch reopening, and monthly cleanup.
AI-generated summary; may contain mistakes.

exportstatisticssearchbackup-maintenance

Open on AnkiWeb Ask about alternatives

AnkiWeb

Votes
0 (👍 0 · 👎 0)
Updated
2026-10-03
Anki versions
26.09.2~
Languages
Python, JSON
Description language
zh

Maintenance

active

  • Last update or commit: 2026-10-03 (29 days before the snapshot).

GitHub

No GitHub repository linked.

Will it work on my Anki?

Version branches
Min AnkiMax AnkiUpdated
26.09.2+2026-10-03
History across monthly snapshots

Loading…

Similar addons

LLM Review Stats Exporter

Exports Anki review history to CSV or JSONL for use with LLMs, with deck, time, tag, interval, and field filters plus optional summary files.

exportstatistics

5 votes 57% approval 👍 5 · 👎 0 ⭐ 5 Anki 2.1.66~ Updated 2026-07-22
Anki Card Viewer

Displays flashcards in a visual card layout grouped by a base tag, letting users suspend, unsuspend, and edit cards within the same interface.

review-flownote-managementtagging

2 votes 9% approval 👍 1 · 👎 1 ⭐ 1 Anki 2.1.1~ Updated 2025-04-17

Description

浏览记录 · Browse History Logger

记录你在 Anki「卡片浏览器」里依次看过哪些卡 —— 这是 Anki 本身不提供的能力。

Anki 只记三类时间戳:added(添加)、edited(编辑)、rated / introduced(复习评分)。 浏览不属于其中任何一类 —— 既不发评分(不入 revlog),也不改内容(不动 mod), 在数据层等于没发生过,搜索语法里也没有 browsed:n 这样的过滤器。 本插件把这件事补上。

功能

| 能力 | 说明 | |---|---| | 记录浏览顺序 | 时间戳 + nid + cid + 牌组 + 题型 + 题干摘要 + 当时的搜索条件 | | JSONL 日志 | 按月分文件,一行一条,UTF-8,可直接 grep | | 查看界面 | 按日期分组、关键词过滤、点击表头正/反向排序(nid 按数值排)、双击跳回那张卡、导出 CSV(UTF-8-BOM,Excel 不乱码);快捷键 Ctrl+Shift+H 一键打开(可用 shortcut_view 配置修改或禁用) | | 批量调出 | 一键把某天浏览过的卡在浏览器中打开(nid: 检索),或打开当前筛选结果(上限 2000 张) | | 按月清理 | 勾选要删除的月份(连滚动备份一起删),或一键删除 N 个自然月之前的全部日志;也可用 retain_months 启动时自动清理 | | 复习界面(可选) | also_log_reviewer: true 后也记录复习时看过的卡,来源标 reviewer |

设计原则

  • 只读不写 —— 插件绝不修改任何卡片内容,只往自己的日志文件追加。
  • 不影响 Anki —— 所有回调整体 try/except,异常写进插件目录的 error.log,绝不打断用户。
  • 日志在插件目录外 —— 存在 <Anki2 数据目录>/browse_history_logs/,重装/升级插件不会丢历史。 (v1.0.0 起目录名从 浏览记录日志 改为 browse_history_logs,首次运行会自动改名迁移,历史记录不丢。)
  • 不联网 —— 不做任何网络请求,数据全部留在本机。
  • 界面语言自适应 —— 随 Anki 语言设置自动切换中文 / English,也可用 language 配置强制指定。

安装

从 AnkiWeb:工具 → 附加组件 → 获取附加组件 → 填入插件编号。

从文件:工具 → 附加组件 → 从文件安装… → 选 浏览记录_BrowseHistoryLogger.ankiaddon。

装完重启 Anki。

用法

浏览器 → 编辑 菜单:

  • 浏览记录:查看… —— 打开查看界面
  • 浏览记录:在浏览器中只看今天看过的卡 —— 用 nid: 调出今天浏览过的卡
  • 浏览记录:打开日志文件 —— 直接看原始 JSONL
  • 浏览记录:清理… —— 按月勾选删除日志,或一键删除 N 个月前的全部日志

主界面 → 工具 → 浏览记录… 也能打开查看界面。

配置

工具 → 附加组件 → 浏览记录 → 配置。详见插件内的 config.md。

最常用的两项:

  • min_dwell_ms:默认 0(记录全部,最忠实于浏览顺序)。习惯按住 ↓ 快速扫卡的话设 800, 只记录真正停下来看的那些。
  • log_front_preview:设 false 则日志只存 nid、不含任何卡片文字。
  • retain_months:设为 1/3/6/12 等,则每次启动 Anki 自动删除 N 个自然月前的日志(0 = 永久保留)。

日志格式

{"nid": 1759455728224, "src": "browser", "search": "nid:1759455728224",
 "mid": 1789302047393, "notetype": "Note", "cid": 1759455728227,
 "deck": "4-笔记卡", "front": "方程的综合问题 初中代数内容的学习过程…",
 "ts": "2026-10-03T11:48:23"}

开发

本插件用到的 Anki API 已逐项对照 Anki 26.9.2 的字节码核实(不是凭记忆写的), 查出并规避了两处与常见写法不同的地方:

  • 浏览器 Edit 菜单的属性名是 menuEdit(驼峰),26.x 里没有 menu_Edit;
  • 读当前选中的卡要调 browser.table.get_current_note(),browser.current_note() 已不存在。

另外 browser.search 是「执行一次搜索」的方法而非字符串属性,误读会触发真实搜索 —— 代码里明确禁用了这条路径。

浏览记录插件/
├── browse_history_logger/        # 插件本体(打包时根目录放这几个文件)
│   ├── __init__.py               # 全部逻辑
│   ├── manifest.json             # 供 AnkiWeb 之外的渠道分发用
│   ├── config.json               # 默认配置
│   ├── config.md                 # 配置说明(Anki 配置界面会渲染)
│   └── LICENSE                   # AGPL-3.0 全文
├── _build_addon.py               # 打包 + 自检 + 安装到本机 Anki
├── _smoke_test.py                # 桩模块烟雾测试(不需要启动 Anki)
└── 浏览记录_BrowseHistoryLogger.ankiaddon
python _smoke_test.py    # 钩子注册 / 目录迁移 / 日志读写 / 多语言 / manifest
python _build_addon.py   # 清理缓存 → 打包 → 自检 → 安装

兼容性

需要 Qt6 版 Anki(23.10 及以上)。已在 Anki 26.9.2 / Python 3.13.15 / Qt 6.11.2(Windows)上实测运行。 钩子是逐个挂载的 —— 万一将来某个钩子名失效,不会连累其余功能。

许可

AGPL-3.0-or-later。见 LICENSE。