Problem/Motivation

The Content First module computes heading analysis on-the-fly when visiting a node's Content First tab. There is no way to get a site-wide overview of heading health, making SEO audit workflows impractical on sites with many nodes.

Steps to reproduce

  1. Install the Content First module on a site with multiple nodes.
  2. Try to identify all nodes with missing H1 tags, multiple H1s, or broken heading hierarchy.
  3. The only option is visiting each node's Content First tab individually.

Proposed resolution

  • Create a new sub-module content_first_audit that persists heading analysis results (H1 count, hierarchy validity) in a database table on node save.
  • Extract the heading analysis logic from the controller into a shared service to avoid duplication.
  • Provide a Views-based admin report at /admin/reports/content-first with filters and sorting to quickly identify problematic content.
  • Add a status report entry on /admin/reports/status summarizing heading health across the site.

Remaining tasks

  • Review and merge.

User interface changes

  • New admin report page at /admin/reports/content-first.
  • New menu link under Administration → Reports.
  • New entry on the status report page.

API changes

  • New shared heading analyzer service in the main module.
  • New repository service in the sub-module for audit data access.

Data model changes

New database table content_first_audit storing heading analysis results per node translation (entity ID, entity type, H1 count, hierarchy validity, language).

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

eduardo morales alberti’s picture

Issue summary: View changes

eduardo morales alberti’s picture

Status: Active » Needs review
StatusFileSize
new96.53 KB

Ready to review.
Example:
Content first audit view

eduardo morales alberti’s picture

Status: Needs review » Fixed

Merged!

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.