mcpField
S
slop-check

slop-check

github.com/numen-techその他5858 回インストール17 週間前に更新
リポジトリ

slop-check について

Slop Checkは、Slop or Not Proのテキスト・画像分析を実行するスキルです。AI生成の検出、読みやすさの評価、テキストのクリーニングを単発の手順で行い、検出・スコア評価・Pro確認を区別します。

主な機能

  1. 01テキストや画像のAI生成検出
  2. 02テキストの読みやすさ評価
  3. 03不可視文字や類似文字の除去
  4. 04MCPまたはアプリ内CLIで実行
  5. 05Pro機能の有効状態を確認

活用シーン

  1. 01テキストがAI生成かどうかを確認
  2. 02画像がAI生成かどうかを判定
  3. 03テキストの読解難易度を評価
  4. 04不可視文字や不審な記号を除去

MCP 対応

テキスト、読みやすさ、クリーニング、状態確認にはSlopOrNot MCPサーバーを使用します。画像操作ではローカルシェルが使える場合にアプリ内CLIを優先し、必要に応じてMCPに切り替えます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/numen-tech/slopornot --skill slop-check

インストール後、Claude Code で/slop-checkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
references/
slop-setup.md
slop-tools.md

詳細

Slop Check

Slop or Not Pro のデバイス上分析にワンショットでアクセスします。AI が生成したテキストや画像を検出したり、AI 生成物の痕跡を除去したり、読みやすさを評価して、明確な判定を報告します。質問や繰り返しのやり取りはありません。

スラッシュコマンド: /slop-check [paste text | file path | image path]

重要なルール

  1. image-detect と明示的に指定された image-score では、現在のクライアントでローカルのシェルコマンドを実行できる場合、必ずアプリバンドル内の CLI を優先してください。CLI を実行できない、または実行に失敗した場合に限り、画像操作に MCP を使用してください。テキスト、読みやすさ、クリーンアップ、ステータスについては、CLI より先に MCP を試してください。
  2. 実際に Pro 専用の呼び出しを行って Pro を確認する必要があります。slop_status または slop status の結果から Pro だと推測してはいけません。どちらも Pro ではないユーザーでも成功します。
  3. 構造化質問ツールの応答を待ってはいけません。Step 1 の優先順位ルールで曖昧さを解消してその前提を明記するか、プレーンテキストで唯一の入力要求を出してください。プレーンテキストはあらゆるハーネスで表示されます。
  4. シンボリックリンクを作成したり、シェルの rc ファイルを編集したり、その他の方法で PATH を変更したりしてはいけません。CLI を使う場合は、常にアプリバンドル内の絶対パス /Applications/Slop Or Not.app/Contents/MacOS/slop を優先してください。検出、読みやすさ、クリーンアップ、スコア、ステータスは出力のみの操作です。許可を求めず、すぐに実行してください。
  5. 検出スコアは 0~1 の小数です。表示する際は必ず 100 を掛けてください。読みやすさの値は学年または読みやすさの数値であり、パーセンテージに変換してはいけません。フラグや JSON フィールドのパスを推測してはいけません。references/slop-tools.md で確認してください。
  6. 画像チェックでは detect_image を既定で使用してください。score_image は、ユーザーが未加工または絶対的な OmniAID スコアを明示的に求めた場合に限り使用してください。OmniAID に触れずに「この画像をスコアリングして」と依頼された場合は、image-detect に該当します。

Step 1:操作と入力を特定する

依頼から操作を 1 つ選びます。曖昧さを解消するための質問はしないでください。

操作該当する表現
text-detect「これは AI ですか」、「ボットがこれを書きましたか」、「AI が書いた」
image-detect「この画像は AI ですか」、「AI が生成した画像」、「本物の写真」
image-score「未加工の OmniAID スコア」、「絶対的な OmniAID モデルスコア」
readability「読解レベル」、「何年生向け」、「Flesch」、「どのくらい読みやすいか」、または数式の固有名(「LIX」、「Wiener Sachtextformel」、「Gulpease」、「Flesch-Szigriszt」、「Reading Ease」)
cleanup「これをクリーンアップ」、「不可視文字/ゼロ幅文字を除去」、「ホモグリフを除去」
status「Slop はセットアップされていますか」、「Slop or Not は動作していますか」、「Pro を確認」

優先順位に従って入力を特定します(最初に該当したものを使用します)。

  1. .png、.jpg、.jpeg、.heic、.webp で終わるパス、または明示的な画像への言及:そのファイルを対象とする画像操作。
  2. その他の明示的なファイルパス:そのファイルをテキストとして読み込みます。
  3. 依頼に貼り付けられたインラインテキスト:そのテキストを使用します。
  4. クリップボードを使うよう指示された場合:pbpaste。

