Use case
AI comment moderation for websites and blogs
Comment sections on news sites, blogs and shops fill up with insults, hate and ads, often in more than one language. VigiMod checks each comment before it is published and holds the ones that break your rules for a person to review.
What makes it hard
Hate under sensitive articles
News about migration, religion or politics attracts attacks on groups of people. The hate category is built for that.
Ads and links
Spam comments push shops and scams. The advertising category and your own rules hold them.
Readers in many languages
International sites get comments in many languages; the model was trained on 26.
How it works with VigiMod
- 1
When a comment is submitted, your site sends its text to VigiMod with your rules.
- 2
Clean comments are published as before.
- 3
Flagged comments go to the moderation queue instead of the page.
Rules you can copy
Send them in the rules field: each one comes back with its own score, like a built-in category.
{
"rules": {
"no-ads": "No advertising or links to shops",
"no-personal-attacks": "No attacks on the author or other readers",
"no-medical-claims": "No claims that a product cures a disease",
"on-topic": "Comments must be about the article"
}
}Example
A WordPress filter (functions.php or a small plugin): flagged comments wait for approval instead of going live. Define VIGIMOD_KEY in wp-config.php.
PHP (WordPress)
<?php
// WordPress: functions.php or a small plugin. In wp-config.php: define('VIGIMOD_KEY', 'vm_live_...');
// A flagged comment waits for approval instead of going live.
add_filter('pre_comment_approved', function ($approved, $comment) {
if ($approved === 'spam' || $approved === 'trash') {
return $approved;
}
$response = wp_remote_post('https://api.vigimod.com/moderate', [
'timeout' => 3,
'headers' => ['X-API-Key' => VIGIMOD_KEY, 'Content-Type' => 'application/json'],
'body' => wp_json_encode([
'text' => mb_substr($comment['comment_content'], 0, 2000),
'rules' => ['no-ads' => 'No advertising or links to shops'],
]),
]);
if (is_wp_error($response) || wp_remote_retrieve_response_code($response) !== 200) {
return $approved; // VigiMod not reachable: keep WordPress's own decision
}
$result = json_decode(wp_remote_retrieve_body($response), true);
return empty($result['flagged']) ? $approved : 0; // 0 = held for moderation
}, 10, 2);Tips
- Keep your spam plugin (for example Akismet): it knows spam networks, VigiMod adds toxicity, hate and your rules.
- If VigiMod cannot be reached, keep WordPress's own decision, as in the example.
- Send the article title as context for “on-topic” rules: the comment is read with what it answers.
Questions
- Does it work with WordPress?
- Yes, with the pre_comment_approved filter in the example. Other platforms can do the same when a comment is submitted.
- Will real comments be blocked?
- Flagged comments are held for approval, not deleted, so a person always has the last word.
- Is it GDPR compliant?
- Comments are checked and discarded, never stored or used for training. VigiMod is run from Italy, in the EU, and offers a data processing agreement.
- How much does it cost?
- Free during the beta, with 120 comments per minute per API key.
Keep learning
All guides- Basics · 5 min readFalse positives and false negatives in content moderationEvery moderation system makes two kinds of mistakes. What they are, what each one costs a community and how to keep both low.
- Intermediate · 6 min readHow to choose a moderation thresholdA score of 0.7 is not a decision. How thresholds work, why the default is only a starting point and a simple method to tune them on your own messages.
- Intermediate · 6 min readBias in moderation models: why innocent messages with foreign names get flaggedModeration models can flag “Mohammed missed the train” as hate. Where this bias comes from, how to measure it and how to remove it.
Try it on your community
Create a free API key in two minutes. No card, no trial period.