mcpField
S
safe-publish

safe-publish

github.com/webflow云与 DevOps132313 次安装6 天前更新
代码仓库

关于 safe-publish

safe-publish 是用于检查并发布 Webflow 网站的技能,包含发布前验证和明确确认流程。它会检查网站变更、页面、CMS 项目及警告,发布后再验证结果。

主要功能

  1. 01检查网站发布状态和变更
  2. 02审查页面与 CMS 项目
  3. 03标记草稿项目和缺失的 SEO 元数据
  4. 04预览发布范围和域名
  5. 05要求明确确认并验证发布结果

适用场景

  1. 01发布 Webflow 网站前审查变更
  2. 02查找不会随发布上线的 CMS 草稿项目
  3. 03选择发布到子域名或自定义域名
  4. 04核对发布时间和网站状态

MCP 相关

该技能使用 Webflow MCP 工具检查网站、页面和 CMS 集合,并发布所选网站。发布前要求用户明确输入“publish”。

安装

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

$npx skills add https://github.com/webflow/webflow-skills --skill safe-publish

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

详细介绍

安全发布

通过全面的预览、验证和明确的确认工作流发布 Webflow 网站。

重要提示

所有操作始终使用 Webflow MCP 工具:

  • 使用 Webflow MCP 的 data_sites_tool,并将 action 设为 list_sites,列出可用网站
  • 使用 Webflow MCP 的 data_sites_tool,并将 action 设为 get_site,获取网站详细信息
  • 使用 Webflow MCP 的 data_pages_tool,并将 action 设为 list_pages,获取所有页面
  • 使用 Webflow MCP 的 data_cms_tool,并将 action 设为 get_collection_list,列出 CMS 集合
  • 使用 Webflow MCP 的 data_cms_tool,并将 action 设为 list_collection_items,检查草稿项目
  • 使用 Webflow MCP 的 data_sites_tool,并将 action 设为 publish_site,发布网站
  • 开始前使用 Webflow MCP 的 webflow_guide_tool 获取最佳实践
  • 不要使用任何其他工具或方法执行 Webflow 操作
  • 所有工具调用都必须包含必需的 context 参数(15-25 个词,使用第三人称视角)

说明

阶段 1:选择网站并检查状态
  1. 获取网站:确定目标网站。如果用户未提供网站 ID,请向其询问。
  2. 获取网站详情:使用 Webflow MCP 的 data_sites_tool,并将 action 设为 get_site,获取以下信息:
    • 上次发布时间
    • 上次更新时间
    • 已配置的自定义域名
    • 区域设置
  3. 检查发布状态:确定网站是否有尚未发布的更改:
    • 比较 lastUpdated 与 lastPublished 时间戳
    • 如果 lastPublished 为 null,则网站从未发布过
    • 如果 lastUpdated > lastPublished,则网站有尚未发布的更改
阶段 2:检测并分析更改
  1. 列出所有页面:使用 Webflow MCP 的 data_pages_tool,并将 action 设为 list_pages
  2. 识别已修改的页面:
    • 将每个页面的 lastUpdated 与网站的 lastPublished 比较
    • 标记上次发布后修改过的页面
    • 按类型分类(静态页面、CMS 模板、已归档、草稿)
  3. 列出所有集合:使用 Webflow MCP 的 data_cms_tool,并将 action 设为 get_collection_list
  4. 检查草稿项目:
    • 对每个集合,使用 Webflow MCP 的 data_cms_tool,并将 action 设为 list_collection_items
    • 统计 isDraft: true 的项目数
    • 统计上次发布后修改过的项目数
  5. 检测问题:
    • 未明确纳入发布范围、因而不会发布的草稿项目
    • 缺少 SEO 元数据的页面
    • 失效的引用(如果可检测)
阶段 3:发布前验证与预览
  1. 执行发布前检查:
    • 确认没有失效的集合引用
    • 检查是否有页面缺少必填字段
    • 提醒用户仍将保持未发布状态的草稿项目
  2. 生成详细预览:
    • 显示所有将要发布的页面
    • 显示所有将要发布的 CMS 项目
    • 显示发现的所有问题警告
    • 显示将要更新的域名
  3. 询问发布范围:
    • 仅 Webflow 子域名
    • 仅自定义域名
    • 子域名和自定义域名
