Skip to content

feat(seo_report): render full digest centrally (Search + Product + budget)#7

Merged
mattdecrevel merged 1 commit into
mainfrom
feat/seo-report-rich-digest
May 29, 2026
Merged

feat(seo_report): render full digest centrally (Search + Product + budget)#7
mattdecrevel merged 1 commit into
mainfrom
feat/seo-report-rich-digest

Conversation

@mattdecrevel

Copy link
Copy Markdown
Owner

Why

The seo_report renderer emitted only a one-line "search digest" (clicks · impressions · CTR). Consumers wanting the richer daily digest (product metrics + agent budget) had to hand-build subSections + footerNote, so the format drifted per site. This makes Loop render the full digest centrally and identically for every site.

Changes

  • seo_report payload gains structured, optional product (signups24h / paidConversions7d / totalUsers / paidUsers / mrrUsd) and budget (spentUsd / capUsd) — client type + server zod schema.
  • Renderer lays out the standard digest:
    📈 SEO digest · <site>
    Search · last 7 days   (impressions / clicks / CTR + top queries)
    Product · last 24h / 7d (the metrics that were sent)
    footer: Anthropic budget: $X of $Y this month · <site>
    
  • Emoji 📈 (was 🔎), header SEO digest · <site> (was <site> · search digest). Budget footer derives from structured budget unless an explicit footerNote is given.
  • All new fields optional → back-compatible with existing seo_report senders.

Verification

  • pnpm test ✅ 144 passing (updated the seo_report baseline snapshot for the new format)
  • tsc --noEmit ✅ service + client

🤖 Generated with Claude Code

…dget)

The seo_report renderer only emitted a one-line "search digest" (clicks ·
impressions · CTR). Consumers that want the richer daily digest (product
metrics + agent budget) had to hand-build subSections + footerNote, so the
format drifted per site.

Make Loop render it centrally and identically: add structured `product`
(signups24h / paidConversions7d / totalUsers / paidUsers / mrrUsd) and
`budget` (spentUsd / capUsd) to the seo_report payload (client type +
schema), and have the renderer lay out the standard sections:

  📈 SEO digest · <site>
  Search · last 7 days   (impressions / clicks / CTR + top queries)
  Product · last 24h / 7d (the metrics that were sent)
  footer: Anthropic budget: $X of $Y this month · <site>

Emoji 📈 (was 🔎), title "SEO digest · <site>" (was "<site> · search
digest"). Budget footer derives from the structured `budget` unless an
explicit footerNote is provided. All fields optional → back-compatible.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented May 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
loop Error Error May 29, 2026 6:45pm

Request Review

@mattdecrevel mattdecrevel merged commit 8c323dc into main May 29, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant