standard-book-learning

# 🎯 书籍学习协调技能 (Book Learning Coordinator Skill)

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "standard-book-learning" with this command: npx skills add buruqinshouburu/reading-book

🎯 书籍学习协调技能 (Book Learning Coordinator Skill)

创建日期: 2026-03-22 版本: 1.0 用途: 协调管理书籍学习的完整流程,控制各模块顺序执行 标签: #流程管理 #学习协调 #进度跟踪


🎯 核心职责

作为总控模块,协调book-extractor、note-generator、neo4j-cypher-generator、neo4j-importer四个子模块的执行顺序,管理学习进度,处理异常情况,生成学习总结报告。


📋 完整学习流程

flowchart TB
    A[开始学习] --> B[接收书籍路径]
    B --> C[初始化学习环境]
    C --> D[调用 book-extractor]
    D --> E{章节提取成功?}
    E -->|否 | X[终止并报告错误]
    E -->|是 | F[创建笔记目录]
    F --> G[初始化进度文件]
    G --> H[遍历章节列表]
    H --> I[调用 note-generator]
    I --> J[调用 neo4j-cypher-generator]
    J --> K[调用 neo4j-importer]
    K --> L[更新进度文件]
    L --> M{还有章节?}
    M -->|是 | H
    M -->|否 | N[生成全书总结报告]
    N --> O[学习完成]

    style A fill:#e1f5fe
    style D fill:#e8f5e9
    style I fill:#fff3e0
    style J fill:#f3e5f5
    style K fill:#fce4ec
    style O fill:#c8e6c9

🔧 执行步骤

Step 1: 初始化学习环境

输入验证:

def validate_input(book_path):
    """
    验证书籍路径
    """
    path_pattern = r"F:\\book\\(.+)\\\.docx"
    if not re.match(path_pattern, book_path):
        raise ValueError(f"Invalid path format. Expected: F:\\book\\<book>\\<book>.docx")

    if not os.path.exists(book_path):
        raise FileNotFoundError(f"Book file not found: {book_path}")

    return True

提取书名:

def extract_book_title(book_path):
    """
    从路径提取书名
    F:\book\Security Analysis\Security Analysis.docx -> Security Analysis
    """
    import os
    book_name = os.path.basename(os.path.dirname(book_path))
    return book_name

创建笔记目录:

$notePath = "F:\Obsidian\<书名>"
if (-not (Test-Path $notePath)) {
    New-Item -ItemType Directory -Path $notePath -Force
    Write-Output "Created: $notePath"
}

Step 2: 初始化进度跟踪文件

进度文件路径: F:\Obsidian\<书名>\学习进度跟踪.md

进度文件模板:

# 《书名》学习进度

- **开始日期**: YYYY-MM-DD
- **总章节数**: XX 章
- **已完成**: 0/XX
- **状态**: 📖 进行中

## 章节进度

| 章节 | 标题 | 笔记文件 | Neo4j概念数 | Neo4j关系数 | 状态 | 完成时间 |
|------|------|---------|------------|------------|------|---------|
| Ch 1 | 标题 | Ch01-*.md | 0 | 0 | ⏳ | - |
| Ch 2 | 标题 | Ch02-*.md | 0 | 0 | ⏳ | - |
| ... | ... | ... | ... | ... | ... | ... |

## 执行日志

| 时间 | 章节 | 操作 | 结果 |
|------|------|------|------|
| YYYY-MM-DD HH:MM | - | 初始化 | ✅ 成功 |

Step 3: 调用 book-extractor

执行指令:

请调用 book-extractor 模块,提取书籍的所有章节内容。

输入参数:
- 书籍路径: <book_path>

接收输出:

{
  "book_info": {
    "title": "Security Analysis",
    "path": "F:\\book\\Security Analysis\\Security Analysis.docx",
    "total_chapters": 40
  },
  "chapters": [
    {
      "chapter": 1,
      "title": "Security Analysis: Scope and Limitations",
      "paragraphs": [...]
    },
    ...
  ]
}

处理逻辑:

  • 验证章节数量 > 0
  • 更新进度文件的"总章节数"
  • 初始化章节进度表格

Step 4: 逐章学习循环

循环执行流程:

