slop-check について
Slop Checkは、Slop or Not Proのテキスト・画像分析を実行するスキルです。AI生成の検出、読みやすさの評価、テキストのクリーニングを単発の手順で行い、検出・スコア評価・Pro確認を区別します。
主な機能
- 01テキストや画像のAI生成検出
- 02テキストの読みやすさ評価
- 03不可視文字や類似文字の除去
- 04MCPまたはアプリ内CLIで実行
- 05Pro機能の有効状態を確認
活用シーン
- 01テキストがAI生成かどうかを確認
- 02画像がAI生成かどうかを判定
- 03テキストの読解難易度を評価
- 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.mdreferences/slop-setup.mdslop-tools.md詳細
Slop Check
Slop or Not Pro のデバイス上分析にワンショットでアクセスします。AI が生成したテキストや画像を検出したり、AI 生成物の痕跡を除去したり、読みやすさを評価して、明確な判定を報告します。質問や繰り返しのやり取りはありません。
スラッシュコマンド: /slop-check [paste text | file path | image path]
重要なルール
image-detectと明示的に指定されたimage-scoreでは、現在のクライアントでローカルのシェルコマンドを実行できる場合、必ずアプリバンドル内の CLI を優先してください。CLI を実行できない、または実行に失敗した場合に限り、画像操作に MCP を使用してください。テキスト、読みやすさ、クリーンアップ、ステータスについては、CLI より先に MCP を試してください。- 実際に Pro 専用の呼び出しを行って Pro を確認する必要があります。
slop_statusまたはslop statusの結果から Pro だと推測してはいけません。どちらも Pro ではないユーザーでも成功します。 - 構造化質問ツールの応答を待ってはいけません。Step 1 の優先順位ルールで曖昧さを解消してその前提を明記するか、プレーンテキストで唯一の入力要求を出してください。プレーンテキストはあらゆるハーネスで表示されます。
- シンボリックリンクを作成したり、シェルの rc ファイルを編集したり、その他の方法で PATH を変更したりしてはいけません。CLI を使う場合は、常にアプリバンドル内の絶対パス
/Applications/Slop Or Not.app/Contents/MacOS/slopを優先してください。検出、読みやすさ、クリーンアップ、スコア、ステータスは出力のみの操作です。許可を求めず、すぐに実行してください。 - 検出スコアは 0~1 の小数です。表示する際は必ず 100 を掛けてください。読みやすさの値は学年または読みやすさの数値であり、パーセンテージに変換してはいけません。フラグや JSON フィールドのパスを推測してはいけません。
references/slop-tools.mdで確認してください。 - 画像チェックでは
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 を確認」 |
優先順位に従って入力を特定します(最初に該当したものを使用します)。
.png、.jpg、.jpeg、.heic、.webpで終わるパス、または明示的な画像への言及:そのファイルを対象とする画像操作。- その他の明示的なファイルパス:そのファイルをテキストとして読み込みます。
- 依頼に貼り付けられたインラインテキスト:そのテキストを使用します。
- クリップボードを使うよう指示された場合:
pbpaste。
曖昧さの解決ルール(ツール経由で質問してはいけません):操作を示す動詞がない場合、テキスト入力には text-detect、画像入力には image-detect を既定で適用し、その前提を出力に明記します。たとえば、「AI 検出と解釈しました。読みやすさ評価またはクリーンアップを希望する場合は、そのように指定してください。」とします。
使用可能な入力がまったくない場合に限り、次の 1 行だけを出力して、そのまま停止して待ちます。
Paste the text, or give a file or image path, and say detect / clean / readability.
ステップ 2:動作するバックエンドを特定する
次の順序でバックエンドを使用します。最初に機能したものを使用して終了します。
-
シェルを利用できる画像操作:まず CLI を使用します。
image-detectとimage-scoreでは、まずアプリバンドル内のバイナリを確認します。ls "/Applications/Slop Or Not.app/Contents/MacOS/slop"存在し、クライアントがシェルコマンドを実行できる場合は、その引用符で囲んだ バイナリパスを使用します。これにより、ローカルの画像ファイルを base64 に 変換せずに済みます。クライアントにシェルまたは CLI の実行機能がない場合は、 Claude Desktop や ChatGPT コネクターなどの MCP 専用クライアントと同様に、 MCP に進みます。
-
画像以外の操作には MCP を使用し、画像ではフォールバックとして使用します。 該当する操作の SlopOrNot MCP ツールを呼び出します(Claude Code では
mcp__SlopOrNot__<tool>として表示されます。他のハーネスでは、 同じSlopOrNotサーバーツールが公開されます)。結果が返され、Pro が 必要なエラー(isError: trueまたは Pro が必要というメッセージ)でない場合は、 その結果を使用します。statusの場合、slop_statusはヘルス/バージョン確認 のみです。Pro が有効だと報告する前に、references/slop-tools.mdの セクション 5 にある Pro 検証プローブも実行します。完了です。 -
画像以外の操作では CLI にフォールバックします。 MCP がないかエラーになった場合は、 アプリバンドル内のバイナリが存在するか確認します。
ls "/Applications/Slop Or Not.app/Contents/MacOS/slop"- 存在する場合:このターンの操作を、絶対パスを引用符で囲んでバイナリを呼び出し、 完了します。PATH は変更しないでください。
- 存在しない場合:実際にインストールされていません。ステップ 5 の
「未インストール」フォールバックに進みます。
statusの場合は、絶対パスのバイナリでstatus --jsonを実行し、 Pro が有効だと報告する前に Pro 検証プローブも実行します。
-
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: Helloworld
アクション: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 の登録、トラブルシューティング。