Skip to main content

Content moderation

Bellamy Book protects your community from inappropriate or harmful content with native GPT moderation (OpenAI) inside the API + ContentModerationWorker queue. Manual reports still use api/Moderation.

Release 2 made this a first-class product capability: posts/stories stay out of feeds until they pass checks, authors get clear UI feedback, and operators review flags in Admin → Content Alerts. See Release notes.

Why enable it​

GoalWhat happens
Protect membersRisky posts/stories never appear in feeds while Pending; high severity stays Rejected/hidden
Fair author UXCreators see “being moderated” on submit and get notified on approve/reject
Operator controlAdmins/Moderators triage Content Alerts (dismiss, hide, unhide, delete)
Self-hostedSame stack as Live Chat — no separate ContentDetect / Ollama service

Automatic pipeline​

Create post or story (API)
→ Pending + hidden (if ContentModeration__Enabled)
→ RabbitMQ ContentModerationMessage (ContentType: post | story)
→ ContentModerationWorker
→ GPT text (caption) + GPT vision (images)
→ high: Rejected + alert + notify creator
→ else: Approved + Unhide + PostReady / friends (+ alert for low/medium)

Posts and stories are not shown in feeds and friend notifications are deferred until the worker finishes.

Severity​

LevelBehavior
highReject — stay hidden; alert admins; notify author
low / mediumApprove + unhide; create admin alert + optional email
noneApprove + unhide; PostReady / go live

Member UI​

  • After create, if status is moderating, the app tells the author content is under review and they will be notified when it goes live.
  • Approved content appears normally; rejected content stays hidden with an author notification.

Configuration​

See Content moderation (self-host).

Admin UI​

Admin → Content → Content Alerts — filter by status/severity; open detail to review the live caption plus images/videos; dismiss, hide, unhide, or delete the post/story.

Manual reports​

Members can still report users, posts, or messages and block users via api/Moderation. That path is separate from the GPT auto-queue.