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

为什么要折腾这个
想法发在社交平台上,过两天就沉底了。我想要一个挂着自己名字的地方,长期放着,想翻随时能翻。
要求也很朴素:写作只在 Notion 里;写好了丢进队列,每天早上 8 点自动发一篇;中文英文都能写;尽量不花钱;出了问题我自己看得懂、修得了。
先想清楚:网站做成动态的还是静态的?
动态网站像餐馆现点现做,每来一位客人,厨房现炒一盘,厨房得一直开着。静态网站像提前印好的传单,内容变了就重印一批,放在全世界的报刊亭里,谁来拿都快,而且几乎不要钱。
我的网站一天才更新一次,没必要现炒,所以选了印传单。顺带一个好处:网站从来不直接连 Notion,哪天 Notion 抽风,网站照样能打开。

具体分工是这样的:
- Notion:写作的地方,每篇文章是数据库里的一行。
- Python 脚本:把文章从 Notion 搬出来,变成普通的 Markdown,顺手把图片下载下来。Notion 的图片链接一个小时就过期,不下载的话网站上过一会儿就全是裂开的小方块。
- Astro:把 Markdown 印成网页,首页、文章页、标签、归档、RSS 一次生成。
- GitHub Actions:每小时醒一次,该发就发,有变化就重新印。
- Cloudflare:把网页放到全世界的 CDN 上。
有个小设计我挺喜欢:每次印网站时,把所有文章的“身份证号 + 最后修改时间”算成一个指纹,放在网站上。下次只要比一比指纹,就知道 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 甚至比打游戏还上瘾。