关于 cms
cms 是一项德语技能,用于判断项目是否需要内容管理系统,并在合适时配置 Strapi。它比较较简单的内容编辑方案与数据库支持的 CMS,并提供部署和访问指导。
主要功能
- 01评估是否需要 CMS
- 02比较 Markdown、Decap CMS 与 Strapi
- 03使用 SQLite 和 Docker Compose 配置 Strapi
- 04通过 SSH 隧道限制管理端访问
- 05让网站构建流程连接 CMS 内容
- 06检查资源需求与媒体持久化
适用场景
- 01为网站选择内容编辑方案
- 02部署自托管的 Strapi 实例
- 03让不使用终端的用户编辑内容
- 04在网站构建时获取 CMS 内容
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dischen87/ albatros-skills --skill cms安装后在 Claude Code 中输入/cms确认已加载。
详细介绍
CMS:走廊里的公告板
这个比喻
CMS 就像走廊里的公告板。有人想发布内容,就贴上一张纸条,不必重新建一面墙。网站读取这些纸条,并把它们美观地展示出来。
如果纸条经常由不同的人张贴,公告板就很实用:活动、新闻、产品、菜单。如果一个页面一年只改两次,它就像一件只占地方的家具。
**如何使用这个比喻:**在你的第一条回复中,先告诉对方这个比喻,再提问或展示命令,即使对方一上来就想要解决方案也一样。
沟通方式
- **不要只提问:**如果缺少项目或某项信息,仍然给出具体步骤,或者先起草文件,并标明假设(
[假设:…])。最后再询问缺少的信息。 - 使用“你”,表达简短。如果不需要公告板,就坦诚地建议不要用。每多一款软件,就多一项需要维护、备份和更新的东西。
1. 真的需要 CMS 吗?
问三个问题:
- 内容多久变化一次?(每周或更频繁 → 更可能需要)
- 谁来修改?(不使用终端的人 → 更可能需要)
- 是否有许多格式相似的条目?(活动、产品、文章 → 更可能需要)
分三个等级,始终选择够用的最简单方案:
| 等级 | 方案 | 适用情况 |
|---|---|---|
| A:项目中的文本 | 内容以 Markdown 文件的形式存放在仓库中,由 AI 修改 | 一个人用 AI 维护所有内容,且很少修改 |
| B:通过你的日志仓库使用公告板 | 在浏览器中打开编辑界面(例如 Decap CMS),修改仓库中的文件 | 其他人需要修改文本,但不需要数据库 |
| C:独立 CMS | 部署在服务器上、使用数据库的程序,例如 Strapi | 条目很多、涉及多个角色、需要管理图片,之后还要开发应用 |
如果答案是 A 或 B:把它写进 docs/plan.md,然后到此为止。这就是一个不错的结果。C 级方案需要独立服务器,因此先做试点。使用 Light 时,A 和 B 都可以。
2. 设置 Strapi(C 级)
准备工作
- Strapi 需要内存。用服务器上的
free -h检查是否至少有约 1 GB 可用内存。否则先提升服务器性能(Skillkosten)。 - 拍照:使用名为
vor-cms的工具snapshot(Skillzurueck-auf-gestern)。
设置
- 在仓库的
cms/目录中本地创建 Strapi 项目(当前指南:npx create-strapi@latest cms),并使用 SQLite 作为数据库。数据库文件不要放进日志仓库(.gitignore)。 - 在
compose.yaml中添加一个名为cms的服务:容器名称为cms,仅在内部开放端口(127.0.0.1:1337:1337),并为数据库和上传的图片创建一个卷。将密钥(APP_KEYS、JWT_SECRET、ADMIN_JWT_SECRET、API_TOKEN_SALT)作为环境变量,存放在服务器上的.env文件中,绝不能放进仓库(Skillsicherheit)。 - 日志仓库和流水线(Skills
git-logbuch、pipeline)。然后在服务器上运行:docker ps应显示cms。
通往公告板的秘密通道
编辑区域不对外公开。用户通过隧道访问它。可以把它想象成一条秘密通道,从对方的电脑直通走廊,路人无法从街上经过这条通道。
ssh -L 1337:localhost:1337 {name}@aufwind.sh
只要这个窗口保持打开,对方就可以在浏览器中打开 http://localhost:1337/admin。首次使用时,对方需要在那里自行创建管理员账户。密码只在该页面输入。
接入内容
- 和对方一起创建一种内容类型(例如包含标题、日期、地点、文本、图片的“活动”)。
- 网站在构建时,通过同一个 Docker 网络中的
http://cms:1337/api/...获取条目。使用只有读取权限的 API Token,并将它作为密钥保存在服务器上。 - 新条目会在下一次构建后显示。如果对方希望立即显示:在 Strapi 中配置一个触发构建的 Webhook。等到确实有需要时再做这一步。
易踩的坑
- 将管理区域公开到互联网:无异于邀请攻击者。请使用隧道。
- 忘记更新:定期更新 Strapi,并提前拍照。
- 图片只存放在容器中:没有卷的话,下次重启后图片就会消失。
检查任务
使用 mission_pruefen 检查 webseite-04-cms。检查会确认容器 cms 是否正在运行。如果对方有意选择了 A 级或 B 级,请告诉对方可以跳过这项任务。这是一个明智的决定,不是遗漏。
结束消息
你在此步骤中的最后一条消息,以一句关于图片「走廊里的公告板」的话开头,再次点明核心。接下来说明:已完成的内容、结果所在位置、尚未完成的内容,以及下一步要做什么。
评论
支持 Markdown