Chirp Moderation
Chirp Moderation scaffolds a complete, self-improving moderation pre-screening system for the Chirp microblogging module — moderation categories, a keyword vocabulary that grows every time a moderator rejects a chirp, and a report/hard-block manager that acts automatically on a screening match. A site can run this entire system with zero AI dependency; the companion Chirp AI Moderation module is a separate, optional layer on top for sites that also want an AI provider check.
Features
- Moderation categories — an admin-editable list of reasons a chirp gets flagged (spam, harassment, hate speech, threats of violence, etc.), each with its own "hard block" toggle. Ships with five starter categories out of the box.
- Self-improving keyword vocabulary — starts empty. Every time a moderator rejects a reported chirp and supplies a category and keyword/phrase, that phrase is added to the vocabulary automatically. The next chirp containing that phrase is then caught instantly, with no further moderator effort and no AI call.
- Hard block vs. soft block — a hard-block category match (e.g. slurs, threats of violence) rejects a chirp outright, before it's ever visible to anyone. A soft-block match unpublishes the chirp and routes it into Chirp's own moderator review queue for a human decision.
- Extends Chirp's existing moderation queue, not a second one — every keyword-sourced report (and, if Chirp AI Moderation is installed, every AI-sourced report) shows up in the same review queue as ordinary member reports, with the flagging source and matched category displayed inline.
- Zero JavaScript required — the category picker and keyword field on the moderator's Reject form are plain server-rendered HTML. The whole workflow, including vocabulary growth, works with JavaScript completely disabled.
- A real plugin architecture underneath — screening runs through a `ChirpModerationScreener` plugin type defined in Chirp core. This module provides the keyword-matching plugin; other modules (like Chirp AI Moderation) can add their own screening strategies without this module or Chirp core needing to know about them.
Post-Installation
Enabling the module immediately starts screening every new chirp (top-level posts and replies alike) against the keyword vocabulary — there's nothing further to configure to get basic protection running, though the vocabulary starts empty until moderators begin rejecting content.
To manage moderation categories, visit Configuration → Content → Chirp Moderation (/admin/config/content/chirp-moderation). This requires the Administer Chirp Moderation categories permission, which is deliberately separate from Chirp's own day-to-day Moderate reported chirps permission — reserve it for trusted site administrators, not general moderators.
Day-to-day moderator work (reviewing reports, approving or rejecting) happens entirely inside Chirp core's own existing moderation queue at /moderation/chirps — this module only adds fields and options to that existing page, it doesn't introduce a separate one.
Additional Requirements
- Chirp — the parent microblogging module this extends.
- Chirp Config (bundled with Chirp core) — owns the underlying "report" flag this module attaches fields to.
- Flag
No AI-related dependencies of any kind — those live entirely in the optional companion module below.
Recommended modules/libraries
Chirp AI Moderation — an optional companion module that adds an AI-provider moderation check on top of everything this module provides, for sites that want automated screening beyond keyword matching. Hard-depends on this module; installing this module alone does not require it.
Similar projects
This module is purpose-built infrastructure for Chirp's own comment-based microblogging model (chirps are comments on user entities, not nodes) and its existing Flag-based report/review queue — it extends that system rather than replacing it, so it isn't a drop-in alternative to general-purpose Drupal moderation/workflow modules, which typically target node-based content and don't share Chirp's own data model.
Supporting this Module
This module is supported by Lisa Harrison (lisa.rae), an individual contributor and long-time member of the Drupal community.
Community Documentation
See this project's own README.md for full developer documentation — data model, the screening pipeline, the two extension hooks Chirp core provides for a source-agnostic moderation queue, routes/permissions, and the test suite.