deep-reader について
deep-readerは、書籍や論文を段階的に読むためのスキルです。詳細な理解と出典を追跡できるノートを必要とする研究者向けに、構成の把握、章ごとの分析、ノートに基づく統合を分け、概要モードと学習モードを備えています。
主な機能
- 01概要と学習の読書モード
- 02章ごとの分析ノート作成
- 03出典確認のためのページ記録
- 04構成図と統合の作成
- 05引用とページ番号の機械的検証
活用シーン
- 01研究課題に関係する章の選定
- 02長い書籍や論文のノート整理
- 03既存ノートに基づく追加質問への回答
- 04統合内容の引用確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tronghieu/ agent-skills --skill deep-readerインストール後、Claude Code で/deep-readerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdREADME.vi.mdREADME.zh.mdreferences/genre-strategies.mdnote-templates.mdpaper-mode.mdscripts/build-diagram.shextract-structure.shprepare-text.shread-pages.shsearch-book.shself-test.shsplit-chapters.shverify-quotes.sh詳細
ディープリーダー
注意深い人間の研究者のように、長い本や論文を読みます。まず全体の構造を把握し、次に章ごとにメモを取りながら深く読み、最後に元の文章ではなくメモをもとに統合します。この手法は、Adler の How to Read a Book、SQ3R の「Recite」のステップ、そして論文を読むための Keshav の三段階手法に基づいています。
複数回に分けて読む理由とメモを取る理由
LLM は長いコンテキストの中で注意力が薄れ、大きなプロンプトの中ほどに埋もれた内容を見失います(「lost in the middle」)。500 ページの本をひとつのコンテキストに読み込んで質問すると、第 12 章について話す頃には、第 3 章の内容をいつの間にか忘れてしまったような回答になります。
解決策は、人間の研究者が実践している方法と同じです。本全体を一度に作業記憶に保持しようとしないことです。まず構造を把握し、次に章ごとに内容を読むというように、段階を分けて読み、学んだことをその都度メモファイルに書き出します。メモが永続的な記憶となり、本そのものを再び参照する必要があるのは、特定の章を実際に読んでいるときや、特定の主張を検証しているときだけです。ページ番号は、今のセッションでも後のセッションでも、あらゆる主張を原文にたどれるようにする座標系です。
2 つのモード
- overview — Adler の概観読みのみを行います。本の構成図を作成し、読者の目的にとって最も重要な章を目的に沿って要約します。素早く進められ、章ごとのメモは作成しません。
- study — パイプライン全体を実行します。読書の目的 → 概観マップ → Recite による検証を伴う、章ごとの分析メモ → Adler の 4 つの問いに答える階層的な統合 → 引用の機械的な検証。
ユーザーがモードを選びます(または、mode_hint とユーザーが示した目的に基づいて提案します。ステップ 1 を参照してください)。
ワークスペースのレイアウト
パイプラインで生成されたものはすべて、デフォルトではソースファイルと同じ階層にあるワークスペースディレクトリに保存され、セッションをまたいで残ります。
<slug>-notes/
├── source.txt # full text with [[page N]] markers — the coordinate system
├── chapters.tsv # confirmed structure: chNN<TAB>from<TAB>to<TAB>title
├── chapters/ # per-chapter files cut by split-chapters.sh
│ └── ch01-<slug>.txt
├── map.md # inspectional pass output
├── terms.md # key-terms ledger, cross-chapter
├── notes/
│ └── ch01-<slug>.md # one analytical note per chapter (papers: sec01-<slug>.md)
└── synthesis.md # final synthesis + verification log
SKILL.md のスクリプトではなく、このワークスペースがあることで、後のセッションでも本を読み直さずに追加の質問に答えられます(下記の「既存のメモを使って回答する」を参照してください)。
スクリプトの概要
7 つのスクリプトはすべて、このスキルの scripts/ にあります。スキルのディレクトリから bash ./scripts/<name>.sh ... として実行するか、claude.ai では bash /mnt/skills/user/deep-reader/scripts/<name>.sh ... として実行してください。どちらも同じスクリプトを呼び出すため、実行環境に合った方を使用してください。
| スクリプト | 引数 | 目的 |
|---|---|---|
prepare-text.sh | <input-file> [workspace-dir] | ソースをページ番号付きの source.txt に変換し、ワークスペースを作成します |
extract-structure.sh | <source.txt> | ヒューリスティックによるアウトラインのたたき台を作成します(確定情報ではなく、最初の推測です) |
read-pages.sh | <source.txt> <from> [to] | [[page N]] マーカーをそのまま保持して、指定したページまたはページ範囲を表示します |
search-book.sh | <source.txt> <pattern> [context-lines] | ページ番号付きの検索結果を返し、本全体を grep します |
split-chapters.sh | <source.txt> <chapters.tsv> | 確認済みの章を個別のファイルに切り分けます |
build-diagram.sh | <workspace-dir> [--append] | 構造を Mermaid のマインドマップとして機械的に作成します |
verify-quotes.sh | <workspace-dir> | 捏造された引用や誤ったページ番号の引用を検出します |
ステップ 0 — 準備
ソースファイルを見つけてから、変換してページ分割します。
bash ./scripts/prepare-text.sh path/to/book.pdf
# or on claude.ai:
bash /mnt/skills/user/deep-reader/scripts/prepare-text.sh path/to/book.pdf
この処理は冪等です。すでに source.txt があるワークスペースで再実行すると、再変換せずに既存の統計情報を表示するため、同じ本について各セッションの開始時に安全に実行できます。
表示された JSON を確認します。pages と est_tokens は本の分量を示し、mode_hint は開始時の推奨モード(small/medium/large)を示します。synthetic_pages が true の場合(EPUB/DOCX/TXT/MD のソースには実際のページ番号がありません)、ノート内のページ引用は source.txt 自体のページ分割を参照していることを覚えておいてください。検証は可能ですが、紙の本を読む人が目にする印刷上のページ番号とは異なります。
先に進む前に、次の 2 つの分岐を確認します。
- この本のノートがすでにあるワークスペース(
<slug>-notes/notes/にファイルがあるか確認してください)—パイプラインを最初からやり直すのではなく、以下の「既存のノートを使って回答する」に進みます。 - 終了コード 2(
pdftotext/pandocが見つからない)—Read ツールを使い、PDF/EPUB をページごとに直接読みます。この場合、verify-quotes.shによる機械的な確認はできないため、引用する箇所をより頻繁に手動で読み直してください。 - スクリプトの動作に問題がありますか?
bash ./scripts/self-test.shを実行してください。環境の問題(依存関係の欠落や破損)と使い方の問題を判別できます。
ステップ 1 — 読む目的
ユーザーがこの本を読む理由を伝えていない場合は、次の質問を 1 つだけしてください。 「この本から何を得たいですか?」目的の確認は形式的なものではありません。どの章をじっくり読み、どの章をざっと読むかを決め、ステップ 4 の統合を評価する基準にもなります。
目的が分かったら、mode_hint とその目的を踏まえてモードを提案します(たとえば、4 万トークンの本を 1 つの狭い疑問を解決するために読むなら、技術的には読み切れる分量でも概要モードのままでよいでしょう。一方、20 万トークンの本を文献レビュー執筆のために読むなら、分量にかかわらず学習モードが必要です)。ユーザーに確認してもらうか、変更してもらいます。
ソースが本ではなく論文、学位論文、サーベイ論文の場合は、今すぐ references/paper-mode.md を読んでください。これは Keshav の 3 パス方式を同じパイプラインに適用し、完全なワークスペース一式を用意する手間をかけるべき場合と、パス 1〜2 を会話内で行うべき場合を説明しています。
ステップ 2 — 調査的な読み(両モード共通)
まずたたき台を作り、実際の本と照合します。
bash ./scripts/extract-structure.sh <workspace>/source.txt
出力は確定情報ではなく、誤差のある初期推測として扱い、目次と照らし合わせて確認してください。次に、以下を行います。
read-pages.shを使い、目次、序文/序章、結論/最終章、あれば索引を読みます。- 抽出した 2〜3 章の最初と最後の段落をざっと読みます。
- references/note-templates.md のテンプレートを使って
map.mdを作成します。 map.mdの分類フィールドを記入したら、分析的な読みを始める前に references/genre-strategies.md の該当セクションを読んでください。実用書、創作文学、歴史、科学・数学、哲学、教科書・参考書では、それぞれ読み方が異なります。あらかじめ簡単に取り入れられる工夫でも、すでに書いたノートに後から反映するのは大変です。
構成を確認したら、後で使える形にして章ごとに分割します。
# id from to title — one line per chapter, tab-separated
printf 'ch01\t9\t34\tThe Activity of Reading\n' > <workspace>/chapters.tsv
bash ./scripts/split-chapters.sh <workspace>/source.txt <workspace>/chapters.tsv
bash ./scripts/build-diagram.sh <workspace> --append
split-chapters.sh は各章を独立したファイルにします。分析的な読みで役立ち、サブエージェントに作業を分担する場合には必須です。build-diagram.sh --append は、確認済みの構成を示す Mermaid の mindmap を map.md の ## Structure diagram 見出しの下に追加します。再実行してもブロックが重複しません。
概要モードはここで終了です。読む目的に最も関連する 2〜4 章だけを重点的にざっと読みます(冒頭、末尾、重要な節)。目的に沿った要約を map.md に追記し、ユーザーに提示したら完了です。章ごとのノート、統合、検証パスは行いません。
学習モードはステップ 3 に進みます。
ステップ 3 — 分析(学習モード)
chapters.tsv の順に章を読み進めます。本が多数の短い章(各 1~10 ページ)で構成されている場合は、短い章ごとにメモを作成せず、著者自身の部・節の区分に沿ってまとめます。目指すのは見出しごとではなく、まとまりのある議論単位ごとに 1 つのメモを作成することです。67 章の本が、部ごとの 16 個のメモにまとめられるのが適切な場合もあります。まとまりごとに、次の作業を行います。
chapters/chNN-*.txtから章を読みます。分割を省略した場合は、read-pages.sh/Read ツールで複数回に分けて読みます。- references/note-templates.md のテンプレートを使って
notes/chNN-<slug>.mdを作成します。章が答える問い、重要な用語(それぞれを章を横断する用語集terms.mdにも記載します)、主な命題、論証(前提 → 結論)、提示されている証拠、(p. N)形式のページ番号付き引用、他の章との緊張関係や関連性、未解決の問いを記載します。 - 復唱(SQ3R のステップ):メモの草稿ができたら、章をもう一度ざっと読み、次に進む前に各命題と引用が本文に照らして正しいか確認します。章の内容を覚えているうちに、今メモを修正します。後の統合時まで先延ばしにしないでください。この確認に合格したら、その章を作業記憶から手放します。以後はメモが記憶の役割を果たします。
作業の分担:サブエージェントが利用でき、mode_hint で本が大規模だと示されている場合は、順番に読み進める代わりにサブエージェントを起動してもかまいません。章をサブエージェントごとにバッチに分け、各バッチの語数が均等になるようにします。章を厳密に 1 章ずつ割り当てる必要はありません。各サブエージェントには、担当するページ範囲、読解の目的、メモのテンプレートのパス、スクリプトのパスを伝えます。terms.md の行は直接書き込ませず、各サブエージェントの最終メッセージで返してもらいます。オーケストレーターであるあなたが、すべての内容を中央で terms.md に統合します。複数のサブエージェントが同じファイルに直接書き込むと、競合が発生します。map.md、統合後の terms.md、ステップ 4 の統合作業はあなたが担当し、委任しないでください。順番に読むのがデフォルトで、どの環境でも実行できます。サブエージェントを並列実行できない場合でも、作業を分担するメリットはあります。各バッチで新しいコンテキストウィンドウを使えるためです。利点は速度向上だけではありません。
ステップ 4 — 統合
ここでは本ではなくメモを読みます。Adler の 4 つの問いに答える synthesis.md を作成し、各主張にページ番号を付けます。
- 本全体の主題は何か。
- 詳細には何が、どのように述べられているか。
- それは全体として、あるいは部分的に真実か。
- それにはどのような意義があるか。抽象的にではなく、ユーザーが示した読書の目的に具体的に照らして答えます。
この 4 つの問いに加え、Mermaid の graph を手作業で作成します。これは、章を横断して、重要な用語や命題がどの結論につながるかを示す概念・論証マップです。terms.md と各章のメモを基に作成します。これは、機械的な作業ではなく、知的な分析作業です。ステップ 2 で build-diagram.sh が作成した構造的なマインドマップに対し、論証レベルで対応するものです。どのアイデアが実際にどのアイデアに依存するかを判断する必要があるため、スクリプトでは作成できません。
ステップ 5 — 検証
まず機械的なチェックを実行します。
bash ./scripts/verify-quotes.sh <workspace>
FAIL または NEAR の行があれば、read-pages.sh で該当ページを開き、引用文またはページ番号を修正してから、終了コードが 0 になるまで再実行します。これにより、捏造された引用や 1 ページずれた引用を検出できますが、確認できるのは引用だけで、言い換えの正確さは確認できません。
そのため、最後に手作業で確認します。synthesis.md にある、特に重要な言い換えによる主張を 5~10 個選び、引用したページを狙って読み直して再検証します。テンプレートに従い、各項目に ✓ verified と記して、synthesis.md の末尾に短い検証ログを追加します。
既存のノートに基づいて回答する
後のセッションや、要約後のセッション途中では、質問に答えるために本を読み直さないでください。まずワークスペースを検索します — terms.md と
notes/ を grep で検索し、そこにある情報から回答します。ノートに詳細が記載されていない場合に限り、ノートに記載されたページアンカーをたどって、read-pages.sh または
search-book.sh で source.txt を参照します。ワークスペースの目的は、追加の質問ひとつのために本をすべて読み直す必要がないようにすることです。
批判的判断
「それは正しいか」という問いに対するAdlerの作法では、著者の立場を公平に言い換えられるようになるまでは判断してはいけません — それこそが、ステップ3の「復唱」チェックの目的です。そのうえで、次の3つの判定を明確に区別します。
- 「著者はここで誤っています」 — ページを引用した根拠で裏付けられている場合。
- 「著者の説明は不完全です」 — 誤りではなく、抜けがある場合。
- 「これを検証できません」 — 推測せず、そのように伝えます。
ページを引用した根拠のない異論は批判ではなく意見です — 前者として提示しないでください。
シントピカル読書
複数の本や論文にまたがる質問では、各著作ごとにパイプラインを1回実行します — それぞれに固有のワークスペースと synthesis.md を用意します。その後、それらの synthesis.md ファイルを横断する比較統合を作成します。各著作の一致点と対立点を示し、特定の著者の用語を優先しない、中立的な共通テーマの用語を用います。
コミュニケーション
ユーザーが質問に使った言語で作業します。成果物は、統合(概要モードの場合は目的に沿った要約)であり、会話に直接提示します — ワークスペースのファイルは永続的な副産物として参照する価値がありますが、チャット内で回答することの代わりにはなりません。