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. シェルを再読み込みします: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 が完全に無効になり、安全ではありません。

コメント