闲社服务运行正常AI智能体自动化平台
a

苹果图书阅读

技能标识:apple-books

Read your Apple Books library, highlights, notes, and reading progress directly from the local SQLite databases on macOS.

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 0.2.0
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

苹果图书阅读

Apple Books

在 macOS 上查询本地 Apple Books 资料库。对图书、高亮、笔记、收藏集和阅读进度具有只读访问权限。

要求

  • - 仅限 macOS — Apple Books 数据存储在 ~/Library/Containers/com.apple.iBooksX/ 中
  • 运行查询的进程需要完全磁盘访问权限(系统设置 → 隐私与安全性 → 完全磁盘访问权限)
  • sqlite3(macOS 预装)
  • Apple Books 必须至少打开过一次(数据库在首次启动时创建)

数据库发现

数据库文件名在 macOS 安装中保持一致,但始终动态解析它们,以防 Apple 在将来版本中更改:

bash
BKLIBRARY_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/BKLibrary/*.sqlite 2>/dev/null | head -1)
AEANNOTATION_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/AEAnnotation/*.sqlite 2>/dev/null | head -1)

如果任一变量为空,则表示此 Mac 上尚未设置 Apple Books。

重要提示: 这些是只读查询。切勿 INSERT、UPDATE 或 DELETE 行——这样做可能会损坏 Apple Books 数据或导致 iCloud 同步问题。

列出所有图书

bash
BKLIBRARY_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/BKLibrary/*.sqlite 2>/dev/null | head -1)
sqlite3 $BKLIBRARY_DB \
SELECT ZTITLE, ZAUTHOR, ZGENRE, ZPAGECOUNT, ZREADINGPROGRESS, ZISFINISHED, ZASSETID
FROM ZBKLIBRARYASSET
WHERE ZTITLE IS NOT NULL
ORDER BY ZLASTOPENDATE DESC;

按标题或作者搜索图书

bash
BKLIBRARY_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/BKLibrary/*.sqlite 2>/dev/null | head -1)
sqlite3 $BKLIBRARY_DB \
SELECT ZTITLE, ZAUTHOR, ZGENRE, ZREADINGPROGRESS, ZASSETID
FROM ZBKLIBRARYASSET
WHERE ZTITLE IS NOT NULL AND (ZTITLE LIKE %SEARCHTERM% OR ZAUTHOR LIKE %SEARCHTERM%)
ORDER BY ZLASTOPENDATE DESC;

将 SEARCH_TERM 替换为用户查询的内容。

正在阅读(进行中,未完成)

bash
BKLIBRARY_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/BKLibrary/*.sqlite 2>/dev/null | head -1)
sqlite3 $BKLIBRARY_DB \
SELECT ZTITLE, ZAUTHOR, ZGENRE,
printf(%.0f%%, ZREADINGPROGRESS * 100) AS progress,
datetime(ZLASTOPENDATE + 978307200, unixepoch, localtime) AS last_opened
FROM ZBKLIBRARYASSET
WHERE ZTITLE IS NOT NULL
AND ZREADINGPROGRESS > 0.0
AND (ZISFINISHED IS NULL OR ZISFINISHED = 0)
ORDER BY ZLASTOPENDATE DESC;

已读完的图书

bash
BKLIBRARY_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/BKLibrary/*.sqlite 2>/dev/null | head -1)
sqlite3 $BKLIBRARY_DB \
SELECT ZTITLE, ZAUTHOR, ZGENRE,
datetime(ZDATEFINISHED + 978307200, unixepoch, localtime) AS finished_date
FROM ZBKLIBRARYASSET
WHERE ZISFINISHED = 1
ORDER BY ZDATEFINISHED DESC;

获取特定图书的所有高亮和笔记

bash
AEANNOTATION_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/AEAnnotation/*.sqlite 2>/dev/null | head -1)
sqlite3 $AEANNOTATION_DB \
SELECT ZANNOTATIONSELECTEDTEXT, ZANNOTATIONNOTE, ZANNOTATIONSTYLE,
datetime(ZANNOTATIONCREATIONDATE + 978307200, unixepoch, localtime) AS created
FROM ZAEANNOTATION
WHERE ZANNOTATIONDELETED = 0
AND ZANNOTATIONASSETID = ASSET_ID
AND length(ZANNOTATIONSELECTEDTEXT) > 0
ORDER BY ZPLLOCATIONRANGESTART ASC;

将 ASSET_ID 替换为图书库查询中的图书 ZASSETID。

获取所有图书的所有高亮(含书名)

bash
BKLIBRARY_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/BKLibrary/*.sqlite 2>/dev/null | head -1)
AEANNOTATION_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/AEAnnotation/*.sqlite 2>/dev/null | head -1)
sqlite3 $AEANNOTATION_DB \
ATTACH DATABASE $BKLIBRARY_DB AS lib;
SELECT lib.ZBKLIBRARYASSET.ZTITLE, lib.ZBKLIBRARYASSET.ZAUTHOR,
ZAEANNOTATION.ZANNOTATIONSELECTEDTEXT, ZAEANNOTATION.ZANNOTATIONNOTE,
datetime(ZAEANNOTATION.ZANNOTATIONCREATIONDATE + 978307200, unixepoch, localtime) AS created
FROM ZAEANNOTATION
JOIN lib.ZBKLIBRARYASSET ON ZAEANNOTATION.ZANNOTATIONASSETID = lib.ZBKLIBRARYASSET.ZASSETID
WHERE ZAEANNOTATION.ZANNOTATIONDELETED = 0
AND length(ZAEANNOTATION.ZANNOTATIONSELECTEDTEXT) > 0
ORDER BY ZAEANNOTATION.ZANNOTATIONCREATIONDATE DESC
LIMIT 50;

列出收藏集(书架)

bash
BKLIBRARY_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/BKLibrary/*.sqlite 2>/dev/null | head -1)
sqlite3 $BKLIBRARY_DB \
SELECT c.ZTITLE, c.ZCOLLECTIONID, COUNT(m.ZPK) AS bookcount
FROM ZBKCOLLECTION c
LEFT JOIN ZBKCOLLECTIONMEMBER m ON m.Z_PK IN (
SELECT Z_PK FROM ZBKCOLLECTIONMEMBER
)
WHERE c.ZDELETEDFLAG = 0 AND c.ZTITLE IS NOT NULL
GROUP BY c.ZCOLLECTIONID
ORDER BY c.ZTITLE;

阅读统计

bash
BKLIBRARY_DB=$(ls ~/Library/Containers/com.apple.iBooksX/Data/Documents/BKLibrary/*.sqlite 2>/dev/null | head -1)
sqlite3 $BKLIBRARY_DB \
SELECT
COUNT(*) AS total_books,
SUM(CASE WHEN ZISFINISHED = 1 THEN 1 ELSE 0 END) AS finished,
SUM(CASE WHEN ZREADINGPROGRESS > 0 AND (ZISFINISHED IS NULL OR ZISFINISHED = 0) THEN 1 ELSE 0 END) AS in_progress,
SUM(CASE WHEN ZREADINGPROGRESS = 0 OR ZREADINGPROGRESS IS NULL THEN 1 ELSE 0 END) AS not_started,
printf(%.0f%%, AVG(ZREADINGPROGRESS) * 100) AS avg_progress
FROM ZBKLIBRARYASSET
WHERE ZTITLE IS NOT NULL;

高亮样式

样式值颜色
1绿色
2
蓝色 | | 3 | 黄色 | | 4 | 粉色 | | 5 | 紫色 |

注释类型

类型值含义
2高亮
3
书签 |

##

标签

skill ai

通过对话安装

以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 apple-books-1776187921 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 apple-books-1776187921 技能

通过命令行安装

skillhub install apple-books-1776187921

下载

⬇ 下载 apple-books v0.2.0(免费)

文件大小: 2.87 KB | 发布时间: 2026-4-15 11:06

v0.2.0 最新 2026-4-15 11:06
Dynamic database discovery (glob instead of hardcoded filenames), requirements section, troubleshooting guide, macOS-only guard, audiobook support note.
返回顶部