md2wechat

md2wechat

热门

将 Markdown 转换为微信公众号 HTML。当用户需要公众号排版、文章预览、同步微信草稿箱、文章配图生成、封面或信息图生成、图文/图片笔记创作、创作者风格写作、标题建议、消除 AI 痕迹,或查询当前支持的 Provider、主题、Prompt 与布局组件时,请使用此 Skill。

3392Star
385Fork
更新于 2026/7/24
SKILL.md
只读
名称
md2wechat
描述

将 Markdown 转换为微信公众号 HTML。当用户需要公众号排版、文章预览、同步微信草稿箱、文章配图生成、封面或信息图生成、图文/图片笔记创作、创作者风格写作、标题建议、消除 AI 痕迹,或查询当前支持的 Provider、主题、Prompt 与布局组件时,请使用此 Skill。

md2wechat

使用此 Skill 来操作 md2wechat CLI。请将本 Skill 的职责聚焦在执行决策上。至于完整的命令教程、安装细节及 FAQ 级别的解释,请引导用户查阅项目文档,无需在本运行时协议中展开阐述。

意图路由

在执行任何发布或生成操作前,请先选定对应的命令族(Command Family):

  • 标准文章 HTML、文章预览、元数据检查或微信草稿创建:使用 inspectpreviewconvert
  • 图片优先型帖子、图片笔记、图文笔记、newspic 或多图笔记:使用 create_image_post,而非 convert --draft
  • 文章封面或信息图:当内置预设适用时,优先使用 generate_covergenerate_infographic,而非直接调用底层的 generate_image
  • 宿主 Agent 收到生图请求但未配置 Provider:使用生图 Plan 模式(--plan --json)获取 Prompt 意图,若 md2wechat 外部存在可用生图工具,则交由宿主生图工具处理。
  • 为已有文章生成微信标题候选:使用 title suggest <article.md> --json;它会向宿主 Agent 发出 AI 请求,自身不会直接挑选或写入最终标题。
  • 针对已有文章或草稿询问下一步优化建议:运行 md2wechat advise <article.md> --json;仅将其作为推荐参考,发布卡口仍以 inspect --json data.readiness.targets/blockers 为准。
  • 采用创作者风格写作或消除 AI 痕迹:使用 writehumanize
  • 不确定 Provider、主题、Prompt 或布局组件:先执行 Discovery 查询,切勿凭记忆或代码库文件盲目猜想。

请将 convert --draftcreate_image_post 视为不同的发布目标,不可混为一谈。

动态查询优先 (Discovery First)

将 CLI Discovery 输出作为事实来源(Source of Truth),但查询范围应严格限定在当前决策所需内。无需选定 Provider、主题、Prompt 或布局的任务,切勿跑全量 Catalog 列表。

使用 capabilities 获取路由聚合信息,使用资源 list 快速筛选轻量字段,使用 show 查阅单个资源的完整定义,使用 render 查看实例化后的 Prompt/Layout 输出。JSON 标准输出本身即为紧凑格式;仅在人类需要阅读排版时才使用 jq

仅运行最小必要的 Discovery 命令集:

  • 文章排版且未指定主题或组件:

    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 检查的是本地配置的可尝试度(Attemptability)。config wechat-accounts 仅在本地生效且绝不会输出微信 Secret 密钥。如需检查特定文章的目标就绪度,请使用 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 或布局 Discovery。

仅在任务需要时,才查询特定资源:

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 和布局组件的最终依据。

配置边界

  • 默认 md2wechat 已在系统 PATH 中可用。
  • convert 默认使用 API 模式,除非用户明确要求 --mode ai
  • API 模式下的预览与转换需要配置有效的 MD2WECHAT_API_KEY
  • 仅当用户明确要求同步微信草稿箱、上传资源或执行 create_image_post 时,才需要配置微信凭证。
  • 只读 Discovery、inspectpreview 以及纯文本转换均无需微信全局发布凭证;但 API 模式的预览与转换仍需有效的 MD2WECHAT_API_KEY
  • 按名称指定微信账号执行命令时,需要有效的 MD2WECHAT_API_KEY;CLI 会在触发上传、草稿或 create_image_post 副作用前进行校验。
  • 直接生图需要配置生图 Provider 凭证;而生图 Plan 模式(--plan --json)仅输出 Prompt 意图供宿主 Agent 或外部工具使用,无需生图 Provider 凭证。
  • title suggest --json 仅会为宿主 Agent 或外部模型输出标题生成 Prompt 请求,自身不会调用模型、上传、创建草稿或回写 Markdown。
  • 如需生成更具事实吸引力的标题切入点,可传入 --hook-level 23;切勿将生成的标题直接当作已确认的发布意图。
  • doctor --json 仅在本地运行:只检查本地就绪度,不会进行在线鉴权、上传图片或创建草稿。
  • 当用户询问当前生效的配置时,使用 config show --format json
  • 当用户询问本地配置了哪些微信账号时,使用 config wechat-accounts --json

