blackout について
Blackoutは、機密文書を扱う人向けのPDF墨消しツールです。ブラウザーアプリ、コマンドライン、MCPサーバーを備え、墨消しページをラスタライズし、出力PDFから抽出可能なテキストがなくなったことを検証します。処理は端末内で完結します。
主な機能
- 01一般的な機密情報の検出
- 02任意の語句の検索
- 03墨消し範囲の手動指定
- 04墨消しのラスタライズと焼き込み
- 05出力PDFのテキスト削除を検証
- 06ブラウザー、コマンドライン、MCPに対応
活用シーン
- 01書類から個人情報を削除
- 02PDF内の任意の語句を墨消し
- 03墨消し後のPDFにテキストが残るか確認
MCP 対応
MCPサーバーは`redact_pdf`と`check_pdf`ツールを提供します。ネットワーク通信なしでローカル実行し、結果を返す前に出力を検証します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
2掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | このマシン上にある PDF ファイルの絶対パス。 |
| terms | array | いいえ | 出現箇所をすべて大文字小文字を区別せずに墨消しするリテラル文字列(氏名、事件番号、住所など)。組み込み検出器で対応できない内容に使用します。 |
| detect | array | いいえ | 検索する機密データのカテゴリ。検出器 ID:ssn、card、email、phone。省略するとすべてをスキャンします。ただし、`terms` が指定されている場合は、省略するとその語句のみが対象になります。 |
詳細
Blackout
ブラウザーだけで完結する、本格的な PDF の墨消し。
blackout.thrain.ai
Blackout は、PDF 内の社会保障番号、メールアドレス、電話番号、カード番号を検出し、カスタム用語の検索や手動でのボックス描画を可能にして、墨消ししたテキストが四角形の下に隠れるのではなく、実際に削除された PDF を出力します。
すべて同じエンジンで、ブラウザーアプリ、CLI、MCP サーバーの 3 つの形態で動作します。
npx @thrain/blackout redact filing.pdf --detect ssn,email --out clean.pdf
仕組み
- デバイスの外にデータが出ることはありません。 レンダリング(pdf.js)、検出、出力(pdf-lib)はすべてクライアント側で実行されます。ページを読み込めば、オフラインでも動作します。
- 墨消しは確実に行われます。 出力時に各ページをラスタライズし、ボックスをピクセルに焼き付けてから、画像を使って PDF を再構築します。元のテキストレイヤーは破棄されるため、コピー&ペーストやテキスト抽出で内容を復元することはできません。
開発
npm install
npm install
npm run dev # local dev server
npm run build # type-check + production build to dist/
npm run build:agent # type-check + bundle the CLI and MCP server to packages/
npm run smoke # headless browser end-to-end test
npm run smoke:cli # CLI end-to-end test
npm run smoke:mcp # MCP server end-to-end test
npm run smoke:agent-dist # the same two, against the built bundles
node scripts/make-test-pdf.mjs out.pdf 12 # fixture with fake PII
node scripts/test-worker.mjs # license worker tests
node scripts/visual-check.mjs [test.pdf] [outdir] # screenshot spot-check
ブラウザーのスモークテストスクリプトには Chrome/Chromium のバイナリが必要です。既定の Playwright キャッシュの場所にない場合は、CHROME_BIN を設定してください。すべてのスモークテストで、出力された PDF から抽出可能なテキストがゼロであることを確認する、同じ中心的なアサーションを実行します。このアサーションこそが製品のすべてであり、簡単に確認できる経路だけでなく、リリースするすべての経路で成立する必要があるためです。
アーキテクチャ
- エンジン(
src/pdf/)— 検出、マークの順序付け、ラスタライズして焼き付ける出力を担当します。プラットフォームに依存せず、外部との唯一の接点はキャンバスを提供するsrc/pdf/platform.tsです。src/platform/browser.tsは DOM キャンバスを、src/platform/node.tsは Skia を使って実装します。墨消し処理は 1 つだけなので、ブラウザーと CLI で挙動が食い違うことはありません。 - サイト — 静的な React アプリです。
.github/workflows/deploy.ymlにより、mainへのプッシュごとに GitHub Pages へデプロイされます。 - CLI と MCP サーバー(
src/agent/)— エンジンを呼び出す、対話操作のない薄いラッパーです。packages/blackoutとpackages/blackout-mcpにバンドルされています。 - ライセンスワーカー(
worker/)— Stripe のチェックアウトセッションを検証し、署名付きライセンストークンを発行する Cloudflare Worker です。アプリは埋め込み公開鍵を使ってトークンを検証します。.github/workflows/deploy-worker.ymlによりデプロイされます。
エージェント向け
PDF の墨消しを依頼されたエージェントは、そのままではテキストが選択可能な状態で残る黒い四角形を上から描くスクリプトを書いてしまうことがあります。「この PDF を墨消しして」という依頼を、正しく処理するツールにつなげられるよう、次の 2 つの形態を用意しています。
- CLI —
packages/blackout·npx @thrain/blackout redact in.pdf - MCP サーバー —
packages/blackout-mcp· ツールredact_pdf、check_pdf
どちらも結果を返す前に、自身の出力を検証します。書き出したファイルからテキストを再抽出し、テキストレイヤーが残っている文書は返さず、エラーにします。ライセンス確認を含め、ネットワーク呼び出しは行わないため、データがマシンの外に出ることはありません。
ライセンス
Apache-2.0 © Thrain LLC。「Blackout」という名称とロゴは Thrain LLC の商標です(NOTICE を参照)。自由にフォークできますが、フォーク版は独自の名称で公開してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。