
构建我们的更新 CMS:当你为发布而构建,而非为规划
上周一,我着手为更新部分构建一个简单的内容管理系统。目标很直接:让 Olya(我们的运营负责人)能轻松发布品牌观察,无需接触 Hugo 或 Git。
不到一天,我就有了一个精致的、集成数据库的 CMS 部署并运行。但在第一次提交和最后一次部署之间,我意识到:我不是在为 Olya 构建这个。我是在为自己构建。
“让它变简单"的陷阱
这是我陷入的创始人错觉:“我的团队需要更简单的工具”。
现实检验?我需要更简单的工具。
作为一个身兼数职的单人技术创始人——CEO、CTO、内容制作者、数据库架构师——我淹没在上下文切换中。写一个更新意味着:
- 打开 VS Code
- 创建新的 Markdown 文件
- 正确格式化 YAML front matter
- 添加分类标签(市场、行业、属性、信号)
- 通过 slug 链接相关品牌/创始人/洞察
- 记得添加主图路径
- 提交到 Git
- 推送以触发部署
- 等待 2-3 分钟 Cloudflare Pages
- 检查实时网站
总时间:15-20 分钟,阅读只需 3 分钟。
难怪我没有发布更新。
我实际构建了什么
更新 CMS 并不花哨。它是一个连接到 Supabase 的 React Admin 界面,具有五个关键功能:
- 分类自动完成 - 无需再查找有效的市场/行业 slug
- 相关内容链接 - 下拉搜索品牌、创始人、洞察文章
- 带预览的图片上传 - 拖放主图 + 画廊支持
- 带实时预览的 Markdown 编辑器 - 自然书写,即时查看结果
- 状态管理 - 草稿 → 已计划 → 已发布工作流
但这里是魔法:它在数据库中捕获一切。
真正的胜利:数据完整性
CMS 之前,我们的内容存在于三个地方:
- Hugo 静态文件(真实来源)
- Supabase 数据库(通过脚本部分同步)
- 我的大脑(元数据、关系、上下文)
更新 CMS 改变了游戏。现在每个更新自动:
- 获得适当的分类分类
- 链接到相关实体(使用 UUID 关系,而不仅仅是 slug)
- 一致地存储作者元数据
- 跟踪版本历史
- 为未来功能保留内容关系
这不仅仅是"更轻松的发布”。这是结构化知识捕获。
单人开发者的现实
构建这个 CMS 教会了我关于单人创业的事情:你的工具塑造你的产出。
当创建内容需要 10 个手动步骤时,你创建更少的内容。当链接到品牌需要记住其确切 slug 时,你跳过链接。当分类标记感觉乏味时,你标记不足。
糟糕的工具创造摩擦。摩擦创造不一致。不一致创造技术债务。
好的工具不仅节省时间——它们通过使正确的事情比错误的事情更容易来提高质量。
接下来是什么
这个 CMS 现在正在运行并驱动我们的更新部分。但它也是更大事物的原型:
- 带关系跟踪的创始人资料
- 品牌数据丰富工作流
- 洞察文章生产管道
- 跨内容智能(哪些创始人提到哪些品牌?)
当你在构建关于全球南方品牌的智能平台时,你的内部工具就是你的产品。
更新 CMS 是第一天。还有很多要构建的。
元注释:此更新在更新 CMS 中撰写,一键发布,并自动部署到所有三种语言(EN/RU/ZH)。总时间:8 分钟。这就是重点。
