Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

书库扫描入库

v1.0.0

扫描本地电子书库,自动提取元数据、分类整理、联网搜索书籍简介,生成Obsidian笔记的完整工作流。支持EPUB/MOBI/AZW3/PDF格式。

0· 63· 1 versions· 0 current· 0 all-time· Updated 1w ago· MIT-0

Book Library Scanner - 书库扫描入库技能

将本地电子书库扫描、分类整理、搜索简介、导入Obsidian的完整工作流。

触发场景

当用户提到以下需求时使用此技能:

  • 扫描电子书库、整理书库
  • 给书籍补充简介、搜索书籍信息
  • 导入Obsidian、建立书库目录
  • book library, scan books, organize ebooks

工作流程

1. 扫描书库目录

# 扫描指定目录,提取epub/mobi/azw3/pdf格式的书籍元数据
# 支持读取书名、作者、分类等信息

关键函数

  • scan_book_directory(book_dir) - 扫描书库目录
  • extract_metadata(filepath) - 提取单本书的元数据

2. 分类整理

分类规则

  • 根据书名/作者中的国家标注分类:如"(美)"、"(德)"、"(英)"、"(法)"等
  • 默认分类:文学、历史、心理学、哲学、经济、科学技术、其他
  • 目录结构:分类/国家/作者/书名.md

3. 搜索书籍简介

API调用: 使用元宝搜索API搜索书籍简介,每个请求间隔2秒避免限流。

Windows编码处理

  • PowerShell子进程传中文参数时,用UTF-8编码
  • Python读取输出时用 decode('utf-8', errors='ignore')

4. 生成Obsidian笔记

每本书生成一个Markdown文件,包含:

  • 书名、作者、分类、国家、格式
  • 内容简介(从网络搜索获取)
  • 来源链接

配置参数

参数说明默认值
book_dir书库源目录必填
output_dir输出目录Required
batch_size每批处理数量500
delay_secondsAPI请求间隔2
save_every每...本保存一次100

文件结构

书库/
├── 书库索引.json        # 主索引(含全部书籍信息)
├── 书库总目录.md         # 总览文档
├── 文学/               # 分类文件夹
│   ├── 中国/           # 国家文件夹
│   │   ├── 鲁迅/       # 作者文件夹
│   │   │   ├── 呐喊.md
│   │   │   └── ...
│   └── ...
└── ...

索引文件格式

{
  "version": "1.0",
  "scan_date": "2026-04-18",
  "books": [
    {
      "title": "书名",
      "author": "作者",
      "category": "文学",
      "country": "中国",
      "format": "EPUB",
      "filename": "原文件名.epub",
      "filepath": "原文件路径",
      "introduction": "内容简介",
      "intro_source": "来源URL"
    }
  ]
}

技术要点

Windows编码问题

Python调用PowerShell传递中文参数时:

result = subprocess.run(
    ['powershell', '-File', script_path, '-Keyword', keyword],
    capture_output=True,
    timeout=30
)
output = result.stdout.decode('utf-8', errors='ignore').strip()

文件名安全处理

import re
safe_name = re.sub(r'[<>:"/\\|?*]', '', original_name)[:50]

批量处理检查点

每批完成后保存进度,支持断点续传:

checkpoint = {
    'last_batch': batch_num,
    'total_found': found_count,
    'last_index': last_processed_index,
    'timestamp': datetime.now().isoformat()
}

已知问题

  1. 拼音书名:部分书籍元数据提取失败时,会使用文件夹拼音名作为书名。需要后续人工处理或更复杂的转换逻辑。

  2. 搜索成功率:后续批次的搜索成功率可能下降(80-99%),因为冷门书籍的搜索结果较少。

  3. API限流:每请求间隔2秒,批量处理时需要较长时间(每500本约35-45分钟)。

示例用法

用户: 帮我扫描 D:\LWbook 书库,整理后导入 Obsidian

执行步骤:
1. 扫描 D:\LWbook 目录
2. 提取书籍元数据
3. 按分类→国家→作者整理
4. 搜索每本书的简介
5. 生成 Obsidian Markdown 笔记
6. 建立索引文件

相关文件

  • scripts/book_scanner.py - 书库扫描脚本
  • scripts/batch_search.py - 批量搜索简介脚本
  • scripts/generate_notes.py - 生成Obsidian笔记脚本
  • scripts/search_book.ps1 - PowerShell搜索封装

Version tags

latestvk973efxn57msxspk882avpzbxn853gs0