mcpField
P
pdf-toolkit

pdf-toolkit

github.com/borgheiドキュメント1.0k53 回インストール6 日前に更新
リポジトリ

pdf-toolkit について

標準ライブラリのみでPDFのメタデータとセキュリティ指標を調べるスキルです。文書の受け渡し、受信PDFの一次確認、フォルダー単位の監査に使えますが、テキスト抽出や復号には対応しません。

主な機能

  1. 01PDFのバージョン、容量、ページ数の確認
  2. 02文書およびXMPメタデータの読み取り
  3. 03暗号化とJavaScriptの指標を検出
  4. 04埋め込みファイルの指標を検出
  5. 05JSON出力に対応

活用シーン

  1. 01外部共有前のメタデータ確認
  2. 02受信PDFのセキュリティ一次確認
  3. 03送付予定PDFのフォルダー単位監査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/borghei/claude-skills --skill pdf-toolkit

インストール後、Claude Code で/pdf-toolkitを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
pdf_handoff_checklist.md
references/
pdf_handoff_guide.md
scripts/
pdf_auditor.py

詳細

PDF ツールキット

標準ライブラリのみを使用して、.pdf ファイルのメタデータ、ページ数、暗号化状態、埋め込み JavaScript、埋め込みファイル、PDF バージョンを監査します。


目次


キーワード

PDF、PDF 監査、PDF メタデータ、PDF レビュー、PDF 情報漏えい、PDF セキュリティ、墨消し、ドキュメントの引き渡し


まず確認すること

監査を実行する前に、以下の入力内容を確認してください。不明または曖昧なものがあれば、推測せずに質問してください。

  • 監査の目的(引き渡し前のメタデータ削除、受信時のセキュリティトリアージ、一括送信前チェック) — 3 つのワークフローのどれを使い、どのフィールドを確認するかを決めます
  • 受信者/取り扱い状況(外部の相手、管理対象のノート PC) — 何を情報漏えい、または隔離に値する脅威とみなすかを決めます
  • 正当なメタデータとして想定される内容(作成者/タイトルの正しい値) — これがないと、情報漏えいと想定内のデータを区別できません

停止ルール:出力に最も影響する 2~3 項目だけを質問してください。ユーザーが「とりあえず下書きして」と言った場合は、作業を進め、成果物の冒頭に前提条件を列挙してください。

クイックスタート

python scripts/pdf_auditor.py contract.pdf

出力:PDF バージョン、ページ数、ファイルサイズ、メタデータ(Author、Title、Producer、Creator、日付)、暗号化状態、埋め込み JavaScript の有無、埋め込みファイルの有無。


主なワークフロー

ワークフロー 1:引き渡し前の PDF メタデータ監査

目的: PDF を外部の相手に渡す際に、作成者の身元、以前のクライアント名、ドキュメントの履歴が漏れるのを防ぎます。

手順:

  1. 実行します:python scripts/pdf_auditor.py document.pdf
  2. メタデータフィールドを確認します:
    • Author が送信者と一致している(以前のプロジェクトの「Bob's intern」ではない)
    • Title がドキュメントの内容と一致している(以前の作業タイトルが残っていない)
    • Producer に社内専用の PDF ツールが表示されていない
    • CreationDate と ModDate が取引の時期として妥当である
  3. メタデータから情報が漏れている場合は、プロパティを整理して元ファイルから再エクスポートします(または墨消しツールを使用します)

所要時間: 1 ドキュメントあたり 2~3 分。

ワークフロー 2:PDF セキュリティトリアージ

目的: 受信した PDF を管理対象のノート PC で安全に開けるかどうかを判断します。

手順:

  1. 監査を実行します
  2. JavaScript の有無が検出された場合 → 隔離し、サンドボックスで確認します
  3. 埋め込みファイルの有無が検出された場合 → ファイル形式の一覧を確認します。想定外のものがあれば隔離します
  4. 暗号化されており、空ではない所有者パスワードが設定されている場合 → 別の連絡手段で送信者にパスワードを求めます
  5. 判断します:開く/隔離する/拒否する

所要時間: 受信したドキュメント 1 件あたり 1~2 分。

ワークフロー 3:送信前のドキュメント一式の一括監査

目的: 顧客またはパートナーに ZIP ファイルで送る前に、フォルダー内のすべての PDF を監査します。

手順:

  1. ループ処理します:for f in *.pdf; do python scripts/pdf_auditor.py "$f" --json; done > audit.jsonl
  2. JSON Lines を解析し、メタデータの漏えいや異常がないか確認します
  3. 問題のあるファイルを元ファイルから再エクスポートします
  4. 問題がなくなるまで監査を再実行します

所要時間: 1 ファイルあたり 1~2 分。


ツール

pdf_auditor.py

標準ライブラリによる解析で PDF を読み取ります。pypdf や pdfplumber は不要です。以下を検出します。

  • PDF バージョン(ヘッダーから取得)
  • ページ数(/Type /Page オブジェクトをスキャン)
  • ファイルサイズ
  • ドキュメント情報/XMP メタデータ(Title、Author、Subject、Keywords、Producer、Creator、CreationDate、ModDate)
  • 暗号化状態(/Encrypt 参照の有無)
  • JavaScript の有無(/JS、/JavaScript、/AA キー)
  • 埋め込みファイルの有無(/EmbeddedFiles)
python scripts/pdf_auditor.py document.pdf
python scripts/pdf_auditor.py document.pdf --json

制限事項:

  • テキストコンテンツは抽出しません。標準ライブラリだけで PDF のテキストを抽出する方法は信頼性に欠けます。テキストを抽出するには、別途 pdfplumber または pypdf をインストールしてください。
  • 暗号化されたファイルは復号できません。
  • JavaScript/埋め込みファイルの有無のみを検出し、その動作は検出しません。

リファレンスガイド

  • references/pdf_handoff_guide.md — 外部送信前に PDF から削除すべき情報、PDF/A と PDF/UA の基本、よくある情報漏えいのパターン

テンプレート

  • assets/pdf_handoff_checklist.md — 送付前のPDF承認チェックリスト

ベストプラクティス

  • 墨消しではなく、再エクスポートしてください。 コンテンツを「削除」する墨消しツールでは、復元可能な状態で情報が残ることがあります。最も安全なのは、機密フィールドを削除したうえで、元の文書からPDFを再生成することです。
  • 文書のプロパティは元のファイルで削除してください。 Wordの場合:ファイル → ドキュメントの検査 → ドキュメント検査。Pagesの場合:ファイル → プロパティ。その後、PDFにエクスポートします。
  • ファイル名を信用しないでください。 Public-Report.pdfという名前のファイルにも、人の目では見分けられない非公開のメタデータが含まれていることがあります。
  • 長期保存にはPDF/Aを使用してください。 PDF/AはJavaScriptと外部依存関係を除去するため、文書の長期保存に適しています。

連携ポイント

  • legal/ と連携して、墨消し済み契約書を引き渡します
  • c-level-advisor/board-deck-builder と連携して、取締役会資料を引き渡します
  • marketing/ でホワイトペーパーや導入事例を引き渡す際に使用します

コメント