惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
Vulnerabilities – Threatpost
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
V
Visual Studio Blog
L
Lohrmann on Cybersecurity
Latest news
Latest news
S
Securelist
The Last Watchdog
The Last Watchdog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
The Register - Security
The Register - Security
Webroot Blog
Webroot Blog
The Cloudflare Blog
S
Secure Thoughts
Y
Y Combinator Blog
aimingoo的专栏
aimingoo的专栏
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
N
News and Events Feed by Topic
S
Security Affairs
Attack and Defense Labs
Attack and Defense Labs
Microsoft Azure Blog
Microsoft Azure Blog
T
Tailwind CSS Blog
V2EX - 技术
V2EX - 技术
GbyAI
GbyAI
L
LINUX DO - 热门话题
PCI Perspectives
PCI Perspectives
Schneier on Security
Schneier on Security
V
V2EX
K
Kaspersky official blog
Hugging Face - Blog
Hugging Face - Blog
AWS News Blog
AWS News Blog
T
The Exploit Database - CXSecurity.com
C
CERT Recently Published Vulnerability Notes
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
T
Threatpost
WordPress大学
WordPress大学
SecWiki News
SecWiki News
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
A
Arctic Wolf
酷 壳 – CoolShell
酷 壳 – CoolShell
W
WeLiveSecurity
Jina AI
Jina AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
AI Content Filter: The Practitioner's Playbook for Killing Low-Quality LLM Slop at Scale
Aria13 · 2026-05-09 · via DEV Community

Aria13

If you run a forum, community, or any platform that accepts user-generated content, you've already felt it: the flood. Posts that technically answer the question but say nothing. Replies that hover at 400 words of confident-sounding noise. Comments that begin with "Great question!" and end with a bulleted list of things you could have googled in 30 seconds.

AI-generated content isn't going away. What you can do is build a practical filter stack that catches the bad stuff before it degrades your community's signal-to-noise ratio.

Here's what actually works.


The Signals That Betray Low-Quality AI Output

Before you build anything, understand what you're hunting. Low-quality AI content has consistent tells — not because it's "AI," but because it's lazy AI: prompt-in, dump-out, zero editing.

Structural tells:

  • Suspiciously consistent paragraph length (4–6 sentences, every single time)
  • Bulleted lists as the default response structure, even when prose would be more appropriate
  • Transitions like "Furthermore," "In conclusion," and "It's worth noting that" — phrases no human under 60 types spontaneously
  • Hedging language density: "may," "can," "often," "generally," "it depends" clustered together

Content tells:

  • Zero specificity. Real practitioners name versions, mention edge cases, share failure stories. AI fills the same space with generalities.
  • Missing pronouns of ownership. "One can," "users might" — no "I tried this on a 50k-row dataset and it exploded."
  • No cultural or temporal grounding. Real people reference what happened last week. AI output is curiously timeless.
  • Repetition of the original question, reworded, as the first paragraph.

Build a scoring rubric from these signals. Even a simple heuristic checklist gives you a 60–70% catch rate before you write a single line of code.


NLP Heuristics You Can Ship in a Weekend

You don't need a fine-tuned transformer to start filtering. These lightweight heuristics run fast and catch the bulk of slop:

Perplexity scoring. LLMs generate low-perplexity text — it's statistically predictable because that's the optimization target. Run submissions through a small local model (GPT-2 works fine for this) and flag anything with perplexity below your threshold. Tune it on a labeled sample of 200–300 posts from your platform.

Type-token ratio (TTR). Calculate unique words divided by total words. AI dumps tend to have lower TTR — they repeat sentence structures and vocabulary more than humans do. A TTR below 0.55 on a 300+ word post is a yellow flag.

Sentence length variance. Compute standard deviation of sentence lengths. Human writing is jagged — we mix one-word punches with long rambling clauses. AI output is smoother. Low variance (< 8 words std dev) correlates with generated content.

Transition phrase density. Build a list of 40–50 AI-characteristic transitions and count occurrences per 100 words. Anything above 3 hits per 100 words is suspect.

Stack these four into a composite score. In Python:

def score_post(text):
    scores = {
        "low_perplexity": check_perplexity(text),     # bool
        "low_ttr": ttr(text) < 0.55,                   # bool
        "smooth_sentences": sentence_variance(text) < 8, # bool
        "transition_density": transition_score(text) > 3  # bool
    }
    return sum(scores.values()) / len(scores)  # 0.0–1.0

Enter fullscreen mode Exit fullscreen mode

A score above 0.6 triggers human review. Above 0.8 goes to auto-hold.


Tools Worth Integrating (and Which Ones to Skip)

Worth your time:

  • Originality.ai API — best precision for long-form content, reasonable pricing at scale. Good for content sites, not real-time forum replies.
  • GPTZero API — solid for educational contexts, decent batch processing. More false positives on technical writing.
  • Local perplexity scoring with llama.cpp — free, runs on a $20/month VPS, tunable. Requires calibration per domain.
  • Perspective API (Google) — not for AI detection specifically, but excellent for low-effort/toxic combo posts. AI slop often co-occurs with low-quality engagement patterns it catches.

Skip for now:

  • Any browser extension marketed to teachers. Not designed for API integration, not calibrated for developer communities.
  • Watermarking schemes (SynthID, etc.) — only catches content generated by participating providers, easily bypassed by paraphrasing.

Building the Moderation Workflow

Detection is only half the problem. You need a workflow that doesn't burn out your mods or create false-positive drama.

Three-tier queue system:

  1. Auto-pass (score < 0.4): Post goes live immediately.
  2. Soft-hold (0.4–0.75): Post is visible to the author, pending mod review within 4 hours. No public flag.
  3. Hard-hold (> 0.75): Post held, author gets a generic "under review" notice. Mod reviews within 1 hour.

Never auto-delete. Your model will be wrong sometimes, and public auto-deletion creates the worst kind of community drama.

Feedback loop: When mods override your filter (pass a flagged post or hold a passing one), log it. Retrain your heuristics monthly. After 60 days of feedback loops, most teams get detection accuracy above 85% on their specific platform.

Account-level signals: A user who has 3 posts flagged in 30 days gets soft-rate-limited regardless of per-post scores. Behavioral signals compound the per-post analysis significantly.


Handling Edge Cases Without Breaking Your Community

The hardest part isn't detection — it's handling legitimate users who write in AI-adjacent styles (non-native English speakers, people with certain cognitive styles, technical writers trained on formal prose).

Do:

  • Weight account history heavily. A 2-year member with 400 posts gets benefit of the doubt; a 3-day account doesn't.
  • Create an appeal flow. One click, 48-hour turnaround, human review. Communicated clearly.
  • Publish your content quality standards explicitly. "We value specificity, personal experience, and concrete examples" gives users something to aim for.

Don't:

  • Show users their score. You'll just train the bad actors to optimize for your metrics.
  • Apply the same thresholds to all content types. A job listing has different norms than a technical tutorial.
  • Treat this as a solved problem. The models get better; your filter needs to evolve with them.

Putting It Together

The practical reality: no single tool catches everything, and chasing 100% accuracy will cost you more in false positives than you gain in slop removal. Aim for 80% catch rate with a low false-positive rate, build human review into the loop, and iterate.

Start with the heuristics, add one commercial API for calibration, build the three-tier queue, and create the feedback loop. You'll have something useful in production within two weeks.

I compiled everything into a practical guide: AI Content Filter: The Practitioner's Playbook