用 Python 打造 WordPress CLI 工具:透過 REST API 自動管理文章、標籤與分類 - Mr. 蔡大痣數位轉型顧問 - WordPress 及 SEO 專家

文章分類/

用 Python 打造 WordPress CLI 工具:透過 REST API 自動管理文章、標籤與分類

4 瀏覽

你是否曾經想過,不用打開 WordPress 後台,直接在終端機就能新增文章、更新標籤、批次管理分類?透過 WordPress REST API 搭配 Python 打造一套 CLI 工具,這一切都能輕鬆實現。本篇文章將分享我們實際開發的 orca-wp-cli-tool,從設計思路到完整指令使用,讓你也能複製這套自動化工作流程。

為什麼選擇 REST API 而不是 Selenium?

管理 WordPress 站台有三種常見的自動化方式:

  • Selenium / Playwright:模擬瀏覽器操作,安裝複雜、維護成本高、速度慢
  • XML-RPC:舊版介面,功能受限,安全性較差
  • WordPress REST API:官方現代標準,支援應用程式密碼認證,功能完整

選擇 REST API 的核心原因很簡單:單純、安全、可擴充。不需要啟動瀏覽器、不需要額外外掛,只要一組 Application Password,透過 HTTP 請求就能完成所有操作。

orca-wp-cli-tool 的設計架構

這套工具使用以下技術棧:

  • Python 3.10+
  • Typer:CLI 框架,自動生成 –help 說明
  • httpx:現代 HTTP 客戶端,支援 async
  • Rich:終端機美化輸出(表格、顏色)
  • config.json:多站台設定管理(已 gitignore)

整個專案只有兩個核心檔案:main.py(所有 CLI 指令)與 wp_client.py(認證與多站台管理),架構極為精簡。

Application Password 認證設定

WordPress 5.6 起內建應用程式密碼功能,不需安裝任何外掛。設定方式:

  1. 進入 WP 後台 → 使用者你的個人資料
  2. 滑到頁面最底部「應用程式密碼」區塊
  3. 輸入應用名稱(例如:orca-cli)→ 點「新增應用程式密碼」
  4. 複製生成的密碼(格式:xxxx xxxx xxxx xxxx xxxx xxxx,只顯示一次)

取得密碼後,執行以下指令新增站台設定:

cd /Library/WebServer/Documents/orca-wp-cli-tool
python main.py site add myblog

互動式輸入 WordPress 網址、使用者名稱與 Application Password 後,設定會加密儲存在 config.json(已加入 .gitignore,不會外洩)。

完整指令說明

目前工具支援以下指令分類:

文章管理

# 列出最新 10 篇文章
python main.py list

# 從 HTML 檔案建立文章(適合 AI 自動撰文)
python main.py new \
  --title "文章標題" \
  --slug "english-slug" \
  --content-file tmp/article.html \
  --status draft \
  --categories 37 \
  --tags "118,119,39"

# 將草稿發布
python main.py publish 1138

標籤批次管理

# 匯出所有標籤為 JSON
python main.py export-tags -o tmp/tags.json

# 編輯 JSON 後批次匯入更新
python main.py import-tags tmp/tags.json --dry-run  # 先模擬
python main.py import-tags tmp/tags.json            # 正式寫入

多站台管理

# 新增站台
python main.py site add myblog

# 切換站台
python main.py site use myblog

# 臨時指定站台執行指令
python main.py list --site myblog

與 AI 整合的自動撰文流程

這套工具最強大的地方,是可以與 GitHub Copilot CLI 或其他 AI 助手整合,形成完整的自動化撰文工作流:

  1. 搜尋競品:AI 搜尋目標主題的前 3 頁結果,分析標題與段落結構
  2. 生成文章:依 SEO 規則撰寫 HTML,存入 tmp/文章標題.html
  3. 確認分類標籤python main.py tags 確認現有 tag
  4. 建立草稿python main.py new --content-file ...
  5. 發布python main.py publish <ID>

整個流程 AI 只需要記住指令路徑,不需要每次重新撰寫 API 呼叫邏輯,大幅節省 token 消耗,也讓流程更穩定可靠。

為什麼 CLI 比每次呼叫 API 更好?

在開發過程中,我們嘗試過兩種方式:直接在 AI 對話中生成完整的 Python API 呼叫腳本,以及使用統一的 CLI 工具。比較結果如下:

比較項目每次生成 API 腳本CLI 工具
認證管理每次都要帶帳密config.json 集中管理
錯誤處理各自實作,不一致統一在 client 層
Token 消耗高(每次生成完整腳本)低(只需記指令名稱)
維護性難以追蹤修改單一程式碼庫
多站台支援需手動切換設定--site 參數一行搞定

CLI 工具的核心優勢在於:把複雜度封裝起來,對外只暴露簡單的介面。這正是好的工程設計的本質。

常見問題 FAQ

Application Password 和一般登入密碼有什麼不同?

Application Password 是 WordPress 專為 API 存取設計的獨立密碼,不影響後台登入密碼。每組 App Password 可獨立命名與撤銷,即使某組密碼外洩,只需刪除那一組,不需更改主密碼,安全性大幅提升。

工具支援哪些 WordPress 版本?

需要 WordPress 5.6 以上,因為 Application Password 功能是 5.6 才內建的。REST API 本身在 WordPress 4.7 就已經穩定,但建議使用最新版以確保相容性與安全性。

config.json 儲存的密碼安全嗎?

目前 config.json 以明文儲存在專案目錄內,已加入 .gitignore 確保不會被版本控制追蹤。建議搭配作業系統的檔案權限(chmod 600 config.json)保護,未來可考慮整合 macOS Keychain 或系統加密方案。

可以同時管理多個 WordPress 站台嗎?

可以。透過 python main.py site add 新增多個站台設定,使用 python main.py site use <名稱> 切換預設站台,或在任何指令後加上 --site <名稱> 臨時指定站台,非常適合管理多個客戶網站。

批次更新標籤描述的 JSON 格式是什麼?

先執行 python main.py export-tags -o tags.json 匯出現有標籤,JSON 格式為陣列,每筆包含 idnameslugdescription 四個欄位。編輯後執行 import-tags 匯入,有 id 的項目會更新,無 id 的會新增,使用 --dry-run 可先模擬確認不寫入。

▧ 文章分類

▧ 熱門文章

▧ 最新文章

✦ 虎鯨 OrcaBiz SEO 優化專業團隊 ✦

專業 SEO 公司幫助你將流量累積成看得見的業績,成為長期有效的最強業務!

[orca_infinite_scroll]