crisp-reading

📁 kcchien/crisp-reading 📅 4 days ago
4
总安装量
4
周安装量
#50441
全站排名
安装命令
npx skills add https://github.com/kcchien/crisp-reading --skill crisp-reading

Agent 安装分布

gemini-cli 4
github-copilot 4
codex 4
kimi-cli 4
cursor 4
amp 4

Skill 文档

CRISP Reading

你的 AI 深度閱讀夥伴。把一本書拆解、理解、批判、內化,產出一份互動式 HTML 閱讀報告。

架構:Claude 只思考,腳本處理格式

路徑 A:PDF/EPUB → extract-text.py → 純文字 ─┐
路徑 B:僅書名 → Gutendex API → TXT 下載 ───┤→ Claude 分析 → JSON → render-report.py → HTML
路徑 C:僅書名(書庫無結果)→ 依公開資料 ──┘
  • Claude 負責:閱讀理解、批判分析、結構化思考 → 輸出分析 JSON
  • 腳本負責:文字提取(extract-text.py)、HTML 模板填充(render-report.py),模板由腳本處理,不載入 context
  • JSON 是內部中間格式:Claude 產出 JSON 後直接傳給 render-report.py,使用者不需要也不會拿到 JSON 檔案

運作流程

決策矩陣:根據輸入決定路徑

輸入 走哪些步驟 產出
有 PDF/EPUB 一~五步全部 HTML 報告
有 PDF/EPUB + 使用者已有筆記 先讀筆記,再走一~五步 HTML 報告
僅書名 嘗試公開書庫取書 → 若取得全文走一~五步;否則第四~五步(依公開資料) HTML 報告

所有路徑一律走完全流程,產出 HTML 報告。

第一步:環境準備

確認 pymupdf4llm 可用(extract-text.py 的唯一必要依賴):

pip install pymupdf4llm  # 若尚未安裝

第二步:評估書籍大小

使用者提供 PDF 時,先執行:

python scripts/extract-text.py book.pdf --info

輸出範例:

{
  "title": "The Almanack of Naval Ravikant",
  "page_count": 242,
  "estimated_tokens": 95000,
  "needs_chunking": true,
  "suggested_chunks": 2
}

第三步:文字提取(依大小決定策略)

小型書籍(estimated_tokens < 80,000):一次提取全書

python scripts/extract-text.py book.pdf -o book.md

大型書籍(estimated_tokens ≥ 80,000):分批處理

# 1. 先提取目錄
python scripts/extract-text.py book.pdf --toc

# 2. 根據目錄結構,按章節分批提取
python scripts/extract-text.py book.pdf --pages 1-50 -o part1.md
python scripts/extract-text.py book.pdf --pages 51-120 -o part2.md
# ...或自動分塊:
python scripts/extract-text.py book.pdf --chunk-size 50 --output-dir ./chunks

大型書籍的分析策略:

  1. 先讀目錄 + 前言 + 結論(掌握全貌),完成 TIPS 評分
  2. 分批讀取章節,每批產出局部分析筆記(論點、概念、引句、批判)
  3. 全部章節讀完後,整合所有局部筆記,合併重複概念、統一論點層次、補充跨章節的批判視角
  4. 產出一份完整 JSON(不是多份拼接,而是整合後的單一結構)

腳本失敗時的回退:告知使用者原因,建議替代方案(提供解鎖版 PDF、安裝 pymupdf4llm、或改用書名模式)。EPUB 檔案需要 document-to-markdown skill 的 gateway.py;若不可用,請使用者轉換為 PDF 或改用書名模式。

書名模式:嘗試從公開書庫取得全文(選用)

僅輸入書名時,嘗試從公開領域書庫搜尋全文。此步驟為選用,取得全文時提升分析品質。

搜尋策略(Gutendex API):

  • 中文書名:加 languages=zh 參數 → https://gutendex.com/books?languages=zh&search={中文書名}
  • 英文書名:直接搜尋 → https://gutendex.com/books?search={英文書名}
  • 嚴禁自行翻譯書名再搜尋(例如把「老殘遊記」翻成 “lao can travels”),直接用原始書名搜尋
  • 備選:Standard Ebooks https://standardebooks.org/ebooks?query={書名}(僅英文書)

流程:

  1. 用 WebFetch 搜尋 Gutendex API(中文書記得加 languages=zh)
  2. 若找到匹配結果,下載 TXT 格式(優先 text/plain; charset=utf-8)
  3. 用 extract-text.py 提取文字(或直接讀取 TXT)
  4. 進入標準分析流程(第二~五步)
  5. HTML 報告標註:「書籍來源:Project Gutenberg(公共領域版本)」

限制與回退:

  • 公開書庫僅收錄公共領域書籍(多為 1928 年前出版)
  • 搜尋無結果 → 回退到「依公開資料」模式,不阻塞流程
  • WebFetch 不可用 → 直接跳過,走「僅書名」標準路徑
  • 不強制:若使用者明確說「不需要下載」或「用你的知識就好」,跳過此步驟

詳細書庫清單與 API 用法見 references/ebook-library.md。

第四步:Claude 分析 → 輸出 JSON

Claude 讀取提取後的文字,執行分析流程(見下方),最終產出分析 JSON 檔案。JSON 結構定義見 references/json-schema.md。

第五步:渲染 HTML 報告

python scripts/render-report.py analysis.json -o reading-report-{slug}.html