曖昧さの解決ルール(ツール経由で質問してはいけません):操作を示す動詞がない場合、テキスト入力には text-detect、画像入力には image-detect を既定で適用し、その前提を出力に明記します。たとえば、「AI 検出と解釈しました。読みやすさ評価またはクリーンアップを希望する場合は、そのように指定してください。」とします。

使用可能な入力がまったくない場合に限り、次の 1 行だけを出力して、そのまま停止して待ちます。

Paste the text, or give a file or image path, and say detect / clean / readability.

ステップ 2:動作するバックエンドを特定する

次の順序でバックエンドを使用します。最初に機能したものを使用して終了します。

  1. シェルを利用できる画像操作:まず CLI を使用します。 image-detect と image-score では、まずアプリバンドル内のバイナリを確認します。

    ls "/Applications/Slop Or Not.app/Contents/MacOS/slop"
    

    存在し、クライアントがシェルコマンドを実行できる場合は、その引用符で囲んだ バイナリパスを使用します。これにより、ローカルの画像ファイルを base64 に 変換せずに済みます。クライアントにシェルまたは CLI の実行機能がない場合は、 Claude Desktop や ChatGPT コネクターなどの MCP 専用クライアントと同様に、 MCP に進みます。

  2. 画像以外の操作には MCP を使用し、画像ではフォールバックとして使用します。 該当する操作の SlopOrNot MCP ツールを呼び出します(Claude Code では mcp__SlopOrNot__<tool> として表示されます。他のハーネスでは、 同じ SlopOrNot サーバーツールが公開されます)。結果が返され、Pro が 必要なエラー(isError: true または Pro が必要というメッセージ)でない場合は、 その結果を使用します。status の場合、slop_status はヘルス/バージョン確認 のみです。Pro が有効だと報告する前に、references/slop-tools.md の セクション 5 にある Pro 検証プローブも実行します。完了です。

  3. 画像以外の操作では CLI にフォールバックします。 MCP がないかエラーになった場合は、 アプリバンドル内のバイナリが存在するか確認します。

    ls "/Applications/Slop Or Not.app/Contents/MacOS/slop"
    
    • 存在する場合:このターンの操作を、絶対パスを引用符で囲んでバイナリを呼び出し、 完了します。PATH は変更しないでください。
    • 存在しない場合:実際にインストールされていません。ステップ 5 の 「未インストール」フォールバックに進みます。 status の場合は、絶対パスのバイナリで status --json を実行し、 Pro が有効だと報告する前に Pro 検証プローブも実行します。
  4. Pro が必要な操作の失敗。 CLI は実行できても、Pro が必要な呼び出しが 0 以外で終了するか、Pro が必要という結果を返す場合、アプリはインストール済みですが Pro は有効ではありません。ステップ 5 の「インストール済みだが Pro が有効ではない」 フォールバックに進みます。status の場合は、代わりにステップ 4 に従って Pro を無効として報告します。

ツール名、フラグ、パラメーター、JSON フィールドパスは references/slop-tools.md に記載されています。セットアップと登録の詳細は references/slop-setup.md に記載されています。これらを参照し、推測しないでください。

ステップ 3:操作を実行する

references/slop-tools.md のセクション 5 にある、操作とツールの対応表を使用します。 重要な点:

  • text-detect:検出とあわせて読みやすさもリクエストします (MCP では include_readability: true、slop text --json では両方が返されます)。入力言語を判定できる場合は、正規化した language_code を渡します (ノルウェー語ブークモールは nb です。マクロの no は渡さず、nb に 置き換えてください)。判定が曖昧な場合は省略し、アプリに自動判定させます。 nn(ニーノシュク)を渡しても問題ありませんが、他の英語以外の言語と同じく、 kind: "not_english" と null のスコアが返されます。英語以外の入力に対して detect_text は kind: "not_english" と null のスコアを返します。ステップ 4 を 参照してください。
  • readability:判定できる場合は、同じ正規化済みの language_code を渡します。 ノルウェー語ブークモールは nb です。判定された no は、渡す前に必ず nb に 置き換えてください(no は渡さないでください。ブークモールのテキストであっても unsupported_language:no が返されます)。返される scores[] の kind は言語に よって異なり、常に Flesch-Kincaid とは限りません。返された kind を確認してください (ステップ 4 と references/slop-tools.md のセクション 2 を参照)。
  • 画像:デフォルトでは image-detect を使用します。シェルコマンドを利用できる場合は、 画像パスからのシェルリダイレクトを使って、絶対パスの CLI を使用します: "/Applications/Slop Or Not.app/Contents/MacOS/slop" image --json < "<path>"。 MCP では、CLI がサポートされていないか失敗した場合に限り、base64 (base64 -i <path>)を使用して detect_image を呼び出します。image-score に 対してのみ score-image/score_image を使用し、ユーザーが生の OmniAID スコアまたは 絶対的な OmniAID スコアを明示的に求めた場合に限ります。OmniAID に言及せず、 一般的な画像スコアを求めている場合は、image-detect を使用し、検出確率を フォーマットします。
  • cleanup:ユーザーが削除項目を制限するよう求めない限り、デフォルトの削除項目を 有効のままにします。フォーマット前に、MCP と CLI のクリーンアップフィールドを 正規化します。MCP は cleaned_text と整数の件数を返し、CLI は cleanedText と 件数の配列を返します。
  • status:ヘルス確認を実行してから、Pro 検証プローブを実行します。Pro が必要な プローブが成功した場合にのみ、有効として報告します。

