WeChat MP Publish
概述
使用此技能,在已登录的编辑器会话中,以稳定且可重复的方式创建、更新、检查和发布微信公众号文章。
此技能不假设任何个人作者名、摘要风格、本地目录布局或私有媒体库工作流。
支持的输入
- 本地 Markdown 文章文件。
- 预构建的 HTML 正文内容。
- 仅需部分更新的已有微信公众号草稿。
- 可选的标题、作者、摘要和封面图。
前置条件
- 使用已登录微信公众号后台的持久浏览器会话。
- 确认文章正文来源,以及是否提供了标题、作者、摘要和封面图等可选字段。
- 最终发布是外部操作。未经用户在当前轮次中显式确认,不得点击最终发布按钮。
标准工作流
1. 填写基本元数据
- 标题是必填项,应明确写入或更新以匹配用户预期的标题。
- 仅当用户提供了作者名时才填写作者字段。否则保留现有值或留空。
- 仅当用户提供或明确确认了摘要时才编写摘要。不要将其重写为推广性平台文案。
2. 导入文章正文
- 优先使用
scripts/markdown_to_wechat_html.py将本地 Markdown 转换为适合编辑器导入的 HTML。 - 如果正文已经是有效的 HTML,则跳过转换,直接写入编辑器。
- 不要依赖常规粘贴行为。直接调用编辑器实例的
replaceAllContent方法。 - 要定位编辑器实例,从
.view.rich_media_content.autoTypeSetting24psection开始,向上遍历 Vue 父级,直到找到含有replaceAllContent的对象。
可复用的浏览器代码段:
const editorRoot = document.querySelector('.view.rich_media_content.autoTypeSetting24psection');
let vm = editorRoot && editorRoot.__vue__;
for (let i = 0; i < 6 && vm && !vm.replaceAllContent; i++) vm = vm.$parent;
if (!vm || !vm.replaceAllContent) throw new Error('WeChat editor instance not found');
vm.replaceAllContent(html);
3. 设置封面图
- 仅当用户提供封面图或明确要求替换时,才处理封面图。
- 仅使用可见的官方 UI 入口点:点击封面区域,然后从媒体库或其他可见平台选项中选择。
- 不要暴露或操作隐藏的
input[type=file]元素。这可能会破坏页面状态,导致重复封面或临时上传控件。 - 上传并裁剪确认后,返回编辑器并确认左侧文章卡片显示正确的封面。
4. 保存草稿
- 在每个主要步骤之后保存。大多数情况下,至少保存两次。
- 在首次完整完成正文内容和封面图后保存一次。
- 在布局审查和任何修复后再次保存。
- 保存后,检查历史记录面板,确认出现新的手动保存记录。
5. 检查布局
至少检查三个区域:
- 顶部:标题、作者、副标题、开头段落和封面卡片。
- 中部:段落密度、标题可见性,以及任何意外的加粗、缩进或编辑器残留。
- 底部:参考文献、列表、尾随空行、重复封面、重复图片或多余的上传控件。
必要时截图。不要仅依赖 DOM 文本。
6. 谨慎进行部分更新
- 如果用户只要求更改标题、摘要、作者、封面图或少数段落,不要覆盖完整文章正文。
- 在编辑现有草稿的一部分之前,检查其当前状态,判断完整替换还是编辑器内修补更安全。
- 如果现有草稿已包含手动排列的图片、引用块、分隔线或其他手动调整的格式,在替换全文前评估丢失这些工作的风险。
7. 仅在显式确认后发布
- 仅在用户明确说要现在发布后,才进入发布对话框。
- 如果发布流程显示二次确认,验证常规选项,但不要改变用户的意图。
- 如果平台发出警告、阻止内容或显示格式问题,停止操作,不要强制发布。
约束与故障排除
- 如果在页面顶部附近出现临时的“选择文件”式控件,可能是之前操作了隐藏的上传控件。在再次保存前清理掉它。
- 生成的封面预览节点并不保证封面已被实际应用。以编辑器卡片和封面区域的真实显示为准。
- 如果参考文献部分完全加粗、列表项折叠在一起或空行意外扩展,在发布前修复正文。
- 不要假设任何固定的作者名、默认摘要模板、私有目录布局或之前的会话状态。
正文转换脚本
用法:
python3 scripts/markdown_to_wechat_html.py /path/to/article.md > /tmp/wechat_article_body.html
cat /path/to/article.md | python3 scripts/markdown_to_wechat_html.py - > /tmp/wechat_article_body.html
此脚本生成适用于 replaceAllContent 的简化 HTML,保留以下内容:
- 标题级别
- 普通段落
- 无序和有序列表
- 粗体、斜体、链接和内联代码
它不追求完全的富文本保真度。如果文章包含表格、脚注或深层嵌套结构,请手动检查导入的输出。