mcpField
C
cms

cms

github.com/dischen87其他010 次安装今天更新
代码仓库

关于 cms

cms 是一项德语技能,用于判断项目是否需要内容管理系统,并在合适时配置 Strapi。它比较较简单的内容编辑方案与数据库支持的 CMS,并提供部署和访问指导。

主要功能

  1. 01评估是否需要 CMS
  2. 02比较 Markdown、Decap CMS 与 Strapi
  3. 03使用 SQLite 和 Docker Compose 配置 Strapi
  4. 04通过 SSH 隧道限制管理端访问
  5. 05让网站构建流程连接 CMS 内容
  6. 06检查资源需求与媒体持久化

适用场景

  1. 01为网站选择内容编辑方案
  2. 02部署自托管的 Strapi 实例
  3. 03让不使用终端的用户编辑内容
  4. 04在网站构建时获取 CMS 内容

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dischen87/albatros-skills --skill cms

安装后在 Claude Code 中输入/cms确认已加载。

详细介绍

CMS:走廊里的公告板

这个比喻

CMS 就像走廊里的公告板。有人想发布内容,就贴上一张纸条,不必重新建一面墙。网站读取这些纸条,并把它们美观地展示出来。

如果纸条经常由不同的人张贴,公告板就很实用:活动、新闻、产品、菜单。如果一个页面一年只改两次,它就像一件只占地方的家具。

**如何使用这个比喻:**在你的第一条回复中,先告诉对方这个比喻,再提问或展示命令,即使对方一上来就想要解决方案也一样。

沟通方式

  • **不要只提问:**如果缺少项目或某项信息,仍然给出具体步骤,或者先起草文件,并标明假设([假设:…])。最后再询问缺少的信息。
  • 使用“你”,表达简短。如果不需要公告板,就坦诚地建议不要用。每多一款软件,就多一项需要维护、备份和更新的东西。

1. 真的需要 CMS 吗?

问三个问题:

  1. 内容多久变化一次?(每周或更频繁 → 更可能需要)
  2. 谁来修改?(不使用终端的人 → 更可能需要)
  3. 是否有许多格式相似的条目?(活动、产品、文章 → 更可能需要)

分三个等级,始终选择够用的最简单方案:

等级方案适用情况
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 可用内存。否则先提升服务器性能(Skill kosten)。
  • 拍照:使用名为 vor-cms 的工具 snapshot(Skill zurueck-auf-gestern)。
设置
  1. 在仓库的 cms/ 目录中本地创建 Strapi 项目(当前指南:npx create-strapi@latest cms),并使用 SQLite 作为数据库。数据库文件不要放进日志仓库(.gitignore)。
  2. 在 compose.yaml 中添加一个名为 cms 的服务:容器名称为 cms,仅在内部开放端口(127.0.0.1:1337:1337),并为数据库和上传的图片创建一个卷。将密钥(APP_KEYS、JWT_SECRET、ADMIN_JWT_SECRET、API_TOKEN_SALT)作为环境变量,存放在服务器上的 .env 文件中,绝不能放进仓库(Skill sicherheit)。
  3. 日志仓库和流水线(Skills git-logbuch、pipeline)。然后在服务器上运行:docker ps 应显示 cms。
通往公告板的秘密通道

编辑区域不对外公开。用户通过隧道访问它。可以把它想象成一条秘密通道,从对方的电脑直通走廊,路人无法从街上经过这条通道。

ssh -L 1337:localhost:1337 {name}@aufwind.sh

只要这个窗口保持打开,对方就可以在浏览器中打开 http://localhost:1337/admin。首次使用时,对方需要在那里自行创建管理员账户。密码只在该页面输入。

接入内容
  1. 和对方一起创建一种内容类型(例如包含标题、日期、地点、文本、图片的“活动”)。
  2. 网站在构建时,通过同一个 Docker 网络中的 http://cms:1337/api/... 获取条目。使用只有读取权限的 API Token,并将它作为密钥保存在服务器上。
  3. 新条目会在下一次构建后显示。如果对方希望立即显示:在 Strapi 中配置一个触发构建的 Webhook。等到确实有需要时再做这一步。

易踩的坑

  • 将管理区域公开到互联网:无异于邀请攻击者。请使用隧道。
  • 忘记更新:定期更新 Strapi,并提前拍照。
  • 图片只存放在容器中:没有卷的话,下次重启后图片就会消失。

检查任务

使用 mission_pruefen 检查 webseite-04-cms。检查会确认容器 cms 是否正在运行。如果对方有意选择了 A 级或 B 级,请告诉对方可以跳过这项任务。这是一个明智的决定,不是遗漏。

结束消息

你在此步骤中的最后一条消息,以一句关于图片「走廊里的公告板」的话开头,再次点明核心。接下来说明:已完成的内容、结果所在位置、尚未完成的内容,以及下一步要做什么。

评论

支持 Markdown