Calibre Ebooks — Calibre 电子书
v2使用 calibredb 和 metadata.db 查询和操作本地 Calibre 库。当用户要求列出、搜索、定位、总结元数据、查找可用格式、导出或从 Calibre 库中准备书籍/电子书/PDFs/EPUBs 以进行阅读、分析或 RAG 时使用。
运行时依赖
安装命令
点击复制技能文档
使用 Calibre 电子书 使用此技能来处理本地 Calibre 库和从书籍中派生的语义 RAG 基础。
配置 默认 Calibre 库:/mnt/Backup_2/Biblioteca 元数据数据库:/mnt/Backup_2/Biblioteca/metadata.db 官方命令:calibredb 只读元数据脚本:scripts/calibre_query.py 转换、索引和 RAG 脚本:scripts/document_semantic_rag.py 默认 RAG 基础:/tmp/openclaw-calibre-rag/data 默认转换的 Markdown:/tmp/openclaw-calibre-rag/converteds 始终将库目录传递给 calibredb,而不是 .db 文件:calibredb list --library-path "/mnt/Backup_2/Biblioteca" 如果 calibredb 因为沙盒、互斥或 Calibre 配置而失败,请请求提升权限以重复查询。 对于只读查询,请使用 scripts/calibre_query.py 作为 SQLite 回退。
推荐工作流 了解用户是否想要发现、元数据、导出的文件或分析/RAG。 从只读操作开始:list、search、show_metadata 或 scripts/calibre_query.py。 在导出、更改元数据、添加或删除任何内容之前,确认正确的 id。 在用户请求文件访问时,优先导出到 /tmp/openclaw-calibre-export。 对于 RAG,请使用 document_semantic_rag.py 索引文件或 Calibre id,然后使用 --search 进行搜索。 永远不要在没有明确请求的情况下使用破坏性命令(remove、remove_format、set_metadata、set_custom、restore_database)。
有用的 calibredb 命令 列出书籍:calibredb list --library-path "/mnt/Backup_2/Biblioteca" --fields id,title,authors,formats --limit 20 按术语搜索:calibredb search --library-path "/mnt/Backup_2/Biblioteca" "python" 查看书籍的完整元数据:calibredb show_metadata --library-path "/mnt/Backup_2/Biblioteca" 123 将书籍导出到临时目录:mkdir -p /tmp/openclaw-calibre-export calibredb export --library-path "/mnt/Backup_2/Biblioteca" --to-dir /tmp/openclaw-calibre-export 123 如果索引存在,请使用全文搜索:calibredb fts_search --library-path "/mnt/Backup_2/Biblioteca" "搜索术语"
SQLite 只读回退 使用脚本仅查询 metadata.db,而不依赖于 Calibre 进程:python3 skills/calibre-ebooks/scripts/calibre_query.py list --limit 20 python3 skills/calibre-ebooks/scripts/calibre_query.py search "python" --limit 10 python3 skills/calibre-ebooks/scripts/calibre_query.py metadata 123 python3 skills/calibre-ebooks/scripts/calibre_query.py path 123 --format PDF 脚本默认返回 JSON 并不写入库。
转换和 RAG 服务 在转换或搜索之前,检查依赖项:python3 skills/calibre-ebooks/scripts/document_semantic_rag.py --check --json 如果 Python 依赖项缺失,请安装 RAG 集:pip install -r skills/calibre-ebooks/scripts/requirements-rag.txt 通过 Calibre ID 直接索引书籍:python3 skills/calibre-ebooks/scripts/document_semantic_rag.py --calibre-id 123 --format PDF --json 索引导出的或解析的文件:python3 skills/calibre-ebooks/scripts/document_semantic_rag.py --convert "/path/book.pdf" --json 索引文件夹中的所有支持文档:python3 skills/calibre-ebooks/scripts/document_semantic_rag.py --convert-all "/path/folder" 在 RAG 基础中搜索:python3 skills/calibre-ebooks/scripts/document_semantic_rag.py --search "卷积神经网络" --json 列出或检查基础状态:python3 skills/calibre-ebooks/scripts/document_semantic_rag.py --list --json python3 skills/calibre-ebooks/scripts/document_semantic_rag.py --status --json 从 RAG 基础中删除书籍需要在索引/列出期间返回的内部 ID,而不是 Calibre ID:python3 skills/calibre-ebooks/scripts/document_semantic_rag.py --delete RAG_BOOK_ID --json
RAG 策略 使用 PyMuPDF 将 PDF 转换为 Markdown。 使用 ebooklib、BeautifulSoup 和 markdownify 将 EPUB 转换为 Markdown。 在外部依赖项可用时,通过 OCR 转换 DjVu。 将文本分成可配置重叠的块。 通过 Ollama (OLLAMA_MODEL,技能默认:nomic-embed-text-v2-moe) 生成嵌入。 在 SQLite 中存储元数据和块。 在 ChromaDB 中存储嵌入。 混合搜索:首先在 SQLite 中进行精确/部分文本搜索,然后在 ChromaDB 中进行语义搜索。
RAG 配置 脚本读取 skills/calibre-ebooks/.env 并接受 CLI 重写:python3 skills/calibre-ebooks/scripts/document_semantic_rag.py --status --data-dir /tmp/my-base --converted-dir /tmp/my-markdowns python3 skills/calibre-ebooks/scripts/document_semantic_rag.py --search "术语" --embedding-model nomic-embed-text-v2-moe 如果使用其他嵌入模型创建了基础,请使用相同的前一个模型。 仅在接受可能不正确的结果时使用 --allow-model-mismatch。
用户响应 当有多个结果时,显示 id、标题、作者和格式。 在承诺分析或交付之前,告知书籍缺乏 PDF/EPUB。 在准备 RAG 时,首先通过 calibre_query 定位书籍。