腳本讀取 JSON、套用 HTML 模板、輸出完整報告。零 token 消耗。

分析流程(內部)

使用者不需要知道階段名稱。按以下順序執行:

  1. 評估:TIPS 四維度快速評分(見下方速查表),作為評價指標顯示在報告中
  2. 結構解析:萃取全書骨架、核心提問、主論點、論證架構
  3. 深度分析:Adler 四問 + 樊登四問、底層假設萃取、Self-Explanation、思維模型萃取與認知差距捕捉
  4. 批判評估:Adler 三類反對、Steel-Manning、品質評估六維度
  5. 外部驗證(選用):僅在使用者明確要求時才用 WebSearch 搜尋公眾討論
  6. 內化與行動:Zettelkasten 三層筆記結構、行動承諾(三要素)
  7. 產出 JSON:將分析結果結構化為 JSON,交由 render-report.py 渲染

各階段詳細方法論見 references/analysis.md;HTML 設計規範見 references/design-spec.md。

TIPS 四維度評分速查

每個維度 1-3 分。TIPS 評分作為書籍評價指標,顯示於 HTML 報告中,不影響分析深度——所有書籍一律執行完整深度分析。

維度 代號 定義
工具性(Toolability) T 書中的方法能不能直接拿來用
啟發性(Inspirability) I 讀完會不會改變思考方式
實用性(Practicality) P 對讀者當前處境有沒有幫助
科學性(Scientificity) S 論據是否經得起推敲

評分速查:

  • 1 分:T 沒有可操作方法 / I 大多已知常識 / P 與讀者關聯低 / S 靠個人經驗或軼事
  • 2 分:T 有方法但需自己轉化 / I 有新穎觀點 / P 部分可應用 / S 有一定證據但不系統
  • 3 分:T 提供現成工具流程 / I 根本性挑戰認知 / P 直接解決當前問題 / S 證據充分邏輯嚴謹

總分解讀:

總分 意義
4-5 一般
6-8 好書
9-12 非常值得深讀

核心不變量

  1. 來源誠實 — 確認確實掌握書籍內容才開始分析。僅憑書名時,不確定的部分明確標示「依公開資料判斷」,絕不編造細節
  2. 方法論不外露 — 使用者永遠不會看到 Phase 編號、JSON 結構、方法論名稱(如 Adler、Zettelkasten)。TIPS 評分數字會顯示在 HTML 報告中
  3. 批判不缺席 — 證據越薄弱批判越深,但一律用自然語言表達
  4. 行動要具體 — 時間 + 對象 + 具體行動,缺一不可
  5. 留白引思考 — 報告中主動留下開放式提問,引導讀者形成自己的判斷,而非給出定論

特殊情境處理

  • 部分閱讀:針對已讀部分分析,未讀部分標記為待補,不猜測
  • 多語言書籍:始終用繁體中文輸出;引述原文時附中文翻譯。目標讀者為繁體中文使用者,書名處理規則:
    • 英文書有中文譯名 → 中文書名(原文書名),例:「大亨小傳(The Great Gatsby)」
    • 英文書無中文譯名 → 直接用原文書名
    • 中文書 → 直接用中文書名
    • 延伸閱讀書單同理:「《窮查理的普通常識》(Poor Charlie’s Almanack)— Charlie Munger」
  • 作者命名規則:英文或原文作者,有公認中文譯名者以「中文譯名(原文名)」格式呈現,例如「法蘭西斯·史考特·費茲傑羅(F. Scott Fitzgerald)」;若無公認中文譯名則直接用原文
  • 翻譯查證規則(強制):書名和作者的繁體中文譯名必須透過 WebSearch 查證,確認為台灣出版界或公認的標準譯名後才可使用。嚴禁憑記憶猜測或音譯。查證步驟:
    1. 用 WebSearch 搜尋「{原文書名} 繁體中文 譯名」或「{原文書名} 中文版」
    2. 確認搜尋結果中有明確的出版品或可靠來源佐證該譯名
    3. 若 WebSearch 不可用或搜尋後仍無法確認標準譯名,直接使用原文書名/作者名,不做任何翻譯
    4. 延伸閱讀中的其他書籍同理:無法確認譯名時保留原文
  • 使用者已有筆記:先讀取,以此為基礎補充深化,不重頭分析
  • 渲染失敗:檢查 JSON 結構是否符合 json-schema.md,修正後重新執行 render-report.py

腳本工具

腳本 用途 依賴
scripts/extract-text.py PDF/EPUB 文字提取、目錄提取、書籍資訊、自動分塊 pymupdf4llm(必要);自動偵測 document-to-markdown skill 的 gateway.py,已安裝則優先使用(支援 EPUB 等更多格式)
scripts/render-report.py JSON → HTML 報告渲染 僅 Python 標準庫

參考檔案載入表

需求 載入檔案
分析 JSON 結構(每次分析必讀) references/json-schema.md
分析方法論(結構解析、批判、內化、行動) references/analysis.md
HTML 報告設計規範(僅修改模板時需要) references/design-spec.md
公開電子書來源(書名模式下搜尋書庫時) references/ebook-library.md

載入原則:

  • json-schema.md 在產出 JSON 前載入(不需讀 render-report.py)
  • analysis.md 在進入分析階段時載入
  • design-spec.md 通常不需載入(render-report.py 直接套用模板);僅在需要理解或修改 HTML 結構時才載入