research-docs について
Research Docs は、ディレクトリ内のファイルに基づいて回答を得たい人向けのドキュメント QA スキルです。対応ファイルを解析し、ページ画像上で引用箇所を強調した HTML レポートを作成します。
主な機能
- 01PDF、Office ファイル、画像、テキストの解析
- 02解析内容に基づく質問への回答
- 03インラインマーカーによる出典表示
- 04ページ画像上で引用箇所を強調
- 05自己完結型 HTML レポートの生成
活用シーン
- 01ドキュメントフォルダー内の情報検索
- 02文書に基づく回答の根拠確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jerryjliu/ liteparse_samples --skill research-docsインストール後、Claude Code で/research-docsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdscripts/generate_report.pytemplates/report.html詳細
Research Docs — 視覚的な引用を含むドキュメント Q&A
LiteParse でドキュメントを解析し、解析したテキストを使って質問に回答します。さらに、ページ画像上で引用元をハイライトした HTML レポートを生成します。
引数
$ARGUMENTS には、次の内容を指定します。
- 最初の引数(
$0):ドキュメントを含むデータディレクトリのパス - 残りの引数:回答する質問
いずれかが指定されていない場合は、ユーザーに入力を求めてください。
ステップ 1 — ドキュメントを解析する
**重要:**解析には、必ず以下のバンドルされた Python スクリプトを使用してください。lit や liteparse の CLI コマンドを直接実行してはいけません。generate_report.py のみを使用してください。
バンドルされた解析スクリプトを実行して、サポートされているすべてのファイルからテキストとバウンディングボックスを抽出します。
python "${CLAUDE_SKILL_DIR}/scripts/generate_report.py" \
--skill-dir "${CLAUDE_SKILL_DIR}" \
--dir "$0" \
--parse-only \
--output /tmp/research_docs_parsed.json
このスクリプトは、ディレクトリ内のサポート対象ファイルをすべて検出して解析します。
- LiteParse の形式:PDF、DOCX、PPTX、XLSX、画像(最大 50 ファイル)
- プレーンテキスト:.txt、.md、.rst(直接読み込み)
出力は、各ページの解析済みテキストとバウンディングボックスの座標を含む JSON ファイルです。
ディレクトリ内に 50 個を超えるファイルがあり、ユーザーの質問の対象となるドキュメントが最初の 50 個に含まれていない場合は、サブディレクトリを指すより限定的な --dir を指定して再実行するか、どのファイルに絞り込むかユーザーに尋ねてください。
ステップ 2 — 解析済みの内容を読む
Read ツールを使って /tmp/research_docs_parsed.json を読み込みます。次の項目に注目してください。
- 各ファイルの
nameとtype - LiteParse 形式のファイル:各ページの
textフィールド(バウンディングボックスの描画に使うtextItemsは読み飛ばします) - プレーンテキストのファイル:
textフィールド - 合計件数を示す
summaryオブジェクト
回答を作成する前に、すべてのドキュメントの内容を把握してください。
ステップ 3 — 引用付きで回答する
解析したテキストをコンテキストとして、ユーザーの質問に回答します。回答は JSON ファイルとして記述してください。
cat > /tmp/research_docs_answer.json << 'ANSWER_EOF'
{
"question": "<the user's question>",
"answer": "<your answer in markdown with [N] citation markers>",
"citations": [
{
"file": "<filename e.g. report.pdf>",
"page": <1-indexed page number>,
"quote": "<exact verbatim substring from the parsed text>",
"relevance": "<explanation of what this value/quote means and how it supports the answer>"
}
]
}
ANSWER_EOF
回答に関する重要なルール:
- 回答文中に
[1]、[2]などのインライン引用マーカーを埋め込みます。マーカーの番号はcitations配列の1 始まりの位置に対応させてください。 - マーカーは、裏付ける文または主張の末尾に置きます。
- 例:
"Reserve Bank credit totaled **$6,613,609 million** [1], with securities held outright at $6,375,679 million [2]."
引用する内容に関する重要なルール:
- ラベルだけでなく、根拠を引用してください。 ユーザーは主張を監査したいと考えています。「売上高は 12 億ドルでした」と述べる場合は、見出しの「売上高」だけでなく、テキスト内の実際の数値
1,200,000を引用してください。同じページに値とラベルの両方がある場合は、両方を引用できます。 - 具体的なデータ値(数値、割合、日付、金額、数量など)を引用してください。ユーザーが確認する必要のある情報です。
- 各
relevanceフィールドでは、その値が「何を意味するのか」を説明してください。単にラベルを言い換えるのではなく、値の背景における意味と、回答で述べた内容をどう裏付けるかを説明します。たとえば、「総売上高」ではなく、「2025 年第 3 四半期の総売上高であり、前年比 12%増を示しているため、前述の成長傾向を裏付けます」と記述してください。 - 回答の重要な主張とデータポイントを網羅するため、5~15 件の引用を含めてください。
引用形式に関する重要なルール:
quoteは、解析したテキストから文字単位でそのままコピーしてください。正確な文字列一致によるバウンディングボックス検索に使用されます。言い換え、表現の変更、整形、誤字の修正はしないでください。- 短く正確な引用を優先してください。
$2,769.23のような単一の値、またはSecurities held outright(40 文字未満)のような短い連続したフレーズが適しています。引用が短いほど、バウンディングボックスが見つかりやすくなります。 - 表の列をまたいで引用しないでください。 表形式のデータでは、各列のセルがそれぞれ独立したテキスト領域です。複数の列にまたがる一連の値(例:
)ではなく、個々のセルの値(例:$2,769.23 80.00 $2,769.23 $16,615.38$16,615.38)を引用してください。値の間に大きな空白がある場合、別々のバウンディングボックスとして扱われるため、ひとまとまりの引用としては一致しません。 - テキストに特殊文字、ハイフン、書式上のアーティファクトがある場合は、表示どおりに正確に含めてください。
pageは1 始まりです(LiteParse のpageNumと一致します)。fileにはファイル名のみを指定します(フルパスは指定しません)。- プレーンテキストファイル(.txt、.md)の場合、ページがないため
pageは0に設定します。
ステップ 4 — HTML レポートを生成する
バンドルされたスクリプトを generate モードで実行し、ビジュアルレポートを作成します。
python "${CLAUDE_SKILL_DIR}/scripts/generate_report.py" \
--skill-dir "${CLAUDE_SKILL_DIR}" \
--dir "$0" \
--answer-file /tmp/research_docs_answer.json \
--output research_docs_output/
この処理では、次のことが行われます。
- 引用されたページのみを解析してスクリーンショットを撮ります(すべてのページを処理しないため効率的です)。
- 引用ごとのバウンディングボックスを検索します。
- 回答、ページ画像、ハイライトを含む自己完結型の HTML レポートを生成します。
- デフォルトのブラウザーでレポートを開きます。
ステップ 5 — 結果を提示する
ユーザーに次の内容を伝えます。
- レポートの保存場所(スクリプトが出力したファイルパス)
- 回答の簡潔な要約(2~3 文)
- 見つかった引用の数