下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-0g3b6ap2--doc2wechat.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-0g3b6ap2/doc2wechat。把 Word 文档(.docx)解析成结构化内容,再排版成微信公众号推文的 HTML。当用户提到「公众号」「推文」「微信排版」「把这份 Word 转成公众号」「docx 转公众号」,或者上传了 .docx 并希望发布到微信、需要排版美化时,都要使用这个 Skill。即使用户只说「帮我把这个文档排一下版」但上下文涉及公众号 / 新媒体 / 微信,也应该触发。
Use for converting .docx into WeChat Official Account article HTML with inline styles.
阅读全文 (展开查看完整说明)
概述
Word → 微信公众号排版
环境准备
首次使用时在 Skill 目录下装依赖:
cd <skill 目录> && npm install整个流程只有四步:解析文档 → 原封不动地替换样式 → 审查并输出问题 → 审查通过后保存到公众号草稿箱。运行过程中不要修改脚本、主题或样式,也不要根据审查结果调整 HTML。
第一步:解析文档
node scripts/extract.js <用户的.docx> --out output输出 output/<文件名>.html,文档里的图片保存到 output/<文件名>.images/,这一步不上传图片。
第二步:替换样式
主题定义在 themes/*.md 中,每行一个样式链接,格式为 [样式名](https://yiban.io/style_detail/normal/<id>.html)。样式页中 section.style-detail-content 下的 section 就是样式本身;脚本通过壹伴素材接口获取同一份 HTML。如果用户没有指定主题,列出 themes/ 下的 .md 文件让用户选择(base.css 是通用基础样式,不是主题)。
node scripts/render.js output/<文件名>.html --theme "themes/<主题>.md"输出为 output/<文件名>.wechat.html。
脚本先应用通用基础样式 themes/base.css:用一个外层 section 包住全文,把左右间距、段落间距和正文文字样式内联到容器、段落和列表上;之后每插入一份主题样式(一级标题、每组图片),都在外面包一层使用 .wx-block 基础样式的 section,加大与上下内容的间距。任何主题都会应用这份样式,它不包含标题和图片样式。base.css 不是主题,列出主题时不要把它列进去。
然后套用主题。主题样式原封不动地使用,脚本只把文档内容填进去:
| 样式名 | 替换方式 |
|---|---|
| 一级标题 | 每个 h1 替换为一份样式。文字位是不包含其他 yb-mpa-mark 的 yb-mpa-mark 元素:纯数字的文字位按顺序填 01、02……,另一个文字位填标题原文(只替换最内层文字)。 |
| 图片样式 | 样式中只含一张图片的 section[nodeleaf] 是图片位;自身或外层设了像素宽度的是装饰图,保持原样。相邻图片(中间没有文字)按图片位数量分组,每组替换为一份样式(例如四宫格每组最多 4 张,双图每组最多 2 张,单图每张一份)。图片不够时删掉多余的图片位。样式是块级元素,所以图片所在段落会在图片处拆开,保持原顺序。 |
文档里没有对应样式的结构(例如二级标题、列表)保持原样。主题中出现不支持的样式名时,脚本给出警告并跳过,把这个情况告诉用户。
最后上传图片:图片所在的图片位(或其外层)设了 aspect-ratio 时,先把图片居中裁剪成这个比例(微信按图片本身的比例显示图片,样式里的 object-fit 无法裁剪);宽度超过 1080px 的缩小到 1080px;编码为 jpg/png 且不超过 1MB 后上传到微信,HTML 中换成微信返回的 URL,并按实际图片设置 data-w、data-ratio。
上传需要 WECHAT_APPID 和 WECHAT_APPSECRET,并把本机出口 IP 加入公众号的 IP 白名单。脚本会自动读取 Skill 目录下的 .env 文件;已设置的同名环境变量优先。如果脚本报缺少凭据,让用户自己执行 cp .env.example .env && chmod 600 .env(在 Skill 目录下),再编辑 .env 填入凭据。不要让用户把 AppSecret 发到对话里,也不要自行编造凭据。
第三步:审查
阅读 references/verify_article_structure.md,逐条审查第二步输出的 HTML。
- 没有问题:进入第四步。
- 有问题:列出每个问题(对应的规范条目、位置、原因),把 HTML 文件路径交给用户,流程到此结束,不保存草稿。不要修改 HTML、样式或脚本来消除问题。
第四步:保存到草稿箱
只有第三步没有发现问题时才执行:
node scripts/publish.js output/<文件名>.wechat.html --docx <用户的.docx>- 标题:默认用文档中的第一个标题(h1~h6 中最先出现的)。用户指定了标题时加
--title "<标题>"。 - 封面:默认把文档中的第一张图上传为永久素材作为封面。用户指定了封面图片时加
--cover <图片文件>(jpg、png、gif、bmp,不超过 10MB)。 - 作者:用户指定了作者时加
--author "<作者>",否则不填。
文档没有标题或没有图片、且用户没有指定时,脚本会报错;把报错告诉用户,请用户提供标题或封面图,不要自行编造。接口报错时(例如标题过长),把错误原样告诉用户。
成功后,把 HTML 文件路径、草稿标题和脚本输出的草稿 media_id 交给用户,并提醒用户到公众号后台的草稿箱查看。