Platform

AEO Website Research-grade Content Content Factory About Audits Rankings Pricing

Resources

Knowledge Base Research FAQ
Intelligence Report Criterion #605

Weekly Visibility Digest: One Email Monday Morning, Full Citation State

Every Monday at 12:00 UTC, every paid domain gets one consolidated email - average AI visibility, per-engine snapshot with week-over-week deltas, top 10 Reddit threads, top 10 mentions - delivered to every team member.

One of 48 criteria in AEO Rank, the citation-readiness score we run against every site we audit.

By Alex Shortov

low effort medium impact

Quick Answer

The weekly visibility digest is a Monday morning email (12:00 UTC, 07:00 EST / 08:00 EDT) sent to every project member of every paid domain. The subject line shows the headline number - e.g. 'helpsquad.com Weekly visibility digest - 64% (+5)' - and the body breaks out the per-engine state across ChatGPT, Claude, and Perplexity with prompts-cited / prompts-total counts, week-over-week deltas, top 10 fresh Reddit threads mentioning the brand or competitors, and top 10 active third-party mentions. Free-tier domains are skipped; domains with no data are skipped with skip_reason='no_data'.

Audit Note

In our audits, we've measured Weekly Visibility Digest: One Email Monday Morning, Full Citation State on live sites, we've compared implementations, and we've audited the gaps that keep scores low.

What goes into the weekly visibility digest email?

The digest reports overall visibility percentage, per-engine ChatGPT, Claude, and Perplexity snapshots, plus fresh Reddit threads and Mentions with priority scores.

When does it send and who receives it?

The cron fires at 12:00 UTC every Monday and sends to every project member listed in aeo_project_members for paid domains with active monitor runs.

How does the digest compare last week to this week?

For each engine the digest pulls the latest two completed monitor runs and computes the absolute point delta plus prompts-cited and total counts week over week.

Why is everything bundled into one email instead of separate alerts per engine?

One bundled email beats per-event alerts because operators kept ignoring three separate inboxes, and a single Monday-morning headline drives consistent weekly triage.

Can I trigger the digest manually for testing?

Yes, you can hit /api/cron/weekly-digest with the cron secret and a domain parameter to send the digest immediately for QA without waiting for Monday.

Summarize This Article With AI

Open this article in your preferred AI engine for an instant summary and analysis.

Monday Morning Digest Flow
Cron Fires
🗂️ Per-Domain Query
📐 Compute WoW Deltas
✉️ Render Email
📤 Send via Resend
aeocontent.ai
Monday Morning Digest Flow. Infographic illustrating the AEO Rank criterion discussed in this article.

What this article answers

  • What goes into the weekly visibility digest email?
  • When does it send and who receives it?
  • How does the digest compare last week to this week?
  • Why is everything bundled into one email instead of separate alerts per engine?
  • Can I trigger the digest manually for testing?

Key takeaways

  • One email per paid domain, sent Monday 12:00 UTC, to every member listed in aeo_project_members - so the whole team sees the same numbers at the same time.
  • Subject line is the headline metric - [domain] Weekly visibility digest - NN% (+N) - so operators see the state without opening the email.
  • Body breaks visibility into per-engine snapshots for ChatGPT, Claude, and Perplexity, each with WoW delta in points + prompts-cited / total counts.
  • Reddit and Mentions sections show the freshest 10 items per source, with priority scores and deep links into Studio for action.
  • Free-tier domains are skipped (skip_reason='not_pro'); domains with no monitor runs, threads, or mentions are skipped (skip_reason='no_data') so the digest never sends empty noise.
  • Manual GET trigger available at /api/cron/weekly-digest?domain=X with the cron secret - useful for QA without waiting until Monday or resending after a missed run.

Why a Weekly Digest Instead of Per-Event Alerts

Per-event email alerts caused inbox fatigue within two weeks, so the Monday digest consolidates AEO signal into one predictable email per domain per week.

We used to send three separate emails per week: one when a fresh Reddit thread mentioned a customer’s brand, one when a new mention was discovered on a third-party site, one when the visibility scan completed. Inbox fatigue set in within two weeks of every new customer onboarding. People started filtering AEO emails into a folder they checked monthly - which defeated the entire point of monitoring.

The Monday digest solves this with one rule: one email per domain per week, on a predictable schedule. Customers know when the email lands. They open it, scan the headline number in the subject line, decide whether to dig deeper, and either close it or click into Studio for action. The inbox math goes from 3-5 emails per week per domain down to 1.

