AIの実践 / FIELD NOTE

Slop Detector を改編:Decision Model で X と LinkedIn の投稿を選別する

Robin Bilgil の拡張機能を fork して EvoLink Luna Decision に接続。X の操作動画と、ソースのビルド、Chrome 開発者モード、API Key 接続の図解手順を紹介します。

原文(2026-10-22 版)からの翻訳

我的小工具Decision ModelSlop DetectorChrome 扩展EvoLink

Slop Detector を改編しました。X や LinkedIn を読んでいるときに、画面内のテキストを decision model が判断し、設定したルールに従ってスタンプを付けたり、薄く表示したり、非表示にしたりする Chrome 拡張機能です。

小さなツールですが、decision model の使い道は具体的です。コンテンツを判断し、その結果に応じてソフトウェアを動かす。 今回はそれを情報フィードに組み込みました。

まず出典を明記しておきます。元の Slop Detector の作者は Robin Bilgil です。私はこのプロジェクトを fork し、EvoLink Luna Decision、中国語・英語の UI、調整可能なしきい値を追加しました。フィードからのテキスト抽出、キャッシュ、表示方式などは元の実装を引き継いでいます。私の改編版はこちらです。原作者の表記と MIT ライセンスを保持しています。

情報フィードに Decision Model を使う理由

解決したかったのは、読むときの問題です。見た目は整っていても、読み終わると新しい情報がほとんど残らない投稿があります。決まり文句、繰り返される宣伝の型、具体性のない大きな主張にも注意力は使われます。

このツールでは、投稿のテキストと判断用の質問をモデルに渡し、その質問に対する確率を受け取ります。拡張機能は EvoLink の gpt-6-luna-decisions を使い、API が返す predicate の確率をしきい値と比較します。評価文を生成してから、その文章からスコアを推測する方式ではありません。

既定の質問は、「自動生成、AI 生成、またはその他の形で手間をかけずに作られ、価値が乏しい投稿か」という趣旨です。Prompt で質問を編集し、自分の読みたい内容に近づけることもできます。

ただし、この質問には限界があります。「AI が生成したか」と「価値があるか」は別の判断です。AI を使った文章でも有用なものはあり、人が書いても内容が薄いことはあります。私は個人の閲覧フィルターとして使っています。Slop のラベルは作者の AI 利用を証明するものでも、作者への最終評価でもありません。

同じ仕組みはコメントの一次選別、見込み客の分類、コンテンツの振り分けにも応用できそうです。これらは今後試せる方向で、この拡張機能が現在行っているのは X と LinkedIn のテキスト選別です。

実際の見え方:X の操作動画を 2 本

中国語 UI と英語 UI での操作録画から、フィードの部分を抜き出しました。記事内でそのまま再生できます。

[ 英語 UI で使用した際の X フィード:スクロール中に SLOP スタンプが表示される ]
[ 中国語 UI で使用した際の X フィード:一部の投稿に赤い SLOP スタンプが付く ]

スクロールすると、一部の投稿に赤い SLOP スタンプが付き、ほかの投稿は元の表示を保っています。本文を残したまま結果が見えるため、判断に納得できないときにも確認できます。

この 2 本が示しているのは X での使用例です。LinkedIn にも対応していますが、この動画には LinkedIn の実際の操作は含まれません。また、人が正解を付けたデータでの精度検証ではなく、検出精度、1 投稿あたりの処理時間や費用を示すものでもありません。

最初は Stamp(スタンプ) または Fade out(薄く表示) を選び、本文を見ながら判断が好みに合うか確認してから、Hide(非表示) を使うか決めるとよいと思います。

手順 1:リポジトリを clone してビルドする

必要なのは Chrome 120 以降、Git、Node 24.18 以降の 24.x、npm です。現在のリポジトリは Node 24.x を要求します。Node 22 や 25 しかない場合は、先にバージョンを切り替えてください。

ターミナルで次を順番に実行します。

sh
git clone https://github.com/cheercheung/slop-detector.git
cd slop-detector
npm ci
npm run build

ビルドが成功すると、リポジトリ内に dist フォルダーができます。次の手順ではこれを読み込みます。本記事は Chrome ウェブストア経由ではなく、ソースからインストールする方法です。

手順 2:開発者モードを有効にして dist を読み込む

  1. Chrome のアドレスバーに chrome://extensions/ と入力します。
  2. 右上の Developer mode(デベロッパー モード) をオンにします。
  3. 左上の Load unpacked(パッケージ化されていない拡張機能を読み込む) をクリックします。
  4. clone したリポジトリ内の dist フォルダーを選びます。ソース全体のフォルダーや ZIP ファイルではありません。
  5. ブラウザーの拡張機能メニューから Slop Detector を固定し、開きやすくします。
独立したテストブラウザーのインストール画面:開発者モードがオンで、左上に Load unpacked、一覧に読み込み済みの拡張機能がある
[ 独立したテストブラウザーのインストール画面:開発者モードがオンで、左上に Load unpacked、一覧に読み込み済みの拡張機能がある ]

