← 回到湖边← 发帖日志← 回到日课簿

我的小站是怎么自己发文章的

这个小站一年的花销,基本就是一个域名钱。我平时要做的事情只有一件,在 Notion 里写东西。发布、排队、更新网站、库存不够了提醒我,都是机器自己干。

网站首页:短想法显示全文,长文章显示标题和摘要

为什么要折腾这个

想法发在社交平台上,过两天就沉底了。我想要一个挂着自己名字的地方,长期放着,想翻随时能翻。

要求也很朴素:写作只在 Notion 里;写好了丢进队列,每天早上 8 点自动发一篇;中文英文都能写;尽量不花钱;出了问题我自己看得懂、修得了。

先想清楚:网站做成动态的还是静态的?

动态网站像餐馆现点现做,每来一位客人,厨房现炒一盘,厨房得一直开着。静态网站像提前印好的传单,内容变了就重印一批,放在全世界的报刊亭里,谁来拿都快,而且几乎不要钱。

我的网站一天才更新一次,没必要现炒,所以选了印传单。顺带一个好处:网站从来不直接连 Notion,哪天 Notion 抽风,网站照样能打开。

整体架构:我只管第一格,剩下全自动

具体分工是这样的:

  • Notion:写作的地方,每篇文章是数据库里的一行。
  • Python 脚本:把文章从 Notion 搬出来,变成普通的 Markdown,顺手把图片下载下来。Notion 的图片链接一个小时就过期,不下载的话网站上过一会儿就全是裂开的小方块。
  • Astro:把 Markdown 印成网页,首页、文章页、标签、归档、RSS 一次生成。
  • GitHub Actions:每小时醒一次,该发就发,有变化就重新印。
  • Cloudflare:把网页放到全世界的 CDN 上。

有个小设计我挺喜欢:每次印网站时,把所有文章的“身份证号 + 最后修改时间”算成一个指纹,放在网站上。下次只要比一比指纹,就知道 Notion 里有没有东西变了。没变就直接收工,三十几秒的事,连网站都不用重新印。

平时怎么用

一篇文章在 Notion 里的一生

写完把状态改成 Ready,填好类型和语言,就不用管了,每天早上 8 点(太平洋时间)自动发一篇。急着发,就直接改成 Published;发出去想改,直接在 Notion 里改;想撤下来,改成 Hold。都是一个小时内生效。库存不够一周的量了,GitHub 会发邮件催我写稿。

手机上看也没问题:

手机上的文章页

最怕的事:草稿被发出去

所以加了几道保险。测试里藏了几篇带暗号的假草稿,每次上线前把整个网站翻一遍,哪里出现暗号就拒绝上线。平时改代码不影响线上,只有正式打了版本号的那一版才会被拿去用。自动发布还有个总开关,一条命令全停。

怎么做出来的

我平时写 Python,前端基本是外行。这次是和 AI 编程助手一起做的:我提需求、拍板,它查文档、写代码、写测试、写文档。规矩是先讲清楚再动手,每一步都要有测试,碰到“动了就收不回来”的操作先问我。从开始设计到自动发布跑起来,大概一天。

坑也踩了几个:

  • 第一篇文章的日期显示成了前一天。Notion 里只填日期的时候,默认是世界标准时间的半夜,换成太平洋时间正好是前一天下午。
  • 第一次自动部署,网站明明已经更新成功,任务却报失败。原来给机器的钥匙权限给得太小,连自己的域名都“看不见”。
  • 一篇忘了填语言的文章会被“发布”,网站上却不显示,白白浪费一天的名额。发现当天就补上测试修好了。

要花多少钱

年度账单

唯一真正掏钱的是域名,一年十几美元。托管、证书、定时任务、Notion 都在免费额度里,离用完还早着。以后要是想加评论这种需要“现炒”的功能,大概每月 5 美元起,现在还用不着。

其他

网站名字叫 White Mountain(白山)。如果哪天早上没等到新文章,多半不是它偷懒,是我的库存见底了。

后记:

只有后记是我真正动笔写的。

其实也不是动笔,只是动嘴而已。整篇文章基本都是按照我的要求 AI 生成的,我要求它多点人味,少点 AI 味。但看实际结果,能看出来 AI 已经很努力了,但是还是缺少人味,没有办法,现在的 AI 写作基本就是这样,除非经过专门的训练,不过这样已经很好了。这只是一个记录而已。可能只是留作查询之用,甚至是留作为以后的 AI 来检索用的。只要把事情说清楚。管它有没有人味,就这样,现在这个 AI 时代也没人在乎了。

不过 AI 确实改变了很多。

我并不是一个前端工程师。要做这样一个简简单单的博客类小站,以前只能借助 WordPress 等工具,或者用一些现成的、可以部署的 BBS 系统。要想自己从零开始写一个,真是难上加难。尤其是要自动部署到 CDN 上,坑不知道有多少。以前的话,早就知难而退,压根不敢想。现在就不一样了,借助 AI,也可以把以前不敢想、不敢做的一些东西,尝试着做一下。以前只是在工作里使用 AI 辅助,接下来可能会尝试用 AI 帮助做一些好玩的东西。我发现 Vibe Coding 甚至比打游戏还上瘾。