md2wechat

md2wechat

熱門

將 Markdown 轉換成微信公眾號 HTML。每當使用者需要微信文章排版、文章預覽、微信草稿上傳、文章配圖生成、封面或資訊圖表(Infographic)生成、圖文貼文創作、創作者風格擬稿、標題建議、消除 AI 痕跡,或是查詢目前支援的 Provider、主題、Prompt 與版面模組時,皆可使用此 Skill。

3392星標
385分支
更新於 2026/7/24
SKILL.md
唯讀
名稱
md2wechat
描述

將 Markdown 轉換成微信公眾號 HTML。每當使用者需要微信文章排版、文章預覽、微信草稿上傳、文章配圖生成、封面或資訊圖表(Infographic)生成、圖文貼文創作、創作者風格擬稿、標題建議、消除 AI 痕跡,或是查詢目前支援的 Provider、主題、Prompt 與版面模組時,皆可使用此 Skill。

md2wechat

使用此 Skill 操作 md2wechat CLI。請讓此 Skill 專注於執行決策。若需要完整的命令教學、安裝細節或 FAQ 等級的說明,請引導使用者查閱專案文件,而非在此執行階段協定中擴充。

意圖路由(Intent Routing)

在執行任何發布或生成操作前,請先選擇對應的命令系列:

  • 標準文章 HTML、文章預覽、元資料檢查或微信文章草稿:使用 inspectpreviewconvert
  • 以圖為主的貼文、圖片筆記、圖文筆記、newspic 或多圖貼文:使用 create_image_post,而非 convert --draft
  • 文章封面或文章資訊圖表(Infographic):若有內建預設組合符合需求,優先使用 generate_covergenerate_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 痕跡:使用 writehumanize
  • 對 Provider、主題、Prompt 或版面模組不確定時:先進行 CLI 查詢。切勿憑記憶或儲存庫檔案盲目猜測。

請將 convert --draftcreate_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 --json
    

    doctor 的就緒狀態代表本地配置的嘗試可行性。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 上的可執行檔時,請優先使用此命令。

對於簡單的本地操作(如 previewhumanize 或使用者指定了明確 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 時,都需要微信憑證。
  • 唯讀查詢、inspectpreview 以及純轉換操作均不需要全域微信發布憑證;但 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 23;切勿將生成的標題視為已確認的發布意圖。
  • doctor --json 僅在本地執行:它僅檢查本地就緒狀態,不會執行即時身份驗證、上傳圖片或建立草稿。
  • 當使用者詢問當前生效的配置時,使用 config show --format json
  • 當使用者詢問已配置哪些本地微信帳號時,使用 config wechat-accounts --json

文章工作流(Article Workflow)

文章相關工作建議採用「先確認再執行」的工作流:

  1. md2wechat inspect <article.md> --json
  2. md2wechat preview <article.md>
  3. md2wechat convert <article.md> ...
  4. 僅在使用者明確要求上傳或建立草稿時,才加入 --upload--draft--cover--cover-media-id

inspect 是獲取結構化元資料、檢查項、就緒目標與阻礙因素(Blockers)的唯一事實來源命令。在 --json 輸出中,請在決定 convertuploaddraft 是否被阻擋之前,先讀取 data.readiness.targetsdata.readiness.blockers。若要求的目標遭到阻擋,請停止執行並回報對應的阻礙因素;切勿僅憑舊版 Boolean 或 checks 盲目猜測並繼續。切勿自訂 data.agent_readinessdata.target_readinessArticleState、狀態檔案或第二套就緒/狀態物件。preview 僅會從成功的轉換器結果中寫出位元組完全相同的最終 API HTML;搭配 --json 時,inspect 診斷資訊會返回於 data.inspect 中,且絕不會嵌入該檔案。它不會上傳圖片、建立草稿或寫回 Markdown。convert 負責執行轉換以及明確要求的上傳/草稿 Side Effects。convert --preview 是轉換路徑的預覽 Flag,與獨立執行的 preview 命令不同。出現 PREVIEW_ACTION_REQUIREDPREVIEW_FAILED 時,本次呼叫不會建立或覆寫預覽 HTML。搭配 --json 時,PREVIEW_ACTION_REQUIRED 會返回空值 data.output_file。任何先前已存在的明確輸出路徑均已過期,不得視為本次呼叫的結果;請使用返回的 Prompt 進行 Host Agent 工作,或回報失敗。
當預期的執行路徑為 convert --mode ai --custom-prompt ... 時,請在相信就緒狀態之前,先使用相同的 --mode ai --custom-prompt ... 執行 inspect

排版協定(Formatting Protocol)

當使用者要求對文章進行排版但未選擇主題或模組時:

  1. 讀取文章與選填的 Brand Profile(品牌設定檔)。
  2. 將查詢輸出視為客觀事實。
  3. 根據文章的內容目標,選擇相容的主題與少量適用的模組。
  4. 保持原始 Markdown 為唯讀狀態。
  5. 建立一個臨時的排版 Markdown 產物,例如 /tmp/md2wechat-format/<run-id>/article.formatted.md
  6. 僅插入能完整且真實填滿必填欄位的版面模組。
  7. 執行 md2wechat layout validate --file <formatted.md> --json
  8. 將排版後的 Markdown 產物傳入 convert

若要將生成的 Markdown 儲存於原始碼檔案旁,必須獲得使用者明確確認,且絕不可覆寫原始碼。

主題選擇(Theme Selection)

  • themes list --json 中讀取 typeselectable
  • API 模式僅可使用 type: apiselectable: true 的主題。
  • AI 模式僅可使用 type: aiselectable: 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)之前,都需要已配置的微信憑證,並使用...