The weekly cadence also matches how AEO actually moves. Visibility changes happen on the order of days to weeks - publishing an article on Monday rarely lifts citations within 24 hours. A daily email about a metric that barely moves day-to-day trains the customer to ignore the email. A weekly email about a metric that moved meaningfully over 7 days trains them to read it.

When Does the Digest Send and Who Receives It?

The cron fires every Monday at 12:00 UTC, iterating paid domains, checking plan eligibility, computing week-over-week deltas, and emailing every active team member.

The cron /api/cron/weekly-digest fires on the schedule 0 12 * * 1 (every Monday at 12:00 UTC). In US time zones this lands at 07:00 EST / 08:00 EDT - early morning, before the start of the work week, so the digest is the first AEO signal in the inbox when the team sits down on Monday.

The cron iterates every paid domain in the system. For each domain:

  1. Check Pro-plan eligibility via isDomainOnProPlan(domain) - skip if free tier.
  2. Query the latest 2 completed monitor runs per engine, freshest 10 Reddit threads, freshest 10 active mentions, full member list.
  3. If all three data sources are empty, skip with skip_reason='no_data'.
  4. Compute WoW deltas (latest vs prior run per engine).
  5. Render the email template with the assembled data.
  6. Send via Resend to every email in aeo_project_members for that domain (deduped).

Recipients are pulled from aeo_project_members, not just the project owner. That means every team member who has been added to the project gets the same digest. Customer onboarding 3 marketers? All 3 get the digest. They are working from the same data, no “did you see the email?” coordination friction.

What Does the Subject Line Say?

The subject line is the most-read part of any email. We make it carry the headline number directly:

[domain] Weekly visibility digest - 64% (+5)

  • 64% is the overall AI visibility this week (average of completed engine runs)
  • (+5) is the delta in points vs the prior week
  • If there is no prior run to compare (first-ever digest for the domain), the delta is omitted

A subject line like this means operators can triage the digest without opening it. If the number is up 5 points week over week, congrats, content is working. If down 3 points, click in. If flat, decide whether you have bandwidth for AEO work this week.

For mobile inboxes where preview text matters, the preview reads domain weekly digest: NN% AI visibility - reinforces the metric without padding it.

What Goes Into the Email Body?

Four blocks structure the digest: overall AI visibility headline, per-engine snapshots with deltas, recent Reddit thread activity, and new mentions ready for outreach.

Four blocks, in order:

Block 1 - Overall AI Visibility

Top of the email. Shows the average visibility across all engines this week, with the WoW delta. Operators see the headline number both in subject line and at the top of the body - redundant on purpose, because subject-line truncation on long domain names sometimes cuts off the number.

Block 2 - Per-Engine Snapshot

Three rows, one per engine (ChatGPT, Claude, Perplexity):

ChatGPT       66% citation rate    +4 pts   33 of 50 prompts cited
Claude        58%                  -2 pts   29 of 50 prompts cited
Perplexity    71%                  +7 pts   36 of 50 prompts cited

Each engine’s row includes:

  • Current visibility percentage - how many of the target prompts cited the customer this run
  • Delta in points vs the prior completed run for the same engine
  • Prompts cited / prompts total - absolute counts so operators see scale, not just percentage

Engine rows shipped today: ChatGPT, Claude, Perplexity. Google AI Overview tracking ships data to the same pipeline but is not yet a per-engine row in the digest template - it’s planned for a future iteration.

Block 3 - Reddit Threads (Top 10)

The top 10 Reddit threads mentioning the customer’s brand or competitors, discovered since the prior digest. Ordered by first_seen_at DESC so the freshest threads sit at the top. Each row includes:

  • Subreddit name
  • Thread title
  • Priority score (calculated by Reddit-engagement signals + brand-mention relevance)
  • First label (e.g., “brand mention,” “competitor mention,” “question we should answer”)
  • Deep link into Studio’s Reddit panel for action (reply, dismiss, archive)

Threads marked archived or dismissed are excluded - they are explicitly resolved, no need to surface them again.

Block 4 - Mentions (Top 10)

The top 10 active third-party mentions of the customer’s brand, ordered by first_found_at DESC. Each row includes:

  • Mention type (listicle, directory, review, comparison, news, etc.)
  • Link/no-link badge (does the page actually link to the customer’s domain, or just mention them in prose)
  • Page URL where the mention lives
  • Deep link into Studio’s Mentions panel for action (outreach, dismiss, mark followed)

