Files
open-design/docs/seo-daily-report.md
07659b7272 feat(seo): add Search Console reporting workflows (#2229)
* feat(blog): daily 3-day Search Console traffic digest

Adds `blog-3day-report.yml` (cron 09:00 Asia/Shanghai) and a
companion `report-3day.ts` script that refreshes
`docs/blog-traffic-digest.md` once per day. The digest has two
sections:

- T-3 spotlight: posts published exactly three days ago, with their
  3-day Search Analytics window plus current URL Inspection coverage
  state.
- Rolling 30-day cohort: every post 1–30 days old with its latest
  3-day Search Analytics window, sorted by impressions descending.

The workflow is read-only against Google APIs (no Indexing API,
no "request indexing" automation) and mirrors the secret / config
plumbing already used by `blog-indexing-monitor.yml`. Output lands
in a reviewable `automation/blog-traffic-digest` PR opened by the
open-design bot.

Also widens `querySearchAnalytics` to accept `windowDays: 3 | 7 | 28`
and updates `docs/blog-indexing-automation.md` with the new pipeline.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(seo): post daily Search Console report to Feishu

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(blog): push traffic digest to Feishu

Emit a compact JSON summary from the daily 3-day traffic digest and add a Feishu custom bot sender for the summary card. Wire the workflow to send the card when `FEISHU_BLOG_DIGEST_WEBHOOK` is configured while keeping Markdown PR output as the source of truth.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(landing-page): add Discord routing CTAs

Add a lightweight Discord pill to the landing hero and Discord links in the landing and blog footers so community routing is visible without displacing the primary GitHub and download CTAs.

Add a blog-ending conversion card that points guide and use-case readers to the internal workflows library, while keeping Discord as a secondary support path.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: ashley li <ashleyli@ashleydeMacBook-Air-2.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 18:09:44 +08:00

2.1 KiB

SEO Daily Report

seo-daily-report posts a daily Google Search Console summary for sc-domain:open-design.ai to a Feishu group bot.

Workflow

  • Workflow: .github/workflows/seo-daily-report.yml
  • Script: apps/landing-page/scripts/seo-daily-report.ts
  • Schedule: every day at 09:00 Asia/Shanghai (cron: 0 1 * * *)

The report uses T-2 Search Analytics data and compares it with T-9, the same weekday one week earlier. GSC backfills recent dates, so T-2 is the stable daily reporting window.

Card contents

  • Site totals: clicks, impressions, CTR, average position
  • Week-over-week deltas
  • Top 5 page risers by click delta
  • Top 5 page fallers by click delta
  • Top 5 query risers by click delta

Required GitHub Secrets

GSC auth reuses the same secrets as the existing blog indexing workflows. One of these auth modes must be configured:

Secret Required Notes
GSC_SERVICE_ACCOUNT_KEY Yes, unless OAuth is configured Full service-account JSON key. The service-account email must have access to the open-design.ai Search Console property.
GSC_OAUTH_CLIENT_ID Yes, for OAuth mode Existing OAuth mode used by blog indexing workflows.
GSC_OAUTH_CLIENT_SECRET Yes, for OAuth mode Existing OAuth mode used by blog indexing workflows.
GSC_OAUTH_REFRESH_TOKEN Yes, for OAuth mode Existing OAuth mode used by blog indexing workflows.

Feishu posting requires:

Secret Required Notes
FEISHU_WEBHOOK_URL Yes Custom bot webhook URL from the target Feishu group.
FEISHU_WEBHOOK_SECRET No Required only if signing verification is enabled for the custom bot.

Manual test

From GitHub Actions:

  1. Open Actions -> seo-daily-report.
  2. Click Run workflow.
  3. Optional: set dry_run to true to build the card and print JSON without posting to Feishu.
  4. Optional: set today to a YYYY-MM-DD value to test a fixed reporting date.

From a local checkout with secrets exported:

pnpm --filter @open-design/landing-page exec tsx scripts/seo-daily-report.ts --dry-run

Remove --dry-run to post to Feishu.