ローカル PDF ファイルを安全に処理するスキル。テキスト抽出・ Markdown 変換・チャンク分割・分割・結合・画像化・フォーム記入・新規作成に対応する。PDF の確認、要約、ページ指定抽出、分割、結合、フォーム処理、PDF 作成の依頼で使用する。Google Drive の PDF には gdrive スキルを使用すること。
ローカル PDF を安全に扱う。対象はローカルファイルのみで、Google Drive 上の PDF は gdrive スキルを使う。
info でページ数と推定トークン数を確認するtext、大きい PDF は text --summary / chunk / --pages で段階的に読むreports/pdf-output/ を既定として使うbun run pdf -- --action info --file reports/minutes/input/proposal.pdf
| アクション | 用途 | 出力形式 |
|---|---|---|
info | メタデータ・推定トークン数を確認 | JSON |
text | テキスト抽出(ページ単位) | JSON |
markdown |
| 構造化 Markdown に変換 |
| Markdown |
chunk | トークン上限でチャンク分割 | JSON |
split | ページ範囲で PDF を分割 | PDF ファイル群 |
merge | 複数 PDF を結合 | PDF ファイル |
images | ページを PNG 画像に変換 | PNG ファイル群 |
form-fields | フォームフィールド一覧を取得 | JSON |
fill-form | フォームに値を記入 | PDF ファイル |
create | テキストから PDF を新規作成 | PDF ファイル |
| リクエスト例 | アクション |
|---|---|
| 「この PDF を読んで」「内容を教えて」 | info → text |
| 「要約して」「概要を教えて」 | text --summary |
| 「Markdown に変換して」「構造を保持して」 | markdown |
| 「分割して」「ページを抜き出して」 | split |
| 「結合して」「まとめて」 | merge |
| 「画像にして」 | images |
| 「フォームのフィールドを確認」 | form-fields |
| 「フォームに記入して」 | fill-form |
| 「PDF を作って」 | create |
bun run pdf -- --action <action> --file <path> [オプション]
結果の見方:
bun run pdf -- --action info --file document.pdf
主な出力:
filePath, fileName, pageCount, fileSizeKBpdfInfoestimatedTotalTokens# 全ページ
bun run pdf -- --action text --file document.pdf
# ページ指定
bun run pdf -- --action text --file document.pdf --pages 1-3,5,10-15
# サマリーモード
bun run pdf -- --action text --file document.pdf --summary
主な出力:
pages[]: pageNumber, text, charCountextractedPagestotalCharCount, estimatedTokens# stdout に出力
bun run pdf -- --action markdown --file document.pdf
# ファイルに出力
bun run pdf -- --action markdown --file document.pdf --output report.md
# デフォルト(3000 トークン / 200 トークン overlap)
bun run pdf -- --action chunk --file document.pdf
# カスタム設定
bun run pdf -- --action chunk --file document.pdf --max-tokens 2000 --overlap 100
bun run pdf -- --action split --file document.pdf --pages 1-3,4-6,7-10
bun run pdf -- --action merge --files doc1.pdf,doc2.pdf,doc3.pdf --output merged.pdf
# 全ページ
bun run pdf -- --action images --file document.pdf
# ページ指定 + スケール
bun run pdf -- --action images --file document.pdf --pages 1-3 --scale 3
bun run pdf -- --action form-fields --file form.pdf
bun run pdf -- --action fill-form --file form.pdf --fields '{"name":"山田太郎","email":"[email protected]"}' --output filled-form.pdf
bun run pdf -- --action create --text "レポートの内容をここに記述" --title "月次レポート" --output report.pdf --font-size 14
| PDF サイズ | 推定トークン数 | 推奨戦略 |
|---|---|---|
| 小(< 20 ページ) | < 10,000 | text で全文取得 |
| 中(20-50 ページ) | 10,000-50,000 | text --summary でトリアージ → text --pages |
| 大(> 50 ページ) | > 50,000 | chunk で分割、または text --pages で必要部分のみ |
ポイント:
--summary は各ページ先頭 500 文字だけを返す--pages で必要ページだけ読むとトークンを大きく節約できるmarkdown は構造把握向き、chunk は長文解析向き守秘 非公開 社外秘 confidential NDA などのキーワード、API キー、トークン、個人情報パターンがあれば処理を止めるtext / chunk / markdown の出力と markdown --output の保存内容には PII マスキングが適用されるtext 実行時に PII 検知が 1 件でも出た場合は、本文が空でも images + OCR に進まないpdfjs-dist でテキスト抽出できないスキャン PDF の場合:
text アクションを実行するimages アクションで画像化する重要な安全ルール:
text の stdout はマスク済みでも、画像読取に進むと元画像から情報が再露出する可能性があるtext 実行時に stderr の PII マスキングレポートで検知が出た PDF は、Vision / OCR に渡してはいけないimages を実行しない# 1. テキスト抽出を試みる
bun run pdf -- --action text --file scanned.pdf --pages 1
# 2. テキストが空 かつ PII 未検知のときだけ画像化
bun run pdf -- --action images --file scanned.pdf --pages 1-3 --output-dir reports/pdf-output/
# 3. Read ツールで画像を読み取る(PII 未検知時のみ)
gdrive スキルを使うbunx playwright install chromiumtasks/lib/pdf.ts、分割・結合・フォーム・作成は tasks/lib/pdf-manipulate.ts、画像化は tasks/lib/pdf-images.tsreports/pdf-output/