Orange Collar Media
Orange Collar Media
DOCS
OCMLABS/MODULE-SEO · SEO DASHBOARD

The SEO Dashboard, bulk re-scoring from the command line, and the nightly re-score job

  • Magento
  • Adobe Commerce
  • Hyvä

The SEO Dashboard at Marketing > SEO & Search > SEO Dashboard lists products, categories, and CMS pages in one grid, so you can see which pages need work without opening them one by one. Viewing it requires the OCMLabs_Seo::dashboard resource.

SEO Dashboard grid sorted by score, listing products, categories, and CMS pages with their bands and flags

Columns

ColumnDescription
IDThe record ID
TypeProduct, Category, or CMS Page
NameThe name or title
Store ViewThe store view the score belongs to
Focus KeywordThe page’s focus keyword
Score0 to 100
BandPoor, OK, Good, or Not scored, each with an icon
FlagsMissing title, Missing description, No focus keyword, Duplicate focus keyword, Noindex
RobotsThe page’s robots override, if any
Scored AtWhen the score was last calculated
ActionsEdit opens the page’s own edit screen, where the SEO panel is

Sort by Score ascending to put the weakest pages at the top.

Flags

FlagMeaning
Missing titleThe page has no meta title of its own. A meta template may still fill one in on the storefront.
Missing descriptionThe page has no meta description of its own.
No focus keywordNo focus keyword is set, so every keyword check is skipped.
Duplicate focus keywordAnother item of the same type in the same store view uses the same focus keyword, so the pages compete with each other.
NoindexThe page’s own robots override is set to noindex, follow or noindex, nofollow. Store-wide robots rules do not set this flag.

Filters

Filter by type, store view, band, and each flag. For example, filter Type = Product and Band = Poor to get a work list for the catalog team.

Mass actions

Select rows and choose from Actions. Both actions need the Mass Actions permission (OCMLabs_Seo::dashboard_manage).

  • Re-score runs the analysis again for the selected rows.
  • Set Robots sets the robots override on the selected rows to index, follow, noindex, follow, or noindex, nofollow, or clears it with Use Default. The affected pages’ cache tags are cleaned, so the storefront picks up the change without a full flush.

How pages get scored

There is one analysis. The live panel, save-time scoring, Re-score, the command-line tool, and the nightly job all use it, so the score on the dashboard matches what the panel shows.

  • On save. Saving a product, category, or CMS page scores it just after the save commits. A scoring problem is logged and never blocks the save.
  • From the command line. For pages nobody has opened since install.
  • Nightly. For pages changed outside the admin, such as by an import.

Scoring from the command line

Terminal window
bin/magento ocmlabs:seo:rescore [--entity=product|category|cms_page] [--store=<id>] [--only-unscored]
OptionDescription
--entityScore only product, category, or cms_page. Default is all three.
--storeRe-score only the existing store-view rows of this store view ID. CMS pages have no store-view rows, so none are scored with this option.
--only-unscoredSkip anything that already has a score.

The command works in batches of 500, emulating each store view as it goes, with a progress bar for each type. It exits with a non-zero status if any item could not be scored, so a deploy script can detect it; the details are written to var/log/ocmlabs_seo.log. The command runs even while Enable SEO Module is No.

Run it once after install, and again after changing thresholds under Analysis so existing scores reflect the new rules.

The nightly job

ocmlabs_seo_rescore_changed runs at 03:00 every night (0 3 * * *, default cron group). It re-scores items changed since their last score, plus items with no score. It needs Magento cron, does nothing while Enable SEO Module is No, and never throws, so it cannot disturb other cron jobs.

Scoring never cleans the page cache: a new score changes nothing on the storefront.