如何给自己的网站接入CMS
2026-07-11
正文开始
我的个人博客是用 Next.js 搭建的,文章一直以 Markdown 文件存放在 GitHub 私有仓库里。每次写新文章都要手敲 Markdown 语法,然后提交、推送,偶尔还会把格式搞乱——实在太麻烦了。
于是,我为我的网站接入了CMS(内容管理系统),可以直接用富文本编辑器写文章,写完点发布就会自动推送到Github,十分方便。
这篇文章就来记录我接入 Decap CMS(原 Netlify CMS)的整个过程,包括配置、部署授权服务、以及我踩过的一个大坑。如果你的技术栈也是 Next.js + GitHub,应该能直接照着做。
为什么使用Decap CMS
在动手之前,我也简单对比过几个方案:
- Strapi / Contentful:功能强大,但需要额外部署后端或付费,对于我的个人博客太重了。
- WordPress Headless:太臃肿,不符合我“轻量”的初衷。
- Decap CMS(Netlify CMS 的社区驱动版):完全免费,基于 Git,无需自建后端。它直接读写 GitHub 仓库里的 Markdown 文件,写完文章自动提交,完美契合我的博客架构。
接入过程
第一步:(新建两个文件)
在public\admin文件夹里新建两个文件(index.html、config.yml),在index.html里面建一个简单的页面,导入decap-cms的js脚本。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="noindex" />
<title>内容管理系统</title>
<link rel="icon" href="favicon.svg" type="image/svg+xml" />
</head>
<body>
<script src="https://unpkg.com/decap-cms@^3.0.0/dist/decap-cms.js"></script>
</body>
</html>
然后在config.yml写出CMS的一些配置,使CMS能连接到你的GitHub仓库。
backend:
name: github
repo: 你的GitHub用户名/你的仓库名 # 例如 shuaiqi/my-blog
branch: main
base_url: https://你的worker域名 # 稍后会说明
auth_type: pkce
media_folder: "public/images" # 上传的图片存放到这里
public_folder: "/images"
collections:
- name: "blog"
label: "博客文章"
folder: "content/blog" # Markdown 文件存放的目录
create: true
slug: "{{slug}}"
fields:
- { label: "标题", name: "title", widget: "string" }
- { label: "发布日期", name: "date", widget: "datetime" }
- { label: "正文", name: "body", widget: "markdown" }
第二步:部署 GitHub OAuth 授权服务(敲黑板!!!)
Decap CMS 需要一个独立的 OAuth 服务来帮你完成 GitHub 登录授权。官方和社区有一个现成的模板,我直接 fork 了:https://github.com/ublabs/netlify-cms-oauth
这个模板可以一键部署到 Vercel。我把它导入我的 Vercel 账号,设置了必要的环境变量(GitHub Client ID 和 Client Secret),然后就得到一个默认的.vercel.app域名。
结果,我发现.vercel.app在国内打不开——这是我踩的最大的坑
**解决办法:**我在 Vercel 项目设置里,给这个Worker绑定了一个我自己的子域名,解析生效后,马上就能在国内用了。
然后回到config.yml,把base_url改成你自己Worker的url。(完结撒花!!!)
结尾
感谢你能看到这里。这就是我折腾这个小破站的一点记录,谢谢你的喜欢~~(不要把我的网站放到收藏夹吃灰,😡!)~~,可爱捏。 总之,用上 CMS 之后写文章方便了不少,接下来打算继续折腾评论区功能,敬请期待~下次来的时候,说不定又有新东西了。😊