透過 API 將 Markdown/HTML 文章發布到微信公眾號草稿
WeChat 文章發布器
透過 API 將 Markdown 或 HTML 內容發布到微信公眾號草稿,並自動轉換格式。
前置需求
- 已設定 WECHAT_API_KEY 環境變數(來自 .env 檔案)
- Python 3.9+
- 在 wx.limyai.com 授權的微信公眾號
腳本
位於 ~/.claude/skills/wechat-article-publisher/scripts/:
wechat_api.py
用於列出帳號和發布文章的 WeChat API 用戶端:
# 列出已授權的帳號
python wechat_api.py list-accounts
# 從 Markdown 檔案發布
python wechat_api.py publish --appid <wechat_appid> --markdown /path/to/article.md
# 從 HTML 檔案發布(保留格式)
python wechat_api.py publish --appid <wechat_appid> --html /path/to/article.html
# 使用自訂選項發布
python wechat_api.py publish --appid <appid> --markdown /path/to/article.md --type newspic
parse_markdown.py
解析 Markdown 並擷取結構化資料(選用,進階用途):
python parse_markdown.py <markdown_file> [--output json|html]
工作流程
策略:「API 優先發布」
不同於瀏覽器自動化,此技能使用直接 API 呼叫,以達到可靠且快速的發布。
- 從環境變數載入 WECHAT_API_KEY
- 列出可用的微信帳號(若使用者未指定)
- 偵測檔案格式(Markdown 或 HTML)並相應解析
- 呼叫發布 API 在微信建立草稿
- 回報成功並附上草稿詳細資訊
支援的檔案格式:
.md檔案 → 以 Markdown 解析,由 WeChat API 轉換.html檔案 → 以 HTML 傳送,保留格式
逐步指南
步驟 1:檢查 API 金鑰
在任何操作前,確認 API 金鑰可用:
# 檢查 .env 檔案是否存在且包含 WECHAT_API_KEY
cat .env | grep WECHAT_API_KEY
若未設定,提醒使用者:
- 複製
.env.example為.env - 設定他們的
WECHAT_API_KEY值
步驟 2:列出可用帳號
取得已授權的微信帳號清單:
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py list-accounts
輸出範例:
{
"success": true,
"data": {
"accounts": [
{
"name": "我的公众号",
"wechatAppid": "wx1234567890",
"username": "gh_abc123",
"type": "subscription",
"verified": true,
"status": "active"
}
],
"total": 1
}
}
重要事項:
- 若只有一個帳號,自動使用它
- 若有多個帳號,詢問使用者選擇
- 記下
wechatAppid以供發布使用
步驟 3:發布文章
針對 Markdown 檔案:
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
--appid <wechatAppid> \
--markdown /path/to/article.md
針對 HTML 檔案(保留格式):
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
--appid <wechatAppid> \
--html /path/to/article.html
針對小綠書(圖文模式):
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
--appid <wechatAppid> \
--markdown /path/to/article.md \
--type newspic
成功回應:
{
"success": true,
"data": {
"publicationId": "uuid-here",
"materialId": "uuid-here",
"mediaId": "wechat-media-id",
"status": "published",
"message": "文章已成功发布到公众号草稿箱"
}
}
步驟 4:回報結果
發布成功後:
- 確認草稿已建立
- 提醒使用者登入微信管理後台預覽並手動發布
- 提供相關 ID 供參考
API 參考
驗證
所有 API 請求都需要 X-API-Key 標頭:
X-API-Key: WECHAT_API_KEY
取得帳號清單
POST https://wx.limyai.com/api/openapi/wechat-accounts
發布文章
POST https://wx.limyai.com/api/openapi/wechat-publish
參數:
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| wechatAppid | string | 是 | 微信 AppID |
| title | string | 是 | 文章標題(最多 64 字元) |
| content | string | 是 | 文章內容(Markdown/HTML) |
| summary | string | 否 | 文章摘要(最多 120 字元) |
| coverImage | string | 否 | 封面圖片 URL |
| author | string | 否 | 作者名稱 |
| contentFormat | string | 否 | 'markdown'(預設)或 'html' |
| articleType | string | 否 | 'news'(預設)或 'newspic' |
錯誤碼
| 代碼 | 說明 |
|---|---|
| API_KEY_MISSING | 未提供 API 金鑰 |
| API_KEY_INVALID | API 金鑰無效 |
| ACCOUNT_NOT_FOUND | 找不到帳號或未授權 |
| ACCOUNT_TOKEN_EXPIRED | 帳號授權已過期 |
| INVALID_PARAMETER | 參數無效 |
| WECHAT_API_ERROR | 微信 API 呼叫失敗 |
| INTERNAL_ERROR | 伺服器錯誤 |
關鍵規則
- 絕不自動發布 - 僅儲存為草稿,由使用者手動發布
- 先檢查 API 金鑰 - 若未設定則快速失敗
- 先列出帳號 - 使用者可能有多個帳號
- 妥善處理錯誤 - 顯示清楚的錯誤訊息
- 保留原始內容 - 不要不必要地修改使用者的 Markdown
支援的格式
Markdown 檔案 (.md)
- H1 標題 (# ) → 文章標題
- H2/H3 標題 (##, ###) → 章節標題
- 粗體 (文字)
- 斜體 (文字)
- 連結 文字
- 引用區塊 (> )
- 程式碼區塊 (
...) - 清單 (- 或 1.)
- 圖片
→ 自動上傳至微信
HTML 檔案 (.html)
<title>或<h1>→ 文章標題- 所有 HTML 格式保留(樣式、表格等)
<img>標籤 → 圖片自動上傳至微信- 第一個
<p>→ 自動擷取為摘要 - 支援內聯樣式和豐富格式
HTML 標題擷取優先順序:
<title>標籤內容- 第一個
<h1>標籤內容 - 以「Untitled」作為備用
HTML 內容擷取:
- 若存在
<body>,使用 body 內容 - 否則,移除
<html>、<head>、<!DOCTYPE>並使用其餘內容
文章類型
news(普通文章)
- 標準微信文章格式
- 完整 Markdown/HTML 支援
- 含圖片的豐富文字
newspic(小綠書/圖文訊息)
- 以圖片為主的格式(類似 Instagram 貼文)
- 從內容中擷取最多 20 張圖片
- 文字內容限制為 1000 字元
- 圖片自動上傳至微信
範例流程
Markdown 檔案
使用者:「把 ~/articles/ai-tools.md 發布到微信公眾號」
# 步驟 1:驗證 API 金鑰
cat .env | grep WECHAT_API_KEY
# 步驟 2:列出帳號
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py list-accounts
# 步驟 3:發布(假設只有一個帳號,appid 為 wx1234567890)
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
--appid wx1234567890 \
--markdown ~/articles/ai-tools.md
# 步驟 4:回報
# "文章已成功发布到公众号草稿箱!请登录微信公众平台预览并发布。"
HTML 檔案
使用者:「把這個 HTML 文章發布到公眾號:~/articles/newsletter.html」
# 步驟 1:驗證 API 金鑰
cat .env | grep WECHAT_API_KEY
# 步驟 2:列出帳號
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py list-accounts
# 步驟 3:發布 HTML(自動偵測格式)
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
--appid wx1234567890 \
--html ~/articles/newsletter.html
# 步驟 4:回報
# "文章已成功发布到公众号草稿箱!HTML格式已保留。请登录微信公众平台预览并发布。"
錯誤處理
找不到 API 金鑰
Error: WECHAT_API_KEY environment variable not set.
解決方案:要求使用者設定 .env 檔案並填入 API 金鑰。
找不到帳號
Error: ACCOUNT_NOT_FOUND - 公众号不存在或未授权
解決方案:要求使用者在 wx.limyai.com 授權他們的帳號。
權杖過期
Error: ACCOUNT_TOKEN_EXPIRED - 公众号授权已过期
解決方案:要求使用者在 wx.limyai.com 重新授權。
微信 API 錯誤
Error: WECHAT_API_ERROR - 微信接口调用失败
解決方案:可能是暫時性問題,重試或檢查微信服務狀態。
最佳實務
為何使用 API 而非瀏覽器自動化?
- 可靠性:直接 API 呼叫比瀏覽器自動化更穩定
- 速度:無需啟動瀏覽器、載入頁面或進行 UI 互動
- 簡單性:單一指令即可發布
- 可攜性:可在任何有 Python 的系統上運作(無 macOS 專屬依賴)
內容指南
- 圖片:盡可能使用公開 URL;本機圖片會上傳
- 標題:保持在 64 字元以內
- 摘要:若未提供,自動從第一段擷取
- 封面:若未指定,Markdown 中的第一張圖片會成為封面
工作流程效率
最小工作流程(1 個指令):
- list-accounts → 取得 appid → 發布 → 完成
完整工作流程(含驗證):
1. 檢查 .env → 列出帳號 → 與使用者確認
2. 使用選項發布 → 回報結果
疑難排解
Q:如何取得 WECHAT_API_KEY?
A:在 wx.limyai.com 註冊並授權你的微信帳號以取得 API 金鑰。
Q:可以發布到多個帳號嗎?
A:可以,使用 list-accounts 查看所有已授權帳號,然後指定目標 --appid。
Q:圖片在微信中無法顯示?
A:確保圖片是可存取的 URL。本機圖片會自動上傳,但若路徑不正確可能失敗。
Q:標題太長?
A:微信限制標題為 64 字元。腳本會使用 H1 的前 64 個字元。
Q:news 和 newspic 有何不同?
A:news 是標準文章格式;newspic(小綠書)以圖片為主且文字有限。