ステップ 4:結果を提示する

まず references/slop-tools.md のセクション 2 でスコアの正規化を確認します (検出スコアは 0~1 の小数なので 100 を掛けます。MCP の verdict は プレーンな文字列で、CLI の verdict は detection.result._1 にある単一キーのオブジェクトです)。

該当するブロックを表示します。

検出(テキストまたは画像):

**Likely AI** (most_likely_ai_slop) · 87% AI probability
Language: en · Sentences: 6

ルールに従って verdict を割り当てます(verdict には probably_ai_slop のような段階があります)。 real -> 「人間が書いた可能性が高い」、ai_slop を含む -> 「AI 生成の可能性が高い」、それ以外は タイトルケースにします。ラベル、括弧内に生の verdict、パーセンテージを表示します。

MCP の detect_text が kind: "not_english"(英語以外の入力)を返す場合、 score と verdict は null です。CLI の slop text --json では、 detection.result を読み取る前に同じケースを正規化します。detection.notEnglish、 detection.not_english、正規化された kind: "not_english" のいずれかがある場合、 またはレスポンスに英語以外の detectedLanguage / readability.language があり、 detection.result も detection.resultFewSentences もない場合は、AI スコアと verdict を null として扱います。 AI のパーセンテージは表示しないでください。代わりに「AI text detection is English-only; no score available for .」と表示し (言語は language、detectedLanguage、readability.language のいずれかのフィールドから読み取ります)、 続けてレスポンスに readability ブロックがあれば表示します。英語以外の入力に対して、スコアを決して推測しないでください。

読みやすさ:

scores[] が返す kind を読み取り、fleschKincaidGradeLevel と決めつけないでください。 言語が 2 種類の kind を返す場合(英語:fleschKincaidGradeLevel と fleschReadingEase)、Flesch-Kincaid の学年レベルで評価し、それを先に表示して、 Reading Ease は補足値として括弧内に表示します。Reading Ease は 0~100 の尺度が逆転しているため、 Reading Ease から評価を導き出さないでください。単一の kind を返す言語では、その kind で評価します。 数式の表示名、尺度の方向、評価範囲は references/slop-tools.md のセクション 2 で確認します。 数式名、値、検出された言語、評価を表示します。

**Flesch-Kincaid grade: 9.7** (Reading Ease 62.4)
Language: en · Band: High school · Words: 210 · Sentences: 14

英語以外の場合は、返された kind に基づいてラベルを付けます。例:

**Wiener Sachtextformel: 11.2**
Language: de · Band: High school · Words: 180 · Sentences: 12

scores[] が空の場合は warnings を読み取ります。警告はバックエンドにより 2 種類の形式で返されます。MCP はコロン区切りの文字列(unsupported_language:<code>、 insufficient_text:NN、approximate_syllable_counts:<lang>)を返し、 CLI は readability.warnings[] 内の camelCase オブジェクト(unsupportedLanguage、 insufficientText、任意で wordCount)を返します。この 2 つの形式は同等に扱います。unsupported_language / unsupportedLanguage はスコアを利用できないことを意味します(「このアプリのバージョンでは の読みやすさを評価できません」と報告します)。insufficient_text / insufficientText はソフト警告です(スコアが含まれる場合もあります。参考情報として扱います)。「信頼性の高いスコア評価に必要なテキスト量が不足しています(insufficient_text:28)。」と報告します。approximate_syllable_counts / approximateSyllableCounts は問題ありません。値を推測しないでください。

クリーンアップ: 件数の行を表示してから、ユーザーがそのままコピーできるよう、クリーンアップ済みテキストを独立した text フェンスブロックに表示します。CLI の出力では、クリーンアップ済みテキストに cleanedText を使用し、invisibleCounts[].count、 punctuationCounts[].count、homoglyphCounts[].count を合計し、 britishMappings.length を数えます。

**クリーンアップ済み。** 不可視文字:3 · 句読点:5 · 同形異字:1 · イギリス英語表記:0 に続けて、cleaned_text のみを含む text フェンスブロックを表示します。

