オープンソース · ローカル完結 · コマンドライン
自分の投稿履歴を、AI の目で点検する。
$ exposurecheck audit --twitter ./twitter_export \
--backend local --expensive-model llama3.1 --i-own-this-data
ExposureCheck v0.1 · local backend · nothing left this machine
Parsed 3,214 posts · 19 months · prefilter kept 2,901 (weak signals retained)
RISK CONTRIBUTION posts what drives it
───────────────────────────────────────────────────────────────
● LOCATION High 28 local events, commute clues, "my gym"
● EMPLOYER High 11 project code-names, office banter
● SCHEDULE Medium 63 posting-time concentration → UTC-8
○ FAMILY Low 4 a relative's first name, a school
Top card · LOCATION (High)
[LOCAL EVENT] near [NEIGHBORHOOD] — 6 posts
[COMMUTE] on [TRANSIT LINE] — mentioned 9 times
→ generalise: drop venue names; delay event posts by a week
12 posts to review · re-run with -i to open YOUR own originals
No dossier written. No profile saved. "High" is not "you are doxxed" —
it means a model could narrow this down. Fix, then re-scan.
ローカルモデルでの実際の実行例です。カテゴリはマスク(伏せ字)され、復元した値は出さず、プロファイルも保存しません。
一分でわかる、できること#
ExposureCheck が読むのは、あなた自身がプラットフォームから書き出したデータです。動いているアカウントに触れることも、他人のデータを扱うことも、決してありません。そのうえで、攻撃者が投げかけるであろう問いを立てます。これだけの投稿を全部合わせると、その背後にいる人物について何が分かってしまうのか、と。
- Reddit の GDPR 書き出しと、X / Twitter のアーカイブ(フォルダでも
.zipでも)を読み込みます。 - 取りこぼしを防ぐ段階処理(カスケード)で進めます。まず安価な処理が全投稿に優先順位をつけ、次に高価な処理が重要なものを精読します。このとき弱いシグナルもあえて残します。モザイクは弱いシグナルから組み上がるので、捨ててしまえば「安全だ」という見せかけの安心にしかなりません。
- メタデータの層は、推論ではなく決め打ちで抽出します。自分で設定した居場所の欄、外部リンク、画像の EXIF / GPS(写真に埋め込まれた撮影日時や位置などの情報)、端末の機種、そして投稿時刻の偏りから漏れるタイムゾーン——X では、これらが本文よりも多くを明かします。
- 結果はカテゴリ別のリスクカードで報告します。居場所、勤め先、家族、生活リズム、お金、アカウントのつながり——それぞれをリスクへの寄与度で並べ、マスクした実例と、まず一般化するという具体的な対処を添えます。
ExposureCheck はローカル完結で、集めた情報を一切保存せず、あなたのプロファイルをディスクに書き出すこともありません。
「モザイクによる身元特定」が初耳でしたら、まずツールより脅威そのものから始めてください。対になる解説記事、AI の目で、自分の投稿履歴を棚卸しするを読んでから、また戻ってきていただければと思います。
あえてやらないこと#
- 集めた情報を保存しません。 「あなたは X 市に住み、Y 社で働き、名前は Z」といった出力は決してしません。カードに出るのはマスクした断片だけです。復元した値が見えるのは、あなたがあなた自身の元の投稿へその場で辿ったときに限られ、保存もされません。
- 発見を書き出す機能はありません。スクレイピング(自動収集)もしません(入力は書き出しデータのみ)。あなたの代わりに投稿したり削除したりもしません。他人の履歴を分析することもありません。
- あなたを匿名にする道具ではありません。 あくまでリスクを減らすものです。「Low」は「安全」ではありませんし、メタデータ・投稿時刻・文体まで完全に見きれるわけでもありません。
外に出るデータと、出ないデータ#
プライバシーツールが最初に伝えるべきはこの点ですので、冒頭ではっきりさせておきます。推論はあなたが選んだバックエンドの上で動き、何が外へ出ていくかを決めるのは、ツールではなく、その選択です。
| バックエンド | 中身 | データは端末から出ていきますか? |
|---|---|---|
local | 手元の Ollama / llama.cpp / LM Studio のモデル | ✅ いいえ(出ません) — あなたのパソコンの中にとどまります |
heuristic | オフラインの正規表現スタブ。ほぼ何も拾いません | ✅ いいえ(出ません) — ただし開発・CI 用であって、本来の点検ではありません |
cloud | OpenAI 互換のエンドポイント(鍵はあなたのもの) | ⚠️ はい(送られます) — あなたの投稿が、その事業者へ届きます |
ツール本体には、サーバーも、外部への通信も、アカウントもありません。作者があなたのデータを預かることも、鍵を持つこともありません。cloud を選んだときは、あなたの書き出しデータが、あなたの指定した API 事業者へ届きます。ログの保存期間、学習方針、鍵に紐づく IP や支払い情報まで——すべてその事業者の規約が適用されます。ExposureCheck が中継を増やすことはありません。ただし、あなた自身が選んで通した経路を、ツールが消してくれるわけでもありません。
クラウドで本当に問題になる、ただ一つの注意点#
点検しようとしているアカウントが、本名と切り離して保っている仮名のもので、かつあなたの AI / クラウドのアカウントが本名で登録されている、または本名で支払われているとします。すると、その履歴をクラウドへ送った時点で、事業者は自社の側で本名 ↔ 匿名アカウントを結びつけられてしまいます(令状・情報流出・内部者の手を通じて)。それこそが、このツールが防ぐために存在している、まさにその身元特定です。
ですから——厳密に匿名のアカウントを点検するなら、--backend local を使ってください(匿名で開設・支払いしたクラウドアカウントでも構いません)。本名・公開アカウントの点検なら、クラウドでも問題ありません。CLI はこの点を画面に表示し、該当する場面ではあなたに確認を求めます。ローカルを強制はしません。それでは使える人が誰もいなくなるからです。代わりに、この選択の意味をはっきり見えるようにします。
仕組み#
export ─▶ parse ─▶ prefilter (drop only TRUE-empty) ─┬─▶ deterministic: profile + EXIF + timing ─┐
└─▶ cascade: cheap route ─▶ expensive read ─┤
▼
risk-contribution scoring ─▶ category cards ─▶ no-dossier report段階処理を挟むのは、1〜3千件の履歴でも費用を抑えて回せるようにするためです。すべてを精読に送るのではなく、安価な処理がどれを精読する価値があるかを見極めます。続くリスク寄与度のスコアリングは、各カテゴリを「モデルの確信度」ではなく「実際にどれだけあなたを絞り込むか」で並べます。モデルの確信度は、必ずしも正確に較正されているわけではないからです。
インストール#
中核——解析、EXIF、段階処理、そしてクラウド/ローカルの HTTP バックエンド——は、Python の標準ライブラリだけで書かれています。あなたの書き出しに触れるサードパーティ製パッケージは一つもありません。そのぶん、あなたが信頼すべきコードの範囲は小さく保たれます。
# from source (a PyPI release ships with the first public version):
git clone https://github.com/coraaegis/exposurecheck && cd exposurecheck
pip install -e .
# or run without installing:
python -m exposurecheck --help# Local model — nothing leaves your machine (recommended for anonymous accounts)
exposurecheck audit \
--reddit ./reddit_export.zip \
--twitter ./twitter_export \
--backend local --expensive-model llama3.1 \
--i-own-this-data
# Cloud — bring your own key; set it in the ENV, never on the command line
export OPENAI_API_KEY=sk-...
exposurecheck audit --twitter ./twitter_export --backend cloud --i-own-this-dataAPI の鍵を環境変数から読むのは、意図してのことです。コマンドラインの引数は、シェルの履歴やプロセス一覧に漏れてしまうからです。
ExposureCheck は、いまのところコマンドラインのツールで、ターミナルに慣れた方を想定しています。最初にこのツールを検証してくれるのも、そうした人たちだからです。Python を入れる必要のない、ローカルかつブラウザ内で動く UI を備えたワンクリックのアプリ(技術に明るくない方向け)が、次の目標です。CLI は、使い込む方のために残します。
プライバシーツールは、信じるのではなく確かめるもの——このツールも同じです#
作者は仮名ですから、名前を鵜呑みにしないでください。代わりに、あなた自身が確かめられるものを受け取ってください。
- コードを読む。 オープンソース(MIT)で、標準ライブラリだけで書かれています。ですから、あなたが点検すべき依存関係は、実質的に標準ライブラリそのものです。
- リリースを検証する。 各リリースには Cora Aegis の PGP 署名が付いています。鍵を WKD 経由で取得し、署名を確かめてください。SHA-256 のチェックサムも毎リリースに同梱され、ビルドは再現可能です。タグ付けされたソースから自分でビルドし直し、できあがったものが一致するかを確かめられます。
gpg --locate-keys cora@cypherpunkguide.com gpg --verify exposurecheck-0.1.0.tar.gz.asc - 身元に紐づくコード署名証明書は、あえて用意していません。 その種の証明書は、プロジェクトを法的な身元に結びつけてしまうもので、目的の正反対だからです。署名のない Windows のバイナリは、SmartScreen の「不明な発行元」という警告を出すかもしれませんが、それは想定どおりです。パッケージマネージャ(pip / Scoop / Homebrew)を使うか、ソースから動かし、PGP 署名を検証することをお勧めします。
- 出力の設計そのものが、歯止めになっています。 「情報を保存しない」という約束は、コードで強制されています。マスクされたラベルはプログラムが生成するので、モデル自身の出力でさえ、復元した値をレポートに表示することができません。悪用を防ぐ仕組み——所有者前提の入力、カテゴリのみの出力、マスク処理、そして公開前の悪用評価——は、
ABUSE-EVAL.mdにまとめてあります。
データフロー図と公開された脅威モデルは、このツールが何をするものかを示します。ソースコード、署名、そして再現可能なビルドは、それが本当にそのとおりに動き——それ以外のことはしないと——あなた自身が確かめるための手段です。
知っておきたい限界#
- 「Low」は「安全」ではありません。 このツールはリスクを減らしますが、匿名性を保証するものではありません。
- 見落としはあります。 「何も引っかからなかった」は、あなたを特定できないことの証明にはなりません。とりわけ
heuristicバックエンドは、本来の点検ではなく動作確認用です。 - 対象外のもの。 文体による筆者の特定、書き出しに含まれる範囲を超えたサービス横断の照合、ネットワーク層のメタデータ、そして画像の写っている中身(v1 が読むのは EXIF / メタデータだけです。ロードマップを参照してください)。
- このツール自身が、あなたの最も機微なデータを読みます。 だからこそ、ローカル完結で、標準ライブラリのみで、オープンソースで、署名付きです。露出を確かめるために動かすツール自身が、できるだけ小さく、できるだけ検証しやすい存在でなければなりません。
よくある質問#
ExposureCheck は、私の投稿をどこかへアップロードしますか?#
cloud バックエンドを選んだときだけで、しかも送り先は、あなたが鍵を渡した API 事業者に限られます。local または heuristic なら、何一つあなたの端末から出ていきません。ツール自身には、サーバーも外部への通信もありません。
自分の住所や本名を、教えてくれるのですか?#
いいえ、教えません。それが「情報を保存しない」という意図的な設計です。表示するのはマスクしたカテゴリで、あなた自身の元の投稿へ案内し、何を変えるかはあなたが決めます。あなたのプロファイルを組み立てることも、保存することも、決してありません。
匿名のアカウントを点検します。クラウドのバックエンドでも安全ですか?#
厳密に匿名のアカウントには --backend local を使ってください。あなたのクラウドアカウント自体が匿名である場合は別です。匿名アカウントの履歴を本名の AI アカウントへ送ると、事業者の側で両者が結びついてしまいます。このツールは、まさにそのリスクを見つけ出すためにあります。
自分の全履歴に対して走らせて、本当に安全ですか?#
コードはオープンソースで標準ライブラリのみなので、何をしているか自分で読めます。リリースは PGP 署名付きで再現可能なので、インストールしたものを確かめられます。プロファイルをディスクに書き出しません。これらを信用ではなく、あなた自身の目で検証してください。それがこのツールの基本姿勢です。
なぜアプリではなく、コマンドラインなのですか?#
最初の読み手は技術寄りの方々で、CLI が最も点検しやすい形だからです。ローカルかつブラウザ内で動く UI を備えた、ワンクリックのアプリ(技術に明るくない方向け)が次の目標です。
制作: Cora Aegis。 プライバシーや安全上の不備を見つけられましたか? 責任ある開示を歓迎します——cora@cypherpunkguide.com(PGP は WKD 経由)。正式なソースと ExposureCheck という名前は、github.com/coraaegis/exposurecheck にあります。