← 返回文章列表



我用一个晚上,把网站的自动化更新系统搭起来了

晚上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 页面、"查看所有文章"按钮,全部统一。

💡 所有可点击的东西,用同一种颜色。让人一眼就知道能点。这是从 Dan Koe 网站里学来的。

最后的工作流

现在,每次我写完一篇新文章,只需要:

1写文章

在 Obsidian 里写,frontmatter 里加上 dg-publish: true。

2双击更新页面.bat

自动扫描所有文章,更新首页精选和 posts 列表。

3在 Obsidian 点发布

三步,30秒,完成。


我学到了什么

今晚最重要的不是那个脚本。

我不是程序员,但我把一个程序员才会做的事做成了。

不是因为我突然学会了编程。是因为我能清晰地描述我想要什么,然后和 AI 一起把它做出来。这个能力,比"会写代码"更值钱。因为它可以迁移到任何地方。


如果你也有一个"想做但不知道怎么做"的小工具,不需要等自己学会编程。先把你想要的结果描述清楚,然后开始尝试。

最坏的情况是:失败了,但你搞清楚了问题在哪。最好的情况是:一个晚上,搞定了。


AI小白马

加入我的
AI 学习成长日志

    每周更新,我的实战与学习经验,陪你成长


    ← 返回文章列表