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. 01Webflowサイト公開前の変更確認
  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 をアクション list_sites とともに使用します
  • 詳細なサイト情報を取得するには、Webflow MCP の data_sites_tool をアクション get_site とともに使用します
  • すべてのページを取得するには、Webflow MCP の data_pages_tool をアクション list_pages とともに使用します
  • CMS コレクションを一覧表示するには、Webflow MCP の data_cms_tool をアクション get_collection_list とともに使用します
  • 下書きアイテムを確認するには、Webflow MCP の data_cms_tool をアクション list_collection_items とともに使用します
  • サイトを公開するには、Webflow MCP の data_sites_tool をアクション publish_site とともに使用します
  • 開始前にベストプラクティスを確認するには、Webflow MCP の webflow_guide_tool を使用します
  • Webflow の操作に、その他のツールや方法は使用しないでください
  • すべてのツール呼び出しには、必須の context パラメーターを含めてください(第三者の視点で、15~25 語)

手順

フェーズ 1:サイトの選択とステータスの確認
  1. サイトを取得する:対象のサイトを特定します。ユーザーがサイト ID を指定していない場合は、確認してください。
  2. サイトの詳細を取得する:Webflow MCP の data_sites_tool をアクション get_site とともに使用して、以下を取得します。
    • 最終公開日
    • 最終更新日
    • 設定済みのカスタムドメイン
    • ロケール設定
  3. 公開ステータスを確認する:サイトに未公開の変更があるかを判断します。
    • lastUpdated と lastPublished のタイムスタンプを比較します
    • lastPublished が null の場合、サイトは一度も公開されていません
    • lastUpdated > lastPublished の場合、サイトには未公開の変更があります
フェーズ 2:変更の検出と分析
  1. すべてのページを一覧表示する:Webflow MCP の data_pages_tool をアクション list_pages とともに使用します
  2. 変更されたページを特定する:
    • 各ページの lastUpdated とサイトの lastPublished を比較します
    • 最終公開後に変更されたページにフラグを付けます
    • 種類別(静的、CMS テンプレート、アーカイブ、下書き)に分類します
  3. すべてのコレクションを一覧表示する:Webflow MCP の data_cms_tool をアクション get_collection_list とともに使用します
  4. 下書きアイテムを確認する:
    • 各コレクションについて、Webflow MCP の data_cms_tool をアクション list_collection_items とともに使用します
    • isDraft: true のアイテム数を数えます
    • 最終公開以降に変更されたアイテム数を数えます
  5. 問題を検出する:
    • 明示的に含めない限り公開されない下書きアイテム
    • SEO メタデータが不足しているページ
    • 参照切れ(検出可能な場合)
フェーズ 3:公開前の検証とプレビュー
  1. 公開前のチェックを実行する:
    • コレクションの参照切れがないことを確認します
    • 必須フィールドが不足しているページがないか確認します
    • 未公開のままになる下書きアイテムについて警告します
  2. 詳細なプレビューを生成する:
    • 公開されるすべてのページを表示します
    • 公開されるすべての CMS アイテムを表示します
    • 見つかった問題について警告を表示します
    • 更新されるドメインを表示します
  3. 公開範囲を確認する:
    • Webflow サブドメインのみ
    • カスタムドメインのみ
    • サブドメインとカスタムドメインの両方
フェーズ 4:確認と公開
  1. 明示的な確認を必須にする:
    • 続行するには、ユーザーが「publish」と入力する必要があります
    • 「yes」または「y」では公開を実行しないでください
    • 公開される内容について明確に警告します
  2. 公開を実行する:
    • Webflow MCP の data_sites_tool をアクション 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:重要な要件

サイトのステータス確認:

  • 常に data_sites_tool のアクション get_site を使用して、サイトの詳細をすべて取得します
  • lastUpdated と lastPublished を比較し、未公開の変更を検出します
  • タイムスタンプが同一の場合は、「公開する変更はありません」とユーザーに伝えます
  • lastPublished が null の場合は、「初回公開のため、サイト全体が公開されます」と警告します

タイムスタンプの処理:

  • ISO 形式と人間が読みやすい形式の両方を保存します
  • 前回の公開からの経過時間を計算します
  • タイムゾーンを表示します(明確さを優先して UTC を推奨します)
フェーズ 2:変更検出のルール

ページの変更検出:

  • ページの lastUpdated とサイトの lastPublished を比較します
  • lastUpdated > lastPublished のページのみを対象にします
  • 変更を分類します:
    • コンテンツの変更(API での検出が困難)
    • SEO メタデータの変更(利用可能な場合に比較)
    • 構造上の変更(ページの作成/削除)

CMS アイテムの検出:

  • すべてのアイテムの isDraft フィールドを確認します
  • lastUpdated とサイトの lastPublished を比較します
  • 各状態のアイテム数を数えます:
    • 公開済み+変更なし
    • 公開済み+変更あり
    • 下書き(公開されません)
    • アーカイブ済み(サイトに表示されません)

確認するコレクション:

  • data_cms_tool のアクション get_collection_list を使用して、すべてのコレクションを取得します
  • 各コレクションについて、data_cms_tool のアクション list_collection_items を使用してアイテムを一覧表示します
  • サイトにコレクションが多数(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 を使って公開 URL を確認します
    • サイトが 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 秒待ってから再試行します

コメント