LLM Moderator for wpForo
This plugin integrates AI-powered content moderation with the wpForo forum plugin. It uses OpenRouter API to analyze forum posts and topics in real-time, automatically flagging inappropriate content and muting users who violate your custom forum moderation guidelines.
Important Note
This plugin is in beta. 1st release! Backup your site before installing beta software.
Base Features
- AI-Powered Moderation: Uses OpenRouter API with configurable AI models (default: deepseek/deepseek-chat-v3.2)
- Private by default: Considerable forum and user privacy by default when sending user data for analysis
- Flexible Flagging System: Customizable flag types (flag, nsfw, spam, etc.) with individual mute durations
- User Management: Automatically moves flagged users to a ”Muted” database table
- Flags Only Supported: Enable only for flag metrics, stealthy tag users without applying mute penalty
- Standalone Admin Interface: Accessible to both Administrators, Moderators, and assigned usergroups
- Real-time Processing: Analyzes posts and topics as they’re submitted, set your OpenRouter query timeout limit
- Append AI Message: Append custom messages with {TYPE} and {REASON} formatting tags
- Content Cleanup: Automatically handles unapproved content removal
- Scheduled Maintenance: Daily cleanup of expired mutes
- Metrics: Track basic moderation statistics up to 1 year (5 years in premium)
- Notifications: Shortcode for user notifications about moderation and mute status
Requirements
- WordPress 6.0+ (Tested 6.9)
- wpForo plugin active (Tested current: 2.4.15, Previous versions tested 2.4.8 – 2.4.15)
- PHP 8.0+ (Tested 8.2)
- MySQL 8.0+ (Tested 8.0)
- OpenRouter API key
Shortcode
This plugin provides shortcodes for displaying moderation-related content on your site.
Base Plugin Shortcode
[colaias_wpforo_ai_notices] – Displays user notifications about moderation and mute status
Usage:
[colaias_wpforo_ai_notices top='30px' right='30%' width='40%']
Parameters:
* top – (Optional) Top position of the notification container. Default: ’20px’
* right – (Optional) Right position of the notification container. Default: ’20px’
* width – (Optional) Width of the notification container. Default: ’350px’
Placement:
Add this shortcode to the [wpforo] page. The notifications will display information to users:
* When a user is muted cannot not post
* When a user’s post has been flagged
* Moderation status updates
Check out Premium 🚀
✨ Premium Version ✨
Upgrade to the premium version for advanced features including:
🌟 Enhanced Features: * 🛠️ Enhanced Moderator Control Panel – Bulk select management for efficient moderation * 🎨 Easy Prompt Engineering Interface – Visual prompt builder with templates * 🌊 Forum Flood Control System – User and forum posting limits to prevent spam attacks * 📊 Comprehensive Premium Metrics – 5-year data retention with detailed analytics * 📈 Enhanced Charts & Graphs – Beautiful visualizations with user table for metrics * 🔎 User Look-Up – Look up individual users flag metrics * 💎 Lifetime Single Purchase – No subscriptions, one-time payment for lifetime updates
💖 Support Independent Development: Your purchase helps keep this plugin free and actively maintained! Support innovation in open-source AI moderation tools.
📧 Interested in Premium? Contact us for early access and pricing: * Telegram: https://t.me/wpforo_ai
External Services
This plugin integrates with the OpenRouter API (https://openrouter.ai/) to provide AI-powered content moderation for wpForo forums. When configured with a valid OpenRouter API key, the plugin sends moderation requests to analyze forum posts in real-time.
The query is made to this url: ’https://openrouter.ai/api/v1/chat/completions’
Data Transmission and Privacy
What Data Is Sent: – Only the user’s post content is transmitted to OpenRouter – A moderation prompt configured by the administrator precedes the post content – No personally identifiable information (name, username, or user ID) is included in the post content – Each post from non-muted users triggers exactly one API request
Future Development: Future versions may include additional context (such as preceding and succeeding posts) to improve moderation accuracy. If implemented, usernames may be replaced with aliases to maintain user privacy. All planned features are subject to change based on development priorities.
About OpenRouter
OpenRouter is an AI routing service that provides access to multiple LLM models from various providers. When using this plugin, your data passes through OpenRouter to the selected AI model provider.
Important Links: – OpenRouter Privacy Policy: https://openrouter.ai/privacy – OpenRouter Terms of Service: https://openrouter.ai/terms – OpenRouter Data Collection Policy: https://openrouter.ai/docs/guides/privacy/data-collection
AI Provider Policies: Each LLM provider (such as OpenAI, Anthropic, DeepSeek, etc.) has its own data handling policies. For information on how different providers process data, see OpenRouter’s provider logging documentation: https://openrouter.ai/docs/guides/privacy/logging
Optional Data Sharing
You may optionally send: – Your site’s URL (via HTTP-Referer header) – Application title (via X-Title header)
These optional fields help OpenRouter rank applications and improve service quality.
Technical Implementation
API Request Structure: The plugin sends POST requests to OpenRouter (’https://openrouter.ai/api/v1/chat/completions’) with the following JSON payload structure:
$body = json_encode( [
'model' => $model,
'messages' => [
['role' => 'user', 'content' => $json_prompt],
],
'max_tokens' => 1000, // Maximum tokens in response (50-80 is typically sufficient)
'temperature' => 0.1,
'response_format' => ['type' => 'json_object'],
] );
Response Expectation: The plugin expects OpenRouter to return a JSON object containing moderation results with ’type’ and ’reason’ keys as specified in your moderation prompt.
Configuration Options: – The plugin uses default provider selection parameters. For advanced routing configuration, see: https://openrouter.ai/docs/guides/routing/provider-selection, though these can not be changed from default besides what is already configured above – You can customize request processing through the OpenRouter dashboard, including model selection and privacy policies on a per-key basis: https://openrouter.ai/settings/privacy – You can configure your key, and set limits and alerts as needed – With this plugin, you can also set a timeout for the OpenRouter query from 10-300 seconds
Requirements
- A valid OpenRouter API key must be configured in the plugin settings
- Your OpenRouter account must have sufficient credits for API usage
- Your prompt must specifically ask for a JSON format response with ’type’ key and optionally ’reason’ key, no other formats are accepted
