AI Content Audit scores every published page for Redundant, Outdated, and Trivial (ROT) content, while separately identifying exact duplicate sets. No content is changed until a site administrator approves each proposed action.
- Per-page ROT scoring — every scanned page receives age, traffic, priority, similarity, and ROT classification data, including pages that do not belong to a duplicate set.
- Age and staleness reporting — the ROT report stores creation-based node age and last-updated age separately from the normalized 0–1 staleness score used for priority, so migration timestamps do not hide legacy content.
- Similarity evidence without transitive clusters — semantic search can identify near-duplicate pages for per-page ROT review, but related pages are not unioned into inferred duplicate groups.
- Exact duplicate detection — groups nodes only when their normalized title and full editable content match exactly. Shared topics, similar titles, and repeated campaign language do not create clusters.
- Duplicate prioritization — combines traffic (from uploaded GA4 CSV data) and age into a priority score for each exact duplicate set.
- LLM-generated summaries — optionally asks an AI model to summarize why each cluster is flagged and what action it recommends.
- Automatic draft edit proposals — optionally asks an AI model to draft updates on canonical pages for merge/refresh clusters and saves them as approval-gated revisions.
- Action queue with approval gate — proposed actions (prune, merge, retire, merge, flag for review, proposed edits) are queued for administrator approval before any node is touched.
- Recommendation workflow — the ROT Scores view can be sorted by recommendation, and each recommendation links to a ROT detail page with a review decision or an Action Queue path.
- Draft edit proposals — an AI agent can save proposed text edits as a draft revision so admins can review a diff and approve or reject.
- Incremental batch scanning — large sites are scanned in configurable batches, resuming across cron runs.
- Automated scheduling — optionally runs a full scan on a configurable cron interval.
- AI agent tool integration — exposes a set of structured tools so an AI agent (via the AI Agents module) can query clusters, propose actions, and read node content programmatically.
- Backdrop CMS 1.x
- PHP 8.2 or later
- AI module with at least one configured text provider
- AI Search is not required for exact duplicate detection. It may still be enabled elsewhere on the site for search and related-content features.
- Install and enable the AI module if you want AI summaries or agent tools.
- Install and enable this module.
- Visit Admin → Configuration → AI → AI Content Audit to configure.
Navigate to Admin → Configuration → AI → AI Content Audit → Settings.
Key settings:
- Content scope — choose which content types are included in the scan.
- Cron scanning — enable automatic scans and set the interval and batch size.
- LLM summary model — model used to generate cluster summaries (can be left empty to skip summaries).
- Automatic draft edits — optional post-scan AI drafting for canonical pages in merge/refresh clusters, with a model choice and per-run cap.
- Individual AI edit suggestions — from an eligible page's ROT detail, Suggest AI edit drafts a revision for that page even when it is not a duplicate. The draft remains pending until an administrator reviews the diff and approves it from the Action Queue.
- Traffic data — upload a GA4 pageviews CSV to factor traffic into duplicate prioritization. Nodes with high traffic score lower for pruning.
Go to Admin → Configuration → AI → AI Content Audit. Click Scan Now to start an incremental scan. Progress is shown on the dashboard. Large sites may require multiple cron runs to complete.
The scan produces a ROT score for every page. It also produces duplicate sets only for exact matches. Similarity evidence contributes to the page's ROT classification, but semantically related pages are intentionally left out of the duplicate/consolidation workflow unless their normalized full content matches exactly.
If automatic draft edits are enabled, the module can also stage draft
revisions on canonical pages for high-value merge/refresh clusters. These are
saved as edit_proposed items with pending status and still require
administrator approval.
From an individual ROT detail page, Suggest AI edit uses the page's
editable source and ROT/lifecycle context to propose a refresh. It does not
merge pages, choose a canonical page, or publish anything; it creates the
same approval-gated edit_proposed revision used by the duplicate workflow.
Go to ROT Scores to review every page from the newest scan. Filter by Redundant, Outdated, Trivial, or Review. Use the Recommendation dropdown to show only outcomes such as Retire, Refresh, Prune, Merge, or Review; use Sort by separately to order the filtered results. Every row links to a detail page. Go to Duplicates to see exact duplicate sets ordered by priority. Click a duplicate set to see:
- All member nodes with their individual scores.
- The selected working canonical page and the exact duplicate candidates.
- The LLM-generated summary (if configured).
- Recommended action for each node.
Historical runs remain available from Runs, but the default Clusters view shows only the newest usable scan. A direct link to an older cluster is marked historical so old labels are not mistaken for current findings.
Actions proposed by the scan (or by an AI agent) appear in the Action Queue
tab. This includes pending edit_proposed draft revisions, which can be
reviewed through their diff links before approval. Select pending items and
click Approve selected, then click Apply approved when ready. Approved
actions are then executed by the queue processor.
Possible actions per candidate node:
| Action | Effect |
|---|---|
prune |
Unpublishes an exact duplicate node. |
retire |
Unpublishes a fully stale, very low-traffic legacy page after administrator approval. |
merge |
Sends the node into consolidation review; no node is removed automatically. |
flag_for_review |
Adds a watchdog notice; no structural change. |
edit_proposed |
Applies a saved draft revision after admin approval. |
ignored |
Records the decision; no change to the node. |
When used alongside the AI Agents module, AI Content Audit exposes the following tools for agent use:
| Tool | Description |
|---|---|
audit_list_clusters |
List clusters from the latest scan, filtered by state. |
audit_get_cluster |
Get full details for one cluster including candidate scores. |
audit_list_runs |
List recent scan runs with status and counts. |
audit_trigger_scan |
Trigger a scan batch immediately. |
audit_propose_action |
Propose an action for a candidate (queued for approval). |
audit_get_node_content |
Read current node text and any AI Content Lifecycle analysis. |
audit_propose_edit |
Save proposed text edits as a draft revision for admin review. |
All write operations (audit_propose_action, audit_propose_edit) are staged
for approval in the queue — the agent cannot apply changes directly.
Bugs and feature requests should be reported in the Issue Queue.
- Created for Backdrop CMS by Justin Keiser.
- Developed with AI assistance.
This project is GPL v2 software. See the LICENSE.txt file in this directory for complete text.