我用一个晚上,把网站的自动化更新系统搭起来了
晚上9点55分,我只是想解决一个小问题。
结果搞到深夜。
但我把一件以前完全不会做的事做成了。
从一个报错开始
最开始的问题很简单:首页的精选文章,我每次写新文章都要手动去 HTML 里加一条链接。
这件事本身不难,但很烦。更烦的是,我不确定自己加的位置对不对。每次改完都要发布、等待、刷新,然后发现哪里又乱了。
我想要的很简单:写完文章,一键更新,不用手动改任何东西。
第一个方案:Python 脚本
我让 Claude 帮我写了一个 Python 脚本。逻辑不复杂:扫描 posts 文件夹里所有文章,读取标题、日期、描述,按 tag 分类,然后自动填入首页和 posts 页面。
脚本写好了,运行成功了。
然后我发现 posts 页面出现了三份重复内容。同样的文章列表,出现了三次。
原因是脚本用正则表达式匹配要替换的区域,但正则写得不够精准——每次运行,它找到了旧内容,把新内容追加进去,但没有删掉旧的。运行一次就多一份。
第二个方案:标记注释
解决方法其实很简单,但我自己想不到——用两个 HTML 注释作为"锚点":
脚本每次只替换这两个注释之间的内容,绝对不会影响外面的任何东西。运行十次,结果都一样干净。
然后是布局的连环问题
脚本搞定了,但首页的文章卡片显示出了问题。我想要三列卡片,每张卡片有彩色背景、标题、描述。
Digital Garden 渲染出来的效果是:三张卡片竖着排成一列,彩色背景变成了独立的方块,文字飘在旁边。
原因是我用了 emoji 做图标,Digital Garden 对 emoji 的渲染支持有限,撑开了高度,破坏了 flex 布局。删掉 emoji,换成纯色块,还是竖排。换成纯文字列表,还是出问题——标题、描述、日期各自变成了独立的一行。
最后的解决方案是:放弃所有 CSS class,全部用内联样式。 Digital Garden 没有办法拆分一行 HTML,只能原样渲染。问题解决了。
还有一个细节
做完之后,我发现文章标题是黑色的,看不出来是链接。改成金色 #C9922A——和网站的整体配色一致。首页、posts 页面、"查看所有文章"按钮,全部统一。
最后的工作流
现在,每次我写完一篇新文章,只需要:
1写文章
在 Obsidian 里写,frontmatter 里加上 dg-publish: true。
2双击更新页面.bat
自动扫描所有文章,更新首页精选和 posts 列表。
3在 Obsidian 点发布
三步,30秒,完成。
我学到了什么
今晚最重要的不是那个脚本。
我不是程序员,但我把一个程序员才会做的事做成了。
不是因为我突然学会了编程。是因为我能清晰地描述我想要什么,然后和 AI 一起把它做出来。这个能力,比"会写代码"更值钱。因为它可以迁移到任何地方。
如果你也有一个"想做但不知道怎么做"的小工具,不需要等自己学会编程。先把你想要的结果描述清楚,然后开始尝试。
最坏的情况是:失败了,但你搞清楚了问题在哪。最好的情况是:一个晚上,搞定了。
← 返回文章列表