我的静态 Nuxt 博客实现自发布:草稿、定时“滴灌”发布及... 笔记

我的静态 Nuxt 博客实现自发布:草稿、定时“滴灌”发布及自动重建

本文介绍了一种在完全静态的 Nuxt 站点上安排帖子发布时间的解决方案。静态站点本质上缺乏服务端渲染能力,若无重建机制,则无法直接实现帖子定时发布。作者采用“突击式”写作方式,开发了一套包含草稿、定时队列和自动重建的系统。该方案使用 Nuxt 4 作为静态站点生成器(SSG)进行预渲染,Storyblok 作为无头 CMS,并由 PM2 管理的 Nitro 服务器保持应用持续运行。GitHub Actions 用于部署及重建站点。核心思路是:在静态站点生成器(SSG)上发布帖子涉及两个步骤:先在 CMS 中更新内容,然后重建静态站点。定时发布即是将这两个步骤自动化,并安排在指定未来时间执行。草稿以带状态和发布日期的形式保存在服务端,在定时发布前不会影响线上站点。Nitro 的定时任务每小时运行一次,检查是否存在发布日期为当前或过去的文章。当文章到达发布时间时,将其转换为 Storyblok 的富文本格式并推送到 CMS,随后通过 GitHub API 触发一次站点重建,确保新内容出现在线上站点。该系统避免了使用独立的 cron 服务,而是利用 Nitro 内置的定时任务功能。关键点在于 Nitro 服务器必须运行,定时任务才能执行,因此将其托管在小型 VPS 上并由 PM2 管理。作者强调,应针对一批定时文章仅执行一次重建,以避免冗余部署。最后,时间区的准确设置对定时发布至关重要。该方案使作者能够提前撰写内容并实现自动发布,无需人工干预。