Skip to main content

Cron auto-generation

Set-and-forget meta generation for new products. Every 30 minutes, scan for entities with no meta_title and no existing suggestion, then queue suggestions until the per-run budget is reached.

When to use it

  • B2B catalogs with frequent new SKU imports → meta drafts ready before the SEO team logs in
  • Multi-site / agency setups → each store's cron runs independently
  • Combine with auto_approve = Yes → fully hands-off, suggestions become live meta within ~30 minutes of a product being created

When NOT to use it:

  • First weeks of a new install → run a few CLI batches manually to validate quality first
  • Low API budget → start with a small cron_budget_per_run and watch token usage

Enabling

Stores → Configuration → SEO Suite → AI Meta Generator (Claude)

  • Enable AI generation = Yes
  • Auto-generate via cron = Yes
  • Cron budget per run = 25 (or however many you want)
  • Cron entity types = product,category,cms_page (default — adjust if you only want one type)

The cron job byte8_seosuite_ai_auto_generate runs at */30 * * * *. As long as Magento's cron is healthy, you're good.

What the cron does

For each store where is_active=1 and cron_enabled=1:

  1. Determine budget = cron_budget_per_run
  2. For each entity_type in cron_entities:
    • Find entities matching: meta_title IS NULL OR meta_title = ''
    • Skip entities already in the suggestion queue (any status — review-then-rerun is intentional)
    • Generate up to budget suggestions, decrementing budget as each completes
  3. Tag every row with batch_id = "cron-YYYYMMDD-HHMMSS-store{N}" so the grid groups them by run
  4. Log start + summary to var/log/system.log

Budget guard

The hard cap exists to prevent runaway API spend if you suddenly bulk-import 10000 products. With cron_budget_per_run = 25:

  • 25 suggestions every 30 minutes = 1200/day max
  • At Haiku 4.5 + caching, that's ~$0.20–$0.50/day worst case

You can raise the cap once you trust the run quality — 100 or 200 for catalogs that get hundreds of new SKUs daily.

What's NOT auto-generated

The cron skips:

  • Entities that already have ANY suggestion in the queue (regardless of status — re-runs require manual queue cleanup)
  • Entities with a non-empty native meta_title (the meta-template observer's logic mirror)
  • Disabled stores
  • Stores where is_active = No for the AI feature

So a product that was generated, applied, and then later edited to clear its meta_title would NOT be re-generated — the existing suggestion row blocks it. Manual delete the suggestion row first if you want a fresh draft.

Pairing with auto-approve

cron_enabled = Yes
auto_approve = Yes

This is the "total automation" config — within 30 minutes of a new product going live, it'll have AI meta written to it.

Risks:

  • Bad source data (e.g. CMS page with placeholder text) produces bad meta that goes live unreviewed
  • API outages / rate limits silently produce failed rows that you only notice via system.log

We recommend at least a weekly admin review of Status = failed and Status = applied rows to spot-check quality.

Monitoring

# Are cron jobs running?
bin/magento cron:status | grep byte8_seosuite

# What did the last run do?
tail -f var/log/system.log | grep "SEO Suite AI cron"

A successful run logs:

[info] SEO Suite AI cron started {"store_id":1,"budget":25,"entities":["product","category","cms_page"],"batch_id":"cron-20260425-143000-store1"}
[info] SEO Suite AI cron finished {"store_id":1,"used":12}

used: 12 = 12 suggestions generated; budget had headroom.

Disabling temporarily

To pause without losing config:

cron_enabled = No

The job still ticks every 30 minutes but exits immediately when it sees the flag is off. Re-enable when ready.

Pairs well with