Use case
AI moderation for forums, using the thread as context
Forum moderators spend hours on reports, off-topic posts and arguments that got out of hand. VigiMod checks each new post before it is published, reading the previous posts in the thread and your forum's rules, so the clear cases are handled and only the doubtful ones reach a person.
What makes it hard
Replies make sense only in the thread
“You clearly didn't read it” is fine or rude depending on what came before. VigiMod reads up to ten previous posts.
Off-topic and selling
Many forums ban selling, politics or other topics. Rules in plain words catch them, like any category.
Too many reports
Holding flagged posts for review means moderators look at a short queue instead of the whole forum.
How it works with VigiMod
- 1
Before a new post is saved, your forum sends it to VigiMod with the last posts of the thread and your rules.
- 2
If nothing is flagged, the post is published as usual.
- 3
If something is flagged, the post waits in the moderation queue with the category that triggered it.
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-selling": "No buying or selling items",
"no-politics": "No discussions about politics or elections",
"on-topic": "Only photography talk here",
"no-personal-attacks": "No comments about other members instead of their arguments"
}
}Example
A Python function to call before saving a post: flagged posts wait for a moderator instead of going live.
Python
# pip install requests
# Call this before saving a new post: flagged posts wait for a moderator instead of going live.
import os
import requests
RULES = {
"no-selling": "No buying or selling items",
"on-topic": "Only photography talk here",
}
def check_post(text: str, author_id: str, thread: list[str]) -> dict:
r = requests.post(
"https://api.vigimod.com/moderate",
headers={"X-API-Key": os.environ["VIGIMOD_KEY"]},
json={
"text": text[:2000],
"context": [p[:2000] for p in thread[-10:]], # the previous posts of the thread
"rules": RULES,
"user_id": author_id,
"scope": "forum",
},
timeout=5,
)
r.raise_for_status()
return r.json()
# in your "new post" handler
result = check_post(post.body, str(post.author_id), [p.body for p in thread.posts])
post.status = "pending_review" if result["flagged"] else "published"
post.flagged_by = [name for name, hit in result["flags"].items() if hit]Tips
- Hold flagged posts for review instead of deleting them: moderators keep the final word.
- A message can be up to 2,000 characters: for longer posts, check the first part and the last part.
- Use different rules per section: a marketplace section allows selling, the general section does not.
Questions
- Does it work with Discourse, phpBB, Flarum or NodeBB?
- Yes, with a small plugin or a webhook: any forum that can make an HTTP call when a post is created can use VigiMod.
- What about long posts?
- Each message can be up to 2,000 characters. Check longer posts in parts, or the beginning and the end.
- Can each section have its own rules?
- Yes. Rules are sent with each request, so every section, category or tag can send different ones.
- Is it free?
- During the beta, yes: 120 messages per minute per API key and every feature included.
Keep learning
All guides- Basics · 5 min readWhy context matters in chat moderationThe same sentence can be harmless or harmful depending on what came before. How conversation context changes moderation, with real examples.
- Intermediate · 7 min readZero-shot classification: how a model understands rules written in plain wordsHow can a model enforce “No spoilers” if it was never trained on that rule? Natural language inference, entailment and custom moderation rules, explained.
- Basics · 5 min readHuman in the loop: how AI and moderators work best togetherAutomatic moderation is fast, people understand nuance. How to split the work, which actions to automate and which to leave to a person.
Try it on your community
Create a free API key in two minutes. No card, no trial period.