mcpField
B
blackout

blackout

本地服务
blackout.thrain.ai安全012 周前更新

关于 blackout

Blackout 是面向敏感文档处理的 PDF 涂黑工具,提供浏览器应用、命令行和 MCP 服务。它会将涂黑页面栅格化,并验证导出的 PDF 不含可提取文本;处理过程留在设备本地。

主要功能

  1. 01检测常见敏感信息
  2. 02搜索自定义词语
  3. 03手动绘制涂黑框
  4. 04栅格化并烧录涂黑内容
  5. 05验证导出 PDF 已移除文本
  6. 06提供浏览器、命令行和 MCP 版本

适用场景

  1. 01移除文件中的个人信息
  2. 02涂黑 PDF 中的自定义词语
  3. 03检查涂黑后的 PDF 是否仍有文本

MCP 相关

MCP 服务提供 `redact_pdf` 和 `check_pdf` 工具。它在本地运行,不进行网络调用,并在返回结果前验证输出文件。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ai-thrain-blackout": {
"command": "npx",
"args": [
"-y",
"@thrain/blackout-mcp"
]
}
}
}
启动命令npx -y @thrain/blackout-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@thrain/blackout-mcp1.3.0

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
pathstring是此机器上 PDF 文件的绝对路径。
termsarray否要进行涂黑的字面字符串,无论大小写,只要出现都会匹配——姓名、案件编号、地址。用于内置检测器无法覆盖的内容。
detectarray否要查找的敏感数据类别。检测器 ID:ssn、card、email、phone。省略时扫描所有类别;如果提供了 `terms`,则省略后仅匹配这些词条。

详细介绍

Blackout

Blackout

真正的 PDF 涂黑,完全在浏览器中完成。
blackout.thrain.ai


Blackout 可以在 PDF 中查找社会安全号码、电子邮件地址、电话号码和银行卡号, 让你搜索自定义词语或手动绘制方框,并导出扁平化 PDF,其中涂黑的文本 确实已被移除,而不是被矩形遮住。

它基于同一个引擎运行于三个场景:浏览器应用、CLI 和 MCP 服务。

npx @thrain/blackout redact filing.pdf --detect ssn,email --out clean.pdf

工作原理

  1. 所有内容都留在你的设备上。 渲染(pdf.js)、检测和导出 (pdf-lib)都在客户端运行。加载页面后断开网络,仍然可以使用。
  2. 涂黑是真正有效的。 导出时会将每页栅格化,并将方框烧录到 像素中,然后根据这些图像重建 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,由其提供 canvas。src/platform/browser.ts 使用 DOM canvas,src/platform/node.ts 使用 Skia。涂黑功能只有一种实现, 因此浏览器和 CLI 不会出现行为偏差。
  • 网站——静态 React 应用,每次向 main 推送代码时,都会通过 .github/workflows/deploy.yml 部署到 GitHub Pages。
  • CLI 和 MCP 服务(src/agent/)——基于引擎的轻量非交互式封装, 打包到 packages/blackout 和 packages/blackout-mcp。
  • 许可证 Worker(worker/)——Cloudflare Worker,用于验证 Stripe 结账会话并生成签名许可证令牌;应用使用内嵌的公钥进行验证。通过 .github/workflows/deploy-worker.yml 部署。

面向 Agent

如果要求 Agent 为 PDF 涂黑,它可能会编写脚本,在文本上绘制一个黑色 矩形,但底层文本仍可选中。为让“涂黑此 PDF”能够对应到正确完成这项工作的工具, 提供了两种形式:

两者都会在返回结果前验证自身输出:从刚写入的文件中重新提取文本,如果文档仍有 文本层,就会报错,而不会交付该文档。两者都不会发起网络请求,包括许可证检查, 因此任何内容都不会离开本机。

许可证

Apache-2.0 © Thrain LLC。“Blackout”名称和徽标是 Thrain LLC 的商标(参见 NOTICE)——欢迎自由分叉,但发布分叉版本时 请使用你自己的名称。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。