protonsystems / content-reviewer
Reusable Drupal module for plugin-based content issue scanning, admin review reporting, and deterministic fix commands.
Package info
gitlab.com/Proton.Systems/drupal/content-reviewer
Type:drupal-module
pkg:composer/protonsystems/content-reviewer
Requires
- php: ^8.3
- drupal/core: ^10 || ^11
- drupal/paragraphs: ^1.20
- protonsystems/qa: ^2.1
README
Reusable Drupal module for plugin-based content issue scanning, admin review reporting, and deterministic fix commands.
Purpose
The module is intended to be reused across Drupal 10 and Drupal 11 projects by installing it as a Composer package and enabling it in the target site.
Requirements
- PHP 8.3+
- Drupal 10 or 11
- ProtonSystems
qapackage (bundles theqa_audit_coreshared submodule) - Paragraphs
content-reviewer uses the shared scanner services from the bundled
qa_audit_core submodule inside protonsystems/qa and layers UI, reports,
and deterministic fix commands on top.
Features
- Provides an admin review UI at
/admin/reports/content-reviewer - Lists enabled issue plugins through
drush content-reviewer:list - Scans issues and exports structured JSON through
drush content-reviewer:scan - Applies deterministic fixes for auto-fixable issue plugins through
drush content-reviewer:fix - Retains legacy orphan paragraph analysis and cleanup commands
Built-In Issue Types
orphan_paragraphsbroken_referenceshardcoded_internal_absolute_urlslinkit_legacy_linkslinkit_broken_uuids
Installation
composer require protonsystems/content-reviewer
drush en content_reviewer
Usage
Generic issue commands:
drush content-reviewer:list
drush content-reviewer:scan orphan_paragraphs --stdout
drush content-reviewer:fix orphan_paragraphs --dry-run
Useful options:
--output=<path>: write JSON output to a file--stdout: print scan results to stdout--pretty=0|1: control pretty-printed JSON output--set=key=value: pass plugin-specific options, repeat as needed--dry-run=0|1: control whether fix commands persist changes
Examples:
drush content-reviewer:scan broken_references --set=max_reference_fields=300 --stdout
drush content-reviewer:scan hardcoded_internal_absolute_urls --set=hosts=example.com,www.example.com --stdout
drush content-reviewer:fix hardcoded_internal_absolute_urls --dry-run=0 --set=hosts=example.com,www.example.com
drush content-reviewer:fix linkit_broken_uuids --dry-run=0
Legacy orphan paragraph commands:
drush content_reviewer:analyze-orphaned-paragraphs
drush content_reviewer:verify-orphans
drush content_reviewer:delete-orphaned-paragraphs
Releasing A New Version On Packagist
Packagist publishes versions of protonsystems/content-reviewer from git tags.
Do not add a version field to composer.json; create and push a new release
tag instead.
For the first public release, submit the public Git repository URL to Packagist.
If you want automatic updates from GitLab, configure the Packagist integration
in GitLab under Settings > Integrations using your Packagist username and API
token.
Prepare the release commit on main:
git checkout main
git pull origin main
composer validate --no-check-publish --strict
git status
git add <files>
git commit -m "Release v1.0.0"
git push origin main
Create and push an annotated tag for the release:
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
Use semantic version tags such as v1.0.0. After the tag is pushed, Packagist
should detect the new version automatically. If it does not appear, open the
package page in Packagist and trigger a manual update.
Notes
- Keep a DB snapshot before non-dry-run cleanup commands
- Prefer internal or entity-relative replacements for same-site links instead of hardcoded production URLs
protonsystems/qamust expose a compatibleqa_audit_coresubmodule release line before external Packagist installs of this module will resolve