← Back to skills
extension
Category: Productivity & OfficeAPI key requirement unconfirmed

公众号排版

把 Markdown 文章一键排成微信公众号格式的 HTML(样式全部内联,粘贴到公众号编辑器不掉格式)。自带一套通用商务风模板,改几行字就能换成你自己公众号的品牌信息。当用户说「排版」「公众号排版」「给文章排版」「排版成 HTML」「套用模板」时使用。

personAuthor: sunny31221hubOpenAPI

公众号排版

把一篇写好的 Markdown 文章,套上排版模板,输出一份可以直接粘贴进微信公众号编辑器的 HTML。

为什么需要这一步:公众号编辑器只认「行内样式」。普通的 HTML 一旦把 CSS 写在 <style> 标签里,粘进公众号就会全部丢失,文章变成一片白底黑字。这个技能会把所有样式逐个写到元素身上,保证粘过去长什么样、发出来就长什么样。

安装方法

  1. 先问使用者用的是什么 AI 工具(如 Claude Code、Codex、Cursor),回答记作 X

  2. 只安装给 X,不安装或链接其他任何工具:

    npx -y --registry=https://registry.npmmirror.com skills add https://modelscope.cn/skills/sunny31221/gzh-layout-buheliwa -a X -y
    

    (--registry 为 npmmirror 镜像,保证国内不翻墙也能装;-a X 表示只装给 X 这一个工具) X 不在上述命令支持范围时,按该工具自身的技能机制安装,装完确认 X 能识别本技能即可

  3. 装完后,先带使用者把模板里的固定文案换成他自己的(见下方「固定文案」一节:逐项先给建议再问),换完再问是否现在使用本技能

用法

对 AI 说一句话就行:

帮我把 作品仓库/001-XXX/01_母稿/03_版本/AI成稿-v1.md 排版

AI 会读文章、套模板、把排版结果存成 AI成稿-v1-排版.html,放在文章同一个文件夹里。

排版做完后怎么用:浏览器打开这个 HTML → 全选复制 → 粘到公众号编辑器。

固定文案(每篇文章都会出现的那几句)

标题下那行小字、正文末尾的分隔符、底部介绍两句、关注引导、联系方式,这几句每篇文章都要出现,写在模板文件夹的 待替换素材.md 里,排版时自动填进模板。

装完技能先做这件事:七项逐条问使用者,每项先给建议、再问他(把空选项摆出来等于让他自己想,先给建议他只要判断同意不同意)。给建议时守三条:

  • 跟这个号对得上:底部介绍要说清这个号写什么、写给谁。一句话换到这个号上也成立的话,就是没写到点子上
  • 像人说的话:短句,允许口语停顿;不写成宣传语,也不写成排比
  • 联系方式留真的:真不想留就把那一项留空,别填假的

七项各自的落点:

| 键 | 出现在哪 | 出厂样文 | |---|---|---| | article_meta | 标题下面那行小字 | AI 实战 \| 公众号 | | end_separator | 正文末尾的分隔符 | ———— END ———— | | footer_line1 | 底部介绍第一句 | 我们关注 AI 在真实业务里的用法。 | | footer_line2 | 底部介绍第二句 | 文章写的都是实际遇到的问题,附带我们在用的方法。 | | account_name | 关注引导里的公众号名 | 「你的公众号名字」 | | footer_follow | 关注引导 | 获取更多 AI 实战经验 | | footer_contact | 最底下那行联系方式 | 入群 / 合作,请添加微信:你的微信号 |

排版时会拦一道:account_name 或 footer_contact 还留着出厂占位字样(你的公众号名字、你的微信号),脚本会报错停下,让 AI 先带使用者把这七项定下来,定完再排。这两句是每位读者每篇都看得见的地方,带着占位文字发出去一眼就露馅。

排版前的另外两道检查

除了上面那道出厂文案检查,排版前还会拦这两类。三道都是「不通过就停下、不产出半成品」——停下来是好事,这三类问题不拦住,发出去才会发现。

| 什么时候停 | 说明 | | :--- | :--- | | 模板 CSS 里有公众号留不住的写法 | 用到 var()、calc()、display: flex、transform、@media、vw/vh 这类,公众号后台会剥掉,排出来这处样式也是白写。脚本列出具体是哪几条,改掉再排 | | 模板里的 {{占位符}} 没有值 | 去同文件夹的 待替换素材.md 里补上,脚本会告诉你缺哪个、该写在哪 |

真想跳过第二道(比如只是想先看看效果),加 --allow-unsupported。

