V2EX 09月17日
Simple CMS:AI 辅助开发的轻量级内容管理系统
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了一个名为 Simple CMS 的内容管理系统,它旨在解决传统 CMS 系统学习和维护成本高的问题,特别是在 Cloudflare Worker 等边缘环境中开发博客功能的限制。该系统采用 MDX 格式写作,支持本地内容校验、图片上传至 Cloudflare R2、API 接口查询博客文章(包括多语言、多网站、鉴权和分页)。作者分享了使用 AI(Claude Code)进行 Spec-Driven Development 的经验,强调了 AI 在代码生成方面的效率,并计划进一步探索 AI 在前端开发和其他特性上的应用。

📦 **轻量级内容管理:** Simple CMS 旨在提供一个低学习成本、低维护成本的内容管理解决方案,特别适用于需要在 Cloudflare Worker 等边缘环境中部署的场景,解决了传统 CMS 在这些环境下的限制,如文件系统不可用等问题。

✍️ **MDX 写作与 CLI 上传:** 支持使用 MDX 格式在本地编写博客文章,并对内容和元数据进行校验。通过命令行工具(CLI)可以方便地上传 MDX 文件及本地图片到 Cloudflare R2 存储,简化了内容发布流程。

🚀 **API 驱动与灵活部署:** 提供博客文章的创建、列表查询和详情查询 API 接口,并支持博客多语言、多个网站独立管理及鉴权、以及列表分页功能。其设计允许部署在 Cloudflare Worker 上,并能与全栈框架的 SSG(静态站点生成)结合,有效控制请求量和成本。

💡 **AI 辅助开发实践:** 作者分享了首次完全依赖 AI(Claude Code)进行 Spec-Driven Development 的经历,强调了 AI 在后端和 CLI 代码生成方面的强大效率,并认为在充分的指示下,AI 可以在短时间内完成复杂的开发任务,预示着 AI 在软件开发领域的巨大潜力。

项目地址

Simple CMS

项目介绍

一个简单的内容管理系统,可以将多个网站的博客内容集中管理,支持 API 接口读取,支持部署在 Cloudflare 。

为什么要做这个?我之前打算用 React Router 做一个 SSR 的网站,想部署在 Cloudflare Worker 上,但是因为 Edge 环境的诸多限制,导致开发一个支持 markdown 写作的博客功能很困难,比如因为 Edge 环境不支持 fs 等库,导致无法动态读取博客列表。一个替代的方案是部署一个开源的 CMS 系统来管理内容,通过 API 读取,但是开源 CMS 系统都太重了,学习成本很高,维护成本也高。所以就想自己做一个简单的 CMS 系统,仅支持有限的功能。

该 CMS 有两个模块:CLI 前端和后端服务,支持以下功能:

    支持用 mdx 在本地写作,支持元数据及内容格式校验,支持通过 CLI 上传支持通过 CLI 上传本地图片到 Cloudflare R2支持博客文章创建、列表查询、详情查询接口支持博客多语言支持多个网站及每个网站单独鉴权支持博客列表分页

经过测试,项目部署成功后可正常使用。

如何使用

在本地创建 content 目录,目录下每个子目录是一个网站,每个网站下的子目录是多语言

如上图所示,first-blog.mdx 是一篇博客内容,可参照样本进行编写:

---title: 测试博客excerpt: 这是一篇测试博客date: "2025-09-16"status: publishedslug: test-blog---这是一篇测试博客,使用 mdx 格式编写。## 普通正文这是测试内容## 图片![claude code](../_imgs/first-blog-anthropic-claude-code.webp)

写完之后,运行 pnpm run blogUpload test/zh-CN/first-blog.mdx 命令进行上传,如果有本地图片,会提醒先上传图片。

上传之后,在网站代码中就可以通过 API 进行请求了

// test 为网站名称const response = await fetch(`${CMS_API_URL}/sites/test/articles`, {    headers: {      Authorization: `Bearer ${CMP_API_KEY}`,      "Content-Type": "application/json",    },});// test-blog 为博客 slugconst response = await fetch(    `${CMS_API_URL}/sites/test/articles/zh-CN/test-blog`,    {      headers: {        Authorization: `Bearer ${CMP_API_KEY}`,        "Content-Type": "application/json",      },    }  );

从此告别复杂的文档系统配置和 CMS 服务,十分清爽。

因为一般的全栈框架会支持部分页面 SSG 生成,可以把博客内容生成静态页面,这样 Simple CMS 服务不会接受大量请求,不用担心性能问题,也不用考虑费用问题。

AI 编程感受

这个项目是我第一个完全放手让 AI 来写代码的项目,一开始方法不对重写了一遍,后面实践 Spec-Driven Developement 之后,发现越来越得心应手。这个版本我是通过 7 个 spec 来实现的,除了前两个 spec 我操心比较多,后面几个 spec 基本上都是一遍就做得差不多了,都是小修小改。前两个 spec 操心较多是因为我给 AI 留的线索比较少 (Claude.md),也没有给 AI 足够的约束。

现在回过头来看,如果让我重新做这样的系统,并给予充分的 Token ,可能 2-3 天就可以做到当前这种程度。这还是在我没有并行多个 Claude Code 的情况下,可以看出 AI 的恐怖效率(在油管上看到 Anthropic 内部有人同时并行四个 Claude Code 写代码)。

目前我只尝试让 AI 写服务端和 CLI 代码,还没有尝试用 AI 来写前端,Claude Code 也还有许多特性没有尝试,比如并行多个 Claude Code ,Hook ,Subagents 等,后续打算再多做几个这样的系列,并分享出来。

从零开始详细开发过程

    使用 Claude Code 做个 CMS (一)使用 Claude Code 做个 CMS (二)使用 Claude Code 做个 CMS (三)使用 Claude Code 做个 CMS (四)使用 Claude Code 做个 CMS (五)使用 Claude Code 做个 CMS (六)

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Simple CMS 内容管理系统 AI 编程 Cloudflare Worker MDX Spec-Driven Development Claude Code Content Management System AI Programming Edge Computing
相关文章