画像スコア(OmniAID の明示的なリクエストがあった場合のみ):

**Raw image score: 0.80** (OmniAID)

ステータス:

**Slop or Not Pro: active** (version 1.0.9)

ヘルスチェックの呼び出しが成功しても、Pro の証明プローブが Pro 必須エラーを返す場合は inactive を使用します。

曖昧性ルールが適用された場合は、先頭に 1 行の前提に関する注記を追加します。

Step 5: Slop or Not が利用できない場合のフォールバック

異なるケースが 2 つあります。実際の状態に合ったメッセージを選んでください。インストール済みのユーザーに、アプリのインストールを案内してはいけません。

未インストール(MCP が停止しており、アプリバンドルも存在しない場合)。最後に、次の段落をそのまま記載します。

Slop or Not はインストールされていません。Slop or Not for Mac をインストールし、アプリ内から Pro のロックを解除してください:https://slopornot.ai/download

インストール済みだが Pro が有効ではない(slop バイナリまたはアプリバンドルが存在するものの、Pro が必要な呼び出しで Pro が必要という応答が返されたか、ゼロ以外の終了コードで終了した場合)。最後に、次の段落をそのまま記載します。

Slop or Not はインストールされていますが、Pro は有効ではありません。アプリ内の「設定」から「サブスクリプション」に進み、Pro のロックを解除してください:https://slopornot.ai/download

どちらの場合も、その後に、インストール、Pro のロック解除、MCP/CLI の登録については references/slop-setup.md を参照するよう伝えます。PATH が見つからないだけの場合は、ここに案内するのではなく、Step 2 のアプリバンドルフォールバックで処理します。status 操作の場合は、これらの段落の代わりに Step 4 に従って Slop or Not Pro: inactive と報告します。

例

例 A、テキスト検出(動詞がなく、曖昧さのルールが適用される場合):

ユーザー:/slop-check In today's fast-paced digital landscape, leveraging synergies is paramount.

アクション:動詞がなく、テキスト入力なので、デフォルトの text-detect を使用します。include_readability: true を指定して、MCP の detect_text を呼び出します。

出力:

Assumed AI-detection. Ask for readability or cleanup to switch.

**Likely AI** (most_likely_ai_slop) · 91% AI probability
Language: en · Sentences: 1

例 B、パスを指定した画像検出:

ユーザー:is this AI? ~/Desktop/art.png

アクション:パスが .png で終わるため、image-detect を使用します。シェルコマンドを利用できるため、アプリバンドルの CLI を使用します: "/Applications/Slop Or Not.app/Contents/MacOS/slop" image --json < "$HOME/Desktop/art.png"。

出力:

**Likely AI** (most_likely_ai_slop) · 80% AI probability

例 C、ファイルの読みやすさ:

ユーザー:what grade level is draft.md

アクション:ファイルパスが明示されているため、readability を使用します。ファイルの内容と、検出可能な場合は正規化した language_code を指定して、MCP の analyze_readability を呼び出します。返された scores[] の kind を読み取ります(この例では、英語の fleschKincaidGradeLevel です)。

出力:

**Flesch-Kincaid grade: 7.2** (Reading Ease 71.8)
Language: en · Band: Middle school · Words: 148 · Sentences: 11

ドイツ語のファイルでは、同じ操作で wienerSachtextformel4 を読み取り、ドイツ語のレベル区分とともに「Wiener Sachtextformel」と表示します。

例 D、ゼロ幅文字を含むテキストのクリーニング:

ユーザー:clean the invisible characters out of this: Hello​world

アクション:cleanup を使用します。MCP の clean_text を呼び出します(デフォルトで有効)。

出力:件数の行 **Cleaned.** Invisibles: 1 · Punctuation: 0 · Homoglyphs: 0 · British: 0 に続いて、内容が Helloworld のみの text フェンス付きコードブロックを出力します(ゼロ幅文字を削除)。

例 E、OmniAID スコアの明示的な指定:

ユーザー:give me the raw OmniAID score for ~/Desktop/art.png

アクション:OmniAID の明示的なリクエストなので、image-score を使用します。シェルコマンドを利用できるため、アプリバンドルの CLI を使用します: "/Applications/Slop Or Not.app/Contents/MacOS/slop" score-image --json < "$HOME/Desktop/art.png"。 CLI の実行がサポートされていない場合は、画像を base64 形式で入力して MCP の score_image を使用します。

出力:

**Raw image score: 0.80** (OmniAID)

参照ファイル

  • references/slop-tools.md:CLI と MCP の全機能、パラメーター、フラグ、JSON フィールドパス、スコアの正規化、Pro の制限、操作一覧。
  • references/slop-setup.md:インストール、Pro のロック解除、アプリバンドルのフォールバック、MCP/CLI の登録、トラブルシューティング。

コメント