🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Glin Profanity

by @thegdsks

Profanity detection and content moderation library with leetspeak, Unicode homoglyph, and ML-powered detection. Use when filtering user-generated content, moderating comments, checking text for profanity, censoring messages, or building content moderation into applications. Supports 24 languages.

Versionv1.0.0
Downloads2,100
Stars⭐ 1
TERMINAL
clawhub install glin-profanity

πŸ“– About This Skill


name: glin-profanity description: Profanity detection and content moderation library with leetspeak, Unicode homoglyph, and ML-powered detection. Use when filtering user-generated content, moderating comments, checking text for profanity, censoring messages, or building content moderation into applications. Supports 24 languages.

Glin Profanity - Content Moderation Library

Profanity detection library that catches evasion attempts like leetspeak (f4ck, sh1t), Unicode tricks (Cyrillic lookalikes), and obfuscated text.

Installation

# JavaScript/TypeScript
npm install glin-profanity

Python

pip install glin-profanity

Quick Usage

JavaScript/TypeScript

import { checkProfanity, Filter } from 'glin-profanity';

// Simple check const result = checkProfanity("Your text here", { detectLeetspeak: true, normalizeUnicode: true, languages: ['english'] });

result.containsProfanity // boolean result.profaneWords // array of detected words result.processedText // censored version

// With Filter instance const filter = new Filter({ replaceWith: '***', detectLeetspeak: true, normalizeUnicode: true });

filter.isProfane("text") // boolean filter.checkProfanity("text") // full result object

Python

from glin_profanity import Filter

filter = Filter({ "languages": ["english"], "replace_with": "***", "detect_leetspeak": True })

filter.is_profane("text") # True/False filter.check_profanity("text") # Full result dict

React Hook

import { useProfanityChecker } from 'glin-profanity';

function ChatInput() { const { result, checkText } = useProfanityChecker({ detectLeetspeak: true });

return ( checkText(e.target.value)} /> ); }

Key Features

| Feature | Description | |---------|-------------| | Leetspeak detection | f4ck, sh1t, @$$ patterns | | Unicode normalization | Cyrillic fΥ½ck β†’ fuck | | 24 languages | Including Arabic, Chinese, Russian, Hindi | | Context whitelists | Medical, gaming, technical domains | | ML integration | Optional TensorFlow.js toxicity detection | | Result caching | LRU cache for performance |

Configuration Options

const filter = new Filter({
  languages: ['english', 'spanish'],     // Languages to check
  detectLeetspeak: true,                 // Catch f4ck, sh1t
  leetspeakLevel: 'moderate',            // basic | moderate | aggressive
  normalizeUnicode: true,                // Catch Unicode tricks
  replaceWith: '*',                      // Replacement character
  preserveFirstLetter: false,            // f* vs **
  customWords: ['badword'],              // Add custom words
  ignoreWords: ['hell'],                 // Whitelist words
  cacheSize: 1000                        // LRU cache entries
});

Context-Aware Analysis

import { analyzeContext } from 'glin-profanity';

const result = analyzeContext("The patient has a breast tumor", { domain: 'medical', // medical | gaming | technical | educational contextWindow: 3, // Words around match to consider confidenceThreshold: 0.7 // Minimum confidence to flag });

Batch Processing

import { batchCheck } from 'glin-profanity';

const results = batchCheck([ "Comment 1", "Comment 2", "Comment 3" ], { returnOnlyFlagged: true });

ML-Powered Detection (Optional)

import { loadToxicityModel, checkToxicity } from 'glin-profanity/ml';

await loadToxicityModel({ threshold: 0.9 });

const result = await checkToxicity("You're the worst"); // { toxic: true, categories: { toxicity: 0.92, insult: 0.87 } }

Common Patterns

Chat/Comment Moderation

const filter = new Filter({
  detectLeetspeak: true,
  normalizeUnicode: true,
  languages: ['english']
});

bot.on('message', (msg) => { if (filter.isProfane(msg.text)) { deleteMessage(msg); warnUser(msg.author); } });

Content Validation Before Publish

const result = filter.checkProfanity(userContent);

if (result.containsProfanity) { return { valid: false, issues: result.profaneWords, suggestion: result.processedText // Censored version }; }

Resources

  • Docs: https://www.typeweaver.com/docs/glin-profanity
  • Demo: https://www.glincker.com/tools/glin-profanity
  • GitHub: https://github.com/GLINCKER/glin-profanity
  • npm: https://www.npmjs.com/package/glin-profanity
  • PyPI: https://pypi.org/project/glin-profanity/