将 Markdown 转换为微信公众号 HTML。当用户需要公众号排版、文章预览、同步微信草稿箱、文章配图生成、封面或信息图生成、图文/图片笔记创作、创作者风格写作、标题建议、消除 AI 痕迹,或查询当前支持的 Provider、主题、Prompt 与布局组件时,请使用此 Skill。
md2wechat
使用此 Skill 来操作 md2wechat CLI。请将本 Skill 的职责聚焦在执行决策上。至于完整的命令教程、安装细节及 FAQ 级别的解释,请引导用户查阅项目文档,无需在本运行时协议中展开阐述。
意图路由
在执行任何发布或生成操作前,请先选定对应的命令族(Command Family):
- 标准文章 HTML、文章预览、元数据检查或微信草稿创建:使用
inspect、preview和convert。 - 图片优先型帖子、图片笔记、图文笔记、
newspic或多图笔记:使用create_image_post,而非convert --draft。 - 文章封面或信息图:当内置预设适用时,优先使用
generate_cover或generate_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 痕迹:使用
write或humanize。 - 不确定 Provider、主题、Prompt 或布局组件:先执行 Discovery 查询,切勿凭记忆或代码库文件盲目猜想。
请将 convert --draft 与 create_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 --jsondoctor检查的是本地配置的可尝试度(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 中的可执行文件时,优先使用此命令。
对于简单的本地操作(如 preview、humanize)或用户自带显式 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、
inspect、preview以及纯文本转换均无需微信全局发布凭证;但 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 2或3;切勿将生成的标题直接当作已确认的发布意图。 doctor --json仅在本地运行:只检查本地就绪度,不会进行在线鉴权、上传图片或创建草稿。- 当用户询问当前生效的配置时,使用
config show --format json。 - 当用户询问本地配置了哪些微信账号时,使用
config wechat-accounts --json。
文章工作流
处理文章时,推荐使用“先确认、后执行”的工作流:
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。若请求的目标被阻塞,请立即停止并报告对应的阻碍项;切勿仅凭旧版布尔值或 checks 盲目推测并继续执行。切勿自行虚构 data.agent_readiness、data.target_readiness、ArticleState、状态文件或第二套就绪度/状态对象。preview 仅在转换成功后输出与 API 最终结果逐字节一致的 HTML 文件;当带上 --json 时,inspect 诊断信息会在 data.inspect 中返回,且绝不会被包裹进 HTML 文件中。它不会上传图片、创建草稿或回写 Markdown。convert 负责执行转换以及显式要求的上传/草稿副作用。convert --preview 是转换路径下的预览 Flag,与独立的 preview 命令不同。当出现 PREVIEW_ACTION_REQUIRED 或 PREVIEW_FAILED 时,此调用不会创建或覆盖预览 HTML。使用 --json 时,PREVIEW_ACTION_REQUIRED 会返回空字符串 data.output_file。任何预先存在的显式输出路径均已过期,不得视为本次调用的输出结果;此时应将返回的 Prompt 交付给宿主 Agent 处理或直接报告失败。
当预期执行路径为 convert --mode ai --custom-prompt ... 时,在信任就绪度之前,需带上相同的 --mode ai --custom-prompt ... 先运行 inspect。
排版协议
当用户要求对文章进行排版且未指定主题或组件时:
- 阅读文章内容及可选的品牌配置文件(Brand Profile)。
- 将 Discovery 查询输出作为事实依据。
- 根据文章的内容目标,挑选一款兼容的主题及少量排版组件。
- 保持源 Markdown 文件只读。
- 创建临时排版 Markdown 产物,例如
/tmp/md2wechat-format/<run-id>/article.formatted.md。 - 仅插入能够正确填满必填字段的布局组件。
- 运行
md2wechat layout validate --file <formatted.md> --json。 - 将排版后的 Markdown 产物传给
convert。
将生成后的 Markdown 保存在源文件同级目录前,必须获得用户明确确认,且绝不能覆盖源文件。
主题选择
- 从
themes list --json中读取type与selectable字段。 - API 模式仅可使用
type: api且selectable: true的主题。 - AI 模式仅可使用
type: ai且selectable: 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)前,需确认已配置微信凭证并使用