画像は、この拡張機能だけを読み込んだ Chrome for Testing の別プロファイルで撮影しています。手元の Chrome でも同じ入口から操作できます。Chrome 公式の読み込み手順も参照できます。

拡張機能を開き、Decision model → EvoLink Luna Decision を選びます。新規インストール時は既定で選択されています。

拡張機能の UI は現在、英語と簡体字中国語に対応しています。この記事は日本語ですが、日本語 UI があるという意味ではありません。以下は英語 UI の名称に沿って説明します。

英語の設定画面:API Key 欄は空で、その下に Get a key と Connect、既定のしきい値は 70%
[ 英語の設定画面:API Key 欄は空で、その下に Get a key と Connect、既定のしきい値は 70% ]
  1. Get a key をクリックし、EvoLink の API Key 管理画面を開きます。
  2. 自分のアカウントにログインし、API Key を作成・コピーします。利用可能な残高も確認してください。
  3. 拡張機能に戻り、API Key 欄に貼り付けます。
  4. Connect をクリックします。Chrome がサービスへのアクセス許可を求めたら、direct.evolink.ai へのアクセスを許可します。
  5. Connected と表示されたら、フィードでの動作を確認します。

.env ファイルの作成や、ソースへの Key の記入は不要です。 画像では意図的に入力欄を空にしています。Key は自分で入力し、スクリーンショット、記事、GitHub には載せないでください。

接続時には合成サンプルのリクエストが 1 件送信され、API 料金が発生する場合があります。Connected は接続確認が通ったことを示します。その後、実際のフィードに検出結果が出るかも確認してください。失敗する場合は、サービスの選択、Key、残高、Chrome のアクセス許可を確認します。

手順 4:表示方法を選んで閲覧する

接続後は、まず次の設定で試せます。

設定最初の設定例目的
上部スイッチオン検出を有効にする
On slopStamp または Fade out元の本文を残して判断を確認する
Show scoreオンモデルが返した確率を見る
Show not-slop必要に応じてオンしきい値未満の内容も確認する
Slop thresholdまず 70%比較の基準を作る

画像の初期表示方法は Hide です。接続後に Stamp や Fade out に変えると、結果を確認しながら使えます。その後、X または LinkedIn を再読み込みし、読みたい投稿までスクロールします。処理対象は現在画面に見えているテキスト投稿、コメント、返信です。アカウント全体やタイムライン全部を一度に走査するものではなく、投稿内の画像や動画も分析しません。

既定のルールは Slop の確率が 70% 以上なら対象にする、というものです。70% は該当し、69.9% は該当しません。Not slop は補数で、たとえば Slop 80% なら Not slop 20% です。別モデルが返した独立したスコアではありません。

対象が多すぎると感じたらしきい値を上げ、より広く選別したければ下げます。変更時はキャッシュ済みのスコアでラベルを更新するため、しきい値を変えただけで、それらを再度モデルに送信することはありません。

質問を変えた場合や、新たに評価したい場合はキャッシュを消去できます。再評価のリクエストには料金が発生する場合があります。検出を止めたいときは上部スイッチをオフにします。

使うときに確認しておきたいこと

誤判定を許容できるか。 業界用語、短い宣伝文、文章の癖などが判断に影響することがあります。有用な投稿にスタンプが付いたら、本文を確認し、しきい値や質問を調整できます。

テキストの送信先。 拡張機能は、表示された投稿の文字を選択したサービスへ送信します。1 件あたり最大 6,000 文字で、decision model には判断用の質問も送られます。Key はローカルの拡張機能ストレージに保存され、同期されませんが、暗号化された保管庫ではありません。詳細はプライバシー説明を確認してください。

ラベルが出ないときは設定から。 検出が有効か、EvoLink が接続済みか、サイトへのアクセスが許可されているか確認してからページを再読み込みします。Not slop のラベルだけが出ない場合は、その表示スイッチも確認します。

更新する場合はリポジトリの最新版を取得し、npm ci と npm run build を再実行します。chrome://extensions/ で拡張機能カードの再読み込みを押し、フィードのページも更新してください。

今回の改編で変えたこと

主な変更は、EvoLink Luna Decision を既定のサービスにしたこと、中国語・英語の設定画面とフィードラベルを追加したこと、Slop のしきい値を 0%–100% で調整可能にし、既定値を 70% にしたことです。元のスタンプ、薄く表示、非表示、キャッシュなどの機能は引き続き使っています。

decision model を試すなら、このような小さなコンテンツ判断ツールは具体的な出発点になります。まず何を判断したいか決め、モデルの判断が実際の作業に役立つか観察してみてください。

私の改編版を clone する · 改編記録を読む · Robin Bilgil の原作を見る

SOURCE NOTE

Slop Detector 开源仓库与X 操作录屏