def process_chapter(chapter_data, book_title, book_info):
    """
    处理单个章节的完整学习流程
    """
    chapter_num = chapter_data['chapter']
    chapter_title = chapter_data['title']

    # 4.1 调用 note-generator
    note_result = invoke_note_generator({
        "chapter": chapter_num,
        "title": chapter_title,
        "book_title": book_title,
        "book_version": book_info.get('version', ''),
        "author": book_info.get('author', ''),
        "paragraphs": chapter_data['paragraphs']
    })

    if not note_result['success']:
        return {
            "chapter": chapter_num,
            "success": False,
            "error": "Note generation failed",
            "details": note_result.get('error')
        }

    # 4.2 调用 neo4j-cypher-generator
    cypher_result = invoke_cypher_generator({
        "book_title": book_title,
        "chapter": chapter_num,
        "concepts": note_result['concepts'],
        "relationships": note_result['relationships']
    })

    if not cypher_result['success']:
        return {
            "chapter": chapter_num,
            "success": False,
            "error": "Cypher generation failed",
            "details": cypher_result.get('error')
        }

    # 4.3 调用 neo4j-importer
    import_result = invoke_neo4j_importer({
        "book_title": book_title,
        "chapter": chapter_num,
        "batches": cypher_result['batches'],
        "total_batches": cypher_result['total_batches'],
        "total_concepts": cypher_result['total_concepts'],
        "total_relationships": cypher_result['total_relationships']
    })

    # 4.4 更新进度文件
    update_progress_file(chapter_num, {
        "note_file": note_result['note_file'],
        "concepts_count": import_result.get('imported_concepts', 0),
        "relationships_count": import_result.get('imported_relationships', 0),
        "status": "✅" if import_result['overall_success'] else "❌",
        "completed_at": datetime.now().strftime("%Y-%m-%d %H:%M")
    })

    return {
        "chapter": chapter_num,
        "success": import_result['overall_success'],
        "note_file": note_result['note_file'],
        "concepts_count": import_result.get('imported_concepts', 0),
        "relationships_count": import_result.get('imported_relationships', 0)
    }

Step 5: 异常处理

异常分类处理:

异常类型章节级别处理全局处理
book-extractor失败N/A终止整个流程,报告错误
note-generator失败记录错误,跳过当前章节继续下一章节
cypher-generator失败记录错误,跳过当前章节继续下一章节
neo4j-importer失败记录错误,跳过当前章节继续下一章节

错误记录格式:

## 错误日志

| 时间 | 章节 | 模块 | 错误信息 |
|------|------|------|---------|
| YYYY-MM-DD HH:MM | Ch 5 | note-generator | 概念提取失败: 内容为空 |
| YYYY-MM-DD HH:MM | Ch 12 | neo4j-importer | 连接超时 |

Step 6: 全书总结

当所有章节处理完成后,调用note-generator的全书总结模式:

输入参数:

{
  "mode": "full_book_summary",
  "book_title": "Security Analysis",
  "book_version": "6th Edition",
  "author": "Benjamin Graham",
  "total_chapters": 40,
  "completed_chapters": 38,
  "failed_chapters": 2,
  "note_files": [
    "F:\\Obsidian\\Security Analysis\\Ch01-*.md",
    "F:\\Obsidian\\Security Analysis\\Ch02-*.md",
    ...
  ],
  "total_concepts": 150,
  "total_relationships": 80,
  "start_date": "2026-03-22",
  "end_date": "2026-03-25"
}

生成报告: F:\Obsidian\<书名>\全书学习完成报告.md


📊 学习统计报告

生成最终统计:

## 📊 学习完成统计

| 指标 | 数值 |
|------|------|
| **书籍名称** | Security Analysis |
| **作者** | Benjamin Graham |
| **学习日期** | 2026-03-22 ~ 2026-03-25 |
| **总章节数** | 40 |
| **成功完成** | 38 (95%) |
| **失败跳过** | 2 (5%) |
| **笔记文件** | 38 个 |
| **Neo4j概念** | 150 个 |
| **Neo4j关系** | 80 个 |
| **总耗时** | ~8 小时 |

🔄 子模块调用接口

1. book-extractor 调用

def invoke_book_extractor(book_path):
    """
    调用书籍章节提取模块
    """
    # 指令:调用 book-extractor 模块
    # 输入:book_path
    # 输出:章节列表
    pass

2. note-generator 调用

def invoke_note_generator(chapter_data):
    """
    调用笔记生成模块
    """
    # 指令:调用 note-generator 模块
    # 输入:章节内容 + 书籍信息
    # 输出:Markdown笔记 + 概念列表
    pass

