泸定 6.8 级地震:那几秒钟,我感觉代码在屏幕上跳舞

泸定 6.8 级地震的时候,我正在写 n8n 工作流里那个该死的定时触发器。震感从脚底板传上来,显示器晃得厉害,代码行在 Sublime Text 里上下蹦跶,像一群失控的像素点。我第一反应不是跑,是伸手去护住 MacBook——里面跑着刚调通的 MySQL 连接节点和文章发布队列。妈的,我意识到,这玩意儿现在比我银行账户里的数字还值钱。

这就是我“超级个体”博客的雏形,一个完全自动化、定时发布的内容资产库。核心就三块:一个存稿子的数据库,一个 n8n 工作流,一个定时发布触发器。听起来简单对吧?操蛋的细节都在连接层。我不用 WordPress 那些现成的东西,太笨重,而且数据不在自己手里。我直接在阿里云 ECS 上起了个 MySQL,表结构就三列:id, title, content, publish_time。content 字段里塞的是 Markdown 格式的原始文本,我得在发布前把它转成 HTML。

n8n 的工作流设计才是掉头发的地方。第一个节点是定时触发器,我设成每天凌晨 2 点执行。为什么是两点?因为这时候服务器负载低,而且我算过,这个点发布,正好赶上第二天早上第一批用户打开订阅。触发器一响,工作流启动,第一个动作是去数据库里执行一个 SELECT 查询,条件是 publish_time <= NOW() AND published = 0。这里有个坑,MySQL 的时区必须和 n8n 服务器、还有你预设的发布时间完全对齐,差一分钟文章就发不出去。我在这上面卡了整整一个下午,各种 TIMESTAMP 转换,最后发现是阿里云 RDS 的默认时区是 UTC,得手动改成 Asia/Shanghai。 查出来的数据,是一个 JSON 数组。n8n 的 “MySQL” 节点输出就是这个结构。下一个节点,我得用 “Function” 节点写一段 JavaScript,把数组里的每篇文章对象遍历出来。这里涉及到异步循环,n8n 的上下文变量得小心处理,不然数据流到下一步就丢了。我的代码大致是:`const items = $input.all(); const returnItems = []; for (const item of items) { const html = marked(item.json.content); // 用 marked 库转 Markdown returnItems.push({ json: { ...item.json, htmlContent: html } }); } return returnItems;` 对,我直接把 marked 库通过 npm 装在了 n8n 的服务器环境里。 转换完 HTML,下一步是调用发布接口。我的博客前端是自己用 Vue 写的静态页面,托管在 Netlify 上,但内容是通过一个轻量级 Node.js API 从数据库读取的。所以 n8n 需要发一个 POST 请求到这个 API,把文章数据传过去,同时还要在数据库里把对应文章的 published 字段更新为 1。这里必须做成事务,要么都成功,要么都失败。我用了 n8n 的 “HTTP Request” 节点和又一个 “MySQL” 节点(执行 UPDATE),然后用 “IF” 节点判断 HTTP 响应状态码是不是 200,如果不是,就触发一个 “Error Trigger” 节点,给我 Telegram 发警报。 整个工作流调试了三天。最崩溃的一次是,定时触发器正常跑了,数据也查出来了,HTML 也转好了,API 也调了,返回也是 200,但博客页面上就是没文章。我查日志查了两个小时,最后发现是 API 那边读取数据的 SQL 语句,where 条件里写的是 `published = 1`,而我 n8n 工作流里 UPDATE 语句写错了字段名,写成了 `publish`。就这一个字母,让整个自动化链条断在最后一环。 地震停了,屏幕也不晃了。我检查了一下工作流运行日志,绿色,全部成功。倒了一杯冰水,看着那个由节点和连线组成的流程图,它安静地待在那里,像个忠诚的、不会抱怨的数字劳工。2019年那会儿,我养一个五人的内容团队,每天光催稿、审稿、排版、发布就能把我耗到凌晨,心累得像被掏空。现在,这些破事被这几行代码和一个开源工具给干了。我失去了指挥人的“权力”,拿回了所有的时间。 身体才是第一生产力。去年体检一堆箭头,今年靠低卡饮食和每天五公里硬是把指标跑回来了。管理团队那种心累,比写代码debug累十倍。现在,我只管理这些不会顶嘴的“数字员工”。n8n 工作流就是我的新团队,MySQL 是我的仓库,API 是我的配送员。地震提醒了我,服务器可能会挂,但技能和这套自动化思维,是震不垮的资产。下次再震,我抱起电脑就跑,只要代码在,换个地方插上网线,我的“数字工厂”就能立刻复工。 这就是超级个体的本质:把一个人的时间,通过代码和工具,复制成无数份。流量、内容、交付,全部封装成可重复、可扩展的标准化流程。我不再追逐那些虚无缥缈的“风口”,我就死磕这一套系统,让它越来越健壮,越来越自动。当别人在开会扯皮的时候,我的系统已经在凌晨两点,准时把一篇新的博客推送到了订阅者的眼前。这种感觉,比当年赚到第一笔十万流水,踏实多了。

© 版权声明
THE END
喜欢就支持一下吧
点赞73 分享