多看阅读没有批量导出?把这段提示词交给你的 AI 助手

多看阅读里攒了几千条笔记,想拿出来却只能一本书一本书点「导出」:没有批量功能,没有公开 API,导入书的笔记也不存在本地数据库里。

能走通的路是让 AI 助手替你点。它在电脑上用 adb 读屏幕、点按钮,每本书进「想法详情」→「导出」→ 分享给 Termux 存成文件,约 40 秒一本,放后台跑。我用这条路导出了 217 本书的 3172 条笔记,与 app 里显示的总数一条不差(多看阅读 7.12.10,Android 9 平板)。

两个坑决定成败:默认文件名是「《书名》的笔记.txt」,书名一长就超过 255 字节,Termux 报 File name too long,所以要在保存框里改成编号名;另外每次返回列表别多按 BACK,否则会退到书架。

不需要 root:让 Termux 的 ~/downloads 链接到 /sdcard/Download/duokan,导出文件就落在 adb 能直接取的地方。这一步我是在平板上手动授予存储权限、建同样的链接验证的,没有经过 termux-setup-storage 本身。

准备好电脑(装 adb,有能执行命令的 agent,比如 Claude Code)、打开 USB 调试的安卓设备和 Termux,把下面整段发给你的助手:

请帮我把安卓设备上「多看阅读」里所有书的笔记(想法)批量导出到这台电脑。下面是已实测走通的路,照此做;与我的设备不符时自行调整,并告诉我改了什么。

【已知事实】
- 多看没有公开 API,导入书的笔记也不存在本地数据库里,不必去抓包或翻数据库。唯一可靠的路是 app 内每本书「想法详情」页的「导出」按钮:它通过安卓分享菜单发出一个文本文件。
- 分享目标选 Termux:会弹出「Save file in ~/downloads/」对话框,里面有可编辑的文件名框(EditText)和「OPEN DIRECTORY」按钮,点 OPEN DIRECTORY 即保存。
- 导出文件格式:第一行书名,空一行,然后每条笔记先是一行「 YYYY-MM-DD」(行首有一个空格),下面是笔记正文,可多行。划线与我的评论不做区分。

【准备】
1. `adb devices` 确认设备已连上。
2. 让 Termux 把文件存到共享存储,这样无需 root 就能用 adb 取:请我在设备上打开 Termux,依次输入
   termux-setup-storage            (在弹窗里允许存储权限)
   mkdir -p /storage/emulated/0/Download/duokan
   mv ~/downloads ~/downloads.bak 2>/dev/null; ln -s /storage/emulated/0/Download/duokan ~/downloads
   此后导出的文件会落在 /sdcard/Download/duokan/。
3. 记下 `adb shell settings get system screen_off_timeout` 的原值,临时设为 1800000,全部完成后还原。
4. 请我在多看里打开「我的」→「想法」:这一页列出所有有笔记的书,每项有书名、条数、上次记录日期。「我的」页上的「想法」总数记下来,最后用来核对。

【逐本导出:写一个脚本,用 `adb shell uiautomator dump` 读界面,用 `adb shell input tap / swipe / keyevent / text` 操作】
- 列表项节点的 resource-id 是 com.duokan.reader:id/personal__reading_note_item_view__title,另有 __count 和 __date,可读出书名、条数、日期和坐标。笔记正文是自绘的,dump 读不到,不必尝试。
- 每本书:点书名 → 等出现文字为「导出」的节点再点它(不同书的位置不同,按文字找,别写死坐标)→ 在分享菜单里找文字「Termux」并点它 → 对话框出现后,点 EditText,发 `input keyevent 123`(光标移到末尾),再发约 250 个 67(退格)清空,`input text 001.txt` 换成短编号名 → 重新 dump,核对文件名框确为 001.txt → 点「OPEN DIRECTORY」→ 确认 /sdcard/Download/duokan/001.txt 已出现。
- 一定要改文件名:默认名「《书名》的笔记.txt」在书名很长时超过 255 字节,Termux 会报 Error saving file … (File name too long);同名的书也会互相覆盖。用三位编号命名,并把 编号→书名、条数、日期 追加写入一个 jsonl 进度文件,中断后可续跑。
- 返回列表:保存后 Termux 在前台。用 `adb shell am start -n com.duokan.reader/.DkMainActivity` 拉回多看(通常回到想法详情页);只有 dump 里看不到列表项时才再按一次 BACK,多按会退到书架。
- 自愈:每轮开始先确认在想法列表;在「想法详情」页就按 BACK;在别处就点底部「我的」,再点「想法」那一行。dump 里会混有被遮住的页面层的节点,判断当前页要看它独有的文字。
- 当前屏的书都导完就上滑(从屏高 83% 处滑到 34% 处);连续两次滑动后列表不变,就是到底了。
- 同一本书失败两次就记为失败,继续下一本;出现错误对话框先点「OK」关掉。每 25 本执行一次 `adb shell am force-stop com.termux`,免得 Termux 会话越积越多。
- 脚本放后台跑并写日志,定时看进度,不要守着。

【收尾】
- 核对:每本文件里「 YYYY-MM-DD」行数应等于列表上的条数,总和应等于「想法」总数。不符的书单独重导。
- `adb pull /sdcard/Download/duokan/` 到电脑;按进度文件把 001.txt 改名为「001-书名.txt」(书名截到 80 字节以内,去掉 / \ : * ? " < > | 和空白),再合成一份按书分节、带日期的 Markdown 汇总。
- 还原屏幕超时;把 Termux 的 ~/downloads 恢复原状(删掉链接,把 ~/downloads.bak 改回来)。最后告诉我:导出了几本书、几条笔记、哪些失败了。

多看改版后界面元素可能变化,提示词里已让助手按文字找按钮、自行调整,并在最后核对条数。

Comments

  1. Markdown is allowed. HTML tags allowed: <strong>, <em>, <blockquote>, <code>, <pre>, <a>.