3. neo4j-cypher-generator 调用

def invoke_cypher_generator(concepts_data):
    """
    调用Cypher生成模块
    """
    # 指令:调用 neo4j-cypher-generator 模块
    # 输入:概念列表 + 关系列表
    # 输出:批次化Cypher语句
    pass

4. neo4j-importer 调用

def invoke_neo4j_importer(batches_data):
    """
    调用Neo4j导入模块
    """
    # 指令:调用 neo4j-importer 模块
    # 输入:批次列表
    # 输出:执行报告
    pass

✅ 质量检查清单

初始化阶段

  • 书籍路径格式正确
  • 文件存在且可读
  • 笔记目录创建成功
  • 进度文件初始化完成

执行阶段

  • book-extractor成功提取所有章节
  • 每个章节的三个子模块按顺序调用
  • 进度文件实时更新
  • 错误正确记录

总结阶段

  • 所有章节处理完成
  • 全书总结报告生成
  • 最终统计准确
  • 错误章节已标注

🎓 使用示例

输入:

请开始学习书籍:F:\book\Security Analysis\Security Analysis.docx

执行流程:

1. 验证路径: ✅ F:\book\Security Analysis\Security Analysis.docx
2. 提取书名: Security Analysis
3. 创建笔记目录: F:\Obsidian\Security Analysis\
4. 初始化进度文件: ✅
5. 调用 book-extractor:
   - 提取到 40 个章节
6. 逐章处理:
   - Ch 1: note-generator → cypher-generator → neo4j-importer ✅
   - Ch 2: note-generator → cypher-generator → neo4j-importer ✅
   - ...
   - Ch 40: note-generator → cypher-generator → neo4j-importer ✅
7. 生成全书总结报告: ✅
8. 输出最终统计

输出:

{
  "success": true,
  "book_title": "Security Analysis",
  "total_chapters": 40,
  "completed_chapters": 40,
  "failed_chapters": 0,
  "note_files": 40,
  "total_concepts": 150,
  "total_relationships": 80,
  "duration": "8 hours",
  "summary_file": "F:\\Obsidian\\Security Analysis\\全书学习完成报告.md",
  "progress_file": "F:\\Obsidian\\Security Analysis\\学习进度跟踪.md"
}

🚀 高级功能

断点续学

从指定章节继续:

def resume_from_chapter(chapter_num):
    """
    从指定章节继续学习
    """
    # 读取进度文件
    progress = read_progress_file()

    # 跳过已完成章节
    for chapter in progress['completed']:
        continue

    # 从指定章节开始处理
    for chapter in chapters[chapter_num-1:]:
        process_chapter(chapter, book_title, book_info)

批量处理

一次处理多本书籍:

def process_multiple_books(book_paths):
    """
    批量处理多本书籍
    """
    results = []
    for path in book_paths:
        result = process_book(path)
        results.append(result)

    return results

🔄 模块依赖关系

book-learning-coordinator (总控)
    ├── book-extractor (章节提取)
    ├── note-generator (笔记生成)
    ├── neo4j-cypher-generator (Cypher生成)
    └── neo4j-importer (Neo4j导入)

⚠️ 注意事项

  1. 执行顺序: 必须严格按照 book-extractor → note-generator → neo4j-cypher-generator → neo4j-importer 的顺序
  2. 错误隔离: 单个章节失败不应影响其他章节
  3. 进度持久化: 每完成一个章节必须更新进度文件
  4. 资源管理: 确保文件句柄和连接正确关闭

📝 进度文件更新逻辑

def update_progress_file(chapter_num, data):
    """
    更新进度文件中的章节状态
    """
    # 读取现有进度文件
    progress_content = read_file("F:\\Obsidian\\<书名>\\学习进度跟踪.md")

    # 更新对应章节行
    # 替换: | Ch 1 | ... | ⏳ | - |
    # 为: | Ch 1 | ... | ✅ | 2026-03-22 18:30 |

    # 更新完成计数
    # 替换: - **已完成**: 0/XX
    # 为: - **已完成**: 1/XX

    # 添加执行日志
    # | YYYY-MM-DD HH:MM | Ch 1 | 章节学习 | ✅ 完成 (3概念, 2关系) |

    # 保存更新后的文件
    write_file("F:\\Obsidian\\<书名>\\学习进度跟踪.md", progress_content)