文章工作流

处理文章时,推荐使用“先确认、后执行”的工作流:

  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。若请求的目标被阻塞,请立即停止并报告对应的阻碍项;切勿仅凭旧版布尔值或 checks 盲目推测并继续执行。切勿自行虚构 data.agent_readinessdata.target_readinessArticleState、状态文件或第二套就绪度/状态对象。preview 仅在转换成功后输出与 API 最终结果逐字节一致的 HTML 文件;当带上 --json 时,inspect 诊断信息会在 data.inspect 中返回,且绝不会被包裹进 HTML 文件中。它不会上传图片、创建草稿或回写 Markdown。convert 负责执行转换以及显式要求的上传/草稿副作用。convert --preview 是转换路径下的预览 Flag,与独立的 preview 命令不同。当出现 PREVIEW_ACTION_REQUIREDPREVIEW_FAILED 时,此调用不会创建或覆盖预览 HTML。使用 --json 时,PREVIEW_ACTION_REQUIRED 会返回空字符串 data.output_file。任何预先存在的显式输出路径均已过期,不得视为本次调用的输出结果;此时应将返回的 Prompt 交付给宿主 Agent 处理或直接报告失败。
当预期执行路径为 convert --mode ai --custom-prompt ... 时,在信任就绪度之前,需带上相同的 --mode ai --custom-prompt ... 先运行 inspect

排版协议

当用户要求对文章进行排版且未指定主题或组件时:

  1. 阅读文章内容及可选的品牌配置文件(Brand Profile)。
  2. 将 Discovery 查询输出作为事实依据。
  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 保存在源文件同级目录前,必须获得用户明确确认,且绝不能覆盖源文件。

主题选择

  • themes list --json 中读取 typeselectable 字段。
  • API 模式仅可使用 type: apiselectable: true 的主题。
  • AI 模式仅可使用 type: aiselectable: true 的主题。
  • 切勿将集合描述符(如不可选的主题分组)当作具体主题使用。
  • 若品牌配置文件中指定了主题,使用前需先通过 CLI Discovery 进行校验。
  • 若请求的主题无效或与当前模式不兼容,停止该路径并重新选择有效主题或询问用户。

布局组件

高级布局组件(Layout Modules)仅能在 API 模式下渲染。AI 模式(--mode ai)不会解析 :::module 语法,因此高级布局卡片在该模式下无法生效。

请遵循以下决策框架:

  • attention(吸睛):帮助读者判断文章是否值得阅读。
  • readability(易读):提升移动端排版阅读体验。
  • memorability(记忆):强化观点、引用、关键数据或品牌锚点。
  • conversion(转化):引导读者收藏、关注、咨询、分享或购买。

将 CLI Discovery 输出作为布局语法的唯一依据,无需死记硬背或推测 body_format 的值:

  • 使用 layout show <name> --json 检查开篇语法、Body Schema、标准规范示例(Canonical Example)以及结构差异化的变体。直接复用标准规范示例。
  • 结构化字段使用 layout render 处理,复杂 Body 使用 --body-file(或 stdin 用 --body-file -),随后对生成的 Markdown 进行校验。
  • 默认 Discovery 会返回推荐组件。仅在旧内容迁移场景下使用 layout list --lifecycle compatibility --json。本地校验仅代表语法通过;生产环境支持属于版本兼容事实。

组件使用规范:

  • 严禁堆砌组件。
  • 除非用户明确要求,否则最多使用 1 个 Hero 组件、1 个 Verdict 结论组件和 1 个 CTA 转化组件。
  • 若文章内容不足以真实填满组件必填项,直接跳过该组件。

API 与 AI 模式

  • 默认使用 API 模式,且高级布局组件必须在 API 模式下运行。
  • AI 模式属于轻量路径,不支持渲染高级布局组件。
  • API 模式失败后,切勿静默切换到 AI 模式,这会改变输出能力。
  • 仅当用户主动要求或接受放弃高级布局渲染时,才使用 AI 模式。
  • 若 AI 模式转换完成,可顺带简要提醒用户:API 模式支持高级布局组件与更强的视觉结构。

品牌配置文件

品牌配置文件存放在 ~/.config/md2wechat/brand.md

  • 它采用自由格式的 Markdown,而非 YAML,也没有固定 Schema。
  • CLI 不会主动解析它。
  • 请将其作为理解语气风格、主题偏好、组件偏好、CTA 偏好及禁用词的上下文依据。
  • 将数量偏好视为软约束。
  • 提及的任何主题或组件均需通过 CLI Discovery 进行校验。
  • 若品牌配置文件不存在,无需阻塞任务。只需简单提醒一次将使用系统默认配置即可。
  • 仅当用户明确要求时,才新建或修改品牌配置文件。

发布副作用控制

除非用户明确要求,否则切勿自动新建草稿、上传图片、发布或调用远程生图服务。

在执行每个显式的微信副作用(图片上传、文章草稿创建或 create_image_post)前,需确认已配置微信凭证并使用