Communitygithub.com

wordpress 建置設定技能

生成優先順序排列的外掛配置與內容取代指南 SETUP.md,並更新 build.json 以加入自然語言相關元資料。

wordpress 建置設定技能 是什麼?

此技能在 build-content 之後、zip 封裝之前執行,其核心任務是產生一份完整的後續設定指南 (SETUP.md) 與更新建置元資料檔 (build.json)。SETUP.md 會根據已安裝的外掛、主題、頁面數量以及原始自然語言提示 (NL_PROMPT),以優先級分類(關鍵、重要、選用)列出使用者匯入網站至 Local WP 後應立即執行的設定步驟,例如 WPForms 表單建立、聯絡頁面佔位內容替換、選單指派等。同時,技能會將主題、外掛清單、內容統計等結構化資料寫入 build.json,並設定 mode 為 'nl' 以標示此建置為自然語言驅動。此技能主要設計用於 CoWork 建置系統中的 Claude Code 或類似代理,支援 WordPress 網站的自動化建置流程,確保使用者能無縫地從匯入轉換到客製化設定。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dr-robert-li/cowork-wordpress-expert/tree/HEAD/skills/build-setup

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

建置設定技能

生成 SETUP.md — 使用者在匯入後的配置與內容取代指南 — 並更新 build.json 以加入自然語言相關元資料。此技能在 build-content 之後、zip 封裝之前執行。

輸入變數 (由 build-theme 和 build-content 設定):

變數來源描述
BUILD_DIRbuild-scaffold建置工作目錄的絕對路徑
NL_PROMPTCOMMAND.md 第 1 節原始自然語言網站描述
THEME_SLUGbuild-theme已安裝的主題縮寫
THEME_NAMEbuild-theme人類可讀的主題名稱
THEME_VERSIONbuild-theme已安裝的主題版本字串
THEME_INSTALLEDbuild-theme布林值 — 若主題安裝成功則為 true
INSTALLED_PLUGINSbuild-content成功安裝的外掛陣列,格式為 slug:name:version
FAILED_PLUGINSbuild-content安裝或啟用失敗的外掛縮寫陣列
PAGES_CREATEDbuild-content已建立的頁面整數數量
POSTS_CREATEDbuild-content已建立的文章整數數量
MENU_ASSIGNEDbuild-content布林值 — 若導覽選單已指派至主題位置則為 true
MENU_LOCATIONbuild-content使用的主題位置名稱(若未指派則為空字串)

第 1 節:SETUP.md 生成

利用完整的可用上下文(已安裝的外掛、主題、頁面數量及自然語言提示)來撰寫 $BUILD_DIR/SETUP.md,產生一份優先順序排列的設定指南,讓使用者在將網站匯入 Local WP 後可立即遵循。

echo "[Build] 正在生成 SETUP.md..."

# ── 建置「已安裝項目」區段 ────────────────────────────────────────

SETUP_FILE="$BUILD_DIR/SETUP.md"

# 開始撰寫 SETUP.md
cat > "$SETUP_FILE" << 'SETUP_HEADER'
# 設定指南

本指南引導您在將 WordPress 網站匯入 Local WP 後進行配置。項目依優先級排列 — 請先完成「關鍵」步驟,再依自己的節奏處理「重要」與「選用」項目。

---

## 已安裝項目

SETUP_HEADER

# 主題條目
echo "- **主題:** ${THEME_NAME}(v${THEME_VERSION})" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