Inactive mentions (is_active = false) are excluded - these are mentions the customer has explicitly decided not to track.

The weekly visibility digest packs four content blocks that each surface a different week-over-week signal.

BlockWhat It ShowsWhy It Matters
Score deltasAEO Rank change vs last weekTrend at a glance
New citationsFirst-time cited queriesWins to amplify
Lost citationsQueries that dropped youGaps to fix
Competitor movesPeer score shiftsCompetitive context

How Does the Digest Compute Week-over-Week Deltas?

Each engine’s delta is calculated in absolute points by comparing the two most recent completed monitor runs, omitting the delta entirely when no prior run exists.

For each engine, the digest pulls the latest two completed monitor runs from aeo_monitor_runs and compares them. The delta is calculated in absolute points (this week’s percentage minus last week’s percentage), not relative percent change.

Why points instead of percent change: a move from 60% to 66% is +6 points but +10% relative, which is unintuitive. AEO operators think in points (the underlying scoring system is point-based), so the digest matches that mental model.

If there is no prior completed run (first-ever digest, or engine was paused last week), the delta is omitted rather than showing a fake “0” or “-100%” value. Honesty over fake numbers.

What If Nothing Has Changed?

Quiet weeks still receive the digest because steady-state is itself useful signal, with full suppression only when monitor runs, Reddit threads, and mentions are all empty.

Customers sometimes have a quiet week - no new Reddit threads, no new mentions, visibility scores flat. The digest still sends, with whatever the actual numbers are. The “this week was uneventful” signal is itself useful - it tells the customer their AEO work is steady-state, not regressing, not surging.

The only case where the digest is suppressed entirely is skip_reason='no_data' - the domain has no monitor runs, no Reddit threads, and no mentions to show. That means tracking is broken or hasn’t started yet. The system logs the skip so operators can see why a digest didn’t arrive.

Can I Trigger the Digest Manually for Testing?

The cron endpoint accepts a manual GET with the cron secret, sending a single domain’s digest immediately while still applying plan-gate and member-presence checks.

Yes. The cron endpoint accepts a manual GET with the cron secret:

GET /api/cron/weekly-digest?domain=helpsquad.com
Authorization: Bearer $CRON_SECRET

Sends the digest for one domain immediately. Plan-gate still applies (free domains return ‘not_pro’). At-least-one-member still applies. Useful for:

  • QA testing after template changes (verify the rendered email looks right before Monday)
  • Resending a missed digest if the cron failed for one domain
  • On-demand digest for a customer who manually requested it

The manual trigger writes the same row to the cron-log table as the scheduled run, so audit history is complete.

What This Means for Daily AEO Work

The digest is the input that drives weekly AEO triage. The shape of a typical Monday morning workflow:

  1. Open the digest. Subject line says the headline number. Decide whether to dig in.
  2. Scan per-engine deltas. If one engine moved sharply (+/-5 points), that’s the question to follow.
  3. Scan Reddit threads. Any high-priority threads about the brand or about questions the customer can authoritatively answer? Click into Studio to either reply or assign someone.
  4. Scan Mentions. Any new listicles where the customer isn’t listed? Click into Studio to start outreach.
  5. Cross-reference the per-engine numbers against last week’s actions. Did the article you published Wednesday lift the right query? Did the Reddit reply you posted move that engine’s number?
  6. Decide what to publish, reply, or outreach this week.

Without the digest, this workflow happens ad-hoc and gets skipped during busy weeks. With the digest, it’s a 15-minute Monday morning ritual that keeps AEO on the team’s actual calendar.

External Resources

Key takeaways

  • One email per paid domain, sent Monday 12:00 UTC, to every member listed in aeo_project_members - so the whole team sees the same numbers at the same time.
  • Subject line is the headline metric - '[domain] Weekly visibility digest - NN% (+N)' - so operators see the state without opening the email.
  • Body breaks visibility into per-engine snapshots for ChatGPT, Claude, and Perplexity, each with WoW delta in points + prompts-cited / total counts.
  • Reddit and Mentions sections show the freshest 10 items per source, with priority scores and deep links into Studio for action.
  • Free-tier domains are skipped (skip_reason='not_pro'); domains with no monitor runs, threads, or mentions are skipped (skip_reason='no_data') so the digest never sends empty noise.
  • Manual GET trigger available at /api/cron/weekly-digest?domain=X with the cron secret - useful for QA without waiting until Monday or resending after a missed run.

Related FAQs

Getting Started
Industry Benchmarks
The AEO Audit