# AI Slop Checker

A free WordPress plugin that finds ChatGPT and Claude output pasted straight into posts, and fact-checks claims a model's training cutoff left behind.

Built by [Tampa Web Tech](https://tampawebtech.com). GPL-2.0-or-later — fork it, extend it, rename it, make it yours.

## Two problems, one plugin

**1. Pasted chat sessions.** When someone copies an answer out of ChatGPT or Claude and drops it into the editor, the reply usually comes with its packaging: a "Certainly! Here's the article you asked for" on top, and a "Would you like me to expand on any section?" at the bottom. The pattern scanner looks for that packaging. It runs locally, costs nothing, and needs no API key.

Hits near the end of a long post are weighted more heavily, because that is where the tail of a chat reply lands.

**2. Facts that have moved on.** A model writes confidently from training data with a cutoff date. Version numbers, prices, "the current largest", "as of 2023" — all of it can be quietly wrong by the time it publishes. The plugin pulls the most checkable sentences out of a post and runs them past a search-grounded model. Anything contested or low-confidence gets a second look from Google.

Verdicts are one of: **accurate**, **outdated**, **inaccurate**, or **unverifiable**. "Outdated" is the one to care about — it means the claim used to be true, which is exactly the failure mode a knowledge cutoff produces.

## What the pattern scanner looks for

- Dangling offers to keep working ("Would you like me to...", "Let me know if you'd like...", "3 more prompts")
- Assistant self-reference ("As an AI language model", "I don't have access to real-time data")
- Prompt echoes and delivery framing ("Certainly! Here's a draft", "As requested")
- Unfilled scaffolding (`[Insert company name]`, "Word count: 1,450", stray SEO briefing fields)
- Raw markdown that never converted (`**bold**`, `## headings`)
- Knowledge-cutoff language ("as of my last update", "the latest version is")

It detects **residue, not authorship**. A well-edited AI-assisted article scores clean — that's by design. The goal is catching copy-paste artifacts and stale facts, not policing how content was written.

## Fact-check providers

You can use **Perplexity**, **Gemini**, or both. Both are grounded: Perplexity searches at request time, and Gemini requests always attach the Google Search tool. Grounding matters more than which model you pick — an ungrounded model would be checking stale facts against stale facts.

Running both costs twice as much but is meaningfully stronger: claims the two agree on are reported with higher confidence, and claims they split on are marked **disputed** so a human decides.

You bring your own API keys. The pattern scanner works with no keys at all.

## Installation

1. Download the latest release zip (or clone this repo into `wp-content/plugins/`).
2. In wp-admin, go to **Plugins → Add New → Upload Plugin** and upload the zip.
3. Activate, then open **AI Slop** in the admin menu.
4. (Optional) Add a Perplexity and/or Gemini API key under settings to enable fact-checking.

**Requires:** WordPress 5.8+, PHP 7.4+

## External services

When fact-checking is enabled, post content is sent to the provider(s) you configure: [Perplexity](https://www.perplexity.ai/hub/legal/terms-of-service), [Google Gemini](https://ai.google.dev/gemini-api/terms), and Google's Custom Search / Fact Check Tools APIs for second-look verification. The pattern scanner never sends anything anywhere.

## License

[GPL-2.0-or-later](LICENSE). Contributions, forks, and pull requests welcome.