# 外掛列表
if [ ${#INSTALLED_PLUGINS[@]} -gt 0 ]; then
  echo "- **外掛:**" >> "$SETUP_FILE"
  for plugin_entry in "${INSTALLED_PLUGINS[@]}"; do
    # 格式:slug:name:version
    PLUGIN_SLUG=$(echo "$plugin_entry" | cut -d: -f1)
    PLUGIN_NAME=$(echo "$plugin_entry" | cut -d: -f2)
    PLUGIN_VER=$(echo "$plugin_entry" | cut -d: -f3)
    # Claude 會根據外掛縮寫與名稱生成一行用途說明
    PLUGIN_PURPOSE="<${PLUGIN_NAME} 功能的一行描述 — 由 Claude 根據外掛知識生成>"
    echo "  - **${PLUGIN_NAME}**(v${PLUGIN_VER})— ${PLUGIN_PURPOSE}" >> "$SETUP_FILE"
  done
  echo "" >> "$SETUP_FILE"
fi

# 失敗的外掛(若有的話)
if [ ${#FAILED_PLUGINS[@]} -gt 0 ]; then
  echo "- **安裝失敗的外掛:**" >> "$SETUP_FILE"
  for slug in "${FAILED_PLUGINS[@]}"; do
    echo "  - ${slug} — 已嘗試安裝,但在建置過程中失敗" >> "$SETUP_FILE"
  done
  echo "" >> "$SETUP_FILE"
fi

接下來,撰寫優先順序排列的操作清單。這是一項 AI 判斷任務 — Claude 會根據對該外掛設定工作流程的知識,並參考自然語言提示上下文來判斷此特定網站最需要什麼,從而為每個外掛生成實際的逐步說明。

# ── 建置「下一步該做什麼」區段 ────────────────────────────────────────

cat >> "$SETUP_FILE" << 'SETUP_NEXT'
---

## 下一步該做什麼(優先順序排列)

SETUP_NEXT

# ── 關鍵項目 ────────────────────────────────────────────────────────────
echo "### 關鍵" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

STEP_NUM=1

# 對於每個需要配置的已安裝外掛,Claude 會生成含有完整 WordPress 管理後台導覽路徑的逐步說明。
# 例如 WPForms Lite 的模式:
#
#   echo "${STEP_NUM}. **配置 WPForms — 建立您的聯絡表單**" >> "$SETUP_FILE"
#   cat >> "$SETUP_FILE" << 'EOF'
#      前往:**WPForms > 新增**
#      步驟:
#      1. 點選「選擇範本」並選取 **簡易聯絡表單**
#      2. 點選「使用範本」— 表單建置器會開啟
#      3. (選用)從左側面板拖曳來新增或移除欄位
#      4. 點選右上角的 **儲存**
#      5. 前往 **頁面 > 聯絡我們 > 編輯**
#      6. 新增一個區塊,搜尋「WPForms」,然後選取 WPForms 區塊
#      7. 從下拉選單中選擇您剛剛建立的表單
#      8. 點選 **更新** 以儲存頁面
#   EOF
#   STEP_NUM=$((STEP_NUM + 1))

# Claude 會為 INSTALLED_PLUGINS 中每個需要使用者配置的外掛生成等效的區塊。
# 無需設定即可運作的外掛(例如,可靜默啟用的快取外掛)可歸類至「重要」或若無需操作則省略。

# ── 聯絡頁面佔位內容取代(始終為關鍵) ────────────────────
echo "${STEP_NUM}. **取代聯絡頁面的佔位資訊**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'CONTACT_STEP'
   前往:**頁面 > 聯絡我們 > 編輯**
   將下列佔位內容替換為您的真實詳細資料:
   - 頁面標題中的虛構商業名稱
   - 虛構的街道地址(例如「123 Example Street, Sample City」)
   - 虛構的電話號碼
   - 虛構的電子郵件地址
   - 任何虛構的營業時間或地點詳細資料

CONTACT_STEP
STEP_NUM=$((STEP_NUM + 1))

# ── 重要項目 ───────────────────────────────────────────────────────────
echo "" >> "$SETUP_FILE"
echo "### 重要" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

# 關於頁面內容取代
echo "${STEP_NUM}. **更新關於頁面的內容**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'ABOUT_STEP'
   前往:**頁面 > 關於我們 > 編輯**
   取代下列佔位內容:
   - 虛構的商業/個人名稱與簡介
   - 任何虛構的團隊成員描述
   - 佔位的頭像或個人圖片(透過媒體區塊上傳您自己的圖片)
   - 任何虛構的資歷、歷史或起源故事

ABOUT_STEP
STEP_NUM=$((STEP_NUM + 1))

# 首頁內容取代
echo "${STEP_NUM}. **更新首頁的標題區與介紹內容**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'HOME_STEP'
   前往:**頁面 > 首頁 > 編輯**
   取代下列佔位內容:
   - 標題區的標題與標語(請具體針對您的業務或優惠)
   - 標題區的背景或精選圖片(透過封面/圖片區塊上傳)
   - 描述您服務的介紹段落
   - 任何行動呼籲按鈕的標籤與連結

HOME_STEP
STEP_NUM=$((STEP_NUM + 1))

# 根據網站類型而定的其他頁面 — Claude 會為 PAGES_CREATED 中首頁、關於、聯絡以外的每個頁面生成針對該頁面的具體指引。
# 例如:
#
# 作品集頁面:
#   echo "${STEP_NUM}. **將您的真實作品加入作品集頁面**" >> "$SETUP_FILE"
#   ...
#   STEP_NUM=$((STEP_NUM + 1))
#
# 服務頁面:
#   echo "${STEP_NUM}. **以您實際的服務更新服務頁面**" >> "$SETUP_FILE"
#   ...
#   STEP_NUM=$((STEP_NUM + 1))
#
# Claude 會使用 NL_PROMPT 上下文來確定存在哪些額外頁面及其包含的佔位內容,然後撰寫有針對性的指引。

# 任何屬於「重要」(非關鍵)的其他外掛配置
# Claude 會在此處為需要設定但若不設定也不會破壞網站的外掛新增步驟(例如 SEO 外掛配置、相簿設定)

# ── 選用項目 ────────────────────────────────────────────────────────────
echo "" >> "$SETUP_FILE"
echo "### 選用" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

# 範例文章取代
echo "${STEP_NUM}. **新增您自己的部落格文章以取代範例內容**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'POSTS_STEP'
   這些範例文章展示了您的主題如何呈現部落格內容。它們使用與您網站主題相關但虛構的主題。
   前往:**文章 > 所有文章** 來編輯現有的範例或新增文章。
   一旦您發佈了自己的內容,即可刪除這些範例文章。

POSTS_STEP
STEP_NUM=$((STEP_NUM + 1))

# 佔位圖片取代
echo "${STEP_NUM}. **使用您自己的照片取代佔位圖片**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'IMAGES_STEP'
   在建置過程中生成了純色佔位圖片以顯示版面意圖。請用您自己的圖片取代它們:
   前往:**媒體 > 新增** 來上傳您的照片
   然後編輯每個頁面/文章,並將佔位圖片區塊替換為您的上傳項目。

IMAGES_STEP
STEP_NUM=$((STEP_NUM + 1))

# 若未自動指派選單(區塊主題邊緣情況)
if [ "$MENU_ASSIGNED" = "false" ] || [ "$MENU_ASSIGNED" = "" ]; then
  echo "${STEP_NUM}. **在網站編輯器中指派導覽選單**" >> "$SETUP_FILE"
  cat >> "$SETUP_FILE" << 'MENU_STEP'
   您的導覽選單已在建置過程中建立,但無法自動指派給主題位置(這對於區塊主題是預期行為)。
   前往:**外觀 > 編輯器 > 導覽**
   選取「主選單」並將其放置在您的頁首導覽區域中。

MENU_STEP
  STEP_NUM=$((STEP_NUM + 1))
fi

# 完成 SETUP.md
echo "---" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"
echo "*由 WordPress 專家外掛 — CoWork 建置系統生成*" >> "$SETUP_FILE"

SETUP_ITEM_COUNT=$((STEP_NUM - 1))
echo "[Build] SETUP.md 已生成(${SETUP_ITEM_COUNT} 個設定項目)"

給 Claude 的實作注意事項:

  • 外掛說明是一項 AI 判斷任務。 對於 INSTALLED_PLUGINS 中的每個外掛,Claude 會利用其對該外掛設定工作流程的知識,生成詳細的逐步說明。說明必須包含完整的 WP 管理後台導覽路徑(例如「前往 WPForms > 新增 > 選擇聯絡表單範本 > 儲存 > 複製短代碼 > 編輯聯絡頁面 > 新增短代碼區塊」)。
  • 上下文決定優先級。 Claude 會讀取 NL_PROMPT 來判斷哪些設定項目是「關鍵」或「重要」。對於攝影作品集網站,取代作品集圖片是關鍵項目。對於餐廳,配置預約外掛是關鍵項目。
  • 逐頁覆蓋。 由 build-content 建立的每個頁面都會獲得一個專屬條目,並針對其包含的佔位內容提供具體指引。
  • 無通用說明。 所有指引都針對特定外掛和網站類型,而非泛泛的「配置您的外掛」建議。

第 2 節:build.json 自然語言元資料更新

讀取現有的 build.json(由 build-scaffold 第 6 節建立)並加入自然語言特定的欄位。使用與 build-mcp 第 4 節相同的 Python3 JSON 解析模式。

echo "[Build] 正在以自然語言元資料更新 build.json..."

BUILD_JSON="$BUILD_DIR/build.json"

# 為 JSON 序列化建立陣列
INSTALLED_JSON=""
for plugin_entry in "${INSTALLED_PLUGINS[@]}"; do
  PLUGIN_SLUG=$(echo "$plugin_entry" | cut -d: -f1)
  PLUGIN_NAME=$(echo "$plugin_entry" | cut -d: -f2)
  PLUGIN_VER=$(echo "$plugin_entry" | cut -d: -f3)
  if [ -n "$INSTALLED_JSON" ]; then
    INSTALLED_JSON="${INSTALLED_JSON},"
  fi
  INSTALLED_JSON="${INSTALLED_JSON}{\"slug\":\"${PLUGIN_SLUG}\",\"name\":\"${PLUGIN_NAME}\",\"version\":\"${PLUGIN_VER}\",\"installed\":true}"
done

FAILED_JSON=""
for slug in "${FAILED_PLUGINS[@]}"; do
  if [ -n "$FAILED_JSON" ]; then
    FAILED_JSON="${FAILED_JSON},"
  fi
  FAILED_JSON="${FAILED_JSON}\"${slug}\""
done

# 將 Python 腳本寫入暫存檔案(與 build-content 圖片生成器相同模式)
NL_META_SCRIPT="/tmp/update_build_json_$$.py"

cat > "$NL_META_SCRIPT" << PYEOF
import json, sys

build_file = sys.argv[1]
nl_prompt = sys.argv[2]
theme_slug = sys.argv[3]
theme_name = sys.argv[4]
theme_version = sys.argv[5]
theme_installed = sys.argv[6] == 'true'
pages_created = int(sys.argv[7])
posts_created = int(sys.argv[8])
menu_assigned = sys.argv[9] == 'true'
installed_json = sys.argv[10]
failed_json = sys.argv[11]

with open(build_file) as f:
    data = json.load(f)

data['mode'] = 'nl'
data['nl_prompt'] = nl_prompt
data['theme'] = {
    'slug': theme_slug,
    'name': theme_name,
    'version': theme_version,
    'installed': theme_installed
}
data['plugins'] = json.loads('[' + installed_json + ']') if installed_json else []
data['content'] = {
    'pages_created': pages_created,
    'posts_created': posts_created,
    'menu_assigned': menu_assigned
}
if failed_json:
    data['failed_plugins'] = json.loads('[' + failed_json + ']')

with open(build_file, 'w') as f:
    json.dump(data, f, indent=2)

print('[Build] build.json 已以自然語言元資料更新')
PYEOF

python3 "$NL_META_SCRIPT" \
  "$BUILD_JSON" \
  "$NL_PROMPT" \
  "$THEME_SLUG" \
  "$THEME_NAME" \
  "$THEME_VERSION" \
  "${THEME_INSTALLED:-true}" \
  "$PAGES_CREATED" \
  "$POSTS_CREATED" \
  "${MENU_ASSIGNED:-false}" \
  "$INSTALLED_JSON" \
  "$FAILED_JSON"

# 清理暫存腳本
rm -f "$NL_META_SCRIPT"

更新自然語言元資料後的 build.json:

{
  "build_id": "nl-photography-portfolio-20260220-143022",
  "mode": "nl",
  "nl_prompt": "a portfolio site for a freelance photographer",
  "wp_version": "6.7",
  "php_version": "8.2",
  "site_url": "http://localhost",
  "site_title": "a portfolio site for a freelance photographer",
  "created_at": "2026-02-20T14:30:22Z",
  "theme": {
    "slug": "blocksy",
    "name": "Blocksy",
    "version": "2.0.50",
    "installed": true
  },
  "plugins": [
    { "slug": "envira-gallery-lite", "name": "Envira Gallery Lite", "version": "1.9.0", "installed": true },
    { "slug": "wpforms-lite", "name": "WPForms Lite", "version": "1.9.0", "installed": true }
  ],
  "content": {
    "pages_created": 4,
    "posts_created": 3,
    "menu_assigned": false
  },
  "failed_plugins": [],
  "mcp_adapter": {
    „included": true,
    „activated": true,
    „version": "0.4.1"
  }
}

第 3 節:建置摘要擴展

附加

…

[翻譯截斷]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能