メインコンテンツまでスキップ

X の黒歴史、AIで葬ろう

· 約8分
BonyChops
@BonyChops
備考

こちらはklis Advent Calendar 2025 - 21 日目の記事になります

皆さんは X に黒歴史を残しましたか? 😁 klis の皆さんなら多いんじゃないでしょうか。
昨今のような情報社会、デジタルタトゥーはいつあなたのキャリアを脅かすか分かりません。年末大掃除の対象に X も入れてみませんか。
ただ、全部を確認するのは無理です。AI に確認させましょう。

X アーカイブのダウンロード

X では今までの投稿の一覧をローカルに落とす機能があります。まずはそれを取得しましょう。

アーカイブのダウンロード(設定 -> アカウント -> データのアーカイブをダウンロード)↓ https://x.com/settings/download_your_data

警告

12/22 22:42 現在、謎のリダイレクトが発生してダウンロードの申請ができなくなっています。
もし試されたタイミングでも同じようでしたら、しばらくはダウンロードできなそうです 😢
本記事では過去に落としたアーカイブを使います

使う LLM を準備する

ここでは openai を使用するため、OpenAI の API フォーマットに従うものであれば基本何でも使えます。

モデルや仕組みはなんでも大丈夫です。
ここでは Ollamallama3-elyza-jp-8b (4.9 GB)を使います。

ollama pull dsasai/llama3-elyza-jp-8b:latest

ツールの準備

X アーカイブの tweets.js から一ツイートずつAIに評価させる x-checker を作りました。それを使います。

備考

今回使用しているプロンプトは以下です。細かい指示を加えることで精度を改善できると思います。

次のツイートの炎上危険度を0から10の数値で答えてください。数値だけを出力してください。

cd x-checker
uv sync
uv run main.py

client.py を使用するLLMに合わせて編集します。

client.py
from openai import AsyncOpenAI

def get_client() -> AsyncOpenAI:
return AsyncOpenAI(
base_url = 'http://localhost:11434/v1',
api_key='ollama'
)

MODEL = "llama3-elyza-jp-8b"

するとこんな感じにチェックが始まります (gif)
大体 9,000 ツイートで 2時間ぐらいだったと思います(M3 Mac Pro, Proチップ, lucas2024/mistral-nemo-japanese-instruct-2408:q8_0)

備考

^C で途中で止めても、再開すると進捗は保たれています。

viewer で確認

cp results.json viewer/
cd viewer
uv run python -m http.server 8000

投稿紹介

@BonyChops で投稿されたもののうち、これで発掘できたヤバツイートの一部を紹介します。

投稿スコア
あーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーうんち!w10
本質情報: Cはゴミです!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9.5
緊張を紛らわす方法は?現役エンジニアが実際に調べてみました!!!!! 死にましょう9
彼女に全部注文任せて、こっちから「〜はどうなさいますか?」とか聞いても「アァ…」とかカオナシみたいなことしか言えない彼氏なっさけねえなあ(ヘイトスピーチ)9
ラーメン屋にいた子供「ラーメン!つけ麺!僕ちんちん!!」 ぼく「草です」8.5
ルータって3MBしか容量ないの!!?5000000000超TBぐらい用意しとけよ!!!!!!8.5
情報科に就任した世界線の***「お前L4理解してないってことはセッション始める権利がないってことだぞ(野太い声)」18.5
***のせいで目が覚めたわ 夜中にFPSやってんじゃねえよまじで許さん18.5
なんで寮って年齢重ねれば偉くなったと勘違いしてる輩多いんだろうね 裏ではどうせ「老○がーww」とか言ってるくせに自分も同じことやってることに気づいてないの本当に愚か18.5
もう殺せ8
レポート提出24時間切った民のツイートは面白いことで有名(殺してください)8
消費者「本当のこと言って何が悪いんだこのバアアアアアア!!!!」8
テスト2日前にレポートをする5J「鳴かぬから,殺せ(字余り)」28
アーニャ 切れ痔いたい8
Oracle,名前がオラオラだしやっぱりヤクザだったんすね18
研究室に殺傷力が高いしずかちゃんいた38
べつにツイートに面白みなんてなくていいか 好きにつぶやかせてもらうぜ,うんこ8
生き恥晒してる まじで助けてほしい8
プロ演終わらん問題,そうかクオリティ下げればいいのか!になってる48
I「今回は面白いものを入れてみました.自動で字幕で出ます」
授業自動字幕「2Kでドラッグやってたけど,信じらんないよ.ドラッグ.」
授業自動字幕「キメラを野に放つ」
授業自動字幕「国会の声寝技というのが楽しかった」
8
J「コレクション名間違えて参照しドキュメント消したときはどうする?」
俺「俺が100番教室でお前を100回○す」
8
俺も明日の発表で失敗したら起きてもないAWS障害のせいにするかー8
高専の最大のメリットはそのカリキュラムというより,膨大な時間があることだと思うの
別にJにいるからプログラミングできなきゃいけないなんてことはないと思ってて,むしろプログラミングが好きか嫌いかハッキリしないまま卒業するほうが悲惨だと思うな
5
8
早くコロナは真実をお話しろよ8
もっとうんちみたいなツイートしないとな うんち!68
もう†パスワード認証†でいいか? 辞書攻撃お待ちしております(お待ちしていません)8
Mac / Linux(学校推奨以外のOS)使ってる俺w(やり方わからんけど)は何よりもダサい
本当にそのOSが好きなら,それで使えるように自分で工夫すべき(Bootcamp, Wine, VM, 代行ツールを探す/作る, まず調べる)
「学校側が指定するな!教員○○使えないんじゃないの〜w」はまじで迷惑だしダサい
8

まとめ

黒歴史に気をつけよう。

Footnotes

  1. 削除済み 2 3 4

  2. 字足らずだろ

  3. 絵の転載で万バズ

  4. これすき

  5. 本質情報

  6. この頃のうんちツイートに対する使命感はなんなんや