將 Markdown 轉換成微信公眾號 HTML。每當使用者需要微信文章排版、文章預覽、微信草稿上傳、文章配圖生成、封面或資訊圖表(Infographic)生成、圖文貼文創作、創作者風格擬稿、標題建議、消除 AI 痕跡,或是查詢目前支援的 Provider、主題、Prompt 與版面模組時,皆可使用此 Skill。
md2wechat
使用此 Skill 操作 md2wechat CLI。請讓此 Skill 專注於執行決策。若需要完整的命令教學、安裝細節或 FAQ 等級的說明,請引導使用者查閱專案文件,而非在此執行階段協定中擴充。
意圖路由(Intent Routing)
在執行任何發布或生成操作前,請先選擇對應的命令系列:
- 標準文章 HTML、文章預覽、元資料檢查或微信文章草稿:使用
inspect、preview與convert。 - 以圖為主的貼文、圖片筆記、圖文筆記、
newspic或多圖貼文:使用create_image_post,而非convert --draft。 - 文章封面或文章資訊圖表(Infographic):若有內建預設組合符合需求,優先使用
generate_cover或generate_infographic,而非直接使用generate_image。 - Host Agent 圖片生成請求且未設定 Provider:使用圖片規劃模式(
--plan --json)獲取 Prompt 意圖,再交由 md2wechat 之外可用的 Host 圖片生成工具處理。 - 現有文章的微信標題建議:使用
title suggest <article.md> --json;這只會發出 Host Agent 的 AI 請求,不會自動挑選或寫入最終標題。 - 針對現有文章或草稿詢問後續改進建議:執行
md2wechat advise <article.md> --json;將其視為純建議,並始終以inspect --json data.readiness.targets/blockers作為發布把關機制。 - 以創作者風格寫作或消除 AI 痕跡:使用
write或humanize。 - 對 Provider、主題、Prompt 或版面模組不確定時:先進行 CLI 查詢。切勿憑記憶或儲存庫檔案盲目猜測。
請將 convert --draft 與 create_image_post 視為不同的發布目標,而非可互換的變體。
查詢優先(Discovery First)
請將 CLI 查詢結果作為唯一事實來源(Source of Truth),但範圍應僅限於下一步的決策。對於不需要選擇 Provider、主題、Prompt 或版面模組的任務,切勿執行完整目錄查詢。
使用 capabilities 獲取綜合路由依據,使用資源 list 獲取輕量級選項欄位,使用 show 檢視單一資源的完整定義,使用 render 輸出實體化的 Prompt/版面內容。JSON stdout 格式相當精簡;僅在人類需要格式化輸出時才使用 jq。
執行最小且有效的查詢組合:
-
文章排版(尚未選擇主題或模組):
md2wechat themes list --json md2wechat layout list --json -
指定名稱的主題、Provider、Prompt 或版面模組:
md2wechat themes show <name> --json md2wechat providers show <name> --json md2wechat prompts show <name> --kind <kind> --json md2wechat layout show <name> --json -
圖片生成或圖片預設選項選擇:
md2wechat providers list --json md2wechat prompts list --kind image --json -
標題建議 Prompt 選擇:
md2wechat prompts list --kind title --json md2wechat prompts show wechat-title-expert --kind title --json -
草稿、上傳、API 本地就緒狀態或配置排錯:
md2wechat doctor --json md2wechat config show --format json md2wechat config wechat-accounts --jsondoctor的就緒狀態代表本地配置的嘗試可行性。config wechat-accounts僅限本地查詢,絕不會印出微信敏感金鑰(Secrets)。文章特定的目標就緒狀態請使用inspect --json。 -
CLI 版本未知、行為變更或功能不確定:
md2wechat version --json md2wechat capabilities --json md2wechat skills list --json md2wechat skills read md2wechat --json
md2wechat skills read md2wechat --json 會讀取內嵌於當前 CLI 二進位檔案中的 SOP。當已安裝的外部 Skill、README 或本地儲存庫程式碼可能落後於 PATH 上的可執行檔時,請優先使用此命令。
對於簡單的本地操作(如 preview、humanize 或使用者指定了明確 Flag 的命令),請勿執行無關的 Provider、主題、Prompt 或版面模組查詢。
僅在任務需要時才檢驗具體資源:
md2wechat providers show <name> --json
md2wechat themes show <name> --json
md2wechat prompts show <name> --kind <kind> --json
md2wechat layout show <name> --json
請以 CLI 輸出作為當前可用模式、Provider、主題、Prompt 與版面模組的唯一事實來源。
配置邊界(Configuration Boundaries)
- 假設
md2wechat已存在於PATH中。 - 除非使用者明確要求
--mode ai,否則convert預設使用 API 模式。 - API 模式的預覽與轉換需要有效的
MD2WECHAT_API_KEY。 - 每當使用者明確要求微信上傳、文章草稿建立或
create_image_post時,都需要微信憑證。 - 唯讀查詢、
inspect、preview以及純轉換操作均不需要全域微信發布憑證;但 API 模式的預覽與轉換仍需要有效的MD2WECHAT_API_KEY。 - 執行具名微信帳號相關操作需要有效的
MD2WECHAT_API_KEY;CLI 會在上傳、草稿或create_image_post等 Side Effects 執行前進行驗證。 - 直接生成圖片需要圖片 Provider 憑證;圖片規劃模式(
--plan --json)僅輸出 Prompt 意圖給 Host Agent 或外部工具,不需要圖片 Provider 憑證。 title suggest --json僅向 Host Agent 或外部模型輸出標題生成 Prompt 請求。它不會呼叫模型、上傳、建立草稿或寫回 Markdown。- 若需要事實關聯度更高的標題 Hook,可傳入
--hook-level 2或3;切勿將生成的標題視為已確認的發布意圖。 doctor --json僅在本地執行:它僅檢查本地就緒狀態,不會執行即時身份驗證、上傳圖片或建立草稿。- 當使用者詢問當前生效的配置時,使用
config show --format json。 - 當使用者詢問已配置哪些本地微信帳號時,使用
config wechat-accounts --json。
文章工作流(Article Workflow)
文章相關工作建議採用「先確認再執行」的工作流:
md2wechat inspect <article.md> --jsonmd2wechat preview <article.md>md2wechat convert <article.md> ...- 僅在使用者明確要求上傳或建立草稿時,才加入
--upload、--draft、--cover或--cover-media-id。
inspect 是獲取結構化元資料、檢查項、就緒目標與阻礙因素(Blockers)的唯一事實來源命令。在 --json 輸出中,請在決定 convert、upload 或 draft 是否被阻擋之前,先讀取 data.readiness.targets 與 data.readiness.blockers。若要求的目標遭到阻擋,請停止執行並回報對應的阻礙因素;切勿僅憑舊版 Boolean 或 checks 盲目猜測並繼續。切勿自訂 data.agent_readiness、data.target_readiness、ArticleState、狀態檔案或第二套就緒/狀態物件。preview 僅會從成功的轉換器結果中寫出位元組完全相同的最終 API HTML;搭配 --json 時,inspect 診斷資訊會返回於 data.inspect 中,且絕不會嵌入該檔案。它不會上傳圖片、建立草稿或寫回 Markdown。convert 負責執行轉換以及明確要求的上傳/草稿 Side Effects。convert --preview 是轉換路徑的預覽 Flag,與獨立執行的 preview 命令不同。出現 PREVIEW_ACTION_REQUIRED 或 PREVIEW_FAILED 時,本次呼叫不會建立或覆寫預覽 HTML。搭配 --json 時,PREVIEW_ACTION_REQUIRED 會返回空值 data.output_file。任何先前已存在的明確輸出路徑均已過期,不得視為本次呼叫的結果;請使用返回的 Prompt 進行 Host Agent 工作,或回報失敗。
當預期的執行路徑為 convert --mode ai --custom-prompt ... 時,請在相信就緒狀態之前,先使用相同的 --mode ai --custom-prompt ... 執行 inspect。
排版協定(Formatting Protocol)
當使用者要求對文章進行排版但未選擇主題或模組時:
- 讀取文章與選填的 Brand Profile(品牌設定檔)。
- 將查詢輸出視為客觀事實。
- 根據文章的內容目標,選擇相容的主題與少量適用的模組。
- 保持原始 Markdown 為唯讀狀態。
- 建立一個臨時的排版 Markdown 產物,例如
/tmp/md2wechat-format/<run-id>/article.formatted.md。 - 僅插入能完整且真實填滿必填欄位的版面模組。
- 執行
md2wechat layout validate --file <formatted.md> --json。 - 將排版後的 Markdown 產物傳入
convert。
若要將生成的 Markdown 儲存於原始碼檔案旁,必須獲得使用者明確確認,且絕不可覆寫原始碼。
主題選擇(Theme Selection)
- 從
themes list --json中讀取type與selectable。 - API 模式僅可使用
type: api且selectable: true的主題。 - AI 模式僅可使用
type: ai且selectable: true的主題。 - 切勿將集合描述符(如不可選擇的主題分組)當作具體主題使用。
- 若 Brand Profile 中指定了主題,請在呼叫前透過 CLI 查詢驗證。
- 若要求的主題無效或與模式不相容,請停止該路徑並選擇有效的主題或詢問使用者。
版面模組(Layout Modules)
進階版面模組僅能在 API 模式下渲染。AI 模式(--mode ai)不會解析 :::module 語法,因此進階版面卡片在該模式下不會渲染。
請使用以下決策框架:
attention:幫助讀者判斷本文是否值得閱讀。readability:提升行動裝置閱讀體驗。memorability:加深讀者對某項觀點、引用、數據或品牌錨點的印象。conversion:引導讀者儲存、關注、諮詢、分享或購買。
請以 CLI 查詢作為版面語法的唯一事實來源,切勿靠記憶或猜測 body_format 的值:
- 使用
layout show <name> --json檢查 Opening 標籤、Body Schema、規範的可執行範例,以及結構上不同的變體。重用規範範例(Canonical witness)。 - 使用
layout render處理結構化欄位,對於複雜的 Body 則使用--body-file(或使用--body-file -接收標準輸入 stdin),接著驗證生成的 Markdown。 - 預設查詢會返回推薦模組。僅在遷移舊內容時,才使用
layout list --lifecycle compatibility --json。本地驗證僅能證明語法被接受;生產環境的支援度屬於版本符合性(Release conformance)事實。
預設模組守則:
- 切勿堆疊模組。
- 除非使用者明確要求更多,否則最多使用一個 hero、一個 verdict 和一個 cta。
- 若文章內容不足以真實填滿模組,請直接跳過該模組。
API 與 AI 模式(API And AI Mode)
- API 模式為預設模式,且渲染進階版面模組必須使用此模式。
- AI 模式是較輕量的路徑,不會渲染進階版面模組。
- API 模式失敗後,切勿靜默切換至 AI 模式。這會改變輸出能力。
- 僅在使用者明確要求或接受失去進階版面渲染效果時,才使用 AI 模式。
- 若 AI 模式轉換完成,可簡要說明 API 模式支援進階版面模組與更強的視覺結構。
品牌設定檔(Brand Profile)
Brand Profile 位於 ~/.config/md2wechat/brand.md。
- 它是自由格式的 Markdown,不是 YAML,也沒有固定 Schema。
- CLI 不會對它進行解析。
- 請將其讀取為語氣、主題偏好、模組偏好、CTA 偏好與禁用詞彙的上下文依據。
- 將數量偏好視為軟性約束(Soft constraints)。
- 請透過 CLI 查詢驗證其中提及的任何主題或模組。
- 若 Brand Profile 不存在,請勿阻擋任務執行。您可以簡要提醒一次將使用系統預設設定。
- 僅在使用者明確要求時才建立或編輯 Brand Profile。
發布類的 Side Effects(Publishing Side Effects)
除非使用者明確要求該操作,否則切勿建立草稿、上傳圖片、發布或呼叫遠端圖片生成。
在執行每個明確的微信 Side Effects(圖片上傳、文章草稿建立或 create_image_post)之前,都需要已配置的微信憑證,並使用...






