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_runand 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:
- Determine
budget = cron_budget_per_run - For each
entity_typeincron_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
budgetsuggestions, decrementing budget as each completes
- Find entities matching:
- Tag every row with
batch_id = "cron-YYYYMMDD-HHMMSS-store{N}"so the grid groups them by run - 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 = Nofor 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
failedrows 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
- Index Budget Audit → cms_missing_meta — cron generates meta for new CMS pages too
- Dashboard widget — shows pending/failed counts per cron run