跳到正文
WC.

把定期 newsletter 当成构建步骤

•1 分钟阅读•基础设施•
•
#newsletter#static-sites#ci

多数「发定期摘要」的建议都假设你需要一个调度器:cron、定时触发的 Lambda,或托管服务「每周二 9 点跑」。如果你的内容在 CMS 里全天更新、你只想在固定时间抓一版,那没问题。但若站点是静态的、内容只在部署时变化,调度器就是错误的抽象。

我把摘要当成 CI 里的一步,紧接在站点 build 和 deploy 之后。一个脚本——叫 send-recurring-newsletter 或随便符合你流水线的名字——每次 deploy 跑一次。从和站点相同的数据源读已发布的文章和项目列表,用共享模板生成摘要 HTML,从邮件服务商的 API 拉订阅列表并发送。没有 cron、没有 Lambda、没有「每 N 小时跑一次」的配置。触发条件是部署,不是时间。

构建流水线图,展示由部署触发的定期 newsletter,而不是 cron 服务器。

什么时候这就够了

当内容以部署为界时这就够了。你通过合并和部署来发布。摘要是「这次部署里上了什么」。读者在有新内容时收到邮件,而不是时钟到点。节奏跟你的发布节奏走:每周部署就每周一封,每篇 post 都部署就每篇一封。脚本在「每次运行发一封」意义上是幂等的;你每次 deploy 跑一次,所以就每次 deploy 发一封。

你还需要一个提供发送、拉取/分段订阅者 API 的邮件服务商。Resend、SendGrid、Mailchimp 等都可以。脚本调 API,不需要服务商按时间替你跑代码。

什么时候才需要调度器

当应该触发摘要的是时间而不是部署时,才需要调度器。例如:当天累积活动的每日摘要、必须每周一发出不管你有没有发布的周报,或由其他系统(CMS、电商)更新的内容、你想在固定间隔抓一版。那时才真正需要 cron、Lambda + EventBridge 或托管 cron。关键问题是:触发条件是什么?若是「我部署时」,放 CI 就对了;若是「每周二」,就需要知道「今天星期几」的东西。

如何保持技术栈静态

在 CI 里跑摘要能让生产面保持静态。站点还是 CDN 上的文件。生产环境里跑的代码——如果有——只有注册和确认所需的最小 API。摘要脚本跑在和 build 同一个环境里:你的 CI runner。用同一个 repo、同一批内容文件、同一套环境变量(再加邮件服务商的 API key)。生产没有新组件,没有新服务要管、监控或付费,没有凌晨三点的冷启动。你 push 时脚本跑完,deploy 就结束。静态站、静态流水线,少一样按时间跑的东西。

我选这种取舍。摘要是「上次部署以来有什么新东西」,触发就是部署本身。当这和你工作方式一致时,用构建步骤比用调度器更简单,也能让技术栈保持你想要的静态程度。

继续阅读

用 Resend 和 Cloudflare 从静态站发 newsletter

静态站不会在有人打开页面时跑代码,这正是目的。但 newsletter 需要动态:接收订阅、发确认邮件、处理点击、把联系人加进列表、发欢迎信。那怎么既保持站点静态,又完整掌控整个流程? 我的做法是:用 Resend 发信,用 Cloudflare Pages Functions 提供那一小块 API。HTML…

•1 分钟阅读•基础设施
newsletterresendcloudflare
把 GitHub 当后端

你可以跑一个带评论和动态的静态站,而不跑数据库也不跑 API。做法就是把 GitHub 当成你从不用运维的后端。 身份、存储、动态通常意味着鉴权、数据库和某种实时更新。对个人站或小项目来说,零件太多了。 我希望读者能评论,也希望展示近期工作——又不想再起一个服务或为评论 SaaS…

•1 分钟阅读•基础设施
githubgiscusstatic-sites
没有后端的评论

我想在文章和项目页有评论区,但不想自己跑数据库或写 API。 静态站很好,直到你需要有地方存状态。评论就是这种——别人的数据,挂在你的内容上。常见选择要么很重(Disqus,广告和追踪),要么是坑(自建 Commento、审核、垃圾)。我不想再维护一个服务,也不想为评论 SaaS 付钱,免得以后不想管了还得惦记。…

•1 分钟阅读•基础设施
giscuscommentsstatic-sites
静态站邮件的摩擦

给静态站加邮件本该是已解决的问题。 我只需要:收联系表单提交、用自己域名发回复。听起来简单,但现代邮件服务商生态感觉非常碎片化。 一开始试了 MailChannels,号称在反垃圾上比别家强。但物理规律不变——文档差、开发体验到处是摩擦,理论优势就没意义。我花在折腾配置上的时间比写代码还多。 Formspree…

•1 分钟阅读•基础设施
infrastructuremailgunstatic-sites