下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/qiping--zmcms.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @qiping/zmcms。智盟 CMS 助手助您轻松建站!支持一键生成网站、定制模板、管理栏目与单页,快速发布文章产品及落地页。无论是内容更新还是媒体上传,都能高效处理,让您专注于业务增长,无需操心技术细节。
阅读全文 (展开查看完整说明)
概述
智盟CMS 建站与内容运营
任务目标
- 面向智盟 CMS(
https://zmcms.com)的外部技术助手能力包,覆盖四类核心场景:- 整站构建:需求确认 → 模板制作上传 → 模板绑定 →
site/build一站式建站 - 模板工程:整站静态模板(页面 + 公共片段 + CSS/JS/图片),禁止硬编码假数据;语法与变量规范一律以 template-spec 为准
- 内容运营:栏目创建/修改、单页正文、文章与产品发布、媒体(图/视频/音频)上传、分页查询
- 站点维护:站点信息/SEO 修改、域名绑定、落地页增删改查、把落地页设为首页或从首页撤下、留言列表查看与通知邮箱配置、结构查询
- 整站构建:需求确认 → 模板制作上传 → 模板绑定 →
- 触发:用户表达"帮我建个企业网站""发一篇新闻""改一下关于我们页面""上传模板""做个落地页""给 xxx.com 加个栏目""有哪些留言""留言通知发到某邮箱"等自然语言需求时。
铁律速记(本文件只保留硬门禁)
唯一出处原则:本文件是门禁层,不承载协议细节、字段规则、模板写法或验证流程——这些一律写在 references 里,各文档开头自带目录,按操作步骤的强制读取要求去读即可。只有下面这几条门禁需要在本文件常驻,因为它们发生在「还没打开文档就该拦住」的时刻。
硬门禁(未满足前禁止动手)
- 无有效凭证不得发起业务调用——用户没有正式 Key 时,智能体直接静默走免鉴权
/cms/demo/key/create拿临时 Key(临时 Key 不得告知用户)。官方口径的 temp Key 顺序是:先做完整模板 → 调一次site/build建站,成功后自动绑站,预览域名与认领码在data.site.domain/data.site.claimCode(含 15 天免费期),此后一律用维护接口、不再调build/create。⚠️ 但 2026-10-27 实测发现 temp Key 在未绑站时template/create会被拒(「临时 API Key 未绑定站点,无法操作模板」),此时按官方顺序走不通,需先site/create绑站再回来做模板;两种凭证的顺序差异与判别方法见 api-reference 2.4。认领用demo/claim+ 当时记下的认领码,认领后临时凭证立即失效,必须换正式 Key 继续。仅当用户提供的正式 Key 鉴权失败时才引导到https://zmcms.com注册创建密钥;不得猜测、伪造或用示例 Key 空跑。体验凭证有硬额度:10 天内最多 3 套模板 + 累计 500 个上传文件(产品图与模板文件都计数),且只能操作本站已绑定模板树(首次创建顶层模板会自动写入站点template);一套体验站的素材与文件数必须一次规划到位;触限时只说「暂时不能再新建模板/上传文件」并引导认领换正式 Key,绝不提及临时 Key。→ api-reference 2.1 / 2.4 - 整站语言必须先确认:编写任何固定文案前先与用户敲定展示语言,一套模板只用一种,禁止混排;需另一语言时另建模板或独立语言站点。→ template-spec 概览
- 图片必须真实可访问:优先「AI 生图 →
template/upload→ 引用地址」;兜底占位图仅限建站过程临时使用,交付前必须换成模板包内已上传的图片。→ template-spec 2.8 - 未授权不发布:没收到明确发布指令时保持草稿(
status = 0);不泄露完整 Token。 - 破坏性操作须明确确认:
template/remove(级联删除)、sort/delete(删栏目;栏目下有内容须先用content/delete清空)、content/delete(删内容,无回收站不可恢复)、site/bindDomain(换域名)、正式发布(status = 1);bindDomain成功后把data.dnsTip解析说明原样告知用户,不得拆改或编造 IP。 - 修改已有文章 / 产品一律用
content/update(api-reference 6.4,部分字段更新、未传字段保持原值),禁止用content/publish重发——重发只会新增一份重复内容,旧那份还得再删。只传要改的字段即可,不要全量回传;pageModel在本接口改不动(服务端静默忽略),迁移栏目不会改写url(仍是旧栏目路径段),下线后不带status筛选的列表仍会返回该条 → 详见 api-reference 6.4.1。 - 零编造:未确认的企业事实(电话、地址、资质、案例)不得编造并发布;AI 生成内容需先征得同意。
- 跨租户禁止:同一 Token 只能操作其所属租户的数据。
- 不知道 ID 就先查:先调
site/infoWithSorts、sort/list、template/list,禁止把名称当 ID。 - 不得试图绕过服务端限制:限额按 Key 累计,换模板名重建目录不会重置;失败原因不明时(如只返回「上传文件过大」)不得向用户编造具体阈值,也不得原样重试;更不得为了「解释失败」把临时 Key 说出来。→ api-reference 禁止行为
前置准备
- 凭证口径以硬门禁 1 为唯一权威:用户没有正式 Key 时静默取体验凭证继续建站,不得因「没有 Key」而停下来引导注册;只有用户提供的正式 Key 鉴权失败才引导到
https://zmcms.com。细则见 api-reference 2.1 / 2.4,本文件不重复书写。 - 目标 站点域名缺失时先询问,不要臆造(体验站预览域名由建站结果返回——官方顺序取
site/build的data.site.domain,备选链路取site/create的data.domain,无需用户提供)。Token 仅用于请求头,向用户复述命令时用{{token}}占位。 - 服务地址统一记作
{{baseUrl}}(末尾不带/)。本文件不写具体接口地址,真实网关域名以 [references/api-reference.md](references/api-reference.md) 概览为唯一出处;组装任何请求前以该文档为准,不要凭空猜测域名。 - 技能版本检查不可省略(免鉴权):调用任何业务接口前必须先
POST /cms/skill/version,把data.version与本地技能自身声明的版本比较。响应data只有version一个字段(旧版的prompt已从接口移除,不得再按它执行更新命令);服务端版本更高时,明确提示用户存在新版本并建议更新,是否更新由用户决定,但更新不是继续任务的前提——提示之后照常继续用户的建站与维护,不得阻断。→ api-reference 2.3
操作步骤
- 识别意图并路由接口
- 对照 [references/api-reference.md](references/api-reference.md) 第 3 节选定接口;复杂流程(建站、模板、维护)先读取 [references/workflows.md](references/workflows.md)。
- 查阅接口参数与响应
- 组装请求体前,必须先读取 [references/api-reference.md](references/api-reference.md),核对必填字段、字符串 ID 规则、分页规则与错误码处理。
- 涉及模板生成/上传时
- 先确认整站语言:与用户明确站点展示语言(中文 / English / 其他),确认后全站只用这一种语言,禁止中英混排;用户未说明时按站点定位判断并明确告知所选语言。
- 必须先读取 [references/template-spec.md](references/template-spec.md),按目录结构、include 复用、变量绑定、占位图规则一次性生成整站模板,并用其第 7 节自检清单自查后再上传。
- ⚠️ 官方硬红线:每个
${}内只允许一层!——${seoTitle!siteTitle!}、${data.title!sort.sortName!}这类链式默认值模板引擎无法解析,会整页渲染失败甚至请求长时间无响应。统一 SEO 变量后端已完成回退链,直接写${seoTitle!}即可。→ template-spec 第 6 节第 8 条
- 执行调用
- 简单单接口调用:智能体直接用
curl发起 POST 请求。 - 多步骤链路(建站全流程、批量上传、分页拉取):立即调用 [scripts/cms-api.js](scripts/cms-api.js) 封装的请求函数,减少重复样板代码与出错概率。
- 简单单接口调用:智能体直接用
- 结果反馈
- 明确告知:是否成功、关键返回值(域名、预览地址、
sortId、contentId、landingPageId)、失败时的code/msg与修复建议。
- 明确告知:是否成功、关键返回值(域名、预览地址、
- 构建后验证(建站场景)
- 按 [references/api-reference.md](references/api-reference.md) 第 13 节「写后验证协议」逐项执行:补绑列表模板与单页模板(13.1)、页面级验证绑定(13.2)、抽取每个
<img src>请求确认 200(13.3)、写接口回读判成败(13.4)、绕缓存抓取(13.5)、实际路由(13.6)、404 三步判别(13.7)。 - 每个栏目都要各自补绑模板,含
pageModel=3的单页(要补showTemplate: "page.html")。漏绑单页不会 404、不会空白,而是/page/{别名}.html静默回落渲染首页——HTTP 200、页面看着很正常,是最容易当成「交付完成」的一类故障。 - 不得凭「HTTP 200 / 字节数不小 / 页面有内容」判定通过:必须比对该模板专属的结构特征串 + 真实内容片段(特征串从模板正文里取,不要凭印象写)。
- 补绑或改模板后先间隔重抓 2 次再下结论:渲染缓存依赖后端 Redis,首次抓取可能是「假 404」,稳定 404 才值得怀疑模板语法。
- 必须回写首页字面量栏目 ID:模板阶段写的占位 ID(如
"0#6")拿到sortId后必须用template/saveFileContent换成真实 ID。不得凭「首页有内容」判定成功——实测占位 ID 不报错、不空白,而是让两个模块各取一遍本站全部内容,栏目区分悄悄失效(机制见 template-spec 2.5)。 - 只看 HTML 结构发现不了图片 404 与空白列表页;
code = 0也不代表绑定已落库。
- 按 [references/api-reference.md](references/api-reference.md) 第 13 节「写后验证协议」逐项执行:补绑列表模板与单页模板(13.1)、页面级验证绑定(13.2)、抽取每个
意图 → 接口路由
见 [references/api-reference.md](references/api-reference.md) 第 3 节「接口能力总表(含用户意图路由)」——该表按用户说法直接映射到接口与 Content-Type,本文件不再重复维护一份,避免两处编号漂移。
资源索引
脚本工具
- [scripts/cms-api.js](scripts/cms-api.js)
- 用途:统一封装 POST + JSON + Authorization 请求,内置
code != 0中断、雪花 ID 字符串保护、multipart 上传辅助。 - 触发时机:执行多步骤建站链路、批量模板/媒体上传、分页循环拉取内容时,必须调用此脚本而不是手写十几遍 curl;单条查询/发布也可直接用 curl。
uploadZipSmart({ currentPath, zipPath }):ZIP ≤10MB 自动直传,>10MB 自动走init → chunk ×N → merge(失败自动cancel),上传大模板包时必须用它,不要手搓分片逻辑。updateContent(domain, contentId, fields):修改已有文章 / 产品的唯一入口(部分更新,未传字段保持原值)。禁止用content/publish重发来「改」——实测重发不会覆盖,只会新增一份重复内容。内部已拦截「一个可改字段都没传」和「空正文」。deleteContent(domain, contentId)/deleteSort(domain, sortId):两个删除动作的语义化封装(内部走postRaw,成功响应可能无data)。只在用户明确要求删除时调用,方法注释里写明了删前回读确认与删后以total/栏目数判定成败的要求——缺参数会直接抛错,禁止拿标题或栏目 ID 冒充内容 ID。updatePageContent(domain, sortId, content)/pageContentDetail(domain, sortId):单页正文的唯一读写入口(内部路径已带/sort/前缀)。不要用sort/create/sort/update传content写单页正文——接口返回成功但前台不渲染;写完还要给该栏目补绑showTemplate: "page.html",否则页面会静默回落渲染首页。
- 用途:统一封装 POST + JSON + Authorization 请求,内置
参考文档
- [references/api-reference.md](references/api-reference.md)
- 内容:请求/响应/ID 传输协议、全量接口清单、各接口必填字段、站点/栏目/内容/落地页字段规则、分页跳转规则、错误处理,以及第 13 节「写后验证协议」(列表模板补绑与页面级验证、内容图片路径规则、
code=500回读判别、成功响应无data时改用postRaw、静态资源按 CDN 完整 URL 验证、绕缓存抓取、返回 url 与真实路由不一致——实测类规则的唯一权威出处)。 - 使用时机:组装任何接口请求体之前,必须先读取此文档核对参数;任何写入操作之后做验证前,必须先读取第 13 节。
- 关键作用:防止漏传必填项、把 ID 转成数字、误用 GET/PUT、把名称当 ID,以及凭状态码误判写入成败。
- 内容:请求/响应/ID 传输协议、全量接口清单、各接口必填字段、站点/栏目/内容/落地页字段规则、分页跳转规则、错误处理,以及第 13 节「写后验证协议」(列表模板补绑与页面级验证、内容图片路径规则、
- [references/template-spec.md](references/template-spec.md)
- 内容:模板目录结构、include 语法与职责、导航/Banner/首页模块写法、各页面注入变量与展示字段、分页、留言表单(按固定
name属性写死输入框、不用formField控制显示;图片验证码captchaCode+/feedback/captcha;必填项由前端提交脚本校验,后端只校验验证码)、2.7.1 第三方开源 CDN 引用规则、SEO 统一变量、OSS 资源路径、真实占位图规则、模板语言与目标市场审美要求、页脚年份等日期输出写法,第 6 节「渲染失效排查表」(整页截断 / 解析报错 / 脏数据回落的根因清单,模板语法侧唯一权威出处)与第 7 节 AI 模板自检清单。 - 使用时机:生成、修改或上传任何模板 HTML/CSS/JS 之前,必须先读取此文档;页面出现整段消失、报错、渲染出他站数据时,必须先查第 6 节排查表。
- 关键作用:模板写错会导致整站渲染失败且难以排查,必须按规范一次性生成。
- 内容:模板目录结构、include 语法与职责、导航/Banner/首页模块写法、各页面注入变量与展示字段、分页、留言表单(按固定
- [references/workflows.md](references/workflows.md)
- 内容:场景 A 一键建站三步流程、场景 B 模板文件管理、场景 D–I 已有站点维护与内容发布、场景 J 留言列表与通知邮箱配置、场景 K 临时 Key 体验与站点认领的完整决策链。
- 使用时机:用户需求涉及多个接口串联(建站、补栏目、发内容、改单页、做落地页、查留言、配通知邮箱)时,必须先读取此文档再动手。
- 关键作用:保证调用顺序正确(先确认需求 → 再做模板 → 后绑模板建站),避免事务性接口被拆坏。
- [references/field-notes.md](references/field-notes.md)
- 内容:带日期的实测台账——每轮验证「哪天、什么输入、看到什么响应」,含接口存在性与报错文案清单、正式 Key / 体验站链路台账、测试踩坑与解决办法。
- 使用时机:仅在两种情况下读取:① 排查「文档说可以但实际报错」、需要判断某条结论的证据强度与日期时;② 每轮核对官方文档、准备推翻或沿用旧实测结论时。正常建站流程不读。
- 关键作用:防止把「某次实测时接口不存在 / 某参数被夹回」这类会随服务端上线失效的历史结论当永久事实沿用。⚠️ 本文档与 api-reference 第 13 节、template-spec 第 6 节冲突时以二者为准,并立即把新证据补进对应权威章节。
静态资源
- 本技能不含 assets/;模板示例代码统一放在 references/template-spec.md 内。
注意事项
- 附件读取规则:涉及接口参数、模板语法、多步流程时,必须优先读取 references/ 对应文档,不要凭推测拼装请求体或编写模板。本文件只给门禁,不给可直接执行的参数细节。
- 脚本调用规则:脆弱操作(ZIP 打包上传、multipart 上传、分页循环、建站事务链路)立即调用 [scripts/cms-api.js](scripts/cms-api.js),不要手搓请求逻辑;大模板包一律用
uploadZipSmart自动分流直传/分片。 - 安全底线:脚本对 HTTPS 证书校验始终开启且无关闭开关。遇到
UNABLE_TO_VERIFY_LEAF_SIGNATURE等证书报错时,禁止以任何形式放宽或跳过证书校验(改请求选项、设环境变量、给命令行工具加跳过验证的参数都不允许)——这是中间人攻击风险,只能提示用户在运行环境补全 CA 证书链后重试(详见 api-reference 2.2)。 - 充分利用智能体的内容创作与生图能力,简单单接口调用不必写脚本。