文章怎么写(Markdown 渲染约定)

| 源稿里的写法 | 排出来 | | :--- | :--- | | 一个非空行 | 一个段落块(不把连续行合并成一段,写排比句的时候每句占一行,不会被并起来) | | # 标题 | 文章标题,只用在标题位;正文里不会再出现一遍 | | ## 标题 | 小节标题,自动编号 01、02… | | ### 标题 | 加粗小标题 | | - 项 / 1. 项 | 列表 | | \| 表格 \| | 带边框的表格,手机上能左右滑 | | > 引用 | 左侧一条竖线的高亮块。想让某句变高亮块,就在那行前面写 > | | ``` 围栏 | 代码块,缩进和换行都保留 | | --- | 省略(小节标题本身已经起分隔作用) | | 稿子开头的 --- frontmatter | 自动跳过,不进正文 |

行内:**加粗**、*斜体*、`行内代码`、[文字](链接)、~~删除线~~。

文章里不要自己写小节编号(一、二、三 或 01、02)。模板会自动编号,源稿带编号就会重复成「01 一、」。

换模板 / 改品牌信息

技能自带一套「通用商务风」模板,开箱即用。两件最常改的事:

换成你自己的公众号名字:打开 模板/通用商务风/待替换素材.md,把里面每一条改成你的信息(公众号名字、关注引导、微信号、底部介绍)。改完保存,下次排版自动生效。

换个样子:模板/ 里放多套模板文件夹就行,每套一个文件夹、里面一个 HTML 文件加一个 待替换素材.md。不指定模板时技能默认用第一套。

自己新做一套模板的话,它得满足三件事,少一件排版就停下来报错:

| 必须有 | 说明 | | :--- | :--- | | 一个正文位置 | {{article_body}} 占位符,或一个 class 含 article-body 的容器 | | 一套小节标题类名 | section-header/section-number/section-subtitle,或 chapter-header/chapter-number/chapter-title。脚本看模板 CSS 里定义了哪套就用哪套 | | 一个素材文件 | 同文件夹下的 待替换素材.md,模板里每个 {{xxx}} 都要有对应的一条 |

模板 CSS 别用:var()、calc()、display: flex/grid、transform、animation、@media、@font-face、position: fixed/sticky/absolute、vw/vh。这些公众号后台会剥离,脚本会在排版前拦住并报出来。overflow-x: auto 可以用,宽表格和长代码要靠它左右滑。

只想检查模板、不想排版:

python3 scripts/inline_css.py --check 模板/通用商务风/通用商务风.html

模板长什么样

模板用占位符控制内容,{{}} 里的东西由脚本自动填:

| 占位符 | 从哪里来 | |--------|---------| | {{article_title}} | 文章的第一行 # 标题 | | {{article_body}} | 文章正文 | | 其余 {{xxx}} | 模板文件夹里的 待替换素材.md |

所以一份 Markdown 文章只需要有 # 标题 和若干 ## 小节,就能排出完整效果。

环境要求

需要两个 Python 库(CSS 内联必需,缺了公众号里样式会丢):

pip3 install --break-system-packages beautifulsoup4 tinycss2

装不上时建临时虚拟环境:

python3 -m venv /tmp/layout-venv
/tmp/layout-venv/bin/pip install beautifulsoup4 tinycss2
/tmp/layout-venv/bin/python scripts/apply-layout.py <文章.md>

关于图片

文章里写 ![](图片路径) 的地方,相对路径会自动补成绝对路径。图片上传在发布环节完成——排版这一步不处理图片上传。图片文件不存在时脚本会提示「发布时会缺图」。

与发送技能搭配使用

本技能只负责把 Markdown 排成公众号格式的 HTML。要让文章直接进公众号草稿箱,把它和「微信公众号文章发布」(wechat-publisher-buheliwa)搭配用:本技能出 HTML → 发布技能把 HTML 连同图片一起推到草稿箱。两个技能各管一段,排版看效果、发布管上传。只用本技能也可以,拿到 HTML 后浏览器打开、全选复制、手动粘进公众号编辑器。

目录说明

  • scripts/apply-layout.py:排版主脚本(Markdown + 模板 → HTML)
  • scripts/md_render.py:Markdown 转 HTML 片段(段落、图片、引用、列表、表格、代码块、小标题)
  • scripts/inline_css.py:把 CSS 转成行内样式 + 微信兼容清理,排版时自动调用;也能单独跑 --check
  • 模板/:模板库,每套模板一个文件夹