メインコンテンツへスキップ

オープンソース · ローカル完結 · コマンドライン

自分の投稿履歴を、AI の目で点検する。

いまの言語モデルは、ありふれた公開投稿を数百件読むだけで、あなたの住んでいる場所、働いている場所、毎日の生活リズムを推し量り、仮名のアカウントを本名へとたどり着けます。不用意な投稿1件からではなく、たくさんの投稿が寄せ集まってできた モザイク(断片の集まり)からです。ExposureCheck は、その同じ敵の読み方を、あなた自身の書き出しデータに、あなたの決めた条件で走らせ、どこをぼかし、どこを書き換えればよいかを示します。
$ 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 用であって、本来の点検ではありません
cloudOpenAI 互換のエンドポイント(鍵はあなたのもの)⚠️ はい(送られます) — あなたの投稿が、その事業者へ届きます

ツール本体には、サーバーも、外部への通信も、アカウントもありません。作者があなたのデータを預かることも、鍵を持つこともありません。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-data

API の鍵を環境変数から読むのは、意図してのことです。コマンドラインの引数は、シェルの履歴やプロセス一覧に漏れてしまうからです。

ExposureCheck は、いまのところコマンドラインのツールで、ターミナルに慣れた方を想定しています。最初にこのツールを検証してくれるのも、そうした人たちだからです。Python を入れる必要のない、ローカルかつブラウザ内で動く UI を備えたワンクリックのアプリ(技術に明るくない方向け)が、次の目標です。CLI は、使い込む方のために残します。

プライバシーツールは、信じるのではなく確かめるもの——このツールも同じです
#

作者は仮名ですから、名前を鵜呑みにしないでください。代わりに、あなた自身が確かめられるものを受け取ってください。

  • コードを読む。 オープンソース(MIT)で、標準ライブラリだけで書かれています。ですから、あなたが点検すべき依存関係は、実質的に標準ライブラリそのものです。
  • リリースを検証する。 各リリースには Cora Aegis の PGP 署名が付いています。鍵を WKD 経由で取得し、署名を確かめてください。
    gpg --locate-keys cora@cypherpunkguide.com
    gpg --verify exposurecheck-0.1.0.tar.gz.asc
    SHA-256 のチェックサムも毎リリースに同梱され、ビルドは再現可能です。タグ付けされたソースから自分でビルドし直し、できあがったものが一致するかを確かめられます。
  • 身元に紐づくコード署名証明書は、あえて用意していません。 その種の証明書は、プロジェクトを法的な身元に結びつけてしまうもので、目的の正反対だからです。署名のない 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 にあります。