wechat-article-publisher

wechat-article-publisher

熱門

透過 API 將 Markdown/HTML 文章發布到微信公眾號草稿

152星標
20分支
更新於 2026/1/16
SKILL.md
唯讀
名稱
wechat-article-publisher
描述

透過 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 呼叫,以達到可靠且快速的發布。

  1. 從環境變數載入 WECHAT_API_KEY
  2. 列出可用的微信帳號(若使用者未指定)
  3. 偵測檔案格式(Markdown 或 HTML)並相應解析
  4. 呼叫發布 API 在微信建立草稿
  5. 回報成功並附上草稿詳細資訊

支援的檔案格式:

  • .md 檔案 → 以 Markdown 解析,由 WeChat API 轉換
  • .html 檔案 → 以 HTML 傳送,保留格式

逐步指南

步驟 1:檢查 API 金鑰

在任何操作前,確認 API 金鑰可用:

# 檢查 .env 檔案是否存在且包含 WECHAT_API_KEY
cat .env | grep WECHAT_API_KEY

若未設定,提醒使用者:

  1. 複製 .env.example.env
  2. 設定他們的 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 伺服器錯誤

關鍵規則

  1. 絕不自動發布 - 僅儲存為草稿,由使用者手動發布
  2. 先檢查 API 金鑰 - 若未設定則快速失敗
  3. 先列出帳號 - 使用者可能有多個帳號
  4. 妥善處理錯誤 - 顯示清楚的錯誤訊息
  5. 保留原始內容 - 不要不必要地修改使用者的 Markdown

支援的格式

Markdown 檔案 (.md)

  • H1 標題 (# ) → 文章標題
  • H2/H3 標題 (##, ###) → 章節標題
  • 粗體 (文字)
  • 斜體 (文字)
  • 連結 文字
  • 引用區塊 (> )
  • 程式碼區塊 (...)
  • 清單 (- 或 1.)
  • 圖片 替代文字 → 自動上傳至微信

HTML 檔案 (.html)

  • <title><h1> → 文章標題
  • 所有 HTML 格式保留(樣式、表格等)
  • <img> 標籤 → 圖片自動上傳至微信
  • 第一個 <p> → 自動擷取為摘要
  • 支援內聯樣式和豐富格式

HTML 標題擷取優先順序:

  1. <title> 標籤內容
  2. 第一個 <h1> 標籤內容
  3. 以「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 而非瀏覽器自動化?

  1. 可靠性:直接 API 呼叫比瀏覽器自動化更穩定
  2. 速度:無需啟動瀏覽器、載入頁面或進行 UI 互動
  3. 簡單性:單一指令即可發布
  4. 可攜性:可在任何有 Python 的系統上運作(無 macOS 專屬依賴)

內容指南

  1. 圖片:盡可能使用公開 URL;本機圖片會上傳
  2. 標題:保持在 64 字元以內
  3. 摘要:若未提供,自動從第一段擷取
  4. 封面:若未指定,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(小綠書)以圖片為主且文字有限。