Scrubkit.Tool
1.5.0
Prefix Reserved
dotnet tool install --global Scrubkit.Tool --version 1.5.0
dotnet new tool-manifest
dotnet tool install --local Scrubkit.Tool --version 1.5.0
#tool dotnet:?package=Scrubkit.Tool&version=1.5.0
nuke :add-package Scrubkit.Tool --version 1.5.0
Scrubkit.Tool
The scrubkit command-line tool — run Scrubkit
from any shell or CI, no code required. Point it at a folder and it extracts text + metadata
from PDFs, Office / OpenDocument, email, EPUB, and text / image files, optionally redacts PII
and secrets, and writes a CSV / JSON / JSON Lines / Parquet table. Everything runs on your
machine — no network calls.
Install
dotnet tool install --global Scrubkit.Tool
Use
scrubkit scan <folder> [options]
# Extract a folder to CSV on stdout
scrubkit scan ./docs
# Redact PII + secrets and write JSON Lines for a RAG / embedding pipeline
scrubkit scan ./docs --redact --format jsonl --out docs.jsonl
# Aggressive redaction, only PDFs and email, with a content hash per file
scrubkit scan ./docs --redact=aggressive --include .pdf,.eml --hash
# Columnar output for analytics
scrubkit scan ./data --format parquet --out data.parquet
Options
| Option | Description |
|---|---|
--format <fmt> |
csv, json, jsonl, or parquet. Default: inferred from --out's extension, else csv. |
--out <file> |
Write to a file instead of stdout. Required for parquet. |
--redact[=<level>] |
Redact PII + secrets. Level standard (default) or aggressive. Omit to extract without redacting. |
--no-recurse |
Only the top folder (default: recurse all nested). |
--hash |
Compute a SHA-256 content hash per file. |
--include <exts> |
Comma-separated extension filter, e.g. --include .pdf,.docx. |
--max-files <n> |
Stop after n files (0 = no limit). |
--max-bytes <n> |
Skip files larger than n bytes (0 = no limit). |
--max-text <n> |
Clip extracted text to n characters (0 = no clip). |
--local-time |
Emit local-time timestamps (with offset) instead of UTC. |
-h, --help |
Show help. |
-v, --version |
Show the version. |
The table goes to stdout (or --out); progress and a summary go to stderr, so you can
pipe the output cleanly. Exit code is 0 on success, 1 on a usage or I/O error.
Scrubbing is best-effort, not a compliance tool.
Links
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.5.0 | 0 | 7/21/2026 |
1.4.0 — Output: zero-dep CSV/JSON writers (TableWriter) with UTC-by-default timestamps and an opt-in utc:false local-time mode, plus a new Scrubkit.Parquet package (Apache Parquet via Parquet.Net, net8.0). Diagnostics: ReadOptions.OnDiagnostic hook bridged to ILogger by AddScrubkit. Opt-in SHA-256 content hashing (FileRecord.ContentHash). New Scrubkit.All meta-package bundles the whole family. Default MaxBytesPerFile lowered to 10 MB; FileRecord.Modified is now UTC. Fix: redaction no longer drops a match overlapping a higher-priority span. Full changelog: https://github.com/jjopensoftworks-blip/Scrubkit/blob/main/CHANGELOG.md