🛠️ OpenClaw 脚本配置

脚本文件: book-learning-coordinator-script.py 脚本类型: Python 调用方式: 外部工具 角色: 流程协调器,依赖其他4个子模块脚本

执行命令

python book-learning-coordinator-script.py --book_path "<书籍路径>" [--resume] [--start_chapter N]

输入参数

{
  "book_path": "F:\\book\\Security Analysis\\Security Analysis.docx",
  "resume": false,
  "start_chapter": null,
  "neo4j_config": {
    "uri": "http://localhost:7474",
    "user": "neo4j",
    "password": "your_password"
  }
}

输出格式

{
  "success": true,
  "book_title": "Security Analysis",
  "total_chapters": 40,
  "completed_chapters": 40,
  "failed_chapters": 0,
  "note_files": 40,
  "total_concepts": 150,
  "total_relationships": 80,
  "duration": "8 hours",
  "summary_file": "F:\\Obsidian\\Security Analysis\\全书学习完成报告.md",
  "progress_file": "F:\\Obsidian\\Security Analysis\\学习进度跟踪.md",
  "execution_log": [
    {
      "timestamp": "2026-03-22T18:30:00Z",
      "chapter": 1,
      "status": "completed",
      "concepts": 3,
      "relationships": 2
    }
  ]
}

OpenClaw 调用逻辑

完整流程

  1. 初始化阶段

    • 验证书籍路径存在
    • 提取书名(从文件名)
    • 创建笔记目录
    • 初始化进度文件
  2. 章节提取阶段

    • 调用 book-extractor-script.py
    • 获取章节列表
    • 验证提取结果
  3. 逐章处理阶段

    • 循环处理每个章节
    • 按顺序调用3个子模块脚本
    • 每完成一章更新进度
    • 错误处理和日志记录
  4. 总结阶段

    • 生成全书总结报告
    • 输出最终统计
    • 标注错误章节

子模块调用序列

book-learning-coordinator
  └─→ book-extractor-script.py
       └─→ for each chapter:
            ├─→ note-generator-script.py
            │    └─→ neo4j-cypher-generator-script.py
            │         └─→ neo4j-importer-script.py
            └─→ update progress file

特殊模式

断点续学模式

python book-learning-coordinator-script.py --resume --book_path "F:\book\...\book.docx"
  • 读取进度文件,跳过已完成章节
  • 从中断点继续处理

指定章节开始

python book-learning-coordinator-script.py --start_chapter 15 --book_path "F:\book\...\book.docx"
  • 从指定章节开始处理
  • 适用于重新处理特定章节

错误处理

  • 提取失败 → 终止流程,报告错误
  • 章节处理失败 → 记录错误,继续下一章
  • Neo4j连接失败 → 提示检查服务,可重试
  • 文件权限错误 → 检查目录权限

进度监控

协调器会实时更新进度文件,用户可通过以下方式查看进度:

  1. 查看 学习进度跟踪.md 文件
  2. 执行日志输出到控制台
  3. 错误日志单独记录

Book Learning Coordinator v1.0 · 2026-03-22 🎯

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Gigo Lobster Resume

🦞 GIGO · gigo-lobster-resume: 续跑入口:v2 stable 当前会清理旧 checkpoint 并从头重跑;保留此 slug 作为旧 checkpoint 兼容入口。 Triggers: 继续试吃 / 恢复评测 / resume tasting / continue lobster...

Registry SourceRecently Updated
General

YiHui CONTEXT MODE

context-mode is an MCP server that saves 98% of your context window by sandboxing tool outputs. It routes large file reads, shell outputs, and web fetches th...

Registry SourceRecently Updated
General

xinyi-drink

Use when users ask about 新一好喝/新一咖啡 drinks, stores, menu, activities, Skill用户大礼包, today drink recommendations, afternoon tea, feeling sleepy, or personalized...

Registry SourceRecently Updated
General

vedic-destiny

吠陀命盘分析中文入口。用于完整命盘研判、命主盘 Rashi chart 与九分盘 Navamsha chart 联读、既往事件回看、出生时间稳定度判断、事业主题、婚姻主题、时空盘专题,以及基于 Jagannatha Hora PDF、星盘截图或文本命盘数据的系统拆盘。当用户提到完整星盘、事业方向、婚姻问题、关系窗...

Registry SourceRecently Updated