阶段 4:确认并发布
  1. 要求明确确认:
    • 用户必须输入 "publish" 才能继续
    • "yes" 或 "y" 不应触发发布
    • 清楚地警告用户即将上线的内容
  2. 执行发布:
    • 使用 Webflow MCP 的 data_sites_tool,并将 action 设为 publish_site,传入正确的参数
    • 如果没有自定义域名,则将 customDomains 设为空数组
    • 根据用户的选择设置 publishToWebflowSubdomain
  3. 记录发布时间戳:
    • 发布后再次获取网站信息
    • 从 lastPublished 字段记录准确的发布时间
阶段 5:验证与报告
  1. 验证发布是否成功:
    • 检查 lastPublished 时间戳是否已更新
    • 验证网站能否通过已发布的 URL 访问
    • 清楚地报告任何验证失败
  2. 生成成功报告:
    • 显示发布时间戳
    • 列出已上线的内容(页面、条目)
    • 提供已发布的 URL
    • 显示验证状态
  3. 妥善处理失败:
    • 如果发布失败,显示清晰的错误消息
    • 提出补救步骤
    • 不要自动重试

示例

用户提示词:

Publish my site

步骤 1:选择网站

🚀 Safe Publish - Site Selection

Available Sites:

1. **MCP Demo#1**
   - Last published: January 9, 2026 at 20:05:38 UTC
   - Last updated: January 9, 2026 at 20:49:37 UTC
   - ⚠️ **Has unpublished changes** (updated 44 minutes after last publish)

2. **MCP Demo#2**
   - Last updated: January 9, 2026 at 19:32:53 UTC
   - Status: Not yet published

Which site would you like to publish? (1-2)

步骤 2:检测变更并预览

🚀 Publish Preview: MCP Demo#1

**Last published:** January 9, 2026 at 20:05:38 UTC
**Time since last publish:** ~1 hour 5 minutes

---

## Changes to Publish:

### 📄 Pages Modified: 1
└── **Home** (/)
    - SEO title updated to "Home Page"
    - Last modified: 21:10:52 UTC

### 📝 CMS Items: 2 draft items to publish

**Blog Posts (2 drafts):**

1. **"Why Webflow MCP Will Transform Your Workflow in 2026!"**
   - Status: Draft
   - Created: 20:24:44 UTC
   - Last modified: 21:11:03 UTC
   - Featured: Yes
   - Slug: webflow-mcp-transform-workflow-2026

2. **"Webflow E-commerce: The Future of Online Shopping in 2026!"**
   - Status: Draft
   - Created: 20:05:24 UTC
   - Last modified: 21:11:11 UTC
   - Featured: Yes
   - Slug: webflow-ecommerce-2026

---

**Pre-Publish Checks:**
- ✅ No broken references detected
- ✅ All required fields populated
- ⚠️ 2 draft items will become published

**Publish Targets:**
- Webflow subdomain: mcp-demo-1-e88499.webflow.io
- Custom domains: None configured

**⚠️ Type "publish" to make these changes live.**

步骤 3:用户输入“publish”后

🔄 Publishing MCP Demo#1...

Progress: ████████████████████ 100%

✅ Published Successfully!

**Site:** MCP Demo#1
**Published at:** 2026-01-09 21:12:52 UTC (January 9, 2026 at 21:12:52)

---

## What Went Live:

### 📄 Pages (1)
- ✅ Home (/) - SEO title updated

### 📝 Blog Posts (2)
- ✅ "Why Webflow MCP Will Transform Your Workflow in 2026!"
- ✅ "Webflow E-commerce: The Future of Online Shopping in 2026!"

---

## Verification:

- ✅ **Site accessible:** Yes
- ✅ **URL:** https://mcp-demo-1-e88499.webflow.io
- ✅ **Status:** Page loading successfully
- ✅ **Content delivery:** Webflow CDN responding

---

**🎉 Your site is now live with all changes published!**

All unpublished changes have been successfully published to the Webflow subdomain. The 2 draft blog posts are now visible on your site.

另一种情况:包含警告

🚀 Publish Preview: Company Site

**Last published:** January 8, 2026 at 14:30:00 UTC

---

## Changes to Publish:

### 📄 Pages Modified: 3
├── **About** (/about)
│   └── Content updated
├── **Contact** (/contact)
│   └── Form fields changed
└── **Home** (/)
    └── Hero section updated

### 📝 CMS Items

**Blog Posts:**
- 5 published items modified
- 2 draft items (will NOT be published automatically)

**Products:**
- 3 new items created
- 1 item updated

---

**Pre-Publish Checks:**
⚠️ **Warnings Found:**

1. **Missing SEO Metadata (2 pages):**
   - /about - No meta description
   - /contact - No meta title or description
   - 💡 Recommendation: Add SEO metadata before publishing

2. **Draft Items (2):**
   - "Upcoming Product Launch" (Blog Post)
   - "Holiday Sale Announcement" (Blog Post)
   - ⚠️ These will remain unpublished

3. **Large Change Set:**
   - 3 pages + 9 CMS items will be updated
   - Consider reviewing changes carefully

**Publish Targets:**
- Webflow subdomain: company-site.webflow.io
- Custom domains: example.com, www.example.com

---

**Would you like to:**
1. Proceed with publish (type "publish")
2. Cancel and review (type "cancel")

指南

阶段 1:关键要求

网站状态检查:

  • 始终使用操作 get_site 调用 data_sites_tool,获取完整的网站详情
  • 比较 lastUpdated 与 lastPublished,以检测尚未发布的变更
  • 如果时间戳相同,告知用户“没有变更需要发布”
  • 如果 lastPublished 为 null,警告“首次发布——整个网站都将上线”

时间戳处理:

  • 同时存储 ISO 格式和易读格式
  • 计算距离上次发布经过的时间
  • 显示时区(为清晰起见,优先使用 UTC)
阶段 2:变更检测规则

页面变更检测:

  • 将页面的 lastUpdated 与网站的 lastPublished 进行比较
  • 仅标记 lastUpdated > lastPublished 的页面
  • 对变更分类:
    • 内容变更(通过 API 难以检测)
    • SEO 元数据变更(如有,进行比较)
    • 结构变更(页面已创建/删除)

CMS 条目检测:

  • 检查所有条目的 isDraft 字段
  • 将 lastUpdated 与网站的 lastPublished 进行比较
  • 统计各状态的条目数量:
    • 已发布且未修改
    • 已发布且已修改
    • 草稿(不会发布)
    • 已归档(不会显示在网站上)

要检查的集合:

  • 使用操作 get_collection_list 调用 data_cms_tool,查询所有集合
  • 对每个集合,使用操作 list_collection_items 调用 data_cms_tool,列出条目
  • 如果网站有很多集合(10 个以上),请分批查询
阶段 3:发布前验证

必需检查:

  1. 无效引用:

    • 检查被引用的条目是否存在
    • 如果引用字段指向已删除或已归档的条目,则发出警告
    • 注意:API 可能无法轻易提供此信息——尽力检查
  2. 缺少必填字段:

    • 验证所有必填 CMS 字段均已填写
    • 如果必填字段为空,则发出警告(理论上不应出现,但仍需检查)
  3. SEO 完整性:

    • 检查页面是否缺少 seo.title 或 seo.description
    • 发出警告,但不要阻止发布
    • 提供改进建议
  4. 草稿条目警告:

    • 清楚列出所有草稿条目
    • 说明这些条目仍将保持未发布状态
    • 如果用户想先发布草稿,提供取消选项

警告级别:

  • 🔴 严重:会导致网站故障(无效引用、缺少必填字段)
  • ⚠️ 警告:不理想但仍可发布(缺少 SEO 信息、存在草稿)
  • 💡 建议:最佳实践(添加元描述、优化图像)

何时阻止发布:

  • 仅在发现严重错误时阻止
  • 对于警告和建议,允许用户继续
  • 始终醒目地显示警告
阶段 4:确认与发布

确认要求:

  • 用户必须输入“publish”(不区分大小写)
  • 不接受:“yes”、“y”、“ok”、“go”、“confirm”
  • 原因:防止因通用确认而意外发布
  • 如果用户输入其他内容,请再次询问或视为取消

发布 API 用法:

// Correct format for data_sites_tool with action publish_site
{
  "site_id": "site-id-here",
  "publishToWebflowSubdomain": true,  // or false
  "customDomains": []  // MUST be array, even if empty
}

// If custom domains exist:
{
  "site_id": "site-id-here",
  "publishToWebflowSubdomain": false,
  "customDomains": ["example.com", "www.example.com"]
}

域名选择:

  • 如果没有自定义域名:仅发布到子域名
  • 如果存在自定义域名:询问用户要发布到哪里
    • 仅子域名
    • 仅自定义域名
    • 两者都发布
  • 如果用户未指定,默认发布到子域名

错误处理:

  • 如果 customDomains 验证错误:确保它是一个数组
  • 如果出现 400 Bad Request:检查请求格式
  • 如果出现 403 Forbidden:检查站点发布权限
  • 如果出现 500 Server Error:5 秒后重试一次,然后报告失败
阶段 5:验证与报告

发布后验证:

  1. 获取更新后的站点信息:

    • 再次调用 data_sites_tool,使用操作 get_site
    • 验证 lastPublished 时间戳已更新
    • 如果时间戳未更新,发布可能失败
  2. 检查站点可访问性:

    • 使用 WebFetch 检查已发布的网址
    • 验证站点返回 200 OK
    • 检查是否提供了内容(而不是错误页面)
    • 测量响应时间
  3. 自定义域名检查:

    • 如果发布到了自定义域名,请验证每个域名
    • 部分域名可能需要时间才能完成传播(DNS)
    • 如果较慢,请注明:“域名可能需要几分钟才能更新”

验证失败处理:

  • 如果站点无法访问:明确报告
  • 注意:即使验证失败,变更也已发布
  • 可能的原因:
    • DNS 传播延迟
    • CDN 缓存尚未清除
    • Webflow 基础设施临时出现问题
  • 建议:“请在 2-3 分钟后尝试访问站点”

成功报告格式:

✅ Published Successfully!

Site: [Site Name]
Published at: [ISO Timestamp] ([Human Readable])

What Went Live:
- X pages modified
- Y CMS items published
- Z draft items promoted to published

Verification:
✅ Site accessible
✅ URL: [primary URL]
✅ Response time: [Xms]

[If custom domains]
Custom Domains:
✅ example.com - accessible
⚠️ www.example.com - propagating (may take 2-3 minutes)
最佳实践

始终:

  • ✅ 发布前展示全面的预览
  • ✅ 要求用户明确输入“publish”进行确认
  • ✅ 发布后验证站点
  • ✅ 报告准确的发布时间戳
  • ✅ 列出所有即将上线的变更
  • ✅ 警告用户存在草稿内容

绝不:

  • ❌ 未经用户明确确认就发布
  • ❌ 接受“yes”等通用确认
  • ❌ 向用户隐瞒警告
  • ❌ 自动重试失败的发布
  • ❌ 检测到关键错误时仍继续

边缘情况:

没有要发布的变更:

ℹ️ No Changes to Publish

Last published: January 9, 2026 at 20:05:38 UTC
Last updated: January 9, 2026 at 20:05:38 UTC

All changes are already published. Your site is up to date!

首次发布(之前从未发布过):

⚠️ First Publish Warning

This site has NEVER been published before.

This will make the ENTIRE site publicly accessible:
- All pages (2 pages)
- All CMS items (47 items across 3 collections)
- All assets

Are you ready to make this site live?
Type "publish" to proceed, or "cancel" to abort.

发布到暂存子域名:

  • 如果站点有自定义域名,但用户选择仅发布到子域名
  • 适用于发布到生产域名之前进行测试
  • 说明:“仅发布到子域名。自定义域名仍会显示旧版本。”

不支持部分发布:

  • Webflow 会发布整个站点,而不是单个页面
  • 无法发布特定页面或集合
  • 如果用户要求“只发布首页”,请说明此限制
  • 替代方案:使用暂存子域名进行测试
性能优化

对于大型站点:

  • 包含 100+ 个页面或 1000+ 个项目的站点可能需要时间分析
  • 显示进度:“正在分析 150 个页面……”
  • 尽可能批量调用 API
  • 对于非常大的变更集,可考虑跳过详细差异比较

缓存:

  • 在工作流期间缓存站点信息(不要不必要地重新获取)
  • 仅在发布后重新获取信息以进行验证

超时:

  • 大型站点的发布 API 调用可能需要 10-30 秒
  • 不要过早超时
  • 显示:“正在发布……大型站点可能需要最多 30 秒”
错误消息

清晰且可执行:

❌ 不佳:

"Publish failed"

✅ 良好:

"Publish Failed: Validation Error

The Webflow API returned an error:
- customDomains parameter must be an array

This is likely a configuration issue. Retrying...

常见错误:

  1. 验证错误(customDomains):

    • 修复方法:确保 customDomains: [] 是一个数组
    • 不要传入 null,也不要省略此字段
  2. 未找到站点:

    • 用户可能提供了错误的站点 ID
    • 列出可用站点并让用户选择
  3. 权限不足:

    • 站点可能需要特定的发布权限
    • 检查工作区访问设置
  4. 发布已在进行中:

    • 可能有另一个发布正在运行
    • 等待 30 秒后重试

评论

支持 Markdown