mcpField
L
library-ebooks

library-ebooks

github.com/montagao生产力384 次安装8 周前更新
代码仓库

关于 library-ebooks

用于搜索和下载个人 Amazon (Kindle) 图书馆电子书的命令行技能。它支持核对版本与格式,仅获取可访问的授权内容。

主要功能

  1. 01搜索个人 Kindle 图书馆
  2. 02按电子书格式筛选
  3. 03核对书名与版本
  4. 04下载可访问的文件
  5. 05自动切换镜像域名

适用场景

  1. 01按书名或作者查找已拥有的书
  2. 02选择指定版本或文件格式
  3. 03下载授权电子书以供分析

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/montagao/skills --skill library-ebooks

安装后在 Claude Code 中输入/library-ebooks确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
scripts/
library.py
tests/
test_library.py

详细介绍

我的 Amazon(Kindle)图书馆电子书查询与下载

概述

用于搜索和下载我个人 Amazon(Kindle)图书馆中的电子书的内部工具,即我已购买或添加到帐户中的书籍(以及同步到图书馆的个人文档),支持所有可用格式。

注意:此技能仅适用于我自己拥有授权的内容,不会绕过 DRM。如果某个标题无法以可访问的文件格式下载,请改用 Amazon 官方的阅读或导出选项。

前提条件

重要:下载需要我帐户的 Amazon 图书馆访问密钥。

使用下载功能前,用户必须:

  1. 能访问自己的 Amazon(Kindle)图书馆(已购书籍/内容图书馆)
  2. 设置 API 密钥/令牌:export LIBRARY_KEY="your-key"

可在内部图书馆代理/帐户设置中找到此密钥(或在用于验证 Amazon 图书馆索引访问权限的系统中查找)。不设置密钥也能搜索,但下载会失败。

**如果未设置密钥:**告知用户需要设置 LIBRARY_KEY,并提供上述设置说明。

适用场景

  • 用户要求查找/下载自己 Amazon 图书馆中的书籍
  • 需要查找自己拥有的已出版书籍中的内容
  • 搜索图书馆中某个特定版本或格式的书籍
  • “从我的 Kindle 图书馆中获取《Clean Code》的 PDF”
  • “查找我拥有的《Design Patterns》最新版本”

快速参考

任务命令
搜索python3 scripts/library.py search "query" --format pdf
获取详情python3 scripts/library.py details <md5>
下载python3 scripts/library.py download <md5> --output /path/
验证匹配项python3 scripts/library.py search "title author" --verify "expected title"

环境设置

export LIBRARY_KEY="your-membership-key"

可在 Amazon 图书馆访问设置中找到此密钥(内部代理/令牌设置)。

工作流

digraph download_flow {
    rankdir=TB;
    node [shape=box];

    search [label="Search by title/author"];
    verify [label="Verify correct book\n(check title, author, year)"];
    multiple [label="Multiple editions?" shape=diamond];
    prefer_recent [label="Prefer most recent\nunless specific edition requested"];
    format_ok [label="Preferred format available?" shape=diamond];
    download [label="Download via fast API"];
    convert [label="Use ebook-extractor\nto convert to text"];

    search -> verify;
    verify -> multiple;
    multiple -> prefer_recent [label="yes"];
    multiple -> format_ok [label="no"];
    prefer_recent -> format_ok;
    format_ok -> download [label="yes"];
    format_ok -> search [label="no - try different format"];
    download -> convert;
}

常见模式

查找并下载书籍
# Search with format preference
python3 scripts/library.py search "Clean Code Robert Martin" --format pdf --limit 5

# Verify it's the right book, get details
python3 scripts/library.py details adb5293cf369256a883718e71d3771c3

# Download
python3 scripts/library.py download adb5293cf369256a883718e71d3771c3 --output ./books/
处理多个版本

搜索结果返回多个版本时:

  1. 查看年份——除非用户指定版本,否则优先选择最新版本
  2. 查看格式——与用户偏好(pdf/epub)一致
  3. 确认作者完全匹配
格式优先级

用户未指定时的默认优先级:pdf > epub > mobi > azw3 > djvu

API 详情

这些端点指向你的内部 Amazon 图书馆索引/代理服务(由你自己的 Amazon 帐户/图书馆数据支持),而非公开的“查找任意书籍”目录。

搜索端点:https://library-archive.org/search

  • q - 查询字符串
  • ext - 格式筛选(pdf、epub、mobi、azw3、djvu)
  • sort - year_desc,按年份从新到旧排序

快速下载 API:https://library-archive.org/dyn/api/fast_download.json

  • md5 - 书籍标识符
  • key - 来自 LIBRARY_KEY 环境变量

常见错误

错误修正方法
未设置密钥检查 echo $LIBRARY_KEY
版本错误使用 --verify 标志并指定预期标题
格式不匹配明确设置 --format
未找到书籍尝试更短的查询词或不同的作者姓名写法

转换为文本

下载的文件保留原始格式(PDF、EPUB、MOBI 等)。下载后,可使用 ebook-extractor 技能将其转换为纯文本,以便分析或处理。

典型工作流:

  1. 使用此技能下载 → books/Clean_Code.pdf
  2. 使用 ebook-extractor 转换 → books/Clean_Code.txt

镜像回退

如果主域名不可用,脚本会自动尝试多个镜像域名:

  • library-archive.org(主镜像)
  • library-archive.li
  • library-archive.se
  • library-archive.in
  • library-archive.pm

第一个可用的镜像会在本次会话中缓存。使用备用镜像时,你会在 stderr 中看到 Using mirror: <domain>。

错误处理

  • "Invalid md5" - MD5 哈希格式错误或不存在
  • "Not a member" - 密钥无效或已过期(即你的 Amazon 图书馆访问令牌无效)
  • 无结果 - 扩展搜索词,或尝试仅按作者搜索
  • "Could not connect to any mirror" - 所有镜像都不可用,请稍后重试

故障排除

macOS 上的 SSL 证书错误

如果你看到此错误:

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate

这是因为 Python 无法在 macOS 上找到系统的 CA 证书包。

快速修复:

  1. 安装 certifi:

    pip3 install certifi
    
  2. 查找证书路径:

    python3 -c "import certifi; print(certifi.where())"
    
  3. 添加到 ~/.zshrc:

    export SSL_CERT_FILE=/path/from/step/2/cacert.pem
    
  4. 重新加载 shell:source ~/.zshrc

验证是否正常:

python3 -c "import urllib.request; urllib.request.urlopen('https://google.com')"

**原因:**macOS 使用 Keychain 管理证书,但 Python 默认不会使用它。框架安装(如 /Library/Frameworks/Python.framework)通常缺少证书配置。

请勿使用 verify=False 或 PYTHONHTTPSVERIFY=0——这会完全禁用 SSL,存在安全风险。

评论

支持 Markdown