mirror of
https://github.com/nexu-io/open-design.git
synced 2026-10-27 09:51:12 +01:00
* 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>
2.1 KiB
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:
- Open Actions -> seo-daily-report.
- Click Run workflow.
- Optional: set
dry_runtotrueto build the card and print JSON without posting to Feishu. - Optional: set
todayto aYYYY-MM-